w tym - init
W Uniksie -na komputerowe systemy operacyjne , metody init (skrót od inicjalizacji ) jest pierwszym proces rozpoczęty podczas uruchamiania systemu komputerowego. Init to proces demona , który działa aż do zamknięcia systemu. Jest bezpośrednim lub pośrednim przodkiem wszystkich innych procesów i automatycznie przejmuje wszystkie osierocone procesy . Init jest uruchamiany przez jądro podczas procesu uruchamiania ; kernel panic nastąpi jeśli jądro jest w stanie go uruchomić. Init ma zazwyczaj przypisany identyfikator procesu 1.
W systemach uniksowych, takich jak System III i System V , projekt init odbiega od funkcjonalności zapewnianej przez init w Research Unix i jego pochodnych BSD . Do niedawna większość dystrybucji Linuksa wykorzystywała tradycyjny init, który jest w pewnym stopniu kompatybilny z Systemem V, podczas gdy niektóre dystrybucje, takie jak Slackware, używają skryptów startowych w stylu BSD, a inne, takie jak Gentoo, mają swoje własne, dostosowane wersje.
Od tego czasu powstało kilka dodatkowych implementacji init, próbujących rozwiązać ograniczenia projektowe w tradycyjnych wersjach. Należą do nich launchd , Service Management Facility , systemd , Runit i OpenRC .
Badania w stylu Unix/BSD
Research Unix init uruchomił inicjujący skrypt powłoki znajdujący się w /etc/rc
, a następnie uruchomił getty na terminalach pod kontrolą /etc/ttys
. Nie ma poziomów pracy; /etc/rc
plik określa, jakie programy są uruchamiane przez init. Zaletą tego systemu jest prostota i łatwość edycji ręcznej. Jednak nowe oprogramowanie dodane do systemu może wymagać zmian w istniejących plikach, co może spowodować, że system nie będzie się uruchamiał.
init BSD był, przed 4.3BSD, taki sam jak init Research UNIX; w 4.3BSD dodano obsługę uruchamiania systemu okienkowego, takiego jak X, na terminalach graficznych pod kontrolą /etc/ttys
. Aby usunąć wymóg edycji /etc/rc
, warianty BSD od dawna obsługują /etc/rc.local
plik specyficzny dla witryny , który jest uruchamiany w podpowłoce pod koniec sekwencji rozruchowej.
W pełni modularny system został wprowadzony wraz z NetBSD 1.5 i przeniesiony do FreeBSD 5.0 i jego następców. Ten system wykonuje skrypty w /etc/rc.d
katalogu. W przeciwieństwie do kolejności skryptów Systemu V, która wywodzi się z nazwy pliku każdego skryptu, system ten używa wyraźnych znaczników zależności umieszczonych w każdym skrypcie. Kolejność wykonywania skryptów jest określana przez narzędzie rcorder na podstawie wymagań podanych w tych znacznikach.
W stylu SysV
W porównaniu do swoich poprzedników, system UNIX III firmy AT&T wprowadził nowy styl konfiguracji uruchamiania systemu, który przetrwał (z modyfikacjami) w systemie UNIX V i dlatego jest nazywany „initem w stylu SysV”.
W każdej chwili działający System V znajduje się w jednym z wcześniej określonych stanów, zwanych poziomami pracy . Co najmniej jeden poziom pracy to normalny stan operacyjny systemu; zwykle inne poziomy pracy reprezentują tryb pojedynczego użytkownika (używany do naprawy wadliwego systemu), zamknięcie systemu i różne inne stany. Przejście z jednego poziomu pracy na inny powoduje uruchomienie zestawu skryptów dla każdego poziomu, które zazwyczaj montują systemy plików, uruchamiają lub zatrzymują demony , uruchamiają lub zatrzymują system X Window , wyłączają maszynę itp.
Poziomy pracy
Te poziomy pracy w układzie V opisują pewne stany maszynie, charakteryzujący się procesów i demonów działających w każdym z nich. Ogólnie istnieje siedem poziomów działania, z których trzy są uważane za „standardowe”, ponieważ są niezbędne do działania systemu:
- 0. Wyłącz
- 1. Tryb pojedynczego użytkownika (znany również jako S lub s )
- 6. Uruchom ponownie
Oprócz tych standardowych, systemy Unix i Unix-podobne traktują poziomy pracy nieco inaczej. Wspólny mianownik, /etc/inittab
plik, określa, co każdy skonfigurowany poziom działania robi w danym systemie.
Domyślne poziomy pracy
System operacyjny | Domyślny poziom działania |
---|---|
AIX | 2 |
antyX | 5 |
Gentoo Linux | 3 |
HP-UX | 3 (konsola/serwer/wieloużytkownik) lub 4 (graficzne) |
Linux od podstaw | 3 |
Slackware Linux | 3 |
Solaris / iluminaci | 3 |
UNIX System V Wersje 3.x, 4.x | 2 |
UnixWare 7.x | 3 |
W dystrybucjach Linuksa z domyślnym poziomem działania 5 w tabeli po prawej stronie, poziom działania 5 wywołuje wieloużytkownikowe środowisko graficzne z systemem X Window System , zwykle z menedżerem wyświetlania, takim jak GDM lub KDM . Jednak systemy operacyjne Solaris i illumos zazwyczaj rezerwują poziom pracy 5 w celu wyłączenia i automatycznego wyłączenia komputera.
W większości systemów wszyscy użytkownicy mogą sprawdzić bieżący poziom działania za pomocą komendy runlevel
lub who -r
. Użytkownik root zazwyczaj zmienia bieżący poziom działania, uruchamiając komendy telinit
lub init
. /etc/inittab
Plik ustawia domyślny poziom pracy z :initdefault:
wpisu.
W systemach Unix zmiana poziomu działania jest osiągana przez uruchomienie tylko brakujących usług (ponieważ każdy poziom definiuje tylko te, które są uruchomione/zatrzymane). Na przykład zmiana systemu z poziomu 3 na 4 może uruchomić tylko lokalny serwer X. Wracając do poziomu 3, zostałby ponownie zatrzymany.
Inne realizacje
Tradycyjnie jedną z głównych wad init jest to, że uruchamia zadania seryjnie, czekając na zakończenie ładowania każdego z nich przed przejściem do następnego. Gdy procesy startowe kończą się blokowaniem wejścia/wyjścia (I/O), może to spowodować duże opóźnienia podczas rozruchu. Przyspieszenie operacji we/wy, np. za pomocą dysków SSD, może skrócić opóźnienia, ale nie rozwiązuje pierwotnej przyczyny.
Podjęto różne wysiłki w celu zastąpienia tradycyjnych demonów init, aby rozwiązać ten i inne problemy projektowe, w tym:
- BootScripty w GoboLinux
- busybox-init , odpowiedni dla wbudowanych systemów operacyjnych , używany przez OpenWrt zanim został zastąpiony przez procd
- Epoch , jednowątkowy system inicjujący Linuksa skoncentrowany na prostocie i zarządzaniu usługami
- Initng , pełne zastąpienie init przeznaczone do asynchronicznego uruchamiania procesów
- launchd , zamiennik dla init w Darwin / macOS / iOS / tvOS począwszy od Mac OS X v10.4 (uruchamia SystemStarter do uruchamiania procesów 'rc.local' i SystemStarter w starym stylu)
- OpenRC , generator procesów, który wykorzystuje init dostarczany przez system, zapewniając jednocześnie izolację procesów, równoległe uruchamianie i zależność usług; używany przez Alpine Linux , Gentoo i jego pochodne oraz dostępny jako opcja w Devuan i Artix Linux
- runit , wieloplatformowy pełny zamiennik dla init z równoległym uruchamianiem usług, używany domyślnie w Void Linux
- Sun Service Management Facility (SMF), kompletna wymiana/przeprojektowanie init od podstaw w ilumos / Solaris począwszy od Solaris 10, ale uruchomiona jako jedyna usługa przez oryginalny init w stylu System V
- Shepherd , usługa GNU i menedżer demonów, która zapewnia asynchroniczną inicjalizację opartą na zależnościach; napisany w Guile Scheme i przeznaczony do interaktywnego hakowania podczas normalnej pracy systemu
- s6, pakiet oprogramowania zawierający system init.
- systemd , pakiet oprogramowania, w pełni zastępujący init w systemie Linux, który zawiera demona init z równoczesnym uruchamianiem usług, menedżerem usług i innymi funkcjami.
- SystemStarter , generator procesów uruchamiany przez init w stylu BSD w systemie Mac OS X przed Mac OS X v10.4
- Upstart , pełny zamiennik init przeznaczony do asynchronicznego uruchamiania procesów. Zainicjowany przez Ubuntu i wykorzystywane przez nich do roku 2014. Był również używany w Fedorze 9, Red Hat Enterprise Linux 6 i Google „s Chrome OS .
Od lutego 2019 systemd został przyjęty przez większość głównych dystrybucji Linuksa.
Zobacz też
- Zarządzanie usługami systemu operacyjnego
- Podsystem Menedżera Sesji — odpowiednik w Windows NT