Ubuntu 16.04 Server 新安装无法通过 Grub(可能是 UEFI 问题)

Ubuntu 16.04 Server 新安装无法通过 Grub(可能是 UEFI 问题)

尝试将 Ubuntu 16.04 Server 安装到新初始化的磁盘上。使用 UEFI 和 4.5TB / 分区。安装无问题后,重新启动时,服务器无法通过 Grub。

硬件:

  • 全新 Supermicro 服务器
  • 硬件 6 x SSD RAID 5 - 4.5TB 虚拟磁盘
  • BIOS 已全面更新

安装步骤:

选择 UEFI 虚拟 CD,即 Ubuntu 16.04 服务器。注意 - 我选择了 UEFI 虚拟 CD,而不是屏幕截图中突出显示的非 UEFI(我截取屏幕截图后才意识到这一点)

在此处输入图片描述

Ubuntu 默认引导分区布局,非 LVM,完全未修改。确认存在分区,包括 ESP。

在此处输入图片描述

安装完成,没有错误。安装后,Ubuntu 出现在启动菜单中:

在此处输入图片描述

无论选择什么选项,系统都会启动到 Grub:

在此处输入图片描述

在 Grub 中,据我所知,ESP 应该挂载在 /boot/efi。但是,Grub 显示如下错误,但也可以正常列出 /,但是 / 内的任何内容(例如 /etc)都出现错误,包括 /boot:

在此处输入图片描述

Grub 显示分区为:

在此处输入图片描述

我不确定接下来该如何继续。

答案1

尝试使用 supergrub dvd/cd 启动。它可能会修复 grub 的问题。过去有时这种方法对我有用。如果失败,只需重新安装。磁盘上的第一个分区看起来有点奇怪。该问题可能与 ssd 的 raid 有关。您可以尝试在没有 raid 的情况下安装,看看效果如何。

答案2

经过大量测试和诊断后,我找到了解决方案,但我仍然不明白为什么。如果有人能向我解释这一点,我会奖励答案。

问题出在 /boot 目录上。由于它是在 UEFI 下安装的,ESP 设置在 /boot/efi 下,在 Grub 中这运行正常,我可以正常读取它。

但是,包含所需内核的某些 /boot 目录无法读取。当我尝试手动加载内核并从 grub 启动时,内核加载正常,但尝试加载 initrd 时,我收到错误:

错误:尝试读取或写入磁盘 hd0 之外的内容

据我了解,这是因为 /boot 位于主 4.5TB 分区上,所以文件可以位于驱动器上的任何位置,在这种情况下,以及我之前的许多测试用例中,/boot 中的文件位于驱动器太远的地方,Grub 无法读取。

在 ESP 分区之前创建专用的 /boot 分区解决了这个问题。

这是与此处记录的问题相同的问题:(根据https://carteryagemann.com/blog/102015-boot-partition.amp.html

然而我不明白的是,根据我的理解,在 UEFI 下,完整的 4.5TB 应该是可读的。Ubuntu 应该可以在其默认分区布局下(仅包含 ESP 分区)正常启动?

这一点已得到证实,因为我已在其他 3 台硬件和 BIOS 设置相同的服务器上成功安装了没有 /boot 分区的 Ubuntu。只有这台服务器无法读取 /boot.a 中的部分内容

我已确保磁盘在 BIOS 中的 UEFI 下启动。

相关内容