重新启动 CentOS 6.2 服务器后,我们收到内核恐慌并出现以下错误:
Kernel panic - not syncing: Attempted to kill init!
Panic occurred, switching back to text console
当经过init=选项 selinux=0在启动时将内核添加到服务器,这样服务器就可以顺利启动。我尝试搜索 init=option 的作用,但找不到任何资源来解释它。
- 有人能解释一下这个参数的作用吗?
- 此外,由于这是一个生产服务器,使用 init=option 运行时是否存在任何负面/风险?
我曾尝试通过 dracut 重新制作 initramfs,但没有成功,并且在启动时出现上述错误。
由于这是集群服务器,并且主服务器应该相同,因此我从另一台服务器复制了 /boot 驱动器,但这也没有解决问题。 (另一台服务器没有此行为)
从备份恢复 /boot 也不起作用。
你能帮我调查一下这个问题吗
- 什么原因导致这次内核恐慌?
- 您将如何解决这个问题?
- 哪些日志(如果有)可以告诉您更多信息?
- 由于这是较旧的安装,更新/升级是否可以解决此问题?
我还想补充一点,唯一可能的其他相关问题是,raid 镜像的根磁盘在发生这种情况之前出现故障并已被更换。
感谢您的帮助!
答案1
提醒自己和其他人:
确保输入 disabled当您放弃并决定禁用 selinux 时,而不是禁用!
猫/etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=TAKE_A_CLOSE_LOOK_AT_THIS_VALUE
SELINUX 值的拼写错误将导致内核恐慌。
答案2
init=option 是一个警告消息,它不是您应该使用的实际命令。
初始化选项
init 进程是内核最先启动的进程,也是所有其他进程的祖先。这些选项控制运行哪个程序以及如何运行。名称
init — 在初始化时运行的程序。概要
init=文件名
运行指定的二进制文件作为 init 进程,而不是默认的 /sbin/init 程序。名称
http://oreilly.com/linux/excerpts/9780596100797/kernel-boot-command-line-parameter-reference.html
用于init
指定内核要运行的初始命令。如果启动不正确,通常可以将其设置为init=/bin/bash
或。init=/bin/sh
通知的部分option
是您要执行的文件的路径。
如果系统在没有 SELinux 的情况下启动,那么我怀疑 SELinux 设置出了问题。调试起来可能很复杂。