Come determinare esattamente perché Systemd entra in modalità di emergenza


10

Il mio computer desktop con Debian Jessie ha iniziato a cadere in una shell in modalità di emergenza ad ogni avvio. Lo schermo dice di usare journalctl -xbper trovare il motivo e di usare systemctl defaultper continuare l'avvio. Quando eseguo systemctl default, il sistema continua ad avviarsi e dopo un paio di settimane di utilizzo del sistema non c'è nulla di apparentemente sbagliato.

Guardando attraverso journalctl -xb, nulla si distingue come la ragione per cadere in un guscio di emergenza. C'è un modo semplice per determinare esattamente il motivo per cui ha deciso di passare alla modalità di emergenza? Esistono altri flag o opzioni di avvio che renderanno evidente dove si trova il problema?


2
Dovrebbe essere visibile nel diario ma con le informazioni limitate fornite, non c'è modo di guidarti. Hai una copia di journalctl -xb quando è successo?
Julie Pelletier,

3
Avvio in modalità di registrazione dettagliata systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1Mper dettagli di livello forense ...
jasonwryan,

2
I registri esistenti dovrebbero già darti il ​​motivo. Ci sono così tante ragioni che è molto difficile da indovinare.
Giacomo Catenazzi,

1
Ho lo stesso problema su un'istanza di Ubuntu 16.04. Ho installato, usato, riparato molti sistemi Linux negli ultimi 20 anni. Niente di speciale sullo schermo e questa volta non spicca nulla nei registri. Lo schermo dice Ctrl-D per continuare l'avvio, ma questo riporta allo stesso prompt solo dopo un momento. Senza un indizio. Frustrante, no?
Stéphane Gourichon,

Hai provato tutti i passaggi dalla sezione "Diagnosticare i problemi di avvio" in Debug systemd ?
Siosm,

Risposte:


6

L'errore avrebbe dovuto mostrare un rosso [ FAIL ]sulla console (anziché [ OK ]), con accanto la descrizione dell'unità. In genere i primi guasti sono i più importanti. Usa shift + pageup sulla console per scorrere verso l'alto e visualizzare le schermate di output passate precedenti. Questo potrebbe non funzionare se c'è troppo output.

Funziona anche se normalmente non vedi i [ OK ]messaggi, ad esempio a causa quietdella riga di comando del kernel usata da Debian. Al primo errore, systemd passa alla modalità dettagliata.

Altrimenti, puoi usare systemctl. Senza alcuna opzione, mostra un enorme elenco di unità conosciute con guasti evidenziati in rosso. Per mostrare solo quelli falliti, utilizzare systemctl --state=failedo systemctl --failed.


Se si esegue una ricerca tra i file di unità, ci sono solo pochi modi in cui ricorrere all'avvio emergency.target. Di solito è quando .mountun'unità per un filesystem locale fallisce, causando il local-fs.targetfallimento. O quando initramfs non riesce a montare il filesystem di root, se initramfs usa systemd.

local-fs.targetha OnFailure=emergency.target. E fallisce perché le unità per i filesystem locali vengono automaticamente aggiunte all'elenco Richiede local-fs.target (a meno che non lo abbiano DefaultDependencies=no).

$ systemctl show --property Requires local-fs.target
Requires=-.mount home.mount boot.mount boot-efi.mount

2

Ogni tanto mi imbatto in una richiesta di "modalità di manutenzione" e devo anche scorrere il journal per gli errori. Dato che journalctl usa meno come cercapersone, dovresti essere in grado di applicare eventuali scorciatoie alla tua ricerca.

In genere, farei affidamento sulla funzione di ricerca (/) e cercherò qualsiasi cosa equivalente a "errore", "avviso" o "errore". E assicurati di -i per forzare la ricerca senza distinzione tra maiuscole e minuscole.

Quindi i miei tasti tendono ad apparire come:

-i (case insensitive)
g (move to start)
/error
nnnn (skip through results)
g (move to start)
/fail
nnnn (skip through results)
g (move to start)
/warn
nnnn (skip through results)

Tecnicamente non è una ricerca esaustiva o esatta del problema preciso, ma non ho mai perso un problema di avvio in questo modo.

Di seguito alcune scorciatoie da tastiera correlate:

http://www.thegeekstuff.com/2010/02/unix-less-command-10-tips-for-effective-navigation/


Credo che dovrebbe anche essere possibile sfogliare rapidamente e cercare i messaggi rossi (LOG_ERR e successivi). systemdregistrerà i messaggi rossi in caso di errori nell'avvio di un'unità di servizio o, soprattutto, nel mancato montaggio di un filesystem.
Sourcejedi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.