Capitolo 3. Inizializzazione del sistema

Indice

3.1. Panoramica del processo di avvio
3.2. Stadio 1: il BIOS
3.3. Stadio 2: il bootloader
3.4. Stadio 3: il mini-sistema Debian
3.5. Stadio 4: il normale sistema Debian
3.5.1. Il significato del runlevel
3.5.2. La configurazione del runlevel
3.5.3. Esempio di gestione dei runlevel
3.5.4. Il parametro predefinito per ciascuno script init
3.5.5. Il nome host
3.5.6. Il filesystem
3.5.7. Inizializzazione delle interfacce di rete
3.5.8. Inizializzazione dei servizi di rete
3.5.9. I messaggi di sistema
3.5.10. I messaggi del kernel
3.5.11. Il sistema udev
3.5.12. L'inizializzazione dei moduli del kernel

È bene che l'amministratore di sistema conosca almeno a grandi linee come viene avviato e configurato il sistema Debian. Anche se i dettagli precisi sono nei file sorgenti dei pacchetti installati e nella loro documentazione, essi sono un po' troppo per la maggior parte degli utenti.

Ho cercato di fornire una veloce panoramica dei punti chiave del sistema Debian e della loro configurazione, come punto di riferimento per l'utente, in base alle conoscenze attuali e passate mie e di altri. Dato che il sistema Debian è in costante evoluzione, la situazione potrebbe essere cambiata. Prima di fare qualsiasi modifica al sistema, si dovrebbe far riferimento alla documentazione più recente per ciascun pacchetto.

3.1. Panoramica del processo di avvio

Il sistema del computer passa attraverso varie fasi del processo di avvio, dall'accensione a quando offre all'utente il sistema operativo (SO) pienamente funzionante.

Per semplicità la spiegazione è limitata alla piattaforma PC tipica con l'installazione standard.

Il normale processo di avvio è come un razzo a quattro stadi. Ogni stadio del razzo passa il controllo del sistema allo stadio successivo.

Naturalmente questo può essere configurato in modo diverso. Per esempio, se è stato compilato un kernel personalizzato, si potrebbe saltare la fase con il mini-sistema Debian. Non dare per scontato che quanto detto valga per il proprio sistema fino a che non si abbia controllato direttamente.

[Nota] Nota

Per piattaforme PC non sorpassate, come il sistema SUN o Macintosh, il BIOS nella ROM e la partizione sul disco possono essere alquanto differenti (Sezione 9.3.2, «Configurazione del partizionamento dei dischi»). In questi casi, cercare la documentazione piattaforma specifica altrove.

3.2. Stadio 1: il BIOS

Il BIOS è il primo stadio del processo di avvio che viene avviato dall'accensione. Il BIOS, che risiede nella ROM (read only memory, memoria in sola lettura) è eseguito da un particolare indirizzo di memoria al quale è inizializzato, dall'accensione, il contatore di programma della CPU.

