inittab - format pliku inittab używanego przez proces init, kompatybilny
z sysv
Plik
inittab opisuje które procesy zostały uruchomione
podczas startu i podczas normalnego działania (np. /etc/init.d/boot,
/etc/init.d/rc, getty...).
init(8) rozróżnia
różne
poziomy pracy, z których każdy
może mieć swój własny zestaw procesów
uruchamianych na starcie. Dopuszczalne poziomy pracy to
0-
6 i
A,
B i
C dla wpisów
ondemand (na
żądanie). Wpis w pliku inittab ma następujący
format:
id:
poziomy pracy:
akcja:
proces
Linie rozpoczynające się od "#" są ignorowane.
- id
- jest unikalną sekwencją 1-4 znaków,
która identyfikuje wpis w inittab (dla wersji sysvinit
skompilowanych ze starą biblioteką libc5 (< 5.2.18
lub z bibliotekami a.out, jego długość może
być ograniczona do dwóch znaków).
Uwaga: Dla procesów getty, lub innych procesów loginowych,
pole id powinno być końcówką
odpowiadającego im tty, np. 1 dla tty1.
Część bardzo starych programów login
może oczekiwać takiej konwencji, choć trudno
podać w tej chwili jakiś przykład.
- poziomy pracy
- opisują, w których poziomach pracy
podjąć podaną akcję.
- akcja
- opisuje jaką akcję podjąć.
- proces
- podaje proces, który należy uruchomić.
Jeśli pole procesu rozpoczyna się znakiem "+",
init nie dokona dla niego wpisów wtmp i utmp. Jest to wymagane dla
getty, które wolą robić to samodzielnie. Jest to
też błąd historyczny. Ograniczenie
długości tego pola wynosi 127 znaków.
Please note that including certain characters in the process field will
result in init attempting to launch a shell to interpret the
command contained in the process field. The characters which will trigger
a shell are: ~`!$^&*()=|{}[];
On systems which do not have a shell to be launched or which do not wish to
use a shell to interpret the process field, the process field can be
prefixed with the @ symbol. The @ will be ignored and everything followed
will be treated as a command to be launched, literally, by the init
service.
In cases where both a + and @ sign are to be used (to turn off logging and
shell interpretation), place the + sign before the @ symbol. Both flags
will be handled and then everything following the @ will be handled by
init
Pole
poziomy pracy może zawierać wiele znaków dla
różnych poziomów. Na przykład,
123
określa, że proces powinien być uruchamiany w poziomach
pracy 1, 2 i 3.
poziomy pracy do wpisów
ondemand
mogą zawierać
A,
B lub
C. Pole to jest
ignorowane w przypadku następujących wpisów:
sysinit,
boot i
bootwait.
Gdy poziom pracy jest zmieniany, zabijane są wszystkie procesy,
które nie są podane w nowym poziomie pracy, zaczynając od
sygnału SIGTERM, a następnie SIGKILL.
Dopuszczalne akcje w polu
akcje to:
- respawn
- Proces będzie uruchomiony od nowa po każdym
jego zakończeniu (np. getty).
- wait
- Proces będzie uruchomiony raz (gdy nadejdzie
właściwy poziom pracy), a init będzie
czekał na jego zakończenie.
- once
- Proces będzie wywołany raz po wejściu
we właściwy poziom pracy.
- boot
- Proces zostanie wywołany podczas rozruchu. Pole
poziomy pracy jest ignorowane.
- bootwait
- Proces zostanie wywołany podczas rozruchu, podczas
gdy init czeka na jego zakończenie (np. /etc/rc). Pole poziomy
pracy jest ignorowane.
- off
- Nie robi nic.
- ondemand
- Proces, który jest zaznaczony poziomem pracy
ondemand będzie wywoływany za każdym razem,
gdy zostanie wywołany wskazany poziom żądania. Mimo
to jednak, nie nastąpi zmiana poziomu pracy (poziomy pracy
ondemand to "a", "b", "c").
- initdefault
- Pole to określa poziom pracy, który powinien
być uruchomiony po procesie rozruchu. Jeśli żaden
taki nie istnieje, init zapyta o poziom pracy na konsoli. Pole
proces jest ignorowane.
- sysinit
- Proces zostanie wywołany podczas rozruchu. Zostanie
wywołany przed wszelkimi wpisami boot czy bootwait.
Pole poziomy pracy jest ignorowane.
- powerwait
- Proces zostanie wywołany w czasie problemów z
zasilaniem. init jest z reguły informowany o takim zdarzeniu
przez proces porozumiewający się z podłączonym
do komputera UPS-em. init będzie czekał na
zakończenie tego procesu przed dalszą
kontynuacją.
- powerfail
- Podobne do powerwait, lecz init nie będzie
czekał na zakończenie tego procesu.
- powerokwait
- Proces zostanie wywołany, gdy init otrzyma
sygnał, że zasilanie zostało przywrócone.
- powerfailow
- Proces zostanie wykonany, gdy init dowie się
o krytycznym poziomie baterii zewnętrznego UPS-a i o
właśnie zawodzącym zasilaniu (jeśli
zewnętrzny UPS i monitorujący go proces są w stanie
wykryć taki stan).
- ctrlaltdel
- Proces zostanie wykonany gdy init otrzyma
sygnał SIGINT. Znaczy to, że ktoś na konsoli
nacisnął kombinację CTRL-ALT-DEL. Zazwyczaj
wywołuje się wtedy coś w rodzaju shutdown,
zarówno w celu przejścia do poziomu
jednoużytkownikowego, jak i do ponownego uruchomienia
komputera.
- kbrequest
- Proces zostanie wywołany gdy init otrzyma
sygnał z sterownika klawiatury, mówiący że na
konsoli została naciśnięta specjalna kombinacja
klawiszy.
Dokumentacja tej funkcji nie jest jeszcze kompletna; więcej danych
można znaleźć w pakietach kbd-x.xx (w chwili
powstania tego tekstu było to kbd-0.94). Ogólnie,
można mapować niektóre kombinacje klawiszy do akcji
"KeyboardSignal". Na przykład, aby zmapować na ten
cel kombinację alt plus strzałka w górę,
należy użyć następującego wpisu w swoim
pliku keymap:
alt keycode 103 = KeyboardSignal
Oto przykład inittab, który zawiera stary inittab Linuksa:
# inittab do Linuksa
id:1:initdefault:
rc::bootwait:/etc/rc
1:1:respawn:/etc/getty 9600 tty1
2:1:respawn:/etc/getty 9600 tty2
3:1:respawn:/etc/getty 9600 tty3
4:1:respawn:/etc/getty 9600 tty4
Ten plik inittab wywołuje
/etc/rc podczas rozruchu i uruchamia
getty dla tty1-tty4.
Bardziej wykwintny inittab, z różnymi poziomami pracy (patrz
komentarze):
# Poziom, w którym startować
id:2:initdefault:
# Skrypt inicjujący/konfigurujący system w czasie rozruchu.
si::sysinit:/etc/init.d/rcS
# Co robić w trybie jednoużytkownikowym.
~:S:wait:/sbin/sulogin
# /etc/init.d wykonuje skrypty S i K w trakcie
# zmiany poziomu pracy.
#
# Poziom pracy 0 oznacza zatrzymanie.
# Poziom pracy 1 jest jednoużytkownikowy.
# Poziomy pracy 2-5 są wieloużytkownikowe.
# Poziom pracy 6 oznacza ponowne uruchomienie.
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Co zrobić przy ctrl+alt+del.
ca::ctrlaltdel:/sbin/shutdown -t1 -h now
# Poziomy 2 i 3: getty na konsolach wirtualnych
# Poziom 3: getty na terminalu (ttyS0) i modemie (ttyS1)
1:23:respawn:/sbin/getty tty1 VC linux
2:23:respawn:/sbin/getty tty2 VC linux
3:23:respawn:/sbin/getty tty3 VC linux
4:23:respawn:/sbin/getty tty4 VC linux
S0:3:respawn:/sbin/getty -L 9600 ttyS0 vt320
S1:3:respawn:/sbin/mgetty -x0 -D ttyS1
/etc/inittab
init was written by
Miquel van
Smoorenburg This manual page was written by
Sebastian
Lederer and modified by
Michael
Haardt
init(8),
telinit(8)