INIT(8)      Podręcznik Administratora Systemu Linux      INIT(8)


NAZWA
       init, telinit - sterowanie procesu inicjującego

SKŁADNIA
       /sbin/init [ 0123456Ss ]
       /sbin/telinit [ -t sec ] [ 0123456sSQqabcUu ]

OPIS
   Init
       Init  jest  przodkiem  wszystkich  procesów.  Jego głównym
       zadaniem jest  stworzenie  procesów  w  oparciu  o  skrypt
       zapisany w pliku /etc/inittab (patrz też inittab(5)).  Ten
       plik zawiera zwykle  pozycje  które  każą  procesowi  init
       pomnażać  getty na każdej linii, na które użytkownicy mogą
       się  zalogować.   Kontroluje  też   samodzielne   procesy,
       których istnienie jest konieczne w danym systemie.


POZIOMY PRACY
       Runlevel  (poziom pracy) jest to konfiguracja oprogramowa­
       nia systemu, która  pozwala  zaistnieć  tylko  wytypowanym
       grupom  procesów.  Procesy tworzone przez init dla każdego
       z tych poziomów  są  zdefiniowane  w  pliku  /etc/inittab.
       Init może być w jednym z ośmiu poziomów pracy: 0-6 i S lub
       s.  Poziom pracy jest zmieniany przez uruchomienie telinit
       przez   uprzywilejowanego   użytkownika.   telinit  wysyła
       odpowiednie sygnały  do  init,  mówiące  w  jaki  tryb  ma
       przejść.

       Tryby  pracy  0,  1,  oraz 6 są zarezerwowane. Tryb 0 jest
       używany by zatrzymać system, tryb 6 by przeładować  system
       (reboot),  a tryb 1 by wprowadzić system w tryb pracy jed­
       nego użytkownika (single user - mode).  Tryb  S  nie  jest
       pomyślany  dokładnie  tak  by go używać bezpośrednio, lecz
       raczej dla skryptów wykonywanych przy wchodzeniu w tryb 1.
       Aby  uzyskać więcej informacji na ten temat, zobacz strony
       podręcznika dla shutdown(8) i inittab(5).

       Tryby pracy 7-9 też są poprawne,  choć  niezbyt  udokumen­
       towane.  To  z  powodu  "tradycyjnych" wariantów Unixa nie
       używających ich.  Jeśli jesteś ciekaw to wiedz, że poziomy
       S  i  s są w rzeczywistości takie same.  Wewnętrznie są to
       tylko zastępcze nazwy dla takich samych trybów pracy -  to
       jedynie  zbytek  po  systemach,  których  autor  zwykł był
       używać podczas pisania sysvinit.


BOOTOWANIE
       Po tym jak init jest wywołany w ostatnim  kroku  sekwencji
       bootującej   jądra,   szuka   pliku  /etc/inittab  w  celu
       znalezienia w nim pola typu initdefault (patrz  też  init­
       tab(5)).  Pole initdefault określa początkowy poziom pracy
       systemu.  Jeśli nie ma tam takiego pola (lub  w  cale  nie
       istnieje  /etc/inittab),  poziom  pracy  musi być podany z



                          9 Marzec 1998                         1





INIT(8)      Podręcznik Administratora Systemu Linux      INIT(8)


       konsoli systemowej.

       Poziom S lub s wprowadza system w tryb jednego użytkownika
       i  nie  wymaga  pliku  /etc/initttab.   W  trybie  jednego
       użytkownika, wywoływany jest /sbin/sulogin  na  urządzeniu
       /dev/console.

       Podczas wchodzenia w tryb jednego użytkownika, proces init
       czyta stany ioctl(2) konsoli z /etc/ioctl.save. Jeśli  ten
       plik  nie istnieje, init inicjuje linię przy 9600 bodach i
       z ustawieniami  CLOCAL.   Gdy  init  opuści  tryb  jednego
       użytkownika,  zapamiętuje  ustawienia  ioctl konsoli w tym
       pliku, więc może ponownie ich użyć przy  okazji  następnej
       sesji jednego użytkownika.

       Podczas  wchodzenia w tryb wielu użytkowników po raz pier­
       wszy, init wykonuje pozycje boot i  bootwait  by  pozwolić
       systemom  plików  zamontować  się  zanim  użytkownicy będą
       mogli się zalogować.  Potem wykonywane są wszystkie  pozy­
       cje przypisane danemu poziomowi pracy.

       Kiedy  nowy  proces  startuje,  init sprawdza najpierw czy
       istnieje  plik  /etc/initscript.  Jeśli  tak,  używa  tego
       skryptu by ten proces zacząć.

       Za  każdym  razem,  gdy  proces potomny się zakończy, init
       zapamiętuje ten fakt i powód śmierci procesu jest zapisany
       w /var/run/utmp i /var/log/wtmp, pod warunkiem że te pliki
       istnieją.

