Comment trouver le journal de démarrage précédent après le redémarrage d'Ubuntu 16.04+?

20

Ma question est, comment puis-je trouver le journal de démarrage d'une précédente tentative de démarrage du système?

Aujourd'hui, lors de la première mise sous tension de mon PC, le processus de démarrage s'est arrêté sur le logo Ubuntu, lorsque j'ai appuyé sur, Escj'ai vu plusieurs lignes contenant une erreur de noyau et un redémarrage requis en bas, j'ai donc appuyé sur Ctrl+ ALt+ Delet le démarrage suivant s'est bien passé sans problème.

J'ai du mal à trouver des messages sur l'écran que j'ai vu lors du premier démarrage infructueux. Dois-je avoir pris une photo sur mon téléphone?

/var/log/bootest là mais vide, j'ai cherché dans kern.log et syslog les chaînes dont je me souvenais avec la date d'aujourd'hui comme errormais je n'ai rien trouvé de familier avec ce que j'ai vu sur l'écran de démarrage précédent.

$ journalctl -b -1 ne me donne que des messages du noyau au démarrage, je peux trouver ça aussi ailleurs, et ce ne sont pas ce qui apparaissait à l'écran lors du démarrage, journalctl est inutile pour moi, je cherche des messages apparaissant à l'écran pendant le démarrage.

Pour l'instant, la seule option est de prendre une photo d'écrire le message sur papier.

Mike
la source

Réponses:

17

Signalé comme un bug qui est une fonctionnalité non documentée

Un rapport de bogue a été déposé sur ce sujet . Parce que rsyslogmaintient déjà plusieurs journaux de démarrage dans /var/log/sysloget syslog.1, .2.gz, .3.gz... syslog.7.gzles développeurs se sentaient maintenant supplémentaires journalctljournaux serait perdre de l' espace disque.

Le rapport de bogue indique le 3 janvier 2018 que pour les nouvelles installations rsyslogne sera plus la valeur par défaut et journalctlconservera plusieurs journaux de données de démarrage.

Créez plusieurs journaux de démarrage sans réinstaller Ubuntu

La plupart d'entre nous ne feront pas une nouvelle installation, donc pour activer plusieurs journalctljournaux de démarrage, auquel cas nous pouvons utiliser:

$ sudo mkdir -p /var/log/journal
$ sudo systemd-tmpfiles --create --prefix /var/log/journal
Cannot set file attribute for '/var/log/journal', value=0x00800000, mask=0x00800000: Operation not supported

Selon ce rapport github, le message d'avertissement "Impossible de définir l'attribut de fichier" peut être ignoré.

Paramètre de stockage persistant en option

Après avoir utilisé la journalisation de démarrage précédente pendant plusieurs mois, j'ai découvert une autre option qui peut être définie dans /etc/systemd/journald.conf:

Depuis la page de manuel journald.conf :

Stockage =

Contrôle où stocker les données du journal. Un parmi «volatile», «persistant», «auto» et «aucun». Si elles sont "volatiles", les données du journal de journal seront stockées uniquement en mémoire, c'est-à-dire en dessous de la hiérarchie / run / log / journal (qui est créée si nécessaire). Si elles sont "persistantes", les données seront stockées de préférence sur le disque, c'est-à-dire en dessous de la /var/log/journalhiérarchie (qui est créée si nécessaire), avec un repli sur /run/log/journal(qui est créé si nécessaire), au démarrage précoce et si le disque n'est pas accessible en écriture. "auto" est similaire à "persistant" mais le répertoire /var/log/journal n'est pas créé si nécessaire, de sorte que son existence contrôle où vont les données du journal. "none" désactive tout le stockage, toutes les données de journal reçues seront supprimées. Transfert vers d'autres cibles, telles que la console, le tampon de journal du noyau ou une socket syslog fonctionnera toujours. Par défaut, "auto".

En un mot, supprimez le commentaire et modifiez la ligne pour:

Storage=persistent

Afficher la liste des bottes précédentes

