发生错误时我想读取另一个内核

Posted

技术标签:

【中文标题】发生错误时我想读取另一个内核【英文标题】:i want read another kernel when an error occurs 【发布时间】:2018-03-29 19:54:27 【问题描述】:

读取内核时,我想在发生错误时读取另一个内核。 因为内核编译中的 ssh 远程。 grub 选项可以吗?

title CentOS (3.13.6)
        root (hd0,0)
        kernel /vmlinuz-3.13.6 ro root=/dev/mapper/vg_sizone-lv_root rd_NO_LUKS rd 
_LVM_LV=vg_sizone/lv_root rd_NO_MD crashkernel=auto LANG=ko_KR.UTF-8  KEYBOARDTYPE 
=pc KEYTABLE=ko rd_LVM_LV=vg_sizone/lv_swap rd_NO_DM rhgb quiet
        initrd /initramfs-3.13.6.img
title CentOS (2.6.32-642.6.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-642.6.1.el6.x86_64 ro root=/dev/mapper/vg_sizone-lv 
_root rd_NO_LUKS rd_LVM_LV=vg_sizone/lv_root rd_NO_MD crashkernel=auto LANG=ko_KR. 
UTF-8  KEYBOARDTYPE=pc KEYTABLE=ko rd_LVM_LV=vg_sizone/lv_swap rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-642.6.1.el6.x86_64.img

如果 3.13.6 内核崩溃。我要启动 2.6.32

【问题讨论】:

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地点。 一旦内核崩溃,您不能选择忽略它而只加载另一个内核。根据恐慌的性质,此时的系统可能会变得无响应/无用。 也许你可以让 GRUB 设置某种硬件看门狗计时器,如果 Linux 没有完全启动并“解除”它,它将重新启动机器。 【参考方案1】:

这不可能在所有场景中都实现;但是,如果您想为您的服务器测试新内核并在不工作时回退到旧内核,您可以获得。

我假设您现在使用旧内核启动并想要测试新编译的内核。 为新内核创建菜单项后,请确保将 'panic=N' 添加到内核命令行参数;这将确保在内核崩溃 N 秒(如果 N 大于零)后重新启动。

那么,

将当前启动的内核设置为默认值:

# grub-set-default <current kernel menuentry number>
# grub-reboot <new kernel menuentry number>

这里注意菜单项编号从0开始。 然后,重新启动系统。

# reboot

这将引导到新编译的内核并重新引导到旧内核,以防内核崩溃。

【讨论】:

【参考方案2】:

总的来说,如果要启动一个新的 linux,需要注意内核映像、ramdisk 和 linux 驱动程序。

我没有发现你的 grub 配置有什么问题,你为什么不试试呢?

【讨论】:

我尝试内核编译。内核恐慌是可怕的。如果 3.13.6 内核崩溃。我无法连接服务器。 在你尝试编译内核之前,尝试用 2.6.32 启动,如果没问题,然后回到 linux 3.10 做你想做的事情。【参考方案3】:

在前面添加一行:

默认=1


如果 default=0 ,则启动 3.13.6

【讨论】:

以上是关于发生错误时我想读取另一个内核的主要内容,如果未能解决你的问题,请参考以下文章

当验证失败时我得到(发生异常后不刷新会话)错误消息,为啥?

网页客户端上传错误

Spyder - 启动内核时发生错误

使用统一内存时 CUDA 中出现意外的读取访问冲突错误

当Hawq投诉时我如何解决错误:“SoldToAddr2”列缺少数据

无法解决 kaggle 内核中发生的 h2o 错误