ZMIENIANIE TRYBÓW PRACY
       Po tym jak "namnożone" zostaną  wszystkie  wyszczególnione
       procesy,  init  czeka  na  śmierć  każdego swojego procesu
       potomnego,  sygnał  braku  energii,  lub  zasygnalizowanie
       przez  telinit  by  zmienić poziom działania systemu.  Gdy
       wystąpi  jeden  spośród  tych  trzech  warunków,  ponownie
       sprawdzany jest plik /etc/inittab, ponieważ nowe pola mogą
       być do niego dodane w  każdej  chwili.   Jednakowoż,  init
       wciąż  oczekuje  na  wystąpienie  jednego  z  tych  trzech
       warunków.  By przygotować się na natychmiastową odpowiedź,
       telinit Q albo użyta komenda q może obudzić proces init by
       jeszcze raz przeczytał plik /etc/inittab.

       Jeśli init nie jest w trybie jednego użytkownika i odbiera
       sygnał zaniku energii, wywoływane są specjalne pola stwor­
       zone z myślą o zaniku energii.

       Gdy init jest proszony o zmianę poziomu działania,  wysyła
       sygnał  ostrzegawczy SIGTERM do wszystkich procesów, które
       nie są zdefiniowane w nowym poziomie pracy.  Potem czeka 5
       sekund  zanim "na siłę" zakończy te procesy poprzez sygnał
       SIGKILL.  Zauważ, że init zakłada, że wszystkie te procesy
       (i  ich  potomki)  pozostają  w tej samej grupie procesów,
       którą init orginalnie  im  utworzył.   Jeżeli  jakikolwiek



                          9 Marzec 1998                         2





INIT(8)      Podręcznik Administratora Systemu Linux      INIT(8)


       proces  zmienił swą przynależność do grupy procesów to nie
       odbierze tych  sygnałów.   Tego  typu  procesy  muszą  być
       kończone osobno.

TELINIT
       /sbin/telinit jest symbolicznym dowiązaniem do /sbin/init.
       Pobiera on jednoznakowy argument i sygnały init by  podjąć
       stosowne działanie.
         Poniższe  argumenty  można  stosować  jako  rozkazy  dla
       telinit:

       0,1,2,3,4,5 lub 6
              mówią procesowi init  by  przełączył  w  odpowiedni
              poziom działania.

       a,b,c  każą  procesowi  init  by przetwarzał tylko te pola
              pliku /etc/inittab, które odnoszą  się  do  poziomu
              pracy a,b lub c.

       Q lub q
              każą  procesowi  init  jeszcze  raz przeczytać plik
              /etc/inittab.

       S lub s
              mówią żeby init przełączył w tryb jednego użytkown­
              ika.

       U lub u
              każą  procesowi  init  przeładować  się (zachowując
              obecny stan). Nie  występuje  ponowne  odczytywanie
              pliku   /etc/inittab.  Poziom  pracy  powinien  być
              ustawiony na Ss12345, w przeciwnym wypadku  żądanie
              może być "delikatnie" zignorowane.

       telinit  może  także  powiedzieć  procesowi init jak długo
       powinien on czekać między wysyłaniem  sygnałów  SIGTERM  i
       SIGKILL.   Domyślną  wartością jest 5 sekund, ale może być
       ona zmieniona za pomocą opcji -t sec.

       telinit  może  być  wywoływany  tylko  przez  użytkowników
       uprzywilejowanych.

       Wywołany  init sprawdza czy jest procesem inicjującym init
       czy też jest wywołany jako telinit poprzez  wgląd  w  swój
       identyfikator  procesu;  prawdziwy  identyfikator  procesu
       init ma zawsze wartość 1.  Teraz już wiadomo,  że  zamiast
       wywoływać  telinit  możesz  też  po prostu użyć init a nie
       skrótu.

ŚRODOWISKO
       Init ustawia następujące zmienne środowiskowe dla  wszyst­
       kich swoich dzieci:

       PATH   /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin



                          9 Marzec 1998                         3





INIT(8)      Podręcznik Administratora Systemu Linux      INIT(8)


       INIT_VERSION
              Jak  mówi  nazwa  -  wersja programu. Użyteczne dla
              określenia jeśli skrypt uruchamia się  bezpośrednio
              z init.

       RUNLEVEL
              Obecny poziom pracy systemu.

       PREVLEVEL
              Poprzedni  poziom  pracy systemu (użyteczne po zmi­
              anie poziomów).

       CONSOLE
              Konsola  systemu.  Tak  naprawdę  ta  wartość  jest
              przyjmowana  od jądra; jednak jeśli nie jest ustaw­
              iona init ustawi ją domyślnie na /dev/console.

