Куда идет сообщение о панике ядра Linux?

Я не знаю, связано ли это с SO. Я знаю, что когда я использую функцию panic ядра Linux, ее задача — заморозить мою систему, но он принимает 1 аргумент, сообщение. Где я могу увидеть сообщение, если моя система полностью зависла и я принудительно выключил свой компьютер, удерживая кнопку выключения?

main.c

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h> // panic

MODULE_LICENSE("GPL");

static int __init initialization_function(void)
{
    panic("Module: my message!\n");
    return 0;
}

static void __exit cleanup_funcion(void)
{    
    printk(KERN_INFO "Module: Cleanup done, exiting.\n");
}

module_init(initialization_function);
module_exit(cleanup_funcion);

Кстати, я не знаю, как я могу увидеть фактическое сообщение oops, где и как его увидеть?


person Roi    schedule 28.09.2020    source источник
comment
Скорее всего, у вас открыт графический менеджер, поэтому он не показывает буферные сообщения. Войдите в один из tty (например, ctrl+alt+F2), наверняка вы его там увидите, или откройте терминал и введите dmesg -wH или journalctl -f, чтобы следить за логами.   -  person KamilCuk    schedule 28.09.2020
comment
Обычно на приставке (либо видео (может быть с фреймбуфером), либо серийник). Он может попасть в память, чтобы при следующей загрузке драйвер ядра и некоторые программы могли извлечь его для дальнейшей обработки.   -  person Giacomo Catenazzi    schedule 28.09.2020


Ответы (2)


Он переходит в консоль ядра, туда же, куда отправляется printk() сообщение. Скриншот есть в статье Википедии о панике ядра:

введите здесь описание изображения

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

Что произойдет, если у вас есть работающая настольная система, к сожалению, я не помню. Либо вы его не увидите, либо сервер X/Wayland рухнет, и вы увидите сообщение об этом в консоли.

person lvella    schedule 28.09.2020

Как вы сами заметили, это довольно сложно, так как система зависает. Что вы можете сделать, так это посмотреть системный журнал после перезагрузки. Как именно это делается, зависит от дистрибутива. В системе с systemd вы можете использовать journalctl -xe.

person klutt    schedule 28.09.2020