Difference between revisions of "SysVinit (Italiano)"
(→X Programs) |
m (interlink corretti) |
||
(21 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
[[Category:Boot process (Italiano)]] | [[Category:Boot process (Italiano)]] | ||
[[Category:Daemons and system services (Italiano)]] | [[Category:Daemons and system services (Italiano)]] | ||
− | |||
[[Category:System recovery (Italiano)]] | [[Category:System recovery (Italiano)]] | ||
− | {{ | + | [[el:Init and inittab]] |
− | {{ | + | [[en:SysVinit]] |
− | {{ | + | [[es:SysVinit]] |
+ | [[zh-CN:Init and inittab]] | ||
+ | '''init''' è il primo processo che viene eseguito una volta che il kernel Linux è stato caricato. Il programma di init di default usato da Arch è {{ic|/sbin/init}} ed è fornito dal pacchetto {{Pkg|sysvinit}} o {{pkg|systemd-sysvcompact}} (di default sulle nuove installazioni, vedere [[systemd (Italiano)|systemd]]). La parola {{ic|'''init'''}} in questo articolo si riferirà a {{ic|sysvinit}}. | ||
− | ''' | + | '''inittab''' è il file di configurazione dell'avvio per {{ic|init}} e si trova in {{ic|/etc}}. Esso contiene le cartelle per {{ic|init}} o quali programmi o script eseguire quando si entra in uno specifico runlervel. |
− | + | {{Tip|Consultare {{ic|man 5 inittab}} e {{ic|man 8 init}} per una descrizione più completa e formale.}} | |
− | {{Tip| | + | {{Tip|Sebbene Arch utilizzi {{ic|init}}, la maggior parte del lavoro viene delegato ai [[#Principali Script di Boot|principali script di boot]]. Questo articolo tratterà principalmente {{ic|init}} ed {{ic|inittab}}; per maggiori informazioni sul processo di avvio di Arch consultare [[Arch Boot Process (Italiano)|Arch Boot Process]].}} |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Panoramica di init e inittab== | ==Panoramica di init e inittab== | ||
− | init è sempre il | + | {{ic|init}} è sempre il processo con PID 1 ed all'infuori della gestione dell'area di swap, è il processo genitore per '''tutti''' gli altri processi. Può essere notato meglio il ruolo che svolge init nella gerarchia dei processi del proprio sistema usando il comando {{ic|pstree}}: |
− | {{ | + | {{hc|$ pstree -Ap|<nowiki> |
init(1)-+-acpid(3432) | init(1)-+-acpid(3432) | ||
|-crond(3423) | |-crond(3423) | ||
Line 36: | Line 31: | ||
</nowiki>}} | </nowiki>}} | ||
− | Oltre alle comuni inizializzazioni | + | Oltre alle comuni inizializzazioni di sistema (come suggerisce il nome), {{ic|init}} si occupa del riavvio, dello spegnimento e del avvio in recovery mode (single-user-mode). Per supportare tutto questo il file {{ic|inittab}} raggruppa queste modalità in diversi '''runlevel'''. I runlevel usati da Arch sono 0 per lo spegnimento, 1 (oppure S che è un suo alias) per il single-user-mode, 3 per il normale boot (multi-user-mode), 5 per [[Xorg (Italiano)|X]] e 6 per il riavvio. Altre distribuzioni possono adottare altre convenzioni, ma l'uso dei runlevel 0, 1 e 6 è universale. |
+ | Al momento dell'esecuzione, {{ic|init}} scansiona {{ic|inittab}} ed effettua le appropriate azioni. Una voce di {{ic|inittab}} ha questa forma: | ||
− | + | {{bc| | |
− | |||
− | |||
id:runlevels:action:process | id:runlevels:action:process | ||
− | + | }} | |
− | Dove {{ | + | Dove {{ic|id}} è un identificatore univoco per la voce (solo un nome, non influisce su init), e {{ic|runlevels}} è una stringa (non delimitata) di runlevel. Se il runlevel in cui entra {{ic|init}} compare in {{ic|runlevels}}, allora {{ic|action}} verrà svolta, eseguendo {{ic|process}}. Alcune {{ic|action}} speciali potrebbero portare {{ic|init}} ad ignorare {{ic|runlevels}} ed adottare un corrispondente metodo. Maggiori spiegazioni seguono nella sezione successiva. |
==Cambiare runlevel== | ==Cambiare runlevel== | ||
− | |||
− | init non | + | ===Attraverso il Boot Loader=== |
+ | |||
+ | Per cambiare il runlevel tramite la configurazione del proprio boot loader semplicemente aggiungere sulla stessa riga del kernel il numero del runlevel desiderato {{ic|n}}. Un'applicazione comune di questo metodo è [[Far partire X al boot#inittab]]. Per avviare sul runlevel desiderato aggiungere il relativo numero ai [[kernel parameters|parametri del kernel]] (es {{ic|3}} per il runlevel 3). | ||
+ | |||
+ | Se si usa un altro programma di init (ad esempio [[Systemd (Italiano)|systemd]]), aggiungere '''init=/bin/systemd''' o qualcosa di simile alla riga del kernel. | ||
+ | |||
+ | {{Nota|Se si utilizza un init diverso da sysvinit, il parametro runlevel potrebbe essere ignorato.}} | ||
+ | |||
+ | ===Dopo il boot=== | ||
+ | Dopo che il sistema è stato avviato, è possibile invocare {{ic|telinit n}} per dire ad {{ic|init}} di cambiare il runlevel ad {{ic|'''n'''}}. {{ic|init}} quindi leggerà {{ic|inittab}} e "confronterà" il runlevel {{ic|'''n'''}} con quello attuale - effettuando il kill dei processi non presenti nel nuovo runlevel e svolgendo le azioni non presenti nel vecchio runlevel. I processi presenti in entrambi i runlevel rimarranno invariati. La procedura di kill dei processi attualmente è un poco complessa; per maggiori informazioni e dettagli tecnici consultare la pagina di manuale di init. | ||
+ | |||
+ | {{ic|init}} non riesaminerà {{ic|inittab}}. Sarà necessario invocare {{ic|telinit}} esplicitamente per applicare le modifiche apportate ad {{ic|inittab}}. Il comando {{ic|telinit q}} farà si che {{ic|init}} riesamini {{ic|inittab}} ma non cambierà runlevel. | ||
==inittab== | ==inittab== | ||
− | In questa sezione saranno esaminate le voci comuni di inittab, nel solito ordine in | + | In questa sezione saranno esaminate le voci comuni di {{ic|inittab}}, nel solito ordine in cui appaiono nel file di default usato da Arch. Successivamente verranno fatti alcuni esempi per aiutare a creare le proprie voci di {{ic|inittab}}. |
− | {{Attenzione|Testare sempre il file {{ | + | {{Attenzione|Testare sempre il file {{ic|/etc/inittab}} modificato usando il comando {{ic|telinit q}} prima di effettuare un riavvio, oppure eventuali errori di sintassi potrebbero impedire l'avvio del sistema.}} |
===Default Runlevel=== | ===Default Runlevel=== | ||
− | Il runlevel di default è il numero 3. | + | Il runlevel di default è il numero 3. De commentare o aggiungere questo se si preferisce avviare il sistema nel runlevel 5 (che è comunemente usato per avviare X) come default: |
− | + | {{bc| | |
id:5:initdefault: | id:5:initdefault: | ||
− | + | }} | |
===Principali Script di Boot=== | ===Principali Script di Boot=== | ||
Questi sono gli script di init principali di Arch. | Questi sono gli script di init principali di Arch. | ||
− | + | {{bc| | |
rc::sysinit:/etc/rc.sysinit | rc::sysinit:/etc/rc.sysinit | ||
rs:S1:wait:/etc/rc.single | rs:S1:wait:/etc/rc.single | ||
rm:2345:wait:/etc/rc.multi | rm:2345:wait:/etc/rc.multi | ||
rh:06:wait:/etc/rc.shutdown | rh:06:wait:/etc/rc.shutdown | ||
− | + | }} | |
===Avvio in Single User=== | ===Avvio in Single User=== | ||
− | A volte il kernel può fallire ad avviarsi, a causa di un file system corrotto o di un disco rotto, file chiave mancanti eccetera. In questo caso la propria immagine di init | + | A volte il kernel può fallire ad avviarsi, a causa di un file system corrotto o di un disco rotto, file chiave mancanti eccetera. In questo caso la propria immagine di init può automaticamente entrare in '''single-user mode''' che permette di effettuare il login come root ed usa {{ic|/sbin/sulogin}} invece di {{ic|/sbin/login}} per controllare il processo di login. Si può entrare in single-user mode aggiungendo la lettera {{ic|S}} alla linea di comando del kernel nella configurazione di [[GRUB Legacy (Italiano)|GRUB Legacy]], [[GRUB2 (Italiano)|GRUB2]] [[LILO|LILO]], o [[syslinux]]. Se si vuole eseguire qualcosa di diverso da {{ic|sulogin}}, specificarlo in questa voce. |
− | + | {{bc| | |
su:S:wait:/sbin/sulogin -p | su:S:wait:/sbin/sulogin -p | ||
− | + | }} | |
− | ===Gettys | + | ===Gettys e Login=== |
− | + | Queste sono le voci fondamentali, esse eseguono le [[getty]] nei terminali. Molte configurazioni di default avranno le getty eseguite sulle {{ic|ttys1-6}} che effettueranno la visualizzazione della richiesta di login. Vedere anche {{ic|openvt, chvt, stty}} ed {{ic|ioctl}} | |
− | + | {{bc| | |
c1:234:respawn:/sbin/agetty 9600 tty1 xterm-color | c1:234:respawn:/sbin/agetty 9600 tty1 xterm-color | ||
c5:5:respawn:/sbin/agetty 57600 tty2 xterm-256color | c5:5:respawn:/sbin/agetty 57600 tty2 xterm-256color | ||
− | + | }} | |
===Ctrl-Alt-Del=== | ===Ctrl-Alt-Del=== | ||
− | Quando viene premuta la sequenza di tasti speciali {{Keypress| | + | Quando viene premuta la sequenza di tasti speciali {{Keypress|Ctrl+Alt+Del}}, questa voce determina l'azione che verrà eseguita. |
− | + | {{bc| | |
ca::ctrlaltdel:/sbin/shutdown -t3 -r now | ca::ctrlaltdel:/sbin/shutdown -t3 -r now | ||
− | + | }} | |
===Programmi X=== | ===Programmi X=== | ||
− | Se non si è interessati al | + | Se non si è interessati al debug, è possibile avviare ogni tipo di applicazione tramite {{ic|inittab}}. Un programma utile da avviare è il login manager desiderato quando si entra nel runlevel 5, multi-user-x-mode. Nel seguente esempio si può vedere come avviare [[SLiM (Italiano)|slim]] entrando nel runlevel 5. |
− | + | {{bc| | |
x:5:respawn:/usr/bin/slim >/dev/null 2>&1 | x:5:respawn:/usr/bin/slim >/dev/null 2>&1 | ||
#x:5:respawn:/usr/bin/xdm -nodaemon -confi /etc/X11/xdm/archlinux/xdm-config | #x:5:respawn:/usr/bin/xdm -nodaemon -confi /etc/X11/xdm/archlinux/xdm-config | ||
− | + | }} | |
− | ===Power-Sensing | + | ===Script Power-Sensing=== |
− | Init | + | {{ic|Init}} può comunicare con gli UPS (gruppi di continuità) ed eseguire processi in base allo stato del'UPS. Ecco alcuni esempi: |
− | + | {{bc| | |
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" | pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" | ||
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" | pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" | ||
− | + | }} | |
− | === | + | ===Combinazioni di tasti personalizzati=== |
− | + | Le seguenti linee aggiungono funzioni personalizzate quando una sequenza di tasti speciali vengono premuti. Si possono modificare queste sequenze per effettuare ciò che si preferisce, seguendo la sintassi di [[#Ctrl-Alt-Del|ctrl-alt-del]] | |
− | + | {{bc| | |
kb::kbrequest:/usr/bin/wall "Keyboard Request -- edit /etc/inittab to customize" | kb::kbrequest:/usr/bin/wall "Keyboard Request -- edit /etc/inittab to customize" | ||
− | + | }} | |
− | ==== | + | ====Sollevare una kbrequest==== |
− | + | E' possibile simulare la sequenza speciale di tasti '''kbrequest''' inviando il segnale WINCH al processo di init(1) come root (tramite sudo). In questo esempio, il comando: | |
kill -WINCH 1 | kill -WINCH 1 | ||
− | + | causa la scrittura da parte di {{ic|wall}} su tutti i tty di: | |
− | + | {{bc| | |
Broadcast message from root@askapachehost (console) (Wed Oct 27 14:02:26 2010): | Broadcast message from root@askapachehost (console) (Wed Oct 27 14:02:26 2010): | ||
Keyboard Request -- edit /etc/inittab to customize | Keyboard Request -- edit /etc/inittab to customize | ||
− | + | }} | |
− | == | + | ==Vedere Anche== |
− | *[[Start X at boot]] | + | *[[Start X at boot (Italiano)|Avviare X all'avvio del sistema]] |
− | *[[ | + | *[[Automatic login to virtual console (Italiano)|Login automatico in una console virtuale]] |
− | *[[Display Manager]] | + | *[[Display Manager (Italiano)|Display Manager]] |
*[[Disable Clearing of Boot Messages]] | *[[Disable Clearing of Boot Messages]] | ||
− | *[[xinitrc]] | + | *[[xinitrc (Italiano)|il file ~/.xinitrc]] |
− | *[[ | + | *[[SLiM (Italiano)|SLiM]] |
+ | |||
+ | ==Link Esterni== | ||
− | |||
* [http://en.wikipedia.org/wiki/Init Wikipedia: Init] | * [http://en.wikipedia.org/wiki/Init Wikipedia: Init] | ||
− | * [http://www.linux-tutorial.info/modules.php?name=MContent&pageid=65 Linux | + | * [http://www.linux-tutorial.info/modules.php?name=MContent&pageid=65 Conoscenze di base di Linux e turorial. Runlevel.] |
− | * [http://www.linux.com/articles/114107 Linux.com. | + | * [http://www.linux.com/articles/114107 Linux.com. Introduzione ai runlevel ed inittab(inglese)] |
− | * [http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts Linux.com. | + | * [http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts Linux.com. Una introduzione ai servizi, runlevel, ed agli script rc.d.] |
Revision as of 16:57, 1 November 2012
zh-CN:Init and inittab
init è il primo processo che viene eseguito una volta che il kernel Linux è stato caricato. Il programma di init di default usato da Arch è /sbin/init
ed è fornito dal pacchetto sysvinit o systemd-sysvcompact (di default sulle nuove installazioni, vedere systemd). La parola init
in questo articolo si riferirà a sysvinit
.
inittab è il file di configurazione dell'avvio per init
e si trova in /etc
. Esso contiene le cartelle per init
o quali programmi o script eseguire quando si entra in uno specifico runlervel.
man 5 inittab
e man 8 init
per una descrizione più completa e formale.init
, la maggior parte del lavoro viene delegato ai principali script di boot. Questo articolo tratterà principalmente init
ed inittab
; per maggiori informazioni sul processo di avvio di Arch consultare Arch Boot Process.Panoramica di init e inittab
init
è sempre il processo con PID 1 ed all'infuori della gestione dell'area di swap, è il processo genitore per tutti gli altri processi. Può essere notato meglio il ruolo che svolge init nella gerarchia dei processi del proprio sistema usando il comando pstree
:
$ pstree -Ap
init(1)-+-acpid(3432) |-crond(3423) |-dbus-daemon(3469) |-gpm(3485) |-mylogin(3536) |-ngetty(3535)---login(3954)---zsh(4043)---pstree(4326) |-polkitd(4033)---{polkitd}(4035) |-syslog-ng(3413)---syslog-ng(3414) `-udevd(643)-+-udevd(3194) `-udevd(3218)
Oltre alle comuni inizializzazioni di sistema (come suggerisce il nome), init
si occupa del riavvio, dello spegnimento e del avvio in recovery mode (single-user-mode). Per supportare tutto questo il file inittab
raggruppa queste modalità in diversi runlevel. I runlevel usati da Arch sono 0 per lo spegnimento, 1 (oppure S che è un suo alias) per il single-user-mode, 3 per il normale boot (multi-user-mode), 5 per X e 6 per il riavvio. Altre distribuzioni possono adottare altre convenzioni, ma l'uso dei runlevel 0, 1 e 6 è universale.
Al momento dell'esecuzione, init
scansiona inittab
ed effettua le appropriate azioni. Una voce di inittab
ha questa forma:
id:runlevels:action:process
Dove id
è un identificatore univoco per la voce (solo un nome, non influisce su init), e runlevels
è una stringa (non delimitata) di runlevel. Se il runlevel in cui entra init
compare in runlevels
, allora action
verrà svolta, eseguendo process
. Alcune action
speciali potrebbero portare init
ad ignorare runlevels
ed adottare un corrispondente metodo. Maggiori spiegazioni seguono nella sezione successiva.
Cambiare runlevel
Attraverso il Boot Loader
Per cambiare il runlevel tramite la configurazione del proprio boot loader semplicemente aggiungere sulla stessa riga del kernel il numero del runlevel desiderato n
. Un'applicazione comune di questo metodo è Far partire X al boot#inittab. Per avviare sul runlevel desiderato aggiungere il relativo numero ai parametri del kernel (es 3
per il runlevel 3).
Se si usa un altro programma di init (ad esempio systemd), aggiungere init=/bin/systemd o qualcosa di simile alla riga del kernel.
Dopo il boot
Dopo che il sistema è stato avviato, è possibile invocare telinit n
per dire ad init
di cambiare il runlevel ad n
. init
quindi leggerà inittab
e "confronterà" il runlevel n
con quello attuale - effettuando il kill dei processi non presenti nel nuovo runlevel e svolgendo le azioni non presenti nel vecchio runlevel. I processi presenti in entrambi i runlevel rimarranno invariati. La procedura di kill dei processi attualmente è un poco complessa; per maggiori informazioni e dettagli tecnici consultare la pagina di manuale di init.
init
non riesaminerà inittab
. Sarà necessario invocare telinit
esplicitamente per applicare le modifiche apportate ad inittab
. Il comando telinit q
farà si che init
riesamini inittab
ma non cambierà runlevel.
inittab
In questa sezione saranno esaminate le voci comuni di inittab
, nel solito ordine in cui appaiono nel file di default usato da Arch. Successivamente verranno fatti alcuni esempi per aiutare a creare le proprie voci di inittab
.
Default Runlevel
Il runlevel di default è il numero 3. De commentare o aggiungere questo se si preferisce avviare il sistema nel runlevel 5 (che è comunemente usato per avviare X) come default:
id:5:initdefault:
Principali Script di Boot
Questi sono gli script di init principali di Arch.
rc::sysinit:/etc/rc.sysinit rs:S1:wait:/etc/rc.single rm:2345:wait:/etc/rc.multi rh:06:wait:/etc/rc.shutdown
Avvio in Single User
A volte il kernel può fallire ad avviarsi, a causa di un file system corrotto o di un disco rotto, file chiave mancanti eccetera. In questo caso la propria immagine di init può automaticamente entrare in single-user mode che permette di effettuare il login come root ed usa /sbin/sulogin
invece di /sbin/login
per controllare il processo di login. Si può entrare in single-user mode aggiungendo la lettera S
alla linea di comando del kernel nella configurazione di GRUB Legacy, GRUB2 LILO, o syslinux. Se si vuole eseguire qualcosa di diverso da sulogin
, specificarlo in questa voce.
su:S:wait:/sbin/sulogin -p
Gettys e Login
Queste sono le voci fondamentali, esse eseguono le getty nei terminali. Molte configurazioni di default avranno le getty eseguite sulle ttys1-6
che effettueranno la visualizzazione della richiesta di login. Vedere anche openvt, chvt, stty
ed ioctl
c1:234:respawn:/sbin/agetty 9600 tty1 xterm-color c5:5:respawn:/sbin/agetty 57600 tty2 xterm-256color
Ctrl-Alt-Del
Quando viene premuta la sequenza di tasti speciali Template:Keypress, questa voce determina l'azione che verrà eseguita.
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Programmi X
Se non si è interessati al debug, è possibile avviare ogni tipo di applicazione tramite inittab
. Un programma utile da avviare è il login manager desiderato quando si entra nel runlevel 5, multi-user-x-mode. Nel seguente esempio si può vedere come avviare slim entrando nel runlevel 5.
x:5:respawn:/usr/bin/slim >/dev/null 2>&1 #x:5:respawn:/usr/bin/xdm -nodaemon -confi /etc/X11/xdm/archlinux/xdm-config
Script Power-Sensing
Init
può comunicare con gli UPS (gruppi di continuità) ed eseguire processi in base allo stato del'UPS. Ecco alcuni esempi:
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
Combinazioni di tasti personalizzati
Le seguenti linee aggiungono funzioni personalizzate quando una sequenza di tasti speciali vengono premuti. Si possono modificare queste sequenze per effettuare ciò che si preferisce, seguendo la sintassi di ctrl-alt-del
kb::kbrequest:/usr/bin/wall "Keyboard Request -- edit /etc/inittab to customize"
Sollevare una kbrequest
E' possibile simulare la sequenza speciale di tasti kbrequest inviando il segnale WINCH al processo di init(1) come root (tramite sudo). In questo esempio, il comando:
kill -WINCH 1
causa la scrittura da parte di wall
su tutti i tty di:
Broadcast message from root@askapachehost (console) (Wed Oct 27 14:02:26 2010): Keyboard Request -- edit /etc/inittab to customize
Vedere Anche
- Avviare X all'avvio del sistema
- Login automatico in una console virtuale
- Display Manager
- Disable Clearing of Boot Messages
- il file ~/.xinitrc
- SLiM