boot(7) Miscellaneous Information Manual boot(7) NAZWA boot - proces rozruchu systemu w stylu UNIX System V wydanie 4 OPIS Proces rozruchu (lub ,,sekwencja rozruchowa") rozni sie w detalach pomiedzy systemami, ale moze byc z grubsza podzielony na fazy kontrolowane przez nastepujace komponenty: (1) sprzet (2) program rozruchowy (3) jadro (4) proces w przestrzeni uzytkownika root (init i inittab) (5) skrypty rozruchowe Ponizej opisano bardziej szczegolowo kazdy z etapow. Sprzet Po uruchomieniu lub sprzetowym resecie, kontrola jest przekazywana programowi przechowywanemu w pamieci tylko do odczytu (zwykle PROM); ze wzgledow historycznych dotyczacych komputera osobistego, program ten jest czesto nazywany ,,BIOS-em". Program zwykle przeprowadza podstawowa samokontrole komputera oraz odczytuje pamiec nieulotna pozyskujac dalsze parametry. Pamiec ta w zwyklym komputerze zasilana jest bateria CMOS, dlatego czesto nazywana jest ,,CMOS-em"; natomiast poza swiatem komputerow osobistych zwykle zwie sie ,,NVRAM-em" (ang. ,,nonvolatile RAM" - nieulotny RAM). Parametry przechowywane w NVRAM roznia sie pomiedzy systemami, ale powinny okreslac przynajmniej urzadzenie, ktore zawiera program rozruchowy lub choc urzadzenie, ktore powinno byc sprawdzone w celu odszukania tego programu; takie urzadzenie jest zwane ,,urzadzeniem rozruchowym". Etap rozruchu sprzetowego laduje program rozruchowy z ustalonej pozycji na urzadzeniu rozruchowym i przekazuje do niego dalsza kontrole. Uwaga: Urzadzenie z ktorego mozna zaladowac program rozruchowy mozna dolaczyc przez siec; w takim przypadku dalsze detale rozruchu sa okreslone protokolami takimi jak DHCP, TFTP, PXE, Etherboot, itp. Program rozruchowy Glownym zadaniem programu rozruchowego jest odnalezienie jadra na jakims urzadzeniu, zaladowanie i uruchomienie go. Wiekszosc programow moze byc interaktywna, aby umozliwic wybranie innego jadra (byc moze jego kopii zapasowej, jesli ostatnio skompilowane jadro nie dziala) i przekazanie opcjonalnych parametrow do jadra. W tradycyjnych komputerach program rozruchowy jest polozony w pierwszym 512-bajtowym bloku urzadzenia rozruchowego, blok ten nazywa sie ,,MBR" (ang. Master Boot Record - glowny sektor rozruchowy). W wiekszosci systemow, ze wzgledu na wiele ograniczen, program rozruchowy jest uproszczony. Nawet w systemach innych niz komputery osobiste istnieja pewne ograniczenia dotyczace jego rozmiaru i zlozonosci, ale rozmiar MBR na zwyklym komputerze (512 bajtow, uwzgledniajac w tym tablice partycji) czyni niemal niemozliwym dodanie wiekszej liczby funkcji. Z tego wzgledu wiekszosc systemow dzieli role ladowania systemu operacyjnego pomiedzy pierwotny program rozruchowy i wtorny program rozruchowy, ten drugi moze juz zajmowac wieksza powierzchnie na trwalym magazynie danych, takim jak partycja dysku. W Linuksie menedzerem rozruchu jest czesto grub(8) (alternatywa jest lilo(8)). Jadro Podczas ladowania, jadro dokonuje inicjalizacji wielu czesci komputera i systemu operacyjnego; kazdy fragment oprogramowania odpowiedzialny za takie zadanie jest zwykle uwazany za ,,sterownik" danej czesci. Jadro uruchamia wymiane pamieci wirtualnej (we wspolczesnych jadrach Linux dokonuje tego proces jadra zwany ,,kswapd") i montuje pewne systemy plikow w korzeniu systemu plikow /. Czesc parametrow, ktore mozna przekazac do jadra odnosi sie do tych aktywnosci (na przyklad mozna przeslonic domyslny katalog glowny systemu plikow); wiecej informacji o parametrach jadra znajduje sie w podreczniku bootparam(7). Dopiero wowczas jadro tworzy pierwszy proces w przestrzeni uzytkownika, ktoremu nadawany jest identyfikator procesu (PID) numer 1. Proces ten tradycyjnie wykonuje program /sbin/init, do ktorego przekazywane sa parametry nieobsluzone do tej pory przez jadro. Proces w przestrzeni uzytkownika root Uwaga: Ponizszy opis dotyczy systemu operacyjnego dzialacego w oparciu o UNIX System V wydanie 4. Wiele powszechnie uzywanych systemow przyjelo powiazane, ale fundamentalnie odmienne podejscie pod nazwa systemd(1); opis jego procesu rozruchowego opisano w powiazanym z nim podrecznikiem bootup(7). Gdy uruchamia sie /sbin/init, odczytuje plik /etc/inittab w celu uzyskania dalszych instrukcji. Plik okresla to, co powinno byc uruchomione gdy program /sbin/init ma wejsc w dany poziom pracy, dajac administratorowi mozliwosc latwego okreslenia srodowisk do roznych zastosowan; kazdy poziom pracy jest zwiazany z zestawem uslug (np. poziom pracy S jest trybem pojedynczego uzytkownika, a poziom pracy 2 oznacza uruchomienie wiekszosci uslug sieciowych). Administrator moze zmienic aktualny poziom pracy za pomoca init(1) oraz sprawdzic biezacy poziom pracy poleceniem runlevel(8). Jednak ze wzgledu na to, ze zarzadzanie pojedynczymi uslugami za pomoca tego pliku jest niewygodne, /etc/inittab uruchamia jedynie zestaw skryptow ktore uruchamiaja/zatrzymuja poszczegolne uslugi. Skrypty rozruchowe Uwaga: Ponizszy opis dotyczy systemu operacyjnego dzialajacego w oparciu o UNIX System V wydanie 4, jednak wiele popularnych systemow operacyjnych (Slackware Linux, FreeBSD, OpenBSD) uzywa skryptow rozruchowych w jakims stopniu odmiennych. Kazda zarzadzana usluga (poczta elektroniczna, serwer nfs, cron itp.) posiada pojedynczy skrypt uruchomieniowy w okreslonym katalogu (w wiekszosci wersji Linuksa jest to /etc/init.d). Kazdy z tych skryptow akceptuje jako pojedynczy argument slowo ,,start" (uruchamiajace usluge) lub slowo ,,stop" (zatrzymujace usluge). Dla ,,wygody" skrypt moze opcjonalnie akceptowac inne parametry (np. ,,restart" do zatrzymania i ponownego uruchomienia, ,,status" do wyswietlenia statusu uslugi itp.). Uruchomienie skryptu bez argumentow wyswietla dopuszczalne argumenty. Katalogi sekwencyjne Aby okreslone skrypty uruchamialy sie na okreslonych poziomach pracy i w okreslonej kolejnosci, wystepuja katalogi sekwencyjne, zwykle w postaci /etc/rc[0-6S].d. W kazdym z tych katalogow istnieja dowiazania (zwykle symboliczne) do skryptow w katalogu /etc/init.d. Glowny skrypt (zwykle /etc/rc) jest wywolywany z inittab(5); wywoluje on nastepnie skrypt kazdej uslugi za pomoca dowiazania w odpowiednim katalogu sekwencyjnym. Kazde dowiazanie, ktorego nazwa zaczyna sie litera ,,S" jest wywolywane z argumentem ,,start" (uruchamiajac usluge). Kazde dowiazanie, ktorego nazwa zaczyna sie litera ,,K" jest uruchamiane z argumentem ,,stop" (zatrzymujac usluge). Do zdefiniowania kolejnosci uruchamiania i zatrzymywania uslug na tym samym poziomie pracy, uzywa sie numeru kolejnosci w nazwie dowiazania. Aby zachowac przejrzystosc, nazwa dowiazania zwykle konczy sie nazwa uslugi do ktorej odsyla dowiazanie. Przykladowo dowiazanie /etc/rc2.d/S80sendmail uruchamia usluge sendmail(8) na poziomie pracy 2. Dzieje sie to po uruchomieniu /etc/rc2.d/S12syslog, ale przed uruchomieniem /etc/rc2.d/S90xfs. Zarzadzenie opisanymi dowiazaniami oznacza zatem zarzadzenie kolejnoscia rozruchu i poziomami pracy, w wielu systemach istnieja pomocne narzedzia sluzace do tego celu (np. chkconfig(8)). Konfiguracja rozruchowa Program udostepniajacy usluge jest czesto nazywany ,,demonem". Demon moze zwykle otrzymac rozne opcje i parametry wiersza polecen. W celu umozliwienia ich zmiany przez administratora systemu bez potrzeby edytowania calego skryptu rozruchowego, istnieje jakis odrebny plik konfiguracyjny, polozony w okreslonym katalogu, w ktorym moze odnalezc go skrypt rozruchowy (w starszych systemach Red Hat jest to /etc/sysconfig). W starszych systemach UNIX, taki plik zawieral faktyczne opcje wiersza polecen do demona, ale we wspolczesnych systemach Linux (oraz HP-UX), zawiera jedynie zmienne powloki. Skrypt rozruchowy w /etc/init.d odczytuje i wlacza swoj plik konfiguracyjny (wykonuje ,,source" na swoim pliku konfiguracyjnym), a nastepnie uzywa wartosci zmiennych. PLIKI /etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/ ZOBACZ TAKZE init(1), systemd(1), inittab(5), bootparam(7), bootup(7), runlevel(8), shutdown(8) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. boot(7)