linux内核紧急消息到哪里去了?

问题描述

我不知道它是否与 SO 有关,但是我知道当我使用Linux内核panic函数时,工作是冻结我的系统,但是需要 1 参数,一个 message ,如果我的系统完全冻结,我可以通过握住电源来强制关闭PC,在哪里可以真正看到 message 关闭按钮?

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 消息,在哪里以及如何看到它?

解决方法

它转到内核控制台,与printk()消息所在的位置相同。 Wikipedia article on kernel panic中有一个屏幕截图:

enter image description here

通常,如果在启动时发生内核崩溃,您将能够看到它。

关于如果您有一个正在运行的桌面系统会发生什么,不幸的是,我不记得了。您可能看不到它,否则X / Wayland服务器将崩溃并在控制台中看到该消息。

,

您已经注意到自己,这很棘手,因为系统被冻结了。您可以做的是在重新启动后查看系统日志。确切的实现方式取决于分布。在具有systemd的系统上,您可以使用journalctl -xe