FLAGI STARTOWE
       Jest możliwe by przekazać pewne flagi do  procesu  init  z
       monitora  startowego (np. LILO). Init dopuszcza stosowanie
       następujących flag:

       S, single
            Bootowanie w trybie jednego użytkownika. W tym trybie
            /etc/inittab  jest  sprawdzany (wczytywany) i skrypty
            startowe rc są zwykle  uruchamiane  zanim  wystartuje
            powłoka dla trybu jednego użytkownika.


       1-5  Poziom działania w jakim system ma wystartować.


       -b, emergency
            Wejście  bezpośrednio  w tryb jednego użytkownika bez
            uruchamiania żadnych innych skryptów startowych.


INTERFEJS
       Init  nasłuchuje  wiadomości  na  łączu   fifo   w   /dev,
       /dev/initctl.   Telinit używa tego do komunikacji z proce­
       sem init. Ten interfejs nie  jest  zbyt  dobrze  udokumen­
       towany czy skończony. Zainteresowani powinni przestudiować
       plik initreq.h w  podkatalogu  src/  archiwum  tarowego  z
       kodem źródłowym init.

SYGNAŁY
       Init reaguje na następujące sygnały:

       SIGHUP
            Init  szuka  /etc/initrunlvl  i  /var/log/initrunlvl.
            Jeśli jeden z tych plików istnieje i  zawiera  poziom
            pracy  z postaci ASCII, init przełącza w nowy, podany
            poziom.  Jest to tylko po  to  by  zachować  zgodność
            "wstecz"!   .    W   normalnej  sytuacji  (pliki  nie



                          9 Marzec 1998                         4





INIT(8)      Podręcznik Administratora Systemu Linux      INIT(8)


            istnieją) init zachowuje się tak jakby  wywołany  był
            telinit q.


       SIGUSR1
            Po  odebraniu  tegoż  sygnału, init zamyka i ponownie
            otwiera swoją kontrolkę fifo, /dev/initctl. Użyteczne
            w  przypadku skryptów startowych, gdy przemontowywany
            jest katalog /dev.

       SIGINT
            Zwykle  ten  sygnał  jest   wysyłany   z   jądra   by
            powiedzieć,  że wciśnięta została kombinacja klawiszy
            CTRL-ALT-DEL. Powoduje to rozpoczęcie akcji  ctrlalt­
            del.

       SIGWINCH
            Jądro  wysyła ten sygnał jeśli wciśnięty został klaw­
            isz KeyboardSignal.  Aktywuje to akcję kbrequest.


ZGODNE Z
       Init jest kompatybilny z init  obecnym  System  V.  Działa
       razem    ze   skryptami   w   katalogach   /etc/init.d   i
       /etc/rc{poziom_działania}.d.  Jeśli twój system używa  tej
       konwencji,  to  powinien być obecny plik README w katalogu
       /etc/init.d wyjaśniający jak te skrypty działają.

PLIKI
       /etc/inittab
       /etc/initscript
       /dev/console
       /etc/ioctl.save
       /var/run/utmp
       /var/log/wtmp
       /dev/initctl

UWAGI
       Init zakłada, że procesy i ich procesy potomne pozostają w
       tej samej grupie procesów, która była dla nich oryginalnie
       stworzona.  Jeżeli jakikolwiek proces  zmienił  swą  przy­
       należność  do  grupy  procesów,  init nie może ich zabić i
       może skończyć się na tym, że zostaną dwa procesy czytające
       z jednej linii terminala.


DIAGNOSTYKA
       Jeśli  init  zorientuje  się, że wciąż powtarza namnażanie
       zadanego procesu częściej niż 10 razy  w  ciągu  2  minut,
       wtedy  założy  że  gdzieś  w  wywołaniu komendy jest błąd,
       wyśle wiadomość o błędzie na konsloę systemu,  i  przerwie
       pomnażanie  danego pola do upłynięcia 5u minut lub do ode­
       brania sygnału.  Zapobiega to "zjadaniu"  zasobów  systemu
       gdy  ktoś popełni błąd typograficzny (bardziej po naszemu:



                          9 Marzec 1998                         5





INIT(8)      Podręcznik Administratora Systemu Linux      INIT(8)


       "literówkę") w pliku /etc/inittab lub gdy program  normal­
       nie uruchamiany dla danego wpisu jest usunięty.

AUTOR
       Miquel  van Smoorenburg (miquels@cistron.nl), initial man­
       ual page by Michael Haardt  (u31b3hs@pool.informatik.rwth-
       aachen.de).

PATRZ TEŻ
       getty(1),  login(1),  sh(1), who(1), shutdown(8), kill(1),
       inittab(5), initscript(5), utmp(5)














































                          9 Marzec 1998                         6