重新启动 CentOS 6.2 服务器后,我们收到内核恐慌并出现以下错误:
Kernel panic - not syncing: Attempted to kill init!
Panic occurred, switching back to text console
经过时初始化=选项selinux=0在启动时添加到内核,服务器将毫无问题地启动。我尝试搜索 init=option 的作用,但找不到任何解释它的资源。
- 有人能解释一下这个参数的作用吗?
- 另外,由于这是一个生产服务器,使用 init= 选项运行是否有任何负面/风险?
我尝试重新制作initramfs
via dracut
,但它不起作用,并在启动时收到上述错误。
由于这是一个集群服务器,并且主服务器应该是相同的,我已经/boot
从其他服务器复制了驱动器,但这也没有解决问题。 (其他服务器没有此行为)
从备份恢复/boot
也不起作用。
你能帮我调查这个问题吗
- 是什么导致了这个内核恐慌?
- 您将如何解决这个问题?
- 哪些日志(如果有)可以告诉您更多信息?
- 由于这是较旧的安装,更新/升级是否可以解决此问题?
我还想补充一点,唯一可能的相关问题是 raid 镜像的根磁盘出现故障并在此发生之前被替换。
答案1
根据 Linux 内核参数文档:
初始化=选项
init= [KNL] Format: <full_path> Run specified binary instead of /sbin/init as init process.
selinux=0
selinux= [SELINUX] Disable or enable SELinux at boot time. Format: { "0" | "1" } See security/selinux/Kconfig help text. 0 -- disable. 1 -- enable. Default value is set via kernel config option. If enabled at boot time, /selinux/disable can be used later to disable prior to initial policy load.
因此,使用这些参数运行会禁用 selinux 并加载名为 option 的 init 守护进程。因此以这种方式运行应该不会妨碍系统的运行,但禁用 selinux 确实会带来安全成本。但是,如果你运行初始化=选项没有selinux=0它应该可以正常启动,因为 selinux 不应干扰 init。至于修复问题,我不知道为什么/sbin/初始化崩溃但是选项二进制启动就很好,所以也许其他人可以编辑这个答案以包含修复程序。