- Вопрос или проблема
- Что у меня есть:
- Что я хочу:
- Что я сделал:
- После перезагрузки:
- Инициация паники:
- После перезапуска:
- Ответ или решение
- Включение pstore для отладки паник ядра в Ubuntu 18.04
- Текущий статус системы
- Цели
- Настройки, которые были выполнены
- Диагностика после перезагрузки
- Возможные причины
- Рекомендации по исправлению проблемы
- Заключение
Вопрос или проблема
Что у меня есть:
-
Сервер Ubuntu 18.04 с ядром HWE 5.4.0-136
-
systemd-237 (без службы
systemd-pstore
). -
/sys/module/pstore/parameters/backend
содержит(null)
-
pstore
автоматически монтируется в/sys/fs/pstore
-
Сообщения, связанные с EFI, в
dmesg | grep -i efi
:ACPI: UEFI 0x000000003B55B7B8 000048 (v01 ALASKA A M I 00000002 01000013) ACPI: Резервирование памяти UEFI таблицы по адресу [mem 0x3b55b7b8-0x3b55b7ff]
-
Переменные, связанные с pstore, в
/boot/config
:CONFIG_EFI_VARS_PSTORE=m # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE не установлено CONFIG_CHROMEOS_PSTORE=m CONFIG_PSTORE=y CONFIG_PSTORE_DEFLATE_COMPRESS=y # CONFIG_PSTORE_LZO_COMPRESS не установлено # CONFIG_PSTORE_LZ4_COMPRESS не установлено # CONFIG_PSTORE_LZ4HC_COMPRESS не установлено # CONFIG_PSTORE_842_COMPRESS не установлено # CONFIG_PSTORE_ZSTD_COMPRESS не установлено CONFIG_PSTORE_COMPRESS=y CONFIG_PSTORE_DEFLATE_COMPRESS_DEFAULT=y CONFIG_PSTORE_COMPRESS_DEFAULT="deflate" # CONFIG_PSTORE_CONSOLE не установлено # CONFIG_PSTORE_PMSG не установлено # CONFIG_PSTORE_FTRACE не установлено CONFIG_PSTORE_RAM=m
Что я хочу:
- доступ к dmesg после паники ядра.
Что я сделал:
-
vi /etc/default/grub
GRUB_CMDLINE_LINUX="pstore.backend=efi efi_pstore.pstore_disable=0"
-
update-grub
-
vi /etc/sysctl.d/KernelPanic.conf
kernel.panic=30
-
vi /etc/modules-load.d/KernelPanic.conf
efi_pstore ramoops
После перезагрузки:
lsmod
сообщает, что модули загружены, но без сообщений вdmesg
/sys/module/pstore/parameters/backend
содержитefi
dmesg | grep -i pstore
отображает только командную строку ядра
Инициация паники:
echo 65535 > /proc/sys/kernel/sysrq
sync
echo c > /proc/sysrq-trigger
После перезапуска:
/sys/fs/pstore
пусто — почему?
Возможная причина:
/sys/fs/pstore
пусто, потому что служба systemd-pstore запускается при загрузке- systemd-pstore автоматически передаёт все файлы в директорию
/var/lib/systemd/pstore/<TIMESTAMP>/
Содержимое директории:
- один файл
dmesg.txt
- много маленьких файлов
dmesg-efi-<TIMESTAMP>
Дополнительная информация:
- Запустите “systemctl status systemd-pstore” для получения подробностей.
- Смотрите также файл
/lib/systemd/system/systemd-pstore.service
.
Тестировалось на различных версиях Ubuntu:
- 20.04, 22.04 и 24.04 = ок
- 18.04 = не поддерживается
Ответ или решение
Включение pstore для отладки паник ядра в Ubuntu 18.04
В данной статье мы рассмотрим процесс активации механизма pstore для сохранения информации о панике ядра в Ubuntu 18.04. Мы проанализируем доступные настройки и шаги, которые необходимо выполнить для достижения этой цели, принимая во внимание текущее состояние вашей системы.
Текущий статус системы
У вас настроена Ubuntu 18.04 с ядром HWE 5.4.0-136 и установленной версией systemd-237
, которая не поддерживает службу systemd-pstore
. В результате команда dmesg | grep -i efi
показывает, что ваша система корректно распознает таблицы UEFI, что является хорошим знаком для активации pstore.
Цели
Цель состоит в том, чтобы сохранить информацию о панике ядра, чтобы к ней можно было получить доступ через dmesg
после перезагрузки системы. Это может быть особенно полезно для диагностики и устранения неполадок.
Настройки, которые были выполнены
-
Изменение файла конфигурации GRUB:
GRUB_CMDLINE_LINUX="pstore.backend=efi efi_pstore.pstore_disable=0"
Это позволяет ядру использовать механизм pstore с поддержкой EFI.
-
Обновление конфигурации GRUB:
sudo update-grub
-
Настройка параметров sysctl для автоматической перезагрузки после паники:
Создание файла/etc/sysctl.d/KernelPanic.conf
и добавление в него строки:kernel.panic=30
-
Загрузка необходимых модулей:
Создание файла/etc/modules-load.d/KernelPanic.conf
с содержимым:efi_pstore ramoops
Диагностика после перезагрузки
После перезагрузки, вы заметили следующие результаты:
- Команда
lsmod
показывает, что модули загружены, но нет сообщений вdmesg
. - Параметр
/sys/module/pstore/parameters/backend
теперь показываетefi
. dmesg | grep -i pstore
выводит только параметры командной строки ядра.
При выполнении тестовой паники с помощью команды:
echo 65535 > /proc/sys/kernel/sysrq
sync
echo c > /proc/sysrq-trigger
Вы обнаружили, что директория /sys/fs/pstore
остается пустой после перезагрузки.
Возможные причины
-
Служба systemd-pstore:
Ваша версия Ubuntu 18.04 не поддерживаетsystemd-pstore
, что приводит к тому, что данные о панике не сохраняются в/sys/fs/pstore
, а сохраняются в каталоге/var/lib/systemd/pstore/
. -
Неполная интеграция pstore:
Поскольку ваша система не поддерживает последнюю версиюsystemd
, которая управляет процессами pstore, вы не получаете данных, которые были бы автоматически собраны и сохранены.
Рекомендации по исправлению проблемы
Чтобы получить функцию, аналогичную той, которая есть в более новых версиях Ubuntu (20.04 и выше), рассмотрите следующие варианты:
-
Обновление системы:
Рекомендуется выполнить обновление до более новой версии Ubuntu (20.04 или выше), так как поддержка pstore иsystemd-pstore
значительно улучшена. -
Маршрутизация сообщений паники:
Если обновление невозможно, можно рассмотреть возможность создания пользовательского скрипта, который будет отвечать за сохранение сообщений записей в определенное место перед перезагрузкой после паники.
Заключение
Включение механизма pstore в Ubuntu 18.04 требует внимательного подхода, учитывая архитектурные различия старой версии системы и поддерживаемые функции. Убедитесь, что ваша система актуальна и в случае возможности переходите на более свежую версию, чтобы воспользоваться всеми возможностями современных технологий.