我的笔记本电脑没有 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 模式启动,那么让我们从头开始吧......
dd
YUMI 并不是唯一一款用于创建可启动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.efi
到EFI/BOOT/bootx64.efi
。您可能还需要复制EFI/ubuntu/grub.cfg
到EFI/BOOT/grub.cfg
。如果安全启动处于活动状态,则情况会变得更加复杂;您必须复制shimx64.efi
到EFI/BOOT/bootx64.efi
并复制grubx64.efi
到EFI/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 不需要执行此操作,所有操作都可以在bcdedit
cmd 中执行。但是,这样做是有风险的,EasyUEFI 可以防止用户错误。
答案3
您是否尝试过安装 grub-efi(例如此链接尽管可能的文本重点关注 UEFI+RAID)?
顺便说一句,我对你的真实的问题。为什么要切换到 UEFI 启动?我以为“传统启动”相当于 MBR 启动,而不是 UEFI/GPT 启动。