Как найти предыдущий журнал загрузки после перезагрузки Ubuntu 16.04+?

20

У меня вопрос, как я могу найти журнал загрузки с предыдущей попытки загрузки системы?

Сегодня, когда я впервые включил компьютер, процесс загрузки остановился на логотипе Ubuntu, когда я нажал, Escя увидел несколько строк, содержащих ошибки ядра и требуемый перезапуск внизу, поэтому я нажал Ctrl+ ALt+, Delи следующая загрузка прошла без проблем.

У меня проблемы с поиском сообщений с экрана, который я видел во время первой неудачной загрузки. Должен ли я сфотографировать на свой телефон?

/var/log/bootтам, но пусто, я искал в kern.log и syslog строки, которые мне запомнились с сегодняшней датой, errorно не нашел ничего знакомого тому, что я видел на предыдущем экране загрузки.

$ journalctl -b -1 выдает мне только сообщения ядра во время загрузки, я могу найти это и в другом месте, и они не те, что появлялись на экране во время загрузки, journalctl для меня бесполезен, я ищу сообщения, появляющиеся на экране во время загрузки.

На данный момент единственный вариант - это сделать фотографию или написать сообщение на бумаге.

Майк
источник

Ответы:

17

Сообщается, что это недокументированная функция

На эту тему подано сообщение об ошибке . Поскольку rsyslogуже поддерживает несколько журналов загрузки в /var/log/syslogи syslog.1, .2.gz, .3.gz... syslog.7.gzразработчики посчитали , сохраняя дополнительные journalctlжурналы будут тратить дисковое пространство.

3 января 2018 года в отчете об ошибке говорится , что для новых установок rsyslogбольше не будет по умолчанию, и в нем journalctlбудут храниться несколько журналов загрузочных данных.

Создать несколько журналов загрузки без переустановки Ubuntu

Большинство из нас не будет делать новую установку, чтобы включить несколько journalctlжурналов загрузки, и в этом случае мы можем использовать:

$ 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

Согласно этому отчету github, предупреждающее сообщение «Невозможно установить атрибут файла» можно игнорировать.

Необязательный постоянный параметр хранения

После многих месяцев использования предыдущей загрузки я обнаружил еще один параметр, который можно установить в /etc/systemd/journald.conf:

Из справочной страницы journald.conf :

Хранение =

Управляет местом хранения данных журнала. Один из "volatile", "persistent", "auto" и "none". Если указано значение «volatile», данные журнала будут храниться только в памяти, то есть ниже иерархии / run / log / journal (которая создается при необходимости). Если «постоянный», данные будут храниться предпочтительно на диске, то есть ниже /var/log/journalиерархии (которая создается при необходимости), с запасным вариантом /run/log/journal(который создается при необходимости), во время ранней загрузки и если диск недоступен для записи. «auto» аналогично «persistent», но каталог /var/log/journal не создается при необходимости, так что его существование определяет, куда попадают данные журнала. «none» отключает все хранилище, все полученные данные журнала будут удалены. Переадресация на другие цели, такие как консоль, буфер журнала ядра или сокет системного журнала все равно будут работать. По умолчанию установлено значение «Авто».

В двух словах удалите комментарий и измените строку на:

Storage=persistent

Показать список предыдущих загрузок

$ 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

Показать журнал последней загрузки

$ 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

Обратите особое внимание на параметр, -b-1который отличается от других ссылок, которые вы можете увидеть. С man-страницы :

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

Показать сообщения от конкретной загрузки. Это добавит совпадение для "_BOOT_ID =".

Аргумент может быть пустым, и в этом случае будут показаны журналы для текущей загрузки.

Если идентификатор загрузки не указан, положительное смещение будет искать загрузку, начиная с начала журнала, а равное или меньшее нуля смещение будет искать загрузку, начиная с конца журнала. Таким образом, 1 означает первую загрузку, найденную в журнале в хронологическом порядке, 2 - вторую и т. Д .; в то время как -0 - последняя загрузка, -1 - загрузка до последней и т. д. Пустое смещение эквивалентно указанию -0, за исключением случаев, когда текущая загрузка не является последней загрузкой (например, потому что --directory был указан для просмотра журналов с другого компьютера).

Затем время от времени с помощью cronили таймеров вы можете чистить старые журналы :

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

