我可以在闪存驱动器上安装 grub2 以启动 BIOS 和 UEFI

dei*_*tch 8 grub grub2 uefi

嗯,显然我可以,因为所有 Linux 发行版都是作为混合 ISO 提供的,可以引导 BIOS 和 UEFI。

问题是如何?我以为我可以跑grub-install两次:

grub-install --target=i386-pc --recheck --boot-directory=/mnt/boot /dev/sdX
grub-install --target x86_64-efi --efi-directory /mnt --boot-directory=/mnt/boot --removable
Run Code Online (Sandbox Code Playgroud)

并且它会安装两者。然而,一个不会破坏另一个吗?

归根结底,我不太了解 grub 在 MBR(BIOS 或 UEFI 模式)中安装的内容。理论上,UEFI 不应该关心 MBR 本身,而只是不确定。

仅供参考,grub-install在 VirtualBox 中运行Ubuntu LiveCD,因为它在那里。

GAD*_*D3R 4

您可以尝试这个tuto_by_sysmatck_ubuntuforums.org

第一步:格式化U盘

要创建与 EFI 固件兼容的启动驱动器,您需要一个 GPT 分区表和至少一个 FAT32 分区。执行以下操作...

sudo apt-get install gdisk
sudo sgdisk --zap-all /dev/sdb
Run Code Online (Sandbox Code Playgroud)

此时您可能需要再次移除并插入 USB 驱动器,以便内核更新有关它的信息...

sudo sgdisk --new=1:0:0 --typecode=1:ef00 /dev/sdb
sudo mkfs.vfat -F32 -n GRUB2EFI /dev/sdb1
Run Code Online (Sandbox Code Playgroud)

第二步:复制文件并设置目录结构

让我们安装 USB 驱动器

sudo mount -t vfat /dev/sdb1 /mnt -o uid=1000,gid=1000,umask=022
Run Code Online (Sandbox Code Playgroud)

为了让生活更轻松,我创建了一个包含所有必要文件的包,供您根据需要进行修改usb-pack_efi。如果您不信任我的文件,请使用 此页面作为参考来创建您的文件。

提取 zip 文件并使用命令行界面或您喜欢的文件管理器粘贴这些内部文件。

cd ~/Downloads/
unzip usb-pack_efi.zip
rsync -auv usb-pack_efi/ /mnt
Run Code Online (Sandbox Code Playgroud)

最重要的文件是 bootia32.efi(用于在 32 位计算机上引导)、bootx64.efi(用于在 64 位计算机上引导)以及 grub.cfg(用于设置 grub 加载 ISO 或链式加载到其他路径)。最后,你可能会得到这样的目录树: 在此输入图像描述

第三步:在驱动器上安装 GRUB2

sudo grub-install --removable --boot-directory=/mnt/boot --efi-directory=/mnt/EFI/BOOT /dev/sdb
Run Code Online (Sandbox Code Playgroud)

第四步:设置要加载的ISO

像现有示例一样放入(复制)要加载/mnt/iso/和设置的.iso 文件...grub.cfg

请注意,要设置的最重要的变量是 isofile。网上有很多关于如何配置 grub2 菜单的示例。用于#注释您不想使用的那些行,例如隐藏 /iso 处不存在的 .iso 的配置。

最后一步:配置固件和测试 首先也是最重要的是,停用计算机固件上的安全启动。如果您不知道如何,请在网络上搜索。

要启动 USB 驱动器,您可以将机器固件设置为首先搜索 USB 设备(启动顺序)。或者,您可以在打开计算机后立即选择启动哪个驱动器。每个制造商都有自己的关键点。如果需要,请搜索机器的手册。

谢谢你

  • 感谢您提供详细信息...但您没有回答有关启动 BIOS 和 UEFI 的问题 (2认同)