将 Mdadm RAID 5 上的 Ubuntu Server 14.04.5 服务器从 BIOS 启动更改为 UEFI

将 Mdadm RAID 5 上的 Ubuntu Server 14.04.5 服务器从 BIOS 启动更改为 UEFI

我安装了 Ubuntu Server 14.04.5 LTS,它安装在 4 个硬盘上的 mdadm RAID 5 阵列上并运行。

最初,所有 4 个驱动器都是 2TB。

我已将其中一个升级到 3TB(打算全部升级),发现如果我想要使用驱动器上的全部存储空间,我需要使用 UEFI 启动,而不是我目前正在使用的传统 BIOS 启动。

我想将现有系统从传统 BIOS 模式启动更改为 UEFI,而无需重新安装整个操作系统。(主要是为了避免重新配置当前安装的所有内容,尽管这种情况持续的时间越长,该选项就越有吸引力。)

下列的这一页我已经以 UEFI 模式启动了 Ubuntu 14.04.5(桌面版)的 Live CD。

我通过运行确认了这一点[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"。在 Live CD 上启动时显示的消息是UEFI

我在 Live CD 会话中安装了 mdadm 和 boot-repair。如下所示:

sudo apt-get install mdadm
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair

我的 3TB 驱动器被格式化为在前面有一个 200MiB EFI 分区,然后其余空间是位于 mdadm RAID 阵列顶部的 LVM 卷组的一部分。

我已经运行了启动修复程序,它生成了以下启动信息日志:http://paste.ubuntu.com/p/q4xnBmXX9G/

我希望在启动修复完成后,系统从 3TB 硬盘启动时能够以 UEFI 模式启动。然而,我Loading operating system ...在启动后却卡住了。

我使用的是 Gbyte GA-880GMA-USB3 AM3+ 主板,据称它支持 EFI(特别是针对 3TB 以上的硬盘),但我尚未在其 BIOS 配置中找到任何针对硬盘的 UEFI 或 BIOS 特定选项(只有明确的 EFI 选项用于配置 CD-ROM 启动,我已将其设置为 EFI)。我已选择 3TB 硬盘作为第一个启动驱动器。

如果我选择其他任何仍在 MBR 上安装为 BIOS 模式配置的 Grub2 的版本,我会收到无法找到的错误grub.cfg。这在某种程度上是我预料到的 - 我已经重新配置了 Ubuntu Server 的安装以使用 EFI 启动,因此旧的 BIOS 配置不起作用。我最终进入 grub 救援控制台并看到了我期望的所有分区,但还没有运行任何从那里修改任何状态的命令。

我做错了什么导致我的系统无法启动?当我重新启动 Live CD 时,RAID 阵列仍然正确地重新组装,我仍然可以看到驱动器上的所有数据,所以它没有被擦除。如果出现任何问题,我确实备份了我的重要文件。

我目前主要怀疑的是 boot-repair 安装的 linux 头文件就像桌面版一样,但我之前的安装只使用服务器版。不过,这只是我目前在摸索。

我打算在安装所有(新的 3TB)驱动器时将 EFI 分区放在驱动器的最前面,这样即使其中一个驱动器发生故障,我的机器也可以启动。(包括第一个驱动器,现在 EFI 分区就在那里。)不过,这是未来的问题,因为在我解决了从单身的驾驶。

答案1

对于任何偶然发现这个问题、遇到这个问题并且因为似乎没有解决方案而现在尖叫着进入虚空的可怜灵魂,我已经摆脱了这个特殊的困境,但不是很优雅。

我的解决方案与 ubfan1 在问题本身的评论中所说的类似。我在 BIOS 模式下启动时遇到的问题是不支持超过 2TB 大小的卷。所以我又买了一些小硬盘(两个 400GB 的,因为现在看来这已经是最小的了),并将它们设置为 RAID1 阵列并从该 400GB 卷启动。

从大型 RAID5 阵列上的 EFI 分区启动的实际问题实际上仍未解决。我不需要再这样做了,所以我的机器仍然在 BIOS 模式下启动。

然而,在安装新驱动器的过程中,我相信我弄明白了为什么我无法以 EFI 模式启动(令人沮丧的时间,但可惜)并且它可能非常简单。

很久以前,当我第一次设置服务器时,我将 GRUB 配置为跳过提示屏幕,在该屏幕上您可以选择要启动的 Linux 映像。它会自动选择第一个条目。我相信这种情况仍然会发生。因此,EFI 启动选项可能存在,但 GRUB 会自动选择旧的 BIOS 选项,当它尝试从阵列读取时(该阵列不再设置为以这种方式启动),无法启动。

我不能肯定地说这就是解决方案,因为我没有(也不会)将我的机器设置改回 EFI 来尝试它。但如果你被上述问题困扰,请记住这个潜在的解决方案。

相关内容