$ journalctl --list-boots
-15 58a9e56135564cd8a52d547b19e76bf5 Fri 2018-02-02 18:34:35 MST—Fri 2018-02-02 23:07:14 M
-14 3514e056440341b1b6e5f03d109681bc Sat 2018-02-03 06:05:12 MST—Sat 2018-02-03 08:07:44 M
-13 0d1a32dc275348589f5ecdc72180c018 Sat 2018-02-03 08:08:05 MST—Sat 2018-02-03 08:08:34 M
-12 74159b593f3a401589ee6bd78e31684b Sat 2018-02-03 08:08:51 MST—Sun 2018-02-04 08:32:09 M
-11 4b394a9aad584ab2bfabe3b77eeed78f Sun 2018-02-04 08:32:26 MST—Mon 2018-02-05 16:54:02 M
-10 8e461ed2593c4fd896ca3b71eb3c0fba Mon 2018-02-05 16:54:34 MST—Tue 2018-02-06 03:54:30 M
 -9 ec7ba0e4dfe241c0b9c978d278fcca6d Tue 2018-02-06 03:54:47 MST—Tue 2018-02-06 16:25:02 M
 -8 b5c110267c214c38b63d0a367197d118 Tue 2018-02-06 16:25:19 MST—Thu 2018-02-08 16:49:03 M
 -7 75c3b117ac6a4de984dc3ced15edb7f8 Thu 2018-02-08 16:49:22 MST—Fri 2018-02-09 03:51:09 M
 -6 7338bd1007bc42dda5c8667eeefe1a59 Fri 2018-02-09 03:51:26 MST—Fri 2018-02-09 16:55:52 M
 -5 4b6cd0121327454ca3db035c7ed42df6 Fri 2018-02-09 16:56:09 MST—Sat 2018-02-10 07:55:14 M
 -4 0d56207f9ec0405ca3a3fd638334de2f Sat 2018-02-10 07:55:32 MST—Mon 2018-02-12 22:16:05 M
 -3 0f230cc546fd4aec8f5233e0074ab3e1 Tue 2018-02-13 03:57:20 MST—Wed 2018-02-14 22:58:56 M
 -2 c0d2c0141dd840cbab75d3c2254f8781 Wed 2018-02-14 22:59:13 MST—Sat 2018-02-17 22:46:14 M
 -1 aafb2573a6374e019a7165cb8eee74a0 Sun 2018-02-18 06:02:03 MST—Mon 2018-02-19 04:16:36 M
  0 8462f1969c6f4d61973e7e245014b846 Mon 2018-02-19 04:16:53 MST—Tue 2018-02-20 18:51:42 M

Afficher le dernier journal de démarrage

$ journalctl -b-1
-- Logs begin at Fri 2018-02-02 18:34:35 MST, end at Thu 2018-03-01 16:43:25 MST. --
Feb 28 20:03:15 alien systemd-journald[290]: Runtime journal (/run/log/journal/) is 8.0M, 
Feb 28 20:03:15 alien kernel: Linux version 4.14.23-041423-generic (kernel@kathleen) (gcc 
Feb 28 20:03:15 alien kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.14.23-041423-generi
Feb 28 20:03:15 alien kernel: KERNEL supported cpus:
Feb 28 20:03:15 alien kernel:   Intel GenuineIntel
Feb 28 20:03:15 alien kernel:   AMD AuthenticAMD
Feb 28 20:03:15 alien kernel:   Centaur CentaurHauls
Feb 28 20:03:15 alien kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point
Feb 28 20:03:15 alien kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
Feb 28 20:03:15 alien kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
Feb 28 20:03:15 alien kernel: x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registe
Feb 28 20:03:15 alien kernel: x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
Feb 28 20:03:15 alien kernel: x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
Feb 28 20:03:15 alien kernel: x86/fpu: xstate_offset[3]:  832, xstate_sizes[3]:   64
Feb 28 20:03:15 alien kernel: x86/fpu: xstate_offset[4]:  896, xstate_sizes[4]:   64
Feb 28 20:03:15 alien kernel: x86/fpu: Enabled xstate features 0x1f, context size is 960 b
Feb 28 20:03:15 alien kernel: e820: BIOS-provided physical RAM map:
Feb 28 20:03:15 alien kernel: BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usabl
lines 1-19

Portez une attention particulière au paramètre, -b-1il est différent des autres références que vous pouvez voir. Depuis la page de manuel :

-b [ID][±offset], --boot=[ID][±offset]

Afficher les messages d'un démarrage spécifique. Cela ajoutera une correspondance pour "_BOOT_ID =".

L'argument peut être vide, auquel cas les journaux du démarrage en cours seront affichés.

Si l'ID de démarrage est omis, un décalage positif recherchera les démarrages à partir du début du journal et un décalage égal ou inférieur à zéro cherchera les démarrages à partir de la fin du journal. Ainsi, 1 signifie la première botte trouvée dans le journal dans l'ordre chronologique, 2 la seconde et ainsi de suite; tandis que -0 est le dernier démarrage, -1 le dernier avant-dernier, et ainsi de suite. Un décalage vide équivaut à spécifier -0, sauf lorsque le démarrage actuel n'est pas le dernier démarrage (par exemple parce que --directory a été spécifié pour consulter les journaux d'une autre machine).

Ensuite, de temps en temps, avec cronou des minuteries, vous pouvez nettoyer les anciens journaux :

journalctl --vacuum-time=2d  # keep last two days or

