Systemd è un manager di servizi e di sistema per Linux compatibile con SysV e LSB Init Scripts.
In caso si presentassero dei problemi all’avvio di Fedora con systemd, prima di tutto è fortemente consigliato controllare tra le liste dei bug conosciuti della release in uso (magari il bug è stato già risolto); se invece è necessario aprire un nuovo bug report, vediamo cosa fare per analizzare il fatto e fornire più informazioni possibile ai developers.
Identificazione del problema
- Rimozione delle opzioni
rhgbequietdalla riga kernel nel file di configurazione di Grub. - Aggiungere l’opzione
systemd.log_level=debugalla riga kernel per attivare la modalità debug log di systemd. - Aggiungere l’opzione
systemd.log_target=kmsgalla riga kernel per ottenere la scrittura del systemd buffer nel kernel log buffer. - Avviare il comando
$/bin/systemd --test --system --log-level=debugper testare l’avvio di init come systemd e calcolare le transazioni iniziali.
Informazioni da includere nel report
- Esattamente la riga kernel utilizzata da Grub se diversa da quella di default; si ottiene dal grub.conf o con il comando
$cat /proc/cmdline - Una copia del
$cat /var/log/messages - Una copia del dmesg:
$dmesg>dmesg.txt - L’output del systemd dump:
$systemctl dump > systemd-dump.txt - L’output di
$/bin/systemd --test --system --log-level=debug > systemd-test.txt 2>&1
Configurare una serial console
L’ avvio per un debugging di successo richiederà particolari tipi di login durante il processo di boot. Per abilitare il serial console output sia da kernel che da grub, aprire il grub.conf ed aggiungere le seguenti righe appena sotto la riga ‘timeout’:
serial --unit=0 --speed=38400
terminal --timeout=5 serial console
aggiungere inoltre i seguenti argomenti alla riga kernel in grub.conf
console=tty0 console=ttyS0,38400
Avvio in rescue mode o con la shell d’emergenza
Aggiungere systemd.unit=rescue.target alla riga di comando del kernel
Aggiungere systemd.unit=emergency.target oppure emergency alla riga di comando del kernel.
Vari comandi relativi a systemd
systemctl list-jobs
Identifica, nei boot lenti, i job (lavori o esecuzioni) avviati (running) che rallentano il boot e quelli in attesa (waiting)systemctl list-units -t service --all
Lista i servizi disponibili e il loro statosystemctl list-units -t service
Lista i servizi avviatisystemctl status sshd.service
Esamina lo stato corrente del servizio indicatosystemctl list-units -t target --all
Lista tutti i target disponibilisystemctl list-units -t target
Lista tutti i target attivisystemctl show -p "Wants" multi-user.target
Mostra quali servizi avvia il target indicatosystemd --test --system --unit=multi-user.target
Esamina quali servizi ha avviato il target indicato
