有时,当我从挂起或休眠状态恢复时,会遇到内核崩溃。在这种情况下,我通常会按住电源按钮强制关机。最近,我开始使用内核参数panic=n
,它会在内核崩溃后几秒自动重新启动系统n
。
这些方法有什么区别吗?
我了解到,可以加载另一个内核来为潜在的内核崩溃做准备,这样您就可以保存崩溃日志。这个辅助内核可以用来执行正确的关机(例如,停止
systemd
服务、卸载文件系统等)而不是强制重启吗?
有时,当我从挂起或休眠状态恢复时,会遇到内核崩溃。在这种情况下,我通常会按住电源按钮强制关机。最近,我开始使用内核参数panic=n
,它会在内核崩溃后几秒自动重新启动系统n
。
这些方法有什么区别吗?
我了解到,可以加载另一个内核来为潜在的内核崩溃做准备,这样您就可以保存崩溃日志。这个辅助内核可以用来执行正确的关机(例如,停止systemd
服务、卸载文件系统等)而不是强制重启吗?
不,因为原始内核此时已完全停止执行内核事务;实际上它唯一在做的事情就是闪烁键盘 LED 并倒计时重启计时器。没有其他任何运行。
也不是。例如,辅助内核不会在内存中拥有任何文件系统驱动程序的“工作数据”,也不会引用先前存在的进程 - 它就像任何其他内核一样重新开始 - 部分原因是它没有很好的方法来知道哪些数据结构仍然良好,哪些数据结构可能已被导致 panic() 的问题破坏,部分原因是从另一个内核中抓取这些东西可能太繁琐,不值得。
无论如何,您的文件系统通常都有自己的从崩溃中恢复的方法,您的 SQL 数据库和其他东西也是如此。
当发生内核崩溃时,按住电源按钮强制关机或通过panic=n参数让系统自动重启都会导致突然停止,这可能会造成数据损坏或丢失。虽然可以加载辅助内核来捕获日志,但通常无法正常关机(例如停止服务或卸载文件系统)。最佳做法是通过更新或配置更改来尽量减少内核崩溃,如果发生崩溃,请确保经常备份所有重要数据,以防止因强制重启而丢失数据。