Il BIOS effettua l'inizializzazione base dell'hardware (POST (power on self test, auto-test di accensione) e passa il controllo del sistema allo stadio successivo fornito dall'utente. Il BIOS è di solito fornito con l'hardware.

La schermata di avvio del BIOS indica solitamente quale tasto o tasti premere per entrare nella schermata di impostazioni del BIOS, per configurarne il comportamento. Tasti comunemente usati sono F1, F2, F10, Esc, Ins e Canc. Se la schermata di avvio del BIOS è nascosta da una bella schermata grafica, si può premere dei tasti, come Esc, per disabilitarla. Quali tasti vadano premuti dipende fortemente dall'hardware.

Dalla schermata di impostazioni del BIOS si può scegliere la posizione hardware e la priorità del codice avviato dal BIOS. Tipicamente vengono caricati in memoria i primi pochi settori del primo dispositivo selezionato trovato (disco fisso, dischetto floppy, CD-ROM, ...) e viene eseguito questo codice iniziale che può essere una qualsiasi tra le cose seguenti.

  • Il codice del bootloader

  • Il codice del kernel di SO di passaggio come FreeDOS

  • Il codice del kernel del sistema operativo finale, se può essere contenuto in questo piccolo spazio

Tipicamente il sistema viene avviato dalla partizione specificata del disco fisso primario. I primi 2 settori del disco fisso nei PC vecchi contengono ilmaster boot record (MBR). Le informazioni sulle partizioni del disco, inclusa la selezione per l'avvio sono memorizzate alla fine di questo MBR. Il primo codice boot loader eseguito dal BIOS occupa la parte restante di questo MBR.

3.3. Stadio 2: il bootloader

Il bootloader è il secondo stadio del processo di avvio che è iniziato dal BIOS. Carica l'immagine kernel del sistema e l'immagine initrd in memoria e passa il controllo ad essi. L'immagine initrd è l'immagine del file system radice ed il suo supporto dipende dal bootloader usato.

Il sistema Debian normalmente usa il kernel Linux come kernel predefinito del sistema. L'immagine initrd dell'attuale kernel Linux 2.6 è tecnicamente l'immagine initramfs (initial RAM filesystem). Questa è un archivio cpio compresso con gzip dei file nel filesystem root.

L'installazione predefinita del sistema Debian posiziona, per la piattaforma PC, il codice di primo stadio del bootloader GRUB nell'MBR. Sono disponibili molti bootloader e opzioni di configurazione.

Tabella 3.1. Elenco di bootloader

bootloader pacchetto popcon dimensione initrd descrizione
GRUB Legacy grub-legacy V:0.2, I:0.7 1741 Supportato Intelligente abbastanza da capire partizioni su disco e filesystem come vfat, ext3, ... (predefinito in lenny)
GRUB 2 grub-pc V:7, I:71 456 Supportato Intelligente abbastanza da capire partizioni su disco e filesystem come vfat, ext3, ...
GRUB 2 grub-rescue-pc V:0.03, I:0.4 3889 Supportato È l'immagine di ripristino avviabile di GRUB 2 (CD e floppy) (versione PC/BIOS)
Lilo lilo V:0.2, I:1.5 594 Supportato Si basa sulla posizione dei settori dei dati sul disco fisso. (Vecchio)
Isolinux syslinux V:1.5, I:8 172 Supportato Capisce il filesystem ISO 9660. Usato dal CD di avvio.
Syslinux syslinux V:1.5, I:8 172 Supportato Capisce il filesystem MSDOS (FAT). Usato dai dischetti floppy di avvio.
Loadlin loadlin V:0.03, I:0.2 144 Supportato Il nuovo sistema viene avviato dal sistema FreeDOS/MSDOS.
MBR di Neil Turton mbr V:0.3, I:3 92 Non supportato Software libero che sostituisce MBR MSDOS. Capisce solo le partizioni su disco.

[Avvertimento] Avvertimento

Non mettere mano ai bootloader senza aver creato supporti avviabili di ripristino (CD o floppy) da immagini nel pacchetto grub-rescue-pc. Questo permette di avviare il sistema anche senza un bootloader funzionante sul disco fisso.

Per GRUB Legacy, il file di configurazione del menu è "/boot/grub/menu.lst". Contiene, per esempio, delle voci come quella seguente.

title           Debian GNU/Linux
root            (hd0,2)
kernel          /vmlinuz root=/dev/hda3 ro
initrd          /initrd.img

Per GRUB 2, il file di configurazione del menu è "/boot/grub/grub.cfg". Viene generato automaticamente da "/usr/sbin/update-grub" usando modelli da "/etc/grub.d/*" e impostazioni da "/etc/default/grub". Contiene, per esempio, delle voci come quella seguente.

menuentry "Debian GNU/Linux" {
        set root=(hd0,3)
        linux /vmlinuz root=/dev/hda3
        initrd /initrd.img
}

Negli esempi precedenti i parametri di GRUB hanno i seguenti significati.

Tabella 3.2. Significato dei parametri di GRUB

parametro di GRUB significato
root usa la terza partizione sul primo disco fisso indicandola come "(hd0,2)" in GRUB legacy o come "(hd0,3)" in GRUB 2
kernel usa il kernel che si trova in "/vmlinuz" con i parametri "root=/dev/hda3 ro"
initrd usa l'immagine initrd/initramfs che si trova in "/initrd.img"

[Nota] Nota

Il valore per il numero di partizione usato dal programma GRUB Legacy è minore di uno rispetto a quello normale usato dal kernel Linux e dagli strumenti di utilità. il programma GRUB 2 ha risolto questo problema.

[Suggerimento] Suggerimento

Per identificare un particolare dispositivo a blocchi si può usare il suo UUID (vedere Sezione 9.3.3, «Accedere alle partizioni usando UUID») invece del suo nome file come "/dev/hda3", ad esempio "root=UUID=81b289d5-4341-4003-9602-e254a17ac232 ro".

[Suggerimento] Suggerimento

Si può avviare un bootloader da un altro bootloader usando una tecnica chiamata caricamento a catena.

Vedere "info grub" e grub-install(8).

3.4. Stadio 3: il mini-sistema Debian

Il mini-sistema Debian è il terzo stadio del processo di avvio che viene iniziato dal bootloader. Esegue il kernel del sistema con il suo filesystem root in memoria. Questo è uno stadio opzionale preparatorio del processo di avvio.

[Nota] Nota

L'espressione "sistema Debian mini" è stata coniata per descrivere il terzo stadio del processo di avvio in questo documento. Normalmente ci si riferisce a questo sistema come sistema initrd o initramfs. Un sistema simile in memoria è usato dall'installatore Debian.

Lo script "/init" viene eseguito come primo programma in questo filesystem root in memoria. È un programma script di shell che inizializza il kernel in spazio utente e passa il controllo allo stadio successivo. Questo mini-sistema Debian offre flessibilità al processo di avvio, come la possibilità di aggiungere moduli del kernel prima del processo di avvio principale o di montare il filesystem root come cifrato.

Si può interrompere questa parte del processo di avvio per ottenere una shell di root fornendo il parametro di avvio per il kernel "break=init" etc. Vedere lo script "/init" per ulteriori condizioni di interruzione. Questo ambiente shell è abbastanza sofisticato da fare una buona ispezione dell'hardware della macchina.

I comandi disponibili in questo mini-sistema Debian sono versioni minimali e vengono principalmente forniti da uno strumento GNU chiamato busybox(1).

[Attenzione] Attenzione

È necessario usare l'opzione "-n" per il comando mount quando si è nel filesystem root in sola lettura.

3.5. Stadio 4: il normale sistema Debian

Tabella 3.3. Elenco di utilità di avvio per il sistema Debian

pacchetto popcon dimensione descrizione
initscripts V:89, I:99 268 script per inizializzare ed arrestare il sistema
sysvinit V:87, I:99 236 utilità init(8) in stile System-V
sysv-rc V:90, I:99 237 meccanismo di cambiamento del runlevel in stile System-V
sysvinit-utils V:89, I:99 208 utilità in stile System-V (startpar(8), bootlogd(8), …)
lsb-base V:89, I:99 69 funzionalità di script init Linux Standard Base 3.2
insserv V:65, I:74 213 strumento per organizzare la sequenza di avvio usando dipendenze LSB negli script init.d
upstart V:0.11, I:0.16 696 demone init(8) basato su eventi per concorrenza (alternativa a sysvinit)
readahead-fedora V:0.5, I:0.8 87 readahead(8) per precaricare file del processo di avvio
uswsusp V:1.4, I:6 514 strumenti per usare la sospensione software in spazio utente fornita da Linux
kexec-tools V:0.2, I:0.7 279 strumento kexec per riavvii kexec(8) (riavvio a caldo)
bootchart V:0.05, I:0.5 132 analizzatore delle prestazioni del processo di avvio
bootchart-view V:0.05, I:0.3 280 analizzatore delle prestazioni del processo di avvio (visualizzazione)
mingetty V:0.15, I:0.3 64 getty(8) solo console
mgetty V:0.11, I:0.4 416 rimpiazzio di getty(8) per smart modem

[Suggerimento] Suggerimento

Tutti i meccanismi di avvio sono compatibili grazie agli script "/etc/init.d/rc", "/etc/init.d/rcS", "/usr/sbin/update-rc.d" e "/usr/sbin/invoke-rc.d".

[Suggerimento] Suggerimento

Il pacchetto readahead-fedora può velocizzare l'avvio di un sistema con una buona quantità di DRAM.

Il sistema Debian normale è il quarto stadio del processo di avvio che viene iniziato dal mini-sistema Debian. Il kernel di sistema del mini-sistema Debian continua ad essere in esecuzione anche in questo ambiente. Il filesystem root viene cambiato da quello in memoria all'effettivo filesystem sul disco fisso.

Il programma "/sbin/init" viene eseguito per primo e effettua il lavoro principale del processo di avvio. Debian normalmente usa lo schema sysvinit tradizionale tramite il pacchetto sysv-rc. Vedere init(8), inittab(5) e "/usr/share/doc/sysv-rc/README.runlevels.gz" per una spiegazione dettagliata. Questo processo principale di avvio fondamentalmente attraversa le fasi seguenti.

  1. Il sistema Debian va nel runlevel N (None, nessuno) per inizializzare il sistema seguendo la descrizione "/etc/inittab".

  2. Il sistema Debian va nel runlevel S per inizializzare il sistema in modalità singolo-utente per completare l'inizializzazione dell'hardware, ecc.

  3. Il sistema Debian va in uno dei runlevel multiutente (da 2 a 5) specificato per avviare i servizi di sistema.

Il runlevel iniziale usato per la modalità multi-utente è specificato con il parametro di avvio del kernel "init=" o nella riga "initdefault" del file "/etc/inittab". Il sistema Debian, nella configurazione predefinita, si avvia nel runlevel 2.

Tutti i file script effettivamente eseguiti dal sistema init sono contenuti nella directory "/etc/init.d/".

3.5.1. Il significato del runlevel

Ogni runlevel usa una directory per la propria configurazione e ha un significato specifico come descritto nella tabella seguente.

Tabella 3.4. Elenco dei runlevel e descrizione del loro uso

runlevel directory descrizione dell'uso del runlevel
N nessuna livello di avvio del sistema (NONE) (nessuna directory "/etc/rcN.d/")
0 /etc/rc0.d/ arresta il sistema
S /etc/rcS.d/ modalità utente-singolo all'avvio (alias "s")
1 /etc/rc1.d/ modalità utente-singolo dalla modalità multi-utente
2 /etc/rc2.d/ modalità multi-utente
3 /etc/rc3.d/ ""
4 /etc/rc4.d/ ""
5 /etc/rc5.d/ ""
6 /etc/rc6.d/ riavvia il sistema
7 /etc/rc7.d/ modalità multi-utente valida ma normalmente non usata
8 /etc/rc8.d/ ""
9 /etc/rc9.d/ ""

Si può cambiare il runlevel dalla console, per esempio a 4, nel modo seguente.

$ sudo telinit 4
[Attenzione] Attenzione

Il sistema Debian non assegna nessuna differenza significativa airunlevel compresi tra 2 e 5. L'amministratore di un sistema Debian può cambiare questa situazione. (Cioè Debian non è Red Hat LinuxSolaris di Sun MicrosystemsHP-UX di Hewlett PackardAIX di IBM, né …)

[Attenzione] Attenzione

Il sistema Debian non popola le directory per i runlevel tra 7 e 9 quando il pacchetto è installato. Le varianti di Unix tradizionali non usano questi runlevel.

3.5.2. La configurazione del runlevel

Quando i comandi init(8) o telinit(8) vanno nel runlevel "<n>", il sistema fondamentalmente esegue gli script di inizializzazione nel modo seguente.

  1. Gli script in "/etc/rc<n>.d/ il cui nome inizia con una "K" vengono eseguiti in ordine alfabetico con l'unico argomento "stop". (uccisione dei servizi)

  2. Gli script in "/etc/rc<n>.d/ il cui nome inizia con una "S" vengono eseguiti in ordine alfabetico con l'unico argomento "start". (avvio dei servizi)

Per esempio, se in una directory di runlevel sono presenti i collegamenti "S10sysklogd" e "S20exim4", "S10sysklogd", che è un collegamento simbolico a "../init.d/sysklogd", viene eseguito prima di "S20exim4", che è un collegamento simbolico a "../init.d/exim4".

Questo semplice sistema di inizializzazione sequenziale è il classico sistema di avvio in stile System V ed è stato usato fino al rilascio Lenny di Debian.

Il sistema Debian recente è stato ottimizzato per eseguire invece gli script di inizializzazione in modo concorrente.

[Avvertimento] Avvertimento

È sconsigliato fare qualsiasi cambiamento ai collegamenti simbolici in "/etc/rcS.d/" a meno che non si sia più esperti del manutentore.

3.5.3. Esempio di gestione dei runlevel

Per esempio, si può impostare il sistema dei runlevel in un modo che ricorda Red Hat Linux nel modo seguente.

  • init avvia il sistema con runlevel=3 in modo predefinito.

  • init non avvia gdm3(1) nei runlevel=(0,1,2,6).

  • init avvia gdm3(1) nei runlevel=(3,4,5).

Si può ottenre questo modificando con un editor il file "/etc/inittab", per cambiare il runlevel di avvio, e usando strumenti amichevoli di gestione dei runlevel come sysv-rc-conf o bum, per modificare i runlevel. Se si vuole invece usare solamente la riga di comando, si può farlo nel modo seguente (dopo l'installazione standard del pacchetto gdm3 e avendolo selezionato come display manager prescelto).

# cd /etc/rc2.d ; mv S21gdm3 K21gdm3
# cd /etc ; perl -i -p -e 's/^id:.:/id:3:/' inittab

Notare che il file "/etc/X11/default-display-manager" viene controllato quando vengono avviati i demoni per display manager: xdm, gdm3, kdm e wdm.

[Nota] Nota

Si può sempre avviare X da qualsiasi shell in console con il comando startx(1).

3.5.4. Il parametro predefinito per ciascuno script init

Il parametro predefinito per ciascun script init in "/etc/init.d/" è dato dal file corrispondente in "/etc/default/" che contiene solamente assegnazioni di variabili d'ambiente. Il nome della directory è una scelta specifica di Debian. È grossomodo l'equivalente della directory "/etc/sysconfig" di Red Hat Linux e altre distribuzioni. Per esempio, si può usare "/etc/default/cron" per controllare il funzionamento di "/etc/init.d/cron".

Il file "/etc/default/rcS" può essere usato per personalizzare impostazioni standard dell'avvio per motd(5), sulogin(8), ecc.

Se non si ottiene il comportamento voluto cambiando queste variabili, si possono modificare gli script init stessi. Questi sono file di configurazione modificabili dall'amministratore di sistema.

3.5.5. Il nome host

Il kernel gestisce il nome host del sistema. Lo script init nel runlevel S, che è un collegamento simbolico a "/etc/init.d/hostname.sh" imposta il nome host del sistema all'avvio (usando il comando hostname) al nome memorizzato in "/etc/hostname". Questo file dovrebbe contenere solamente il nome host del sistema, non un nome di dominio pienamente qualificato.

Per visualizzare il nome host attuale eseguire hostname(1) senza alcun argomento.

3.5.6. Il filesystem

Benché il filesystem root sia montato dal kernel quando viene avviato, gli altri filesystem sono montati nel runlevel S dagli scritp init seguenti.

  • "`/etc/init.d/mountkernfs.sh" per i filesystem del kernel in "/proc", "/sys", ecc.

  • "`/etc/init.d/mountdevsubfs.sh" per i filesystem virtuali in "/dev"

  • "`/etc/init.d/mountall.sh" per i filesystem normali, usando "/etc/fstab"

  • "`/etc/init.d/mountnfs.sh" per i filesystem di rete, usando using"/etc/fstab"

Le opzioni usare per montare i file system del kernel sono impostate in "/etc/default/rcS". Vedere rcS(5).

Le opzioni usate per montare i filesystem sono impostate in "/etc/fstab". Vedere Sezione 9.3.6, «Ottimizzare il file system con opzioni di mount»

[Nota] Nota

L'effettivo montaggio dei filesystem di rete attende l'avvio delle interfacce di rete.

[Avvertimento] Avvertimento

Dopo aver montato tutti i filesystem, i file temporanei in "/tmp", "/var/lock" e "/var/run" vengono ripuliti ad ogni avvio.

3.5.7. Inizializzazione delle interfacce di rete

Le interfacce di rete sono inizializzate nel runlevel S dagli script init che sono collegamenti simbolici a "/etc/init.d/ifupdown-clean" e "/etc/init.d/ifupdown". VedereCapitolo 5, Impostazione della rete per la loro configurazione.

3.5.8. Inizializzazione dei servizi di rete

Molti servizi di rete (vedere Capitolo 6, Applicazioni per la rete) sono avviati nella modalità multi-utente direttamente, come processi demone, all'avvio da script di init, per esempio, "/etc/rc2.d/S20exim4" (per RUNLEVEL=2) che è un collegamento simbolico a "/etc/init.d/exim4".

Alcuni servizi di rete possono essere avviati a richiesta, usando il super-server inetd (o un equivalente). inetd viene avviato all'avvio da "/etc/rc2.d/S20inetd" (per RUNLEVEL=2) che è un collegamento simbolico a "/etc/init.d/inetd". Fondamentalmente inetd permette ad un demone in esecuzione di invocarne svariati altri, riducendo il carico sul sistema.

Quando al super-server inetd arriva una richiesta per un servizio, vengono identificati il suo protocollo e il suo servizio cercandoli nei database in "/etc/protocols" e "/etc/services". inetd quindi cerca un servizio Internet normale nel database "/etc/inetd.conf" o un servizio basato su Open Network Computing Remote Procedure Call (ONC RPC)/Sun RPC in "/etc/rpc.conf".

A volte, inetd non avvia il servizio richiesto direttamente, ma avvia il programma wrapper TCP tcpd(8), con il nome di servizio richiesto, in "/etc/inetd.conf", come argomento. In questo caso, tcpd esegue il programma server appropriato dopo aver fatto la registrazione della richiesta e qualche altro controllo addizionale usando "/etc/hosts.deny" e "/etc/hosts.allow".

Per la sicurezza del sistema è bene disabilitare più servizi di rete possibile. Vedere Sezione 4.6.4, «Limitare l'accesso ad alcuni servizi server».

Vedere inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5), hosts_options(5), rpcinfo(8), portmap(8) e "/usr/share/doc/portmap/portmapper.txt.gz".

3.5.9. I messaggi di sistema

I messaggi di sistema possono essere personalizzati da "/etc/default/rsyslog" e "/etc/rsyslog.conf" sia per il file di registro sia per la visualizzazione a schermo. Vedere rsyslogd(8) e rsyslog.conf(5). Vedere anche Sezione 9.2.2, «Analizzatori di registro».

3.5.10. I messaggi del kernel

I messaggi del kernel possono essere personalizzati da "/etc/default/klogd" sia per il file di registro sia per la visualizzazione a schermo. Impostare "KLOGD='-c 3'" in tale file ed eseguire "/etc/init.d/klogd restart". Vedere klogd(8).

Si può cambiare direttamente il livello dei messaggi di errore mostrati con il comando seguente.

# dmesg -n3

Tabella 3.5. Elenco dei livelli di errore del kernel

valore del livello di errore nome del livello di errore significato
0 KERN_EMERG il sistema è inutilizzabile
1 KERN_ALERT bisogna agire immediatamente
2 KERN_CRIT condizione critica
3 KERN_ERR condizione di errore
4 KERN_WARNING condizione di avvertimento
5 KERN_NOTICE condizione normale ma significativa
6 KERN_INFO messaggio informativo
7 KERN_DEBUG messaggio a livello di debug

3.5.11. Il sistema udev

Per i kernel Linux 2.6, il sistema udev fornisce un meccanismo di rilevazione e inizializzazione automatiche dell'hardware (vedere udev(7)). Per ogni dispositivo rilevato dal kernel, il sistema udev avvia un processo utente che usa le informazioni del filesystem sysfs (vedere Sezione 1.2.12, «procfs e sysfs»), carica, usando modprobe(8) (vedere Sezione 3.5.12, «L'inizializzazione dei moduli del kernel»), i moduli del kernel necessari per il supporto del dispositivo e crea i nodi di device corrispondenti.

