Вопрос или проблема
Я хотел бы записывать сообщения ядра системы в серийный консоль на ttyS0.
Проблема была рассмотрена в Как получить сообщения ядра на серийной консоли в системе systemd?, но у меня все еще не получается это заставить работать.
У меня в командной строке ядра установлены systemd.journald.max_level_console=debug
, console=ttyS0,115200
, loglevel=7
, и в /etc/systemd/system.conf установлено ShowStatus=no
.
Тем не менее, хотя я вижу сообщения ядра на консоли в начале процесса загрузки, после запуска службы журнала я больше не получаю никаких сообщений ядра, записываемых в консоль.
Например, если я подключаю USB-мышь к плате, в консоли ничего не записывается, но journalctl -f показывает:
11 фев 10:09:45 a20 ядро: usb 3-1: новое устройство USB низкой скорости номер 4 с использованием ohci-platform
11 фев 10:09:45 a20 ядро: usb 3-1: найдено новое USB-устройство, idVendor=046d, idProduct=c069, bcdDevice=56.01
11 фев 10:09:45 a20 ядро: usb 3-1: новые строки USB-устройства: Mfr=1, Product=2, SerialNumber=0
11 фев 10:09:45 a20 ядро: usb 3-1: Продукт: USB Лазерная Мышь
11 фев 10:09:45 a20 ядро: usb 3-1: Производитель: Logitech
11 фев 10:09:45 a20 ядро: вход: Logitech USB Лазерная Мышь как /devices/platform/soc/1c14400.usb/usb3/3-1/3-1:1.0/0003:046D:C069.0005/input/input6
11 фев 10:09:45 a20 ядро: hid-generic 0003:046D:C069.0005: input,hidraw2: USB HID v1.10 Мышь [Logitech USB Лазерная Мышь] на usb-1c14400.usb-1/input0
Есть мысли?
systemd.log_level=debug systemd.log_target=kmsg loglevel=7 systemd.journald.forward_to_console=1
log_target
также может быть установлен непосредственно в console
https://fedoraproject.org/wiki/How_to_debug_Systemd_problems
https://freedesktop.org/wiki/Software/systemd/Debugging/
Я думаю, что этот вопрос может быть дубликатом, не уверен.
Ответ или решение
Чтобы настроить вывод сообщений ядра на последовательную консоль в системе, использующей systemd, выполните следующие шаги:
-
Редактирование параметров загрузки ядра:
Проверьте, что параметры ядра в вашем загрузчике настроены правильно. Например, если вы используете GRUB, отредактируйте файл/etc/default/grub
и убедитесь, что там указаны следующие параметры:GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,115200 loglevel=7"
Если вы хотите отправлять сообщения systemd на консоль, добавьте параметры:
systemd.log_level=debug systemd.log_target=console systemd.journald.forward_to_console=1
После внесения изменений обновите конфигурацию GRUB:
sudo update-grub
-
Конфигурация journald:
Убедитесь, что конфигурацияjournald
настроена правильно. Откройте/etc/systemd/journald.conf
и установите следующие параметры:[Journal] ForwardToConsole=yes MaxLevelConsole=debug
Если этот файл отсутствует, создайте его.
-
Настройка systemd:
В файле/etc/systemd/system.conf
необходимо установить параметр:[Manager] ShowStatus=no
-
Перезагрузка системы:
После завершения конфигурации перезагрузите систему для применения изменений. -
Проверка:
После перезагрузки, подключившись к последовательной консоли (например, с помощьюscreen
илиminicom
), проверьте, выводятся ли сообщения ядра. Вы можете также попробовать вызвать событие, которое должно генерировать сообщения ядра (например, подключение USB-устройства), чтобы убедиться, что всё работает корректно.
Если после выполнения всех вышеперечисленных шагов сообщения ядра по-прежнему не выводятся на последовательную консоль, убедитесь, что:
- Устройство последовательного порта (ttyS0) правильно настроено и доступно.
- На уровне железа нет никаких ограничений для вывода информации на последовательный порт.
- Вы проверили журнал
journalctl -b
и убедились, что сообщения не теряются.
Эти шаги должны помочь вам настраивать вывод сообщений ядра на последовательную консоль в системе с systemd. Если проблема остаётся нерешённой, стоит дополнительно проверить конкретные конфигурации вашего дистрибутива, поскольку некоторые могут иметь дополнительные особенности или ограничения.