Как сбросить dmesg, то есть журналы ядра, в один файл .txt при загрузке ядра?

Вопрос или проблема

Я пытаюсь понять связь между хостом и устройством SATA, и для этого я добавил много отладочных сообщений в код драйвера ядра. Теперь сообщений так много, что я не могу увидеть начальные сообщения о перечислении устройств в журнале dmesg. Для этого я изменил конфигурационную переменную CONFIG_LOG_BUF_SHIFT(=21), чтобы увеличить размер кольцевого буфера, из которого dmesg берет сообщения, но все равно сталкиваюсь с той же проблемой.

Есть ли какой-либо способ, который позволит мне записывать все dmesg из загрузки ядра в конкретный файл?

Спасибо за помощь заранее.

Вы можете использовать:

cat /var/log/dmesg > file.txt

и использовать:

head /var/log/dmesg

если хотите увидеть первые строки dmesg.

Смотрите также ‘man head’ для получения дополнительных спецификаций. Символ ‘>’ перенаправляет вывод ‘cat’ в ‘file.txt’

Существует команда dmesg, которая выведет логи в stdout. Вы можете просто перенаправить stdout в текстовый файл.

dmesg > /path/to/dmesg.txt

Вы можете расширить это. Действительно полезный вариант — добавить строку в ваш файл ~/.profile (в вашей домашней директории), которая будет дополнять вывод dmesg при входе в систему. Просто добавьте строку:

dmesg >> /path/to/dmesg.txt

Если вы просто хотите увидеть первые несколько строк (0.000000 сообщений), вы можете передать это в head вот так.

С stdout:

dmesg | head

или с head по уже сохраненному .txt файлу.

head /path/to/dmesg.txt

Вот и все, надеюсь, это поможет!

ИЗМЕНЕНИЕ: Кстати, это действительно содержит 0.000000 сообщений

Ответ или решение

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

Способы сохранения dmesg в текстовый файл

1. Использование команды dmesg

Вы можете использовать команду dmesg, которая выводит сообщения ядра в стандартный вывод (stdout). Для записи этих сообщений в текстовый файл, воспользуйтесь перенаправлением:

dmesg > /путь/к/файлу/dmesg.txt

Этот способ позволяет быстро сохранить текущие сообщения ядра в файл dmesg.txt. Если вы хотите добавить новые сообщения в уже существующий файл, вы можете использовать оператор >> вместо >:

dmesg >> /путь/к/файлу/dmesg.txt

2. Запись в файл во время загрузки системы

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

Создайте единичный файл сервиса для этой задачи:

sudo nano /etc/systemd/system/dmesg.service

Добавьте следующий код:

[Unit]
Description=Save dmesg logs

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'dmesg > /путь/к/файлу/dmesg.txt'

[Install]
WantedBy=multi-user.target

Сохраните файл и активируйте его:

sudo systemctl enable dmesg.service

Теперь при каждой загрузке системы будет создаваться новый лог dmesg.

3. Использование логов системного журнала (journalctl)

Если ваша система использует systemd, вы можете воспользоваться утилитой journalctl для извлечения сообщений ядра. Для этого выполните следующую команду:

journalctl -k > /путь/к/файлу/dmesg.txt

Эта команда сохраняет все сообщения ядра, записанные в журнал системы, в указанный файл.

Дополнительные рекомендации

  • Увеличение размера кольцевого буфера: Если вы уже изменили значение CONFIG_LOG_BUF_SHIFT, чтобы увеличить размер буфера, убедитесь, что изменения сохранены и загружаются при следующем перезапуске системы.

  • Вывод ранних сообщений: Чтобы просмотреть самые ранние сообщения, вы можете использовать head вместе с dmesg:

dmesg | head

Эта команда покажет вам первые 10 сообщений, что может помочь определить, были ли загружены нужные вам данные.

Заключение

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

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

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