Как получить журнал загрузки ядра с помощью journalctl?

Мне удалось решить эту проблему с помощью @Takkat путем простого переименования моего pulseaudio config каталога:

mv ~/.config/pulse ~/.config/pulse.old

После этого pavucontrol запустился нормально. Я понятия не имею, какой файл в этой директории все испортил. Если для кого-то это окажется информативным, вот что в нем было:

$ ls .config/pulse.old/
cookie                                              e9ec65fd88a04300a02d204ca1e6ff58-default-source
e9ec65fd88a04300a02d204ca1e6ff58-card-database.tdb  e9ec65fd88a04300a02d204ca1e6ff58-device-volumes.tdb
e9ec65fd88a04300a02d204ca1e6ff58-default-sink       e9ec65fd88a04300a02d204ca1e6ff58-stream-volumes.tdb
5
04.01.2018, 12:00
3 ответа

Очевидно, что если система будет работать несколько дней, я не смогу получить эту информацию. Я правильно понимаю здесь?

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

Так что возьмите лист из FreeBSD и NetBSD и их производных. Все они имеют службы, которые запускаются один раз, при начальной загрузке сразу после монтирования локальных файловых систем, которые просто выполняют:

dmesg > /var/run/dmesg.boot

Таким образом, моментальный снимок журнала ядра, который был при загрузке, доступен в /var/run/dmesg.boot , даже если с тех пор он прокрутил фактические журналы.

Вам просто нужно написать службу systemd, которая будет делать то же самое. Используйте оболочку для перенаправления

ExecStart=/bin/sh -c "exec dmesg > /run/dmesg.boot"
или что-то вроде redirfd Лорана Берко или fdredir
ExecStart=/usr/local/bin/fdredir --write 1 /run/dmesg.boot dmesg

набора инструментов nosh journalctl -k , если вы хотите сделать снимок журнала systemd, а не только журнала ядра, и сделать его службой Type = oneshot . Либо сделайте его желательным для multi-user.target , либо сделайте его службой DefaultDependencies = no , которая требуется для basic.target .Обратите внимание, что его не нужно заказывать после монтирования локальной файловой системы (например, local-fs.target ). Такой порядок необходим для FreeBSD и OpenBSD, потому что / var / run может быть дисковой файловой системой с ними. В операционных системах systemd / run - это «файловая система API», которая создается при начальной загрузке перед любыми службами.

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

Однако это намного сложнее настроить в мире systemd чем oneshot, который пишет /run/dmesg.boot . Однако это просто в мире семейства daemontools. Это тривиальное упражнение в использовании таких инструментов, как fifo-listen и klog-read или socklog . Передача вывода через демон журнала, который записывает в частный, надежно ограниченный по размеру, автоматически вращающийся каталог журнала, входит в стандартную комплектацию с daemontools / runit / s6 / nosh / perp-managed service.)

5
27.01.2020, 20:31

Журналы ядра копируются в журнал systemd. Вам не нужно делать это вручную.

ОПИСАНИЕ

systemd-journald - это системная служба, которая собирает и хранит журнальные данные. данные. Он создает и поддерживает структурированные, индексированные журналы на основе журнальной информации, получаемой из различных источников:

- Сообщения журнала ядра, через kmsg

3
27.01.2020, 20:31

Systemd хранит все в своем журнале. Что, по крайней мере, на моем ноутбуке при умеренном использовании, достаточно велико, чтобы вернуться к годичной давности с настройками по умолчанию.

Если этого недостаточно, вы можете повозиться с journald.conf

Затем нужно просто использовать journalctl -t kernel (что похоже на -k , за исключением того, что он также позволяет вам видеть предыдущие загрузки и использовать фильтры)

13
27.01.2020, 20:31

Теги

Похожие вопросы