Capitolo 3. Inizializzazione del sistema

Indice

3.1. Panoramica del processo di avvio
3.1.1. Stadio 1: il BIOS
3.1.2. Stadio 2: il bootloader
3.1.3. Stadio 3: il mini-sistema Debian
3.1.4. Stadio 4: il normale sistema Debian
3.2. Init systemd
3.2.1. Il nome host
3.2.2. Il filesystem
3.2.3. Inizializzazione delle interfacce di rete
3.2.4. I messaggi del kernel
3.2.5. I messaggi di sistema
3.2.6. Gestione del sistema sotto systemd
3.2.7. Personalizzare systemd
3.3. Il sistema udev
3.3.1. 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.

[Suggerimento] Suggerimento

bootup(7) descrive il processo di avvio del sistema basato su systemd (Debian recenti).

[Suggerimento] Suggerimento

boot(7) descrive il processo di avvio del sistema basato su UNIX System V Release 4 (Debian più vecchie).

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.5.2, «Configurazione del partizionamento dei dischi»). In questi casi, cercare la documentazione piattaforma specifica altrove.

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.

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/3.x è tecnicamente l'immagine initramfs (initial RAM filesystem, file system RAM iniziale). L'immagine initrd di base è un archivio cpio compresso dei file nel file system root. Il kernel può aggiornare microcodice nelle primissime fasi dell'avvio prima di caricare l'immagine initrd di base. Ciò è facilitato dall'immagine initrd combinata che è un frammento di microcodice binario in formato cpio non compresso seguito dall'immagine initrd di base.

[Suggerimento] Suggerimento

Si può ispezionare il contenuto del file di immagine initrd usando lsinitramfs(8) e unmkinitramfs(8) dal pacchetto initramfs-tools-core. Vedere ulteriori informazioni su https://wiki.debian.org/initramfs.

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.


[Avvertimento] Avvertimento

Non mettere mano ai bootloader senza aver creato supporti avviabili di ripristino (chiavette USB, CD o floppy) create 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.


[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.5.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

Se viene usato GRUB, il parametro di avvio del kernel viene impostato in /boot/grub/grub.cfg. Nei sistemi Debian non si dovrebbe modificare direttamente il file /boot/grub/grub.cfg. Si dovrebbe modificare il valore GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub ed eseguire update-grub(8) per aggiornare /boot/grub/grub.cfg.

[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).

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.

Il programma "/init" viene eseguito come primo programma in questo file system root in memoria. È un programma 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 file system root come cifrato.

  • Il programma "/init" è uno script di shell se initramfs è stato creato da initramfs-tools.

    • 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).

  • Il programma "/init" è un programma binario di systemd se initramfs è stato creato da dracut.

    • I comandi disponibili in questo mini-sistema Debian sono un ambiente systemd(1) ridotto al minimo.

[Attenzione] Attenzione

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

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 init viene eseguito come primo programma con PID=1 per effettuare il processo principale di avvio di far partire molti programmi. Il percorso di file predefinito per il programma init è «/sbin/init», ma può essere cambiato con un parametro di avvio del kernel come in «init=/percorso/del/programma_init».

Il programma init predefinito ha subito cambiamenti:

  • Prima di squeeze Debian usava il semplice init in stile SysV.

  • Debian wheezy migliora l'init in stile SysV ordinando la sequenza con intestazioni LSB e avviando gli script di avvio in parallelo.

  • Debian jessie è passata come init predefinito a systemd per l'inizializzazione pilotata da eventi e in parallelo.

[Suggerimento] Suggerimento

Si può verificare quale è l'effettivo comando init nel proprio sistema con il comando «ps --pid 1 -f».

[Suggerimento] Suggerimento

"/sbin/init" è un collegamento simbolico a "/lib/systemd/systemd" da Debian jessie in avanti.

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

