18.04 更新破坏了 grub 并阻止启动

18.04 更新破坏了 grub 并阻止启动

今天我遇到了一个问题,导致我的系统无法启动。系统是全新安装的,因为我最近通过实时 USB 使用官方 Ubuntu ISO 重新安装了 Ubuntu 18.04.3。

这是我第三次或第四次尝试,但遇到了同样的问题:

  • 使用默认参数安装系统

  • 安装后立即重新启动,没有问题。

  • 更新我的系统。现在它坏了,所以我不再使用它了,但我在安装系统后就运行了常规更新。

  • 再次重启后,我的系统似乎坏了。我无法再启动 Ubuntu。系统继续显示 grub 菜单,然后如果我选择任何选项,它都会失败。
  • 每次发生这种情况时,我都会重新安装 Ubuntu 18.04.3 并遇到同样的问题(更新并陷入启动循环)。
  • dmesg 显示一个错误:
EDAC amd64: Error: F0 not found, device 0x1460 (broken BIOS?)
EDAC amd64: Error: Errorprobing instamce: 0

我们在另一台安装了一周的计算机(编辑:另外 3 台计算机)上重现了此错误,并遇到了完全相同的问题。其他计算机也有类似的非常新的硬件(最新的 AMD CPU,AMD Epyc 7302p)。

一位同事进行了更新,也遇到了这个问题。他不得不将内核版本从 5.0.0-36-generic 恢复到 5.0.0-35-generic,才能恢复系统正常运行。

更新:显然,错误来自软件包升级。因为我从头开始安装了 Ubuntu 18.04,使用内核版本为 5.0.0-23-generic 的实时 USB,当让安装程序在安装过程中下载更新时,它会将内核升级到版本 5.0.0-36-generic,而不会破坏 grub。但是,当我尝试升级其他软件包(使用 apt upgrade)时,grub 再次损坏。

在升级过程中,我看到一个软件包正在修改 /boot 分区中的某些文件,但不幸的是,我没有时间查看是哪一个。

还有人遇到过这个问题吗?有人有解决办法吗?

答案1

在两台 Dell Precision 5820 上进行一系列可信更新后,出现同样的问题。第一台在单独的 2 TB 驱动器上有两个操作系统:

  • sda=Ubuntu18.04
  • sdb=Windows10

第二个在单独的 2 TB 驱动器上有三个操作系统:

  • sda=Ubuntu18.04
  • sdb=Fedora31
  • sdc=Debian9

首先我运行了以下命令:

  1. sudo apt update
  2. 我调用了软件更新程序。
  3. 我允许它更新全部。
  4. 当更新 GRUB 时,它询问我是否要替换我的,保留本地的,还是比较两者。我选择比较本地和新的,这听起来很简单,控制台读数显示设置 shim-signed (1.37~18.04.3+15+1533136590.3beb971-0ubuntu1) ...在进行某些更新时(尽管我拒绝这样做!)需要重新启动才能释放系统。
  5. 回来后,我打开了一个终端并运行sudo update-grub
  6. 我再次重新启动并进入。

第二个系统(同步运行,因为两个系统都是从昨天的 Dell Restore 闪存安装开始运行的,该安装解决了 AMD 在 Dell 冻结系统版本之前未安装驱动程序而导致的“登录循环”,2100X 显卡无休止地等待登录输入,而登录输入无法在 16.04 代码/内核中读取)不同,因为我说(在关于 GRUB 更新的同一个查询中)我想保留本地系统,这样我就可以选择/运行我的三个操作系统。重新启动后,这三个系统都出现错误,这告诉我 GRUB 已损坏(软件安装程序代码也是如此)

  • Ubuntu:我曾经F12绕过 GRUB 菜单并选择 Ubuntu,但失败了。

    0.3294701 Kernel offset: ...
    0.3294911 --- [ end Kernel panic - not synching: VFS: 
    Unable to mount fs on unknown-block(0,0)
    

    所以我重新启动了。

  • Debian:我曾经F12绕过 GRUB 菜单,选择 Debian,但失败了。它进入了系统测试器窗口,我点击Esc退出,然后重新启动。

  • Fedora:我F12过去常常绕过 GRUB 菜单,选择 Fedora。一开始,它看起来不错。我进去后它自动更新了。
    然后,它进入 EFI 菜单,我再次选择了 Fedora。它进入了紫色的 Ubuntu低水准屏幕上并挂断了。

这很累。本来应该非编码员发布流程的 QA 和全面回归(以及构建、验收和发布)测试,尤其是所有受修改代码影响的领域,为新代码添加新测试!这开始看起来像微软和苹果发布的模型,一旦它开始工作,我就不敢再点击了[好的]更新查询,因为有充分理由担心会出现无法追踪且致命(没有解决方法)的高优先级/高严重性“问题”,从而浪费我更多的时间,其中我必须进行 QA 和测试其他人跳过。

ACM、IEEE、ISO、SQA 等对发布的定义并不是这样的。我必须在无法登录的系统上替换未保存的文件,即清零后重新安装。

答案2

我在使用 AMD EPYC 7452 32 核处理器时也遇到了这个问题:

Aug 28 13:57:40 server01 kernel: [    8.196170] MCE: In-kernel MCE decoding enabled.
Aug 28 13:57:40 server01 kernel: [    8.201319] EDAC amd64: Node 0: DRAM ECC enabled.
Aug 28 13:57:40 server01 kernel: [    8.201320] EDAC amd64: F17h detected (node 0).
Aug 28 13:57:40 server01 kernel: [    8.201375] EDAC amd64: Error: F0 not found, device 0x1460 (broken BIOS?)
Aug 28 13:57:40 server01 kernel: [    8.201378] EDAC amd64: Error: Error probing instance: 0
Aug 28 13:57:40 server01 kernel: [    8.320565] EDAC amd64: Node 0: DRAM ECC enabled.

修复方法是安装 LTS Enablement Stacks(也称为 HWE 或硬件启用)内核:

apt install --install-recommends linux-generic-hwe-18.04

现在,系统启动了,并且不会抛出错误:

Aug 28 14:07:39 server01 kernel: [  117.977960] MCE: In-kernel MCE decoding enabled.
Aug 28 14:07:39 server01 kernel: [  117.985049] EDAC amd64: Node 0: DRAM ECC enabled.
Aug 28 14:07:39 server01 kernel: [  117.985051] EDAC amd64: F17h_M30h detected (node 0).
Aug 28 14:07:39 server01 kernel: [  117.985283] EDAC MC: UMC0 chip selects:
Aug 28 14:07:39 server01 kernel: [  117.985285] EDAC amd64: MC: 0: 65536MB 1: 65536MB
Aug 28 14:07:39 server01 kernel: [  117.985286] EDAC amd64: MC: 2: 65536MB 3: 65536MB

相关内容