[Suggerimento] Suggerimento

Se, per una qualche ragione "/lib/modules/<versione-kernel>/modules.dep non viene generato in modo appropriato dal depmod(8), i moduli non possono essere caricati come dovuto dal sistema udev. Per risolvere il problema eseguire "depmod -a".

Il nome dei nodi di device può essere configurato dai file di regole di udev in "/etc/udev/rules.d/". Le regole predefinite attuali tendono a creare nomi generati dinamicamente che hanno come risultato nomi di device non fissi, tranne che per dispositivi CD e di rete. Aggiungendo le proprie regole personalizzate, in modo simile a quelle per i dispositivi CD e di rete, si possono creare nomi di device statici anche per altri dispositivi, come chiavette USB. Vedere "Scrivere regole udev" o "/usr/share/doc/udev/writing_udev_rules/index.html".

Dato che il sistema udev è in qualche modo in costante evoluzione, in questo documento sono fornite informazioni base, lasciando i dettagli ad altra documentazione.

[Suggerimento] Suggerimento

Per le regole di montaggio in "/etc/fstab", non è necessario che i nodi di device siano statici. Si possono usare gli UUID per montare i dispositivi, al posto dei nomi di device come "/dev/sda". Vedere Sezione 9.3.3, «Accedere alle partizioni usando UUID».

