Il pacchetto Sysvinit contiene programmi per controllare l'avvio,
l'esecuzione e l'arresto del proprio sistema.
Tempo approssimativo di costruzione: 0.1 SBU
Spazio su disco richiesto: 0.9 MB
L'installazione di Sysvinit dipende da: Binutils,
Coreutils, GCC, Glibc, Make
6.55.1. Installazione di Sysvinit
Sysvinit-2.85 contiene un bug “buffer
overflow”. In certe condizioni, altera i valori delle
variabili di ambiente. Corregerlo:
patch -Np1 -i ../sysvinit-2.85-proclen-1.patch
Quando i run-level vengono modificati (per esempio quando viene
arrestato il sistema), init
invia segnali di terminazione a quei processi che sono stati
lanciati da init medesimo e che
non devono rimanere in esecuzione nel nuovo run-level. Nel fare
questo, init emette messaggi
quali “Sending processes the TERM
signal” che sembra implicare che vengano inviati
questi segnali a tutti i processi che sono in esecuzione al
momento. Per evitare questo errore di interpretazione, è possibile
modificare i sorgenti in modo che questo messaggio invece diventi
“Sending processes started by init the
TERM signal”:
sed -i 's@Sending processes@& started by init@g' \
src/init.c
Compilare Sysvinit:
make -C src
Installare il pacchetto:
make -C src install
6.55.2. Configurazione di Sysvinit
Creare un nuovo file /etc/inittab
eseguendo il seguente:
cat > /etc/inittab << "EOF"
# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600
2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600
3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600
4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600
5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600
6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600
# End /etc/inittab
EOF
Lo switch -I '\033(K' dice ad
agetty di inviare questa
sequenza di escape al terminale prima di fare qualsiasi altra cosa.
Questa sequenza di escape cambia il set di caratteri della console
in uno definito dall'utente, che può essere modificato eseguendo il
programma setfont. Attualmente,
lo script di init della console
del pacchetto LFS-Bootscripts chiama il programma setfont durante l'avvio del sistema. Inviare
questa sequenza di escape è necessario per coloro che usano font di
schermo non-ISO-8859-1, ma che non disturbano quelli inglesi.
6.55.3. Contenuti di Sysvinit
Programmi installati: halt, init, killall5, last, lastb
(link a last), mesg, pidof (link a killall5), poweroff (link a
halt), reboot (link a halt), runlevel, shutdown, sulogin, telinit
(link a init), utmpdump e wall
Brevi descrizioni
-
halt
-
normalmente invoca shutdown con il flag -h, tranne quando si trova già nel
run-level 0, quindi dice al kernel di arrestare il sistema.
Prima di fare questo annota nel file /var/log/wtmp che il sistema è stato
arrestato.
-
init
-
è la madre di tutti i processi. Legge i suoi comandi da
/etc/inittab, che normalmente gli
dice quali script eseguire per quale run-level, e quanti
getty generare.
-
killall5
-
invia un segnale a tutti i processi, esclusi quei processi
presenti nella sua stessa sessione, evitando in tal modo di
uccidere la shell che sta eseguendo lo script che lo ha
chiamato.
-
last
-
mostra quali utenti hanno fatto gli ultimi login (e logout),
ricercando all'indietro nel file /var/log/wtmp. Può anche mostrare gli avvi e
gli arresti del sistema, nonché tutti i cambi di run-level.
-
lastb
-
mostra i tentativi di login falliti, come registrati in
/var/log/btmp.
-
mesg
-
controlla quali altri utenti possono inviare messaggi al
terminale dell'utente corrente.
-
pidof
-
riporta i PID dei programmi specificati.
-
poweroff
-
dice al kernel di arrestare il sistema e spegnere il computer
(si veda anche halt)
-
reboot
-
dice al kernel di riavviare il sistema (si veda anche
halt)
-
runlevel
-
riporta i precedenti e l'attuale run-level, come registrato
nell'ultimo record di run-level in /var/run/utmp.
-
shutdown
-
spegne il sistema in modo sicuro, inviando segnali a tutti i
processi e notificando lo spegnimento a tutti gli utenti
connessi.
-
sulogin
-
consente a root di
effettuare il login. Normalmente è invocato da
init quando il sistema va
in modo singolo utente.
-
telinit
-
dice a init in quale
run-level entrare.
-
utmpdump
-
mostra il contenuto del file di login specificato in un
formato più leggibile.
-
wall
-
invia messaggi a tutti gli utenti connessi.