pacchetto popcon dimensione descrizione
systemd V:750, I:858 13484 demone init(8) basato su eventi per concorrenza (alternativa a sysvinit)
systemd-sysv V:733, I:852 122 le pagine di manuale e i collegamenti necessari affinché systemd sostituisca sysvinit
systemd-cron V:0, I:1 139 unità systemd per fornire il demone cron e la funzionalità anacron
init-system-helpers V:745, I:876 133 strumenti ausiliari per commutare tra sysvinit e systemd
initscripts V:188, I:509 213 script per inizializzare ed arrestare il sistema
sysvinit-core V:10, I:13 263 utilità init(8) in stile System-V
sysv-rc V:334, I:520 121 meccanismo di cambiamento del runlevel in stile System-V
sysvinit-utils V:729, I:999 131 utilità in stile System-V (startpar(8), bootlogd(8), …)
lsb-base V:886, I:999 49 funzionalità di script init Linux Standard Base 3.2
insserv V:403, I:510 148 strumento per organizzare la sequenza di avvio usando dipendenze LSB negli script init.d
uswsusp V:5, I:10 714 strumenti per usare la sospensione software in spazio utente fornita da Linux
kexec-tools V:1, I:7 271 strumento kexec per riavvii kexec(8) (riavvio a caldo)
systemd-bootchart V:0, I:0 123 analizzatore delle prestazioni del processo di avvio
bootchart2 V:0, I:1 94 analizzatore delle prestazioni del processo di avvio
pybootchartgui V:0, I:1 177 analizzatore delle prestazioni del processo di avvio (visualizzazione)
mingetty V:0, I:3 35 getty(8) solo console
mgetty V:0, I:1 319 rimpiazzio di getty(8) per smart modem

[Suggerimento] Suggerimento

Vedere la pagina del Wiki Debian sulla velocizzazione del processo di avvio per i più recenti suggerimenti su come velocizzare il processo di avvio.

Questa sezione describe come viene avviato il sistema dal programma systemd(1) con PID=1 (cioè processo init).

Il processo di init systemd lancia processi in parallelo sulla base dei file di configurazione delle unità (vedere systemd.unit(5)) che sono scritti in stile dichiarativo invece che in stile procedurale come per SysV. Sono caricati da un insieme di percorsi (vedere systemd-system.conf(5)) nel modo seguente:

  • "/lib/systemd/system": file di configurazione predefiniti del sistema operativo

  • "/etc/systemd/system": file di configurazione dell'amministratore di sistema che scavalcano i file di configurazione predefiniti del sistema operativo

  • "/run/systemd/system": file di configurazione generati al momento dell'esecuzione che scavalcano i file di configurazione installati

Le loro inter-dipendenze sono specificate dalle direttive "Wants=", "Requires=", "Before=", "After=", … (vedere "MAPPING OF UNIT PROPERTIES TO THEIR INVERSES" in systemd.unit(5)). Sono definiti anche i controlli delle risorse (vedere systemd.resource-control(5)).

Il suffisso dei file di configurazione delle unità codifica il loro tipo in questo modo:

  • *.service descrive un processo controllato e supervisionato da systemd. Vedere systemd.service(5).

  • *.device descrive un device esposto in sysfs(5) come albero di device udev(7). Vedere systemd.device(5).

  • *.mount descrive un punto di mount del file system controllato e supervisionato da systemd. Vedere systemd.mount(5).

  • *.automount descrive un punto di mount automatico del file system controllato e supervisionato da systemd. Vedere systemd.automount(5).

  • *.swap descrive un device o file di swap controllato e supervisionato da systemd. Vedere systemd.swap(5).

  • *.path descrive un percorso monitorato da systemd per l'attivazione basata su percorso. Vedere systemd.path(5).

  • *.socket descrive un socket controllato e supervisionato da systemd per l'attivazione basata su socket. Vedere systemd.socket(5).

  • *.timer descrive un timer controllato e supervisionato da systemd per l'attivazione basata su timer. Vedere systemd.timer(5).

  • *.slice gestisce risorse con cgroups(7). Vedere systemd.slice(5).

  • *.scope viene creato programmaticamente usando le interfacce di bus di systemd per gestire un insieme di processi di sistema. Vedere systemd.scope(5).

  • *.target raggruppa altri file di configurazione di unità per creare punti di sincronizzazione durante l'avvio. Vedere systemd.target(5).

