有一台安装了 Ubuntu 和 Parrot Security OS 的计算机。一切正常,使用 Grub 运行顺畅。它可以正确启动。
当我们安装 Ubuntu 时,我们格式化了所有硬盘,并且忘记安装 EFI。当我们尝试安装 rEFInd 时,它显示计算机中完全没有 EFI。
问题是:安装完所有操作系统后,如何安装 EFI。我是否应该重新安装 Ubuntu 才能使用它?
答案1
这当然是可能的,但真正的问题是它是否会减少麻烦。
ESP只是一个小分区(512Mb 是合适的大小),具有 fat 文件系统和特殊类型。
因为你需要创建它,所以你需要有一些可用空间,为此你可能需要调整其中一个分区的大小以及其上的文件系统使用类似的工具
gparted
。如果您已经拥有所需的空间,则需要创建具有适当类型的新分区。在
gparted
您要查找的“esp 标志”中,输入“EFI 系统”fdisk
(或类似内容,如果您在 MBR 上运行)。这就是使 EFI 分区成为 EFI 分区的原因。使用以下方式构建文件系统
mkfs.fat -F32 /dev/sdx
使用 获取分区的 uuid
blkid
,设置其标签或类似操作像这样在 /etc/fstab 中为新分区创建新条目(并确保挂载点存在):
UUID=xxxx-xxxx /boot/efi vfat defaults 0 2
或者,您可以使用 /efi 或者将挂载绑定到 /boot 以避免 /efi/EFI 路径
- 将 rEFInd 或 EFI 的 GRUB 安装到该分区。您可能需要在该分区上创建 /EFI 目录
这应该为您提供可用的 ESP。
您可以在以下网址阅读更多内容并取得更好的效果:https://wiki.archlinux.org/index.php/EFI_system_partition#Create_the_partition
答案2
我曾经做过类似的事情。我没有写下确切的步骤,但补救起来并不难。(我碰巧也需要 rEFInd,但没有它也可以工作。)事情是这样的:
- 在临时 GPT 格式的磁盘或设置为 UEFI 系统的 VM 上“正确”安装相同版本的 Ubuntu,并使用 GPT 虚拟磁盘作为“捐赠者”虚拟操作系统。
- 如果您的主操作系统在安装后已更新,则也请更新虚拟安装。
- 关闭虚拟操作系统。
- 使用一些可启动的恢复媒体或其他可启动的操作系统,将 EFI 分区从虚拟设备复制到您的真实机器。
- 可以使用 Ubuntu 启动 DVD 来实现此目的,因为它附带 GParted。
- 如果通过 VM 执行此操作,请将 VM 引导至恢复 ISO,或将 Ubuntu 安装 ISO 文件挂载为虚拟磁盘。请注意,您还可以在 VM 中挂载您的真实操作系统磁盘作为原始 VMDK(如果使用 VirtualBox,则需要使用
vboxmanage
CLI 来创建它,并且映射在主机操作系统重新启动后无效)。这将允许您直接将“虚拟”EFI 分区直接复制到您的真实磁盘,如果在 VM 中执行此操作,这将节省大量时间。(您甚至可以通过这种方式在 VM 中启动您的真实操作系统。Linux 足够智能,不会加载暂时不存在的硬件驱动程序,甚至是专有显示驱动程序。内核已经拥有 - 并将自动加载 - 用于 VirtualBox 和 VMware 集成的基本开源驱动程序。事实上,我通常以这种方式将 Ubuntu 安装到真实磁盘上,以便以后通过 VM 移植到其他机器上。)
- 在复制 EFI 分区之前,请先缩小和/或移动现有分区,以便为其腾出空间作为第一个分区。(这可以通过 GParted 轻松实现。)新的 EFI 分区不会是 sda1(第一次正确安装时会是 sda1),但如果我没记错的话,EFI、Grub、rEFInd 等都可以接受。
- 在安装的 /etc/fstab 文件中将分区映射到 /boot/efi。
- 现在您有两种选择来获取可启动系统(同样,您可以在裸机上或通过具有原始 VMDK 映射真实磁盘的 VM 来执行此操作):
- 使用启动修复工具,例如引导修复使一切进入可启动状态,通常只需按一个按钮即可。
- 请注意,您必须从 UEFI 模式下的操作系统运行启动修复,无论是裸机还是 VM。
- rEFInd 也应该能够使用此配置。但如果不行,而您又确实需要 rEFInd,您可能需要先运行上一步。
- 使用启动修复工具,例如引导修复使一切进入可启动状态,通常只需按一个按钮即可。
- 如果您想跳过 Grub 并采用“纯 EFI”,也有解决方法,但超出了本答案的范围(和我的记忆)。
我很好奇你为什么要使用 rEFInd?这是一段很棒的代码,并且实际上是使用 MacOS 进行双重或三重启动所必需的,但如果只是使用 Linux/Windows 进行双重启动,我经常发现 Grub 更简单,尽管更丑陋。没有那么多麻烦。此外,rEFInd 不是“设置后就忘记”的,它偶尔会被覆盖并需要重新安装,这可能是一个小小的麻烦,因为典型的 *nix/Windows 系统管理员技能不适用于 rEFInd,而且这种情况很少发生,以至于你每次都要重新谷歌搜索如何操作。(或者把它写下来,然后试着记住那个注释在哪里。)此外,它有时会“有帮助地”为特定的内核版本创建图标,而这些图标往往很快就会变得无关紧要。我相信有一种记录在案的方法可以防止这种行为,或者至少在事后删除它们,但我不再使用它了,所以我记不清了。不过这只是我的经验。
祝你好运!