如何解决“Kernel panic - not syncing - Attempted to kill init”错误,且不会删除任何用户数据。

42
我正在尝试在我们的Ubuntu服务器上更新libc,但失败了,现在当我重新启动服务器时,会出现一个错误消息:

Kernel panic - not syncing - Attempted to kill init!

然后服务器就卡住了。

有什么解决这个问题的办法吗?该服务器由10人使用,所以我不想重新安装以避免删除他们的数据。


1
内核崩溃发生的原因有很多种。通常是由于硬件故障引起的...您需要查看 /var/log/dmesg 和 /var/log/syslog 以获取有关实际发生情况的更多信息。 - hsanders
1
你应该尝试使用“Live CD”启动计算机,然后挂载包含“/”和“/lib”的硬盘分区。然后尝试恢复libc文件。 - sawdust
10
这不是提出这个问题的合适论坛。你最好去superuser.com或者ubuntu.stackexchange.com问一下。看起来这个问题很可能会被迁移到superuser.com。 - Craig Ringer
1
我在从14.04升级时遇到了同样的问题,甚至无法使用旧内核和救援模式启动,你是如何解决的? - Nullpointer
我有同样的问题。你找到解决方案了吗?谢谢。 - Pascut
这就是为什么我不喜欢Ubuntu。为什么它不能顺畅地工作呢? - atulkhatri
8个回答

24

如果完整的信息是:

kernel panic - not syncing: Attempted to kill inint !
PId: 1, comm: init not tainted 2.6.32.-279-5.2.e16.x86_64 #1

那么你应该已经禁用了selinux,然后重新启动系统。

更简单的方法是使用live OS并重新启用它。

vim /etc/selinux/config
    ...
    SELINUX=enforcing
    ...

第二选择是在内核参数中禁用selinux,方法是添加selinux=0

vim /boot/grub/grub.conf
    ...
    kernel /boot/vmlinuz-2.4.20-selinux-2003040709 ro root=/dev/hda1 nousb selinux=0
    ...

来源 内核恐慌-无法同步:试图杀死初始程序!


24
SELinux 不等同于 Linux 防火墙! - mmtauqir
当在ARM Debian(Raspbian)系统上使用qemu 2.6.0时,第二个不起作用。 - dotslash
2
顺便说一下,链接已经失效了,我不知道它指向了什么。 - ljleb

3
  1. 安装CentOS Live CD并启动
  2. 进入救援模式并等待它加载
  3. 查看终端以确定它挂载了哪个操作系统
  4. 进入操作系统
  5. 使用vim或nano打开/etc/selinux/config文件
  6. 确保SELINUX=enforcing或disabled

2
从CD启动以恢复安装并编辑/etc/selinux/config:将SELINUX从enforcing更改为permissive。重新启动系统即可。
更改前的/etc/selinux/config内容为:SELINUX=enforcing and SELINUXTYPE=permissive 更改后的/etc/selinux/config内容为:SELINUX=permissive and SELINUXTYPE=permissive

2
解决方案如下:
  1. 重新启动
  2. 进入高级菜单,然后点击“e”(编辑引导参数)
  3. 向下滚动到以linux开头的行,并按End键
  4. 按空格键
  5. 在末尾添加以下内容 -> kernel.panic=1
  6. 按F10键重新启动
这基本上是强制您的计算机重新启动,因为默认情况下它不会在内核恐慌后重新启动。

1
这在我的Ubuntu 14.04上没有起作用。 - zanbri
这里也不起作用。 - user559533
这在 Debian 9.x 上不起作用 ): - Boris Valderrama

1

重新挂载 /
例如:

  1. mount -o remount,rw /dev/xyz /
  2. sed -i 's/1 1/0 0/' /etc/fstab
  3. sed -i 's/1 2/0 0/' /etc/fstab
  4. 重新启动

1
我刚刚在更换故障磁盘时遇到了这个问题。我已经将系统文件复制到新磁盘上,并且在fstab中用新磁盘的UUID替换了旧磁盘的UUID,但是我没有在/boot/grub中的grub.conf(有时是menu.lst)文件中替换UUID。因此,请检查您的grub.conf文件,如果“kernel”行类似于
kernel ... root=UUID=906eaa97-f66a-4d39-a39d-5091c7095987 

很可能它有旧磁盘的UUID。用新磁盘的UUID替换它并运行grub-install(如果您在live CD救援中,您可能需要chroot或指定grub目录)。


1

在 grub 屏幕中选择恢复模式。

启动时按住 ESC 键。

它应该会带您进入一个 GUI 菜单。打开命令并修复 SELinux。

我还建议运行清理损坏的软件包。


我没有进入GUI菜单。 - mlhDev

0

1
在基于 Debian 的系统(如 Ubuntu)中,应该使用 .deb 文件而不是 rpm 文件。如果系统恢复失败,重新安装之前将用户数据目录复制到其他位置是另一种选择。实际上,在尝试修复之前,这应该是首先要做的事情。去当地办公用品店,获取一个外部硬盘,从 LiveCD 启动并备份用户数据。然后再考虑修复。 - Chris Stratton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接