All'avvio del sistema (cioè init) il processo systemd cerca di avviare "/lib/systemd/system/default.target" (normalmente un collegamento simbolico a "graphical.target"). Come prima cosa alcune speciali unità target (vedere systemd.special(7)) come "local-fs.target", "swap.target" e "cryptsetup.target" sono richiamate per montare i file system. Poi altre unità target vengono anch'esse richiamate dalle dipendenze delle unità target. Per i dettagli leggere bootup(7).

systemd offre funzionalità di compatibilità all'indietro. Gli script di avvio in stile SysV in "/etc/init.d/rc[0123456S].d/[KS]<name>" sono comunque analizzati e telinit(8) viene tradotto in richieste di attivazione di unità systemd.

[Attenzione] Attenzione

Run level emulati da 2 a 4 hanno tutti collegamenti simbolici al corrispondente "multi-user.target".

Le opzioni usate per montare i file system normali dei dischi e di rete sono impostate in "/etc/fstab". Vedere fstab(5) e Sezione 9.5.7, «Ottimizzare il file system con opzioni di mount».

La configurazione dei file system cifrati è impostata in "/etc/crypttab". Vedere crypttab(5)

Vedere wvdial(1) e wvdial.conf(5).

[Avvertimento] Avvertimento

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

systemd offre non solo un sistema init, ma anche funzionalità generiche di gestione del sistema, come registrazione di log, gestione dei login, gestione del tempo e della rete, ecc.

systemd(1) è gestito da vari comandi:

  • il comando systemctl(1) controlla il gestore di sistemi e servizi systemd (CLI),

  • il comando systemsdm(1) controlla il gestore di sistemi e servizi systemd (GUI),

  • il comando journalctl(1) interroga il giornale di log di systemd,

  • il comando loginctl(1) controlla il gestore di login di systemd e

  • systemd-analyze(1) analizza le prestazioni di avvio del sistema.

Ecco un elenco di esempi di comandi tipici per la gestione di systemd.

Tabella 3.5. Elenco di tipici esempi di comandi per gestione di systemd

Operazione Tipo Esempio di comando
GUI per gestore del servizio GUI "systemadm" (pacchetto systemd-ui)
Elencare tutte le configurazioni delle unità target Unità "systemctl list-units --type=target"
Elencare tutte le configurazioni delle unità service Unità "systemctl list-units --type=service"
Elencare tutti i tipi di configurazioni delle unità Unità "systemctl list-units --type=help"
Elencare tutte le unità socket in memoria Unità "systemctl list-sockets"
Elencare tutte le unità timer in memoria Unità "systemctl list-timers"
Avviare "$unit" Unità "systemctl start $unit"
Fermare "$unit" Unità "systemctl stop $unit"
Ricaricare la configurazione specifica di un servizio Unità "systemctl reload $unit"
Fermare e riavviare tutte le "$unit" Unità "systemctl restart $unit"
Avviare "$unit" e fermare tutte le altre Unità "systemctl isolate $unit"
Passare alla modalità "graphical" (sistema GUI) Unità "systemctl isolate graphical"
Passare alla modalità "multi-user" (sistema CLI) Unità "systemctl isolate multi-user"
Passare alla modalità "rescue" (sistema CLI a singolo utente) Unità "systemctl isolate rescue"
Inviare il segnale kill a "$unit" Unità "systemctl kill $unit"
Controllare se il servizio "$unit" è attivo Unità "systemctl is-active $unit"
Controllare se il servizio "$unit" è fallito Unità "systemctl is-failed $unit"
Controllare lo stato di "$unit|$PID|device" Unità "systemctl status $unit|$PID|$device"
Mostrare le proprietà di "$unit|$job" Unità "systemctl show $unit|$job"
Ripristinare "$unit" fallita Unità "systemctl reset-failed $unit"
Elencare le dipendenze di tutti i servizi unità Unità "systemctl list-dependencies --all"
Elencare i file di unità installati sul sistema File unità "systemctl list-unit-files"
Abilitare "$unit" (aggiungere collegamento simbolico) File unità "systemctl enable $unit"
Disabilitare "$unit" (rimuovere collegamento simbolico) File unità "systemctl disable $unit"
Togliere maschera a "$unit" (rimuovere collegamento simbolico a"/dev/null") File unità "systemctl unmask $unit"
Mascherare "$unit" (aggiungere collegamento simbolico a"/dev/null") File unità "systemctl mask $unit"
Ottenere l'impostazione del target predefinito File unità "systemctl get-default"
Impostare default-target a "graphical" (sistema GUI) File unità "systemctl set-default graphical"
Impostare default-target a "multi-user" (sistema CLI) File unità "systemctl set-default multi-user"
Mostrare l'ambiente del lavoro Ambiente "systemctl show-environment"
Impostare la variabile "variable" dell'ambiente di lavoro al valore "value" Ambiente "systemctl set-environment variable=value"
Disimpostare la variabile "variable" dell'ambiente di lavoro Ambiente "systemctl unset-environment variable"
Ricaricare tutti i file di unità e i demoni Ciclo di vita "systemctl daemon-reload"
Spegnere il sistema Sistema "systemctl poweroff"
Spegnere e riavviare il sistema Sistema "systemctl reboot"
Sospendere il sistema Sistema "systemctl suspend"
Ibernare il sistema Sistema "systemctl hibernate"
Visualizzare il log di lavoro di "$unit" Registro "journalctl -u $unit"
Visualizzare il log di lavoro di "$unit" (in stile "tail -f") Registro "journalctl -u $unit -f"
Mostrare il tempo utilizzato per ogni passo di inizializzazione Analisi "systemd-analyze time"
Elencare tutte le unità col tempo di inizializzazione Analisi "systemd-analyze blame"
Carica e rileva gli errori nel file "$unit" Analisi "systemd-analyze verify $unit"
Traccia il processo di avvio con cgroups(7) Cgroup "systemd-cgls"
Traccia il processo di avvio con cgroups(7) Cgroup "ps xawf -eo pid,user,cgroup,args"
Traccia il processo di avvio con cgroups(7) Cgroup Leggere sysfs in "/sys/fs/cgroup/systemd/"

