È 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 | |
---|---|
bootup(7)
descrive il processo di avvio del sistema basato su
|
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 | |
---|---|
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 | |
---|---|
Si può ispezionare il contenuto del file di immagine initrd usando
lsinitramfs(8)
e
unmkinitramfs(8)
dal pacchetto |
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
pacchetto | popcon | dimensione | initrd | bootloader | descrizione |
---|---|---|---|---|---|
grub-legacy | V:0, I:2 | 729 | Supportato | GRUB Legacy | Intelligente abbastanza da capire partizioni su disco e filesystem come vfat, ext3, ... |
grub-pc | V:27, I:825 | 532 | Supportato | GRUB 2 | Intelligente abbastanza da capire partizioni su disco e filesystem come vfat, ext4, …. (predefinito) |
grub-rescue-pc | V:0, I:1 | 6286 | Supportato | GRUB 2 | È l'immagine di ripristino avviabile di GRUB 2 (CD e floppy) (versione PC/BIOS) |
lilo | V:0, I:3 | 693 | Supportato | Lilo | Si basa sulla posizione dei settori dei dati sul disco fisso. (Vecchio) |
syslinux | V:4, I:54 | 344 | Supportato | Isolinux | Capisce il filesystem ISO 9660. Usato dal CD di avvio. |
syslinux | V:4, I:54 | 344 | Supportato | Syslinux | Capisce il filesystem MSDOS (FAT). Usato dai dischetti floppy di avvio. |
loadlin | V:0, I:1 | 83 | Supportato | Loadlin | Il nuovo sistema viene avviato dal sistema FreeDOS/MSDOS. |
mbr | V:0, I:9 | 49 | Non supportato | MBR di Neil Turton | Software libero che sostituisce MBR MSDOS. Capisce solo le partizioni su disco. |
Avvertimento | |
---|---|
Non mettere mano ai bootloader senza aver creato supporti avviabili di
ripristino (chiavette USB, CD o floppy) create da immagini nel pacchetto
|
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 | |
---|---|
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 | |
---|---|
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
" |
Suggerimento | |
---|---|
Se viene usato GRUB, il parametro di avvio del
kernel viene impostato in |
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 | |
---|---|
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 | |
---|---|
È necessario usare l'opzione " |
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 | |
---|---|
Si può verificare quale è l'effettivo comando init nel proprio sistema con
il comando « |
Suggerimento | |
---|---|
" |
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 | |
---|---|
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 | |
---|---|
Run level emulati da 2 a 4 hanno tutti collegamenti simbolici al
corrispondente " |
Il kernel gestisce il nome host del
sistema. L'unità systemd avviata
dasystemd-hostnamed.service
imposta il nome host del
sistema all'avvio 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.
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 | |
---|---|
Dopo aver montato tutti i filesystem, i file temporanei in
" |
Le interfacce di rete sono tipicamente inizializzate in
"networking.service
" per l'interfaccia
lo
e "NetworkManager.service
" per le
altre interfacce nei moderni sistemi desktop Debian che usano
systemd
.
Vedere Capitolo 5, Impostazione della rete per come configurarle.
I messaggi di errore del kernel visualizzati nella console possono essere configurati impostando il loro livello di soglia.
# dmesg -n3
Tabella 3.4. 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 |
Sotto systemd
sia i messaggi del kernel sia quelli di
sistema sono registrati nei log dal servizio journal
systemd-journald.service
(alias
journald
) o in dati binari persistenti dentro
"/var/log/journal
" o in dati binari volatili dentro
"/run/log/journal/
". A questi dati binari di log si può
accedere tramite il comando
journalctl(1).
Sotto systemd
l'utilità di log del sistema
rsyslogd(8)
cambia il proprio comportamento per leggere i dati di log vinari volatili
(invece dello standard pre-systemd "/dev/log
") e per
creare dati di log di sistema ASCII tradizionali permanenti.
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».
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 | |
---|---|
Se, per una qualche ragione
" |
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 | |
---|---|
Per le regole di montaggio in " |
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)).
moduli TUN/TAP che forniscono device virtuali di rete Point-to-Point (TUN) e device virtuali di rete Ethernet (TAP),
moduli netfilter che forniscono funzionalità di firewall netfilter (iptables(8), Sezione 5.10, «Infrastruttura netfilter» e
moduli driver watchdog timer.
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 | |
---|---|
Se si hanno problemi di caricamento dei moduli all'avvio o con
modprobe(8),
" |
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 | |
---|---|
Si può identificare l'esatto hardware sul proprio sistema. Vedere Sezione 9.4.3, «Identificazione dell'hardware». |
Suggerimento | |
---|---|
Si può configurare l'hardware all'avvio per attivare le funzionalità dell'hardware desiderate. Vedere Sezione 9.4.4, «Configurazione dell'hardware». |
Suggerimento | |
---|---|
Si può probabilmente aggiungere il supporto per il proprio speciale dispositivo ricompilando il kernel. Vedere Sezione 9.9, «Il kernel». |