Как включить 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 после перезагрузки системы. Это может быть особенно полезно для диагностики и устранения неполадок.

Настройки, которые были выполнены

  1. Изменение файла конфигурации GRUB:

    GRUB_CMDLINE_LINUX="pstore.backend=efi efi_pstore.pstore_disable=0"

    Это позволяет ядру использовать механизм pstore с поддержкой EFI.

  2. Обновление конфигурации GRUB:

    sudo update-grub
  3. Настройка параметров sysctl для автоматической перезагрузки после паники:
    Создание файла /etc/sysctl.d/KernelPanic.conf и добавление в него строки:

    kernel.panic=30
  4. Загрузка необходимых модулей:
    Создание файла /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 остается пустой после перезагрузки.

Возможные причины

  1. Служба systemd-pstore:
    Ваша версия Ubuntu 18.04 не поддерживает systemd-pstore, что приводит к тому, что данные о панике не сохраняются в /sys/fs/pstore, а сохраняются в каталоге /var/lib/systemd/pstore/.

  2. Неполная интеграция pstore:
    Поскольку ваша система не поддерживает последнюю версию systemd, которая управляет процессами pstore, вы не получаете данных, которые были бы автоматически собраны и сохранены.

Рекомендации по исправлению проблемы

Чтобы получить функцию, аналогичную той, которая есть в более новых версиях Ubuntu (20.04 и выше), рассмотрите следующие варианты:

  1. Обновление системы:
    Рекомендуется выполнить обновление до более новой версии Ubuntu (20.04 или выше), так как поддержка pstore и systemd-pstore значительно улучшена.

  2. Маршрутизация сообщений паники:
    Если обновление невозможно, можно рассмотреть возможность создания пользовательского скрипта, который будет отвечать за сохранение сообщений записей в определенное место перед перезагрузкой после паники.

Заключение

Включение механизма pstore в Ubuntu 18.04 требует внимательного подхода, учитывая архитектурные различия старой версии системы и поддерживаемые функции. Убедитесь, что ваша система актуальна и в случае возможности переходите на более свежую версию, чтобы воспользоваться всеми возможностями современных технологий.

Оцените материал
Добавить комментарий

Капча загружается...