Как проверить systemd system.journal из другой системы

23

У меня сбой Arch Linux на устройстве. Устройство не имеет экрана, оно не отвечает на сеть. Поэтому я беру SD-карту, вставляю ее в рабочий стол Ubuntu, вижу свежий system.journal там и ... Как посмотреть, что внутри?

Из документации Arch Linux я знаю, что могу сделать:

 strings /mnt/arch/var/log/journal/.../system.journal | grep -i message

Но это действительно просто. Вопрос в том:

Есть ли более удобный способ проверки system.journal из другой системы, чем использование строк ? Могу ли я, например, указать файл для чтения для journalctl ?

MajesticRa
источник
как насчет journalctl --file = file_to_examine?
Талиезин

Ответы:

24

Во-первых, возможность использовать stringsпроистекает из простого совпадения в том, что journald не сжимает небольшие (ниже 64 КБ в текущей реализации) поля. Это не поддерживаемый способ чтения журналов, и в archwiki его действительно следует пометить как таковой. Это скорее последний метод восстановления.

Теперь к вопросу. Из журнала (1) :

-D DIR, --directory = DIR

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

Итак, предполагая, что rootfs сломанной системы смонтирована $DEST, используйте journalctl -D $DEST/var/log/journalдля просмотра системного журнала.

Для полноты картины : для того , чтобы просмотреть конкретный файл, использовать journalctl --file, например journalctl --file /var/log/journal/$(cat /etc/machine-id)/system.journal. Однако, поскольку файлы журнала периодически меняются, эта форма на самом деле не подходит для просмотра полных журналов.

intelfx
источник