Loading AI tools
Z Wikipedii, wolnej encyklopedii
init (od ang. initialize) – pierwszy program uruchamiany w systemach uniksowych i uniksopodobnych (np. Linux czy BSD) przez jądro w trakcie procesu uruchamiania systemu operacyjnego. Jest to pierwszy proces obecny w przestrzeni procesów systemu.
Podstawowym zadaniem procesu init jest uruchomienie podstawowych serwisów systemu i przygotowanie środowiska do pracy. Init działa w oparciu o konfigurację zawartą w jednym lub więcej plikach konfiguracyjnych lub/i skryptach startowych. Na tej podstawie init uruchamia pozostałe procesy systemowe tworząc tzw. drzewo procesów[1].
Istnieje wiele różnych implementacji programu init wykorzystywanych przez różne systemy uniksowe, uniksopodobne (w tym dystrybucje Linuksa).
Ta wersja procesu init (zwana tu SysVinitem) to historycznie jedna z dwóch najstarszych implementacji programu init (drugą jest init zapoczątkowany w BSD). Działa przez wywołanie skryptu /etc/init
, który następnie uruchamia następne procesy systemowe (najczęściej w postaci demonów)[2]. Ten rodzaj programu inicjalizacyjnego jest wciąż stosowany w niektórych dystrybucjach Linuksa (np. Devuan, Gentoo[3], Slackware).
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 jest pierwszym procesem uruchamianym po starcie systemu, dlatego zawsze ma PID=1 i jest na szczycie hierarchii, którą tworzą wszystkie inne procesy potomne[4]. Jeżeli jakiś proces macierzysty zakończy działanie przed swoim procesem potomnym, potomek jest automatycznie przejmowany przez proces init (adoptowany).
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.
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:
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żytkownika poleceniem telinit
lub init
. Domyślny poziom pracy zapisany jest w pliku /etc/inittab
przy :initdefault:
.
Inną popularną wersją procesu init jest wersja opracowana na potrzeby rodziny systemów BSD. W wersji 4.3BSD proces init działa według skryptu z pliku /etc/rc
. Po przeprowadzeniu inicjacji systemu wczytywany jest plik /etc/ttys
opisujący parametry terminali, które zostaną uruchomione w celu dostępu do systemu operacyjnego (UNIX jest systemem dla wielu użytkowników, stąd systemowe wsparcie dla inicjowania wielu terminali)[5]. Podobny system jest dostępny w otwartoźródłowych wersjach systemu BSD takich jak FreeBSD, NetBSD[6] czy OpenBSD[7] itp.
Do najpopularniejszych implementacji programu init należą:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.