调试`内核恐慌 - 不同步:试图杀死 init!`

Mat*_*teo 7 boot grub2 init kernel

接受内核更新后,我的系统停止运行。终端上的命令(如lscd等)不起作用并返回错误消息command not found,并尝试使用 GUI 执行任何操作。

我强行关闭了计算机,重新启动后我(预计)遇到了内核恐慌错误:

[timestamp]Kernel panic - not syncing: Attempted to kill init! exitcode=0x0001000
[timestamp]CPU: 0 PID: 1 Comm: run-init Not tainted 3.19.0-25-generic #26~14.04.1-Ubuntu
[timestamp]Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./B150M Pro4S, BIOS P1.10 07/16/2015
[timestamp] ffff88084cd60380 ffff880851727e68 ffffffff817aed00 0000000000002478
[timestamp] ffffffff81a901a8 ffff880851727ee8 ffffffff817a8bc8 ffff880851728000
[timestamp] ffffffff00000010 ffff880851727ef8 ffff880851727e98 ffffffff81c5ee20
[timestamp] Call Trace:
[timestamp]  [<ffffffff817aed00>] dump_stack+0x45/0x57
[timestamp]  [<ffffffff817a8bc8>] panic+0xc1/0x1f5
[timestamp]  [<ffffffff81077ae1>] do_exit+0xa11/0xb00
[timestamp]  [<ffffffff81077c17>] SyS_exit+0x17/0x20
[timestamp]  [<ffffffff817b668d>] system_call_fastpath+0x16/0x1b
[timestamp] Kernel Offset: 0x0 from 0xffffffff81000000 (relocation range:0xffffffff80000000-0xffffffffbfffffff)
[timestamp] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0001000
Run Code Online (Sandbox Code Playgroud)

我没有惊慌(希望你喜欢双关语)并在网上寻找可能的解决方案,其中我发现:


这种方法的问题在于,不知何故新内核似乎把旧内核搞砸了,如果当我使用 GRUB 菜单选择以前的版本(在常规和恢复模式下)时,新内核会给出完全相同的错误.


我的错误是类似的,因为run-init命令不起作用,但不是因为文件丢失。与 OP 的情况类似,我的磁盘工作正常,如果我从 LiveOS 访问设备,我可以找到所有二进制目录和文件。


这些链接指的是不同的系统,因此在启动GRUB命令行后,我按如下方式调整了解决方案:

grub> set root=(hd0,1) selinux=0 enforcing=0
grub> linux /boot/vmlinuz-3.19.0-25-generic root=/dev/sda1
grub> initrd /boot/initrd.img-3.13.0-29-generic
grub> boot
Run Code Online (Sandbox Code Playgroud)

并不是真正提出解决方案,而是指出了多种可能的诊断,但似乎没有一个适合我的问题。


有点与内核崩溃无关,但解释了如何从 GRUB 菜单中引导到单用户模式。这可以防止X Server启动并希望允许我运行内核。


在这一点上,我找到了很多诊断,尝试了很多解决方案,但没有任何效果。

我(认为我)理解的是:

  • 内核(新的和旧的,恢复模式与否)在运行run-init命令时出现问题。
  • 这与我的硬件无关,因为计算机在 LiveOS 上运行良好,而且我能够使用显卡、访问我的磁盘、使用键盘和鼠标。
  • 此错误处于启动的早期阶段,因为尝试启动到单用户模式不起作用并且阻止X server加载也不起作用。

我想了解的,按重要性排序:

  • 新内核安装是否有可能覆盖/弄乱旧内核?
  • 有人知道我遗漏了什么/其他解决方案吗?
  • 我在实施上述解决方案时是否有任何错误?
  • 有什么我没有尝试过的东西会从你的头顶上掉下来吗?
  • 我可以在不从 GRUB 控制台格式化所有内容的情况下安装新内核吗?
  • 是时候重新安装操作系统了吗?(如果你不能回答上面的那些我已经知道这个答案了......)

进一步阅读

Luc*_*iki 3

在尝试使用Bug 文档之一中找到的解决方案解决统一问题时,Trusty (14.04) 也遇到了同样的问题

让我难过的是看到所有这些研究都被“浪费”了,甚至没有尝试给出答案。当然,必须有一种方法可以解决这个问题,而无需重新安装。


我还没有找到解决方案,但让我分享一下解决方案的入口(部分归功于此线程):

  1. 使用您喜欢的 Ubuntu 发行版创建可启动 USB 驱动器

  2. 选择尝试 Ubuntu 选项

  3. 确保您的文件系统可以使用 e2fsck /dev/your-partition

    • blikd您可以通过运行或获取正确的信息fdisk -l
  4. 挂载你的分区sudo mount /dev/your-partition /mnt

  5. 访问你的根环境chroot /mnt

  6. 现在您应该可以完全访问您的文件系统。
    您可以尝试通过 USB 驱动器或使用 rsync 修复或检索数据

我被困在试图通过重建初始化sudo apt-get install init

它返回了unable to locate package init,至于sudo apt-get update它返回了类似的东西

ubuntu 14.04有默认的init包吗?

在尝试手动下载时,我在这里找到了大量初始化包。

我发现的唯一“init”包显然是用于 xenial 的。我可以使用这个软件包在trusty中安装吗?


仍在努力弄清楚如何使这项工作发挥作用。再过几个小时,我就会承认失败并开始备份我的敏感数据,然后从头开始重新安装。