尝试将 Ubuntu 16.04 服务器安装到新初始化的磁盘上。使用 UEFI,和一个 4.5TB/分区。安装无问题后,在重新启动时,服务器将无法通过 Grub。
硬件:
- 新的超微服务器
- 硬件 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 将分区显示为:
我不确定如何从这里开始。
尝试使用 supergrub dvd/cd 引导。它可能会解决 grub 的问题。这在过去有时对我有用。失败只是重新安装。磁盘上的第一个分区看起来有点奇怪。该问题可能与对 ssd 的突袭有关。您可以尝试在没有 raid 的情况下进行安装,看看您的情况如何。
因此,经过大量测试和诊断,我找到了解决方案,但我仍然不明白为什么。如果有人可以向我解释这一点,我会奖励答案。
问题出在 /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 下启动。