Negli esempi soprastanti "$unit" può essere un singolo nome di unità (suffissi come .service e .target sono opzionali) o, in molti casi, la specifica di più unità (con glob in stile shell "*", "?", "[]" usando fnmatch(3) con corrispondenze con i nomi primari di tutte le unità attualmente in memoria).

I comandi che cambiano lo stato del sistema negli esempi soprastanti sono tipicamente preceduti da "sudo" per ottenere i privilegi amministrativi necessari.

L'output di "systemctl status $unit|$PID|$device" usa il colore del puntino ("●") per riassumere lo stato dell'unità a prima vista.

  • Un "●" bianco indica uno stato "inattivo" o "deattivato".

  • Un "●" rosso indica uno stato di "fallimento" o "errore".

  • Un "●" verde indica uno stato "attivo", "in ricaricamento" o "in attivazione".

Con l'installazione predefinita molti servizi di rete (vedere Capitolo 6, Applicazioni per la rete) vengono avviati come processi demone dopo network.target al momento dell'avvio di sistema da systemd. "sshd non fa eccezione. Come esempio di personalizzazione cambiamo questo comportamento nell'avvio on-demand di "sshd".

Come prima cosa disabilitare l'unità di servizio installata dal sistema.

 $ sudo systemctl stop sshd.service
 $ sudo systemctl mask sshd.service

Il sistema di attivazione on-demand dei socket dei servizi classici Unix avveniva attraverso il superserver inetd. Con systemd il comportamento equivalente può essere abilitato aggiungendo file di configurazione di unità *.socket e *.service.

sshd.socket per specificare un socket su cui restare in ascolto

[Unit]
Description=SSH Socket for Per-Connection Servers

[Socket]
ListenStream=22
Accept=yes

[Install]
WantedBy=sockets.target

sshd@.service come file di servizio corrispondente di sshd.socket

[Unit]
Description=SSH Per-Connection Server

[Service]
ExecStart=-/usr/sbin/sshd -i
StandardInput=socket

Poi ricaricare.

 $ sudo systemctl daemon-reload

Per i kernel Linux 2.6 e successivi, 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.3.1, «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.5.3, «Accedere alle partizioni usando UUID».

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.3, «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.4.3, «Identificazione dell'hardware».

[Suggerimento] Suggerimento

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

[Suggerimento] Suggerimento

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