3.5.12. L'inizializzazione dei moduli del kernel

Il programma modprobe(8) permette di configurare il kernel Linux in esecuzione da processi utente, aggiungendo e rimuovendo moduli del kernel. Il sistema udev (vedere Sezione 3.5.11, «Il sistema udev») automatizza la sua invocazione per facilitare l'inizializzazione dei moduli del kernel.

Ci sono moduli non-hardware e speciali moduli con driver hardware, come quelli elencati in seguito, che devono essere precaricati elencandoli nel file "/etc/modules" (vedere modules(5)).

I file di configurazione per il programma modprobe(8) sono contenuti nella directory "/etc/modprobes.d/", come spiegato in modprobe.conf(5). (Se si desidera evitare l'autocaricamento di alcuni moduli del kernel, considerare la loro aggiunta nella lista nera nel file "/etc/modprobes.d/blacklist".)

Il file "/lib/modules/<versione>/modules.dep" generato dal programma depmod(8) descrive le dipendenze dei moduli usate dal programma modprobe(8).

[Nota] Nota

Se si hanno problemi di caricamento dei moduli all'avvio o con modprobe(8), "depmod -a" potrebbe risolverli rigenerando il file "modules.dep".

Il programma modinfo(8) mostra informazioni su un modulo del kernel Linux.

Il programma lsmod(8) formatta in un bel modo i contenuti di "/proc/modules", mostrando quali moduli del kernel siano attualmente caricati.

[Suggerimento] Suggerimento

Si può identificare l'esatto hardware sul proprio sistema. Vedere Sezione 9.6.3, «Identificazione dell'hardware».

[Suggerimento] Suggerimento

Si può configurare l'hardware all'avvio per attivare le funzionalità dell'hardware desiderate. Vedere Sezione 9.6.4, «Configurazione dell'hardware».

[Suggerimento] Suggerimento

Si può aggiungere il supporto per il proprio dispositivo ricompilando il kernel. Vedere Sezione 9.7, «Il kernel».