如何在传统模式下为 UEFI 安装 grub?

如何在传统模式下为 UEFI 安装 grub?

我的笔记本电脑没有 CD-ROM。因此我使用由美创建可启动的 USB 驱动器,但它似乎不支持 UEFI。

我使用传统模式从 USB 启动并完成安装 ubuntu(只有一个操作系统)。现在我想切换到 UEFI 模式。怎么做?官方文档说从 UEFI 模式使用 livecd 并使用启动修复。但我没有 CD-ROM,USB 不支持 UEFI。我不能用这种方式。

我已经创建了 esp 并使用 GPT,但是如何在传统模式下安装 grub UEFI?

~$ sudo gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.8.8

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 41943040 sectors, 20.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): E9A1D023-63F1-4014-A152-2C5741B77981
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 41943006
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1026047   500.0 MiB   EF00  
   2         1026048        41940991   19.5 GiB    8300  

~$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=d2f2277b-478f-48af-96eb-cc0ee071d0fe /               xfs     defaults        0       1
# /boot/efi was on /dev/sda1 during installation
UUID=E432-31B3  /boot/efi       vfat    utf8,umask=007,gid=46 0       1

答案1

首先,一个问题是,你为什么要切换到 EFI 模式启动。根据你的gdisk输出,你似乎有一个单一操作系统安装,所以你似乎不需要与其他操作系统共存。如果你已经可以在 BIOS/CSM/传统模式下启动,为什么要切换?俗话说,“如果它没坏,就不要修理它。”(另一方面,我看不到 BIOS 启动分区,所以也许你不能目前以 BIOS 模式启动....)

假设您有理由以 EFI 模式启动,那么让我们从头开始吧......

ddYUMI 并不是唯一一款用于创建可启动USB闪存盘的工具。您还可以使用联合国网启动启动盘创建器鲁弗斯和其他工具。我提到的所有工具都能够创建可启动 EFI 的 USB 闪存驱动器,但 EFI 实现各不相同,因此在一个 EFI 上有效的方法可能在另一个 EFI 上无效。某些工具还具有会影响创建的磁盘的运行情况的选项,无论是一般情况还是特定 EFI。因此,使用其他工具创建安装磁盘应该使您能够以 EFI 模式启动它(当然,假设您的计算机使用 EFI 而不是传统 BIOS)。也就是说,如果您已经安装,重新创建启动介质并重新安装就太过分了……

如果你的电脑上没有其他可启动的操作系统,一个解决方案是安装 EFI 引导加载程序,EFI/BOOT/bootx64.efi就像EFI 系统分区(ESP;您的/dev/sda1)。如果您手动安装,这很容易做到,但如果您使用 之类的工具grub-install,则必须在事后手动移动文件。具体来说, 的 EFI 版本grub-install会将 GRUB 放在 中EFI/ubuntu/grubx64.efi(可能与 放在shimx64.efi同一目录中)。您必须将文件复制到正确的位置,以便在启动计算机时启动它们。如果安全启动未激活,请复制EFI/ubuntu/grubx64.efiEFI/BOOT/bootx64.efi。您可能还需要复制EFI/ubuntu/grub.cfgEFI/BOOT/grub.cfg。如果安全启动处于活动状态,则情况会变得更加复杂;您必须复制shimx64.efiEFI/BOOT/bootx64.efi并复制grubx64.efiEFI/BOOT/grubx64.efi。 (请注意,所有这些文件名都相对于 ESP 的根目录,因此如果您要按照 中所示挂载分区/etc/fstab,则必须添加/boot/efi/到每个路径的开头。)在将引导加载程序安装在 中EFI/BOOT/bootx64.efi且 NVRAM 条目中未引用任何其他内容的情况下,您的计算机应该从该“后备”文​​件名启动。

另一个选择是使用我之前提到的工具之一准备 Ubuntu 安装程序,然后以 EFI 模式启动它。完成后,你应该能够运行引导修复在 EFI 模式下,因此它应该能够在该模式下设置 GRUB。事实上,即使在 BIOS 模式下,Boot Repair 也应该能够复制 EFI 文件,如上一段所述。(不过,我不确定这在实践中效果如何;Boot Repair 可能只是尝试进行 BIOS 模式修复,而不是尝试设置 EFI 后备引导加载程序。)

另一个选择是使用我的rEFInd 启动管理器开始该过程。您可以下载 CD-R 或 USB 闪存驱动器版本的 rEFInd 并从中启动。rEFInd 应该会检测您的 Linux 内核并允许您启动。如果此操作有效,您将以 EFI 模式启动,然后您可以安装 rEFInd PPA 或 Debian 软件包以永久使用它(无需 USB 驱动器);或者您可以通过安装 GRUB,grub-install它应该可以正确设置。(请注意,您需要电喷GRUB 包,,grub-efi安装用于grub-install设置 EFI 版本的 GRUB。)无论您以这种方式安装 rEFInd 还是 GRUB,它都能够设置 EFI NVRAM 条目,因为从 rEFInd USB 驱动器启动将进入 EFI 模式,从而使操作系统能够添加 EFI NVRAM 变量。

答案2

我最近遇到了这个问题,解决方案很简单。

首先,安装grub-efi。接下来,运行以下命令手动挂载 UEFI:

sudo mkdir /boot/efi
sudo mount /dev/sda1 /boot/efi

接下来强制 grub 使用 EFI 并将其安装到新创建的/boot/efi/目录中:

sudo grub-install --target=x86_64-efi /boot/efi

验证是否存在grubx64.efi某处/boot/efi/(例如/boot/efi/ubuntu/grubx64.efi)。现在卸载sda1

sudo umount /dev/sda1/

重新启动 Windows,然后下载/安装一个名为简易UEFI并运行它。您将看到两个按钮,单击“管理 EFI 启动选项”按钮。接下来,单击中间列中从上往下第二个按钮(工具提示应该显示类似“创建新条目”的内容)。选择文件grubx64.efi,然后将操作系统更改为“Linux/其他”。最后,选择新创建的条目并使用中间列中的向上箭头按钮将其向上移动。重新启动以测试结果。

如果失败,请切换回旧版或通过在启动顺序中选择它来手动选择 Windows(它将显示为单独的设备)。您可能还需要从 UEFI 设置中禁用安全启动。

注意:EasyUEFI 不需要执行此操作,所有操作都可以在bcdeditcmd 中执行。但是,这样做是有风险的,EasyUEFI 可以防止用户错误。

答案3

您是否尝试过安装 grub-efi(例如此链接尽管可能的文本重点关注 UEFI+RAID)?

顺便说一句,我对你的真实的问题。为什么要切换到 UEFI 启动?我以为“传统启动”相当于 MBR 启动,而不是 UEFI/GPT 启动。

答案4

首先,您应该在从 USB 启动闪存驱动器或磁盘安装 Ubuntu 或任何其他操作系统时使用 unetbootin。要使用unetbootin传统模式安装操作系统,您应该在实时启动模式下使用 HDD 作为安装介质。为此,请unetbootin按照以下方式安装并将提取介质从 USB 驱动器更改为硬盘。

unetbootin 安装介质更改

然后安装 Ubuntu ISO,就像为任何其他操作系统准备实时磁盘一样。完成此操作后,重新启动,当您从硬盘启动时,您将看到unetbootin启动菜单,而不是启动到已安装的操作系统。

相关内容