journalctl --vacuum-size=300M  # keep last 300MB
WinEunuuchs2Unix
la source
Il faudrait systemctl restart systemd-journald oukillall -USR1 systemd-journald . Uncomment aussi Storage=autode /etc/systemd/journald.conf.
Pablo Bianchi
@PabloBianchi Merci pour votre commentaire. Comme j'ai déjà créé mes journaux de démarrage multiples et que l'aspirateur pour les réduire de 300 Mo + à <150 Mo est configuré comme un crontravail mensuel, je n'ai pas envie de tout supprimer et de recommencer à zéro pour tester vos recommandations. J'espère que cela aidera les autres à éviter les messages d'erreur qui ne semblent pas avoir d'effet de toute façon.
WinEunuuchs2Unix
1
@PabloBianchi "storage = auto" est la valeur par défaut. J'ai révisé ma réponse en montrant comment "stockage = persistant" est la recommandation citée par les sources.
WinEunuuchs2Unix
9

J'ai eu le même problème et j'ai apparemment trouvé la réponse sur le #ubuntucanal irc.

Pour une raison quelconque, il me manquait le dossier /var/log/journal accessible au groupe systemd-journal.

Après avoir ajouté le dossier, j'ai pu voir les journaux des démarrages précédents via $ journalctl -b1

dba
la source
Merci mais, j'ai déjà réussi à faire en sorte que journalctl fonctionne parfaitement il y a un certain temps, mais il n'y a pas de journal de démarrage là-bas, ce ne sont que des messages du noyau au moment du démarrage, je peux le trouver ailleurs aussi. Je n'ai pas réussi à trouver un journal contenant des messages qui apparaissent à l'écran lors du démarrage.
Mike
10
En fait , la solution de remplacement est donnée dans le wiki , à savoir défini Storage=persistentdans /etc/systemd/journald.confet exécuter systemctl restart systemd-journald.
dma_k
1
yup mépris /var/log/journalaussi! C'est une nouvelle installation, comment quelque chose d'aussi important que le journal manque !!!
dashesy
Dans mon cas, l'édition a /etc/systemd/journald.conf créé un fichier précédemment inexistant /var/log/journal/, et l'a rempli avec un sous-répertoire contenant un loooong bootlog (a pris 1 minute pour terminer)
knb
@knb, fwiw, je suis quasiment sûr que c'est bien ce systemctl restart systemd-journaldqui a créé votre / var / log / journal
Auspex
5

Les étapes pour accomplir la solution à partir de la première réponse ici, à partir de la page de manuel de systemd-journald:

mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal
systemctl restart systemd-journald

Je l'ai fait comme su

Aaron Skomra
la source
3

La réponse se trouve dans man journald.conf, en particulier l'option Storage=:

Contrôle où stocker les données du journal. Un parmi «volatile», «persistant», «auto» et «aucun». [...] "auto" est similaire à "persistant" mais le répertoire / var / log / journal n'est pas créé si nécessaire, de sorte que son existence contrôle où vont les données du journal. [...] Par défaut "auto".

Veuillez garder à l'esprit qu'il n'est pas nécessaire de faire tourner les journaux ou de recourir à des techniques similaires qui étaient courantes avec l'ancien démon syslog. Le fichier journal est par défaut configuré pour atteindre une certaine taille et les anciennes entrées de journal sont automatiquement supprimées lorsque le fichier journal devient trop volumineux.

Sur mon système, cette taille est actuellement configurée comme 120 Mo, vous pouvez l'ajuster /etc/systemd/journald.confpour l'unité systemd-journald.service.

lanoxx
la source
3

Utilisez journalctl -bXoù x est le démarrage auquel vous faites référence, ainsi que -b0votre démarrage réel et -b-1le démarrage avant (qui ne fonctionne que si vous avez le dossier /var/log/journalappartenant au groupe 'systemd-journal' présent). Je ne peux pas vous dire jusqu'où vous pouvez aller exactement, mais ces deux à coup sûr.

Liste des bottes disponibles avec

journalctl --list-boots
Videonauth
la source
2
-b0 a fonctionné mais -b1 m'a donné Specifying boot ID has no effect, no persistent journal was found.Après quelques recherches sur Google, je pense qu'il doit être activé pour stocker plus de données.
Mike
alors je suppose que les données ont disparu de ce démarrage qui a échoué. Jetez un œil ici, je viens de découvrir que c'est impossible sans trop de tracas pour réactiver l'ancienne journalisation. J'ai eu environ 2 heures de plaisir à jouer dans mes systèmes inertes.
Videonauth
Votez, mais j'espère que quelqu'un ajoutera une autre façon de faire, il serait dommage que trouver le journal de démarrage précédent de la session précédente ne soit pas possible avec la configuration par défaut, comment déboguerait-on alors les problèmes de démarrage?
Mike
1
Le post ici fonctionne dans la configuration par défaut sur Ubuntu Server 16.04LTS ( unix.stackexchange.com/a/345978/77095 ) journalctl -o short-precise -k -b -1montre le dernier démarrage.
jtlindsey