Init

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

init (od ang. initialize) jest to pierwszy program uruchamiany w systemach uniksowych (np. Linux) przez jądro w trakcie procesu uruchamiania systemu operacyjnego. Następnie na podstawie plików konfiguracyjnych lub skryptów startowych init uruchamia pozostałe procesy systemowe, dla których jest procesem macierzystym.

Istnieje wiele różnych implementacji programu init wykorzystywanych przez różne systemy uniksowe lub dystrybucje Linuksa.

Implementacje[edytuj | edytuj kod]

Do najpopularniejszych implementacji programu init należą:

Działanie[edytuj | edytuj kod]

Gdy jakiś proces w systemie zostanie zduplikowany za pomocą wywołania systemowego fork(), proces pierwotny jest nazwany rodzicem (procesem macierzystym) nowego procesu - procesu potomnego. Proces init ma zawsze PID=1 i jest na szczycie hierarchii jaką tworzą procesy macierzyste i potomne. Jeżeli jakiś proces macierzysty zakończy działanie przed swoim procesem potomnym, potomek jest automatycznie przejmowany przez proces init.

Proces init steruje poziomami działania oraz określonymi skryptami powiązanymi z każdym z tych poziomów. Te skrypty, najczęściej nazywane skryptami startowymi, sprawdzają integralność systemu, a następnie uruchamiają usługi właściwe dla danego poziomu działania.

Skrypty uruchamiane przez init znajdują się w katalogu /etc/rc.d lub /etc/init.d i są uporządkowane według poziomu działania. Zwykłe pliki, znajdujące się w katalogu /etc/rc.d lub /etc/init.d, są skryptami startowymi uruchamianymi podczas ładowania systemu. W zależności od dystrybucji nazwy mogą się różnić, ale zwykle są to któreś z poniższych:

  • rc.sysinit
  • rc.boot
  • rc.modules
  • rc.local (zawiera ustawienia lokalne i jest uruchamiany po wszystkich innych skryptach startowych)

Z kolei standardową lokalizacją, w której jądro Linux szuka pliku uruchamialnego init jest katalog /sbin. W przeciwieństwie do innych procesów procesu init nie można zakończyć sygnałem SIGKILL.

Poziomy pracy[edytuj | edytuj kod]

Istnieje osiem poziomów pracy w których może być uruchomiony init: 0-6 oraz S lub s. Zarezerwowane są następujące poziomy:

  • 0 – służący do zatrzymania systemu,
  • 1 – wprowadzający system w tryb pracy jednego użytkownika,
  • 6 – uruchamiający system ponownie,
  • S lub s – przeznaczony dla skryptów wykonywanych podczas wchodzenia w tryb 1.

Poziomy pracy 2-5 są trybami dla wielu użytkowników i jeden z nich (w zależności od dystrybucji) jest poziomem uruchamianym domyślnie.

Proces init może zostać uruchomiony przez superużytkownika w celu przełączenia systemu na inny poziom działania. Wtedy init uruchomi skrypty, które przełączą system na odpowiedni poziom działania.

W większości systemów użytkownik może sprawdzić poziom pracy poprzez polecenia:

$ runlevel
$ who -r

Aktualny poziom pracy może być zmieniany przez superużytkownik poleceniem telinit lub init. Domyślny poziom pracy zapisany jest w pliku /etc/inittab przy :initdefault:.

Przypisy