小编mde*_*uss的帖子

如何修复 grub 启动错误:“找不到符号‘grub_calloc’

刚刚在 20.04 (Xubuntu) 上运行了最新一批更新,现在我收到了 GRUB 错误:

symbol 'grub_calloc' not found
Run Code Online (Sandbox Code Playgroud)

我进入了“grub 救援”外壳,但不知道在那里做什么可能有用。对我来说,“找不到符号”意味着 grub 包存在某种构建错误,但我真的不知道 grub 是如何工作的。我注意到此更新还包括“固件”,不确定这是否相关。我最好的选择是从 live CD 启动,看看我是否可以以某种方式将更新回滚到 grub?

编辑添加:

好的,感谢很多人!这就是我认为我现在理解的内容。

  1. 在“非 UEFI”系统上,grub 安装在两个独立的部分。第一个也是最基本的部分是在启动时启动的部分。但是对于它的大部分功能,它需要第二部分。这些部分必须对齐 - 任何部分都不需要其他部分的任何功能,而实际上并不存在。

    当这些部分没有对齐并且没有提供函数 grub_calloc 时,就会出现可见的运行时问题。我不是 100% 清楚 grub_calloc 是属于第二个、更大的部分还是第一个。我会期待第二个,但 grub 构建系统是一件相当艺术的作品,所以我不知道:)。

  2. 问题的根本原因是grub更新并没有保证部分都更新了。理想情况下,如果不这样做会导致 grub 安装失败,并且系统应该恢复到安全状态。这不会发生。

    这实际上对我来说仍然有点神秘。默认情况下,更新需要做的就是将每个部分放在当前部分所在的位置,因为显然这有效。如果安装位置/驱动器是配置驱动的,并且无法到达这些位置之一,那么不知何故,配置数据和现实之间就会出现不匹配。只要部件之间没有引入新的依赖关系,这可能不会显示为问题。

所有解决方案都涉及重新安装 grub 以确保两个部分对齐。实际上没有必要返回到以前的版本(尽管这会起作用),因为损坏的并不是 grub 运行时本身。有多种方法可以实现这一点,具体取决于您的环境,但运行引导修复实时磁盘对我有用。

为了避免将来出现这种错位,确保系统上的 grub 安装程序配置为安装到正确的设备可能很有用。

此更新解决了一些重要的错误(请参阅 Ubuntu 安全通知 4432)。如果您已恢复 grub 来解决此问题,请注意您会遇到这些问题。

boot grub2

53
推荐指数
5
解决办法
8万
查看次数

标签 统计

boot ×1

grub2 ×1