Init
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).
init w wersji Systemu V
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).
Działanie
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.sysinitrc.bootrc.modulesrc.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
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żytkownika poleceniem telinit lub init. Domyślny poziom pracy zapisany jest w pliku /etc/inittab przy :initdefault:.
init w wersji BSD
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.
Inne warianty
Do najpopularniejszych implementacji programu init należą:
- systemd – nowy program inicjalizujący, który podobnie jak upstart, nie jest oparty na zwyczajnym init. Jego nazwa pochodzi od "system daemon". Jest stosowany w większości najpopularniejszych dystrybucji Linuksa.
- upstart – stworzona na potrzeby Ubuntu przez firmę Canonical Ltd.[8][9]
- initng – próba odświeżenia programu init dla systemu Linux.
Przypisy
- ↑ Procesy. W: Robert Love: Linux. Programowanie systemowe. Helion S.A., 2014, s. 37. ISBN 978-83-246-8285-0.
- ↑ 7.9 System boot and the init process. W: Maurice J. Bach: The Design of the UNIX operating system. Prentice-Hall, Inc. ISBN 978-0-13-201799-2.
- ↑ systemd - Gentoo Wiki [online], wiki.gentoo.org [dostęp 2018-01-11] (ang.).
- ↑ 2.1.4 Process Hierarchies. W: Andrew S. Tannenbaum, Herbert Bos: Modern Operating Systems. Pearson, 2008, s. 91-92. ISBN 978-0-13-359162-0.
- ↑ W. Stevens: Programowanie zastosowań sieciowych w systemie Unix. Wydawnictwa Naukowo-Techniczne, 1995. (pol.)., str. 88
- ↑ The rc.d System
- ↑ Strona podręcznika systemowego init
- ↑ Pakiet upstart w dystrybucji Ubuntu
- ↑ Strona projektu Upstart
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.