journalctl --vacuum-size=300M  # keep last 300MB
WinEunuuchs2Unix
источник
Вы должны systemctl restart systemd-journald илиkillall -USR1 systemd-journald . Также откомментируйте Storage=autoот /etc/systemd/journald.conf.
Пабло Бьянки
@PabloBianchi Спасибо за ваш комментарий. Поскольку я уже создал свои журналы с множественной загрузкой и пылесос, чтобы урезать их с 300 МБ до <150 МБ, настроен как ежемесячная cronработа, я не чувствую необходимости удалять все и начинать все заново, чтобы проверить свои рекомендации. Надеюсь, это поможет другим избежать сообщений об ошибках, которые, похоже, ничего не влияют.
WinEunuuchs2Unix
1
@PabloBianchi "хранилище = авто" по умолчанию. Я пересмотрел свой ответ, показав, как "storage = persistent" является рекомендацией, цитируемой из источников.
WinEunuuchs2Unix
9

У меня была такая же проблема, и, видимо, я нашел ответ по #ubuntuIRC-каналу.

По какой-то причине мне не хватало /var/log/journal группы папок, доступной для systemd-journal.

После добавления папки я смог увидеть логи предыдущих загрузок через $ journalctl -b1

администратор базы данных
источник
Спасибо, но я уже успел заставить journalctl работать отлично, но там нет журнала загрузки, это только сообщения ядра от времени загрузки, я могу найти это и в другом месте. Мне не удалось найти журнал, содержащий сообщения, которые появляются на экране во время загрузки.
Майк
10
На самом деле альтернативное решение дается в вики , а именно установить Storage=persistentв /etc/systemd/journald.confи запустить systemctl restart systemd-journald.
dma_k
1
ага /var/log/journalтоже тосковал ! Это свежая установка, как чего-то такого важного, как журнал отсутствует !!!
Дашесы
В моем случае редактирование /etc/systemd/journald.conf создало ранее несуществующий файл /var/log/journal/и заполнило его подкаталогом, содержащим
загрузочный журнал loooong
@knb, fwiw, я почти уверен, что именно он systemctl restart systemd-journaldсоздал ваш / var / log / journal
Auspex
5

Шаги для решения этой проблемы приведены в верхнем ответе здесь, на странице руководства для systemd-journald:

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

Я сделал это как су

Аарон Скомра
источник
3

Ответ можно найти, в man journald.confчастности, в опции Storage=:

Управляет местом хранения данных журнала. Один из "volatile", "persistent", "auto" и "none". [...] «auto» похоже на «persistent», но каталог / var / log / journal не создается при необходимости, так что его существование контролирует, куда попадают данные журнала. [...] По умолчанию «авто».

Имейте в виду, что нет необходимости в ротации журналов или аналогичных методах, которые были распространены в старом демоне syslog. Файл журнала по умолчанию настроен на увеличение до определенного размера, и старые записи журнала автоматически удаляются, когда файл журнала становится слишком большим.

В моей системе этот размер в настоящее время настроен как 120 МБ, вы можете настроить его /etc/systemd/journald.confдля модуля systemd-journald.service.

lanoxx
источник
3

Используйте journalctl -bXгде x - это загрузка, на которую вы ссылаетесь, так же, -b0как и ваша текущая загрузка, а -b-1также загрузка, которая была раньше (которая работает, только если у вас есть папка, /var/log/journalпринадлежащая группе 'systemd-journal'). Не могу сказать вам, как далеко вы можете пойти, но эти два точно.

Список доступных ботинок с

journalctl --list-boots
Videonauth
источник
2
-b0 работал, но -b1 дал мне Specifying boot ID has no effect, no persistent journal was found.После некоторого поиска в Google, я думаю, что он должен быть включен для хранения большего количества данных.
Майк
тогда я думаю, что данные из этой неудачной загрузки пропали. Посмотрите здесь, я только что сам узнал, что невозможно без особых хлопот возобновить старое ведение журнала. Было около 2 часов веселья в моей системе инертов.
Видеонавт
Проголосуйте, но я надеюсь, что кто-нибудь добавит другой способ сделать это, было бы стыдно, если поиск предыдущего журнала загрузки из предыдущего сеанса невозможен при конфигурации по умолчанию, как тогда можно было бы отладить проблемы с загрузкой?
Майк
1
Пост здесь работает в конфигурации по умолчанию на Ubuntu Server 16.04LTS ( unix.stackexchange.com/a/345978/77095 ) journalctl -o short-precise -k -b -1показывает последнюю загрузку.
Jtlindsey