嗯,显然我可以,因为所有 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
并且它会安装两者。然而,这不是一个人打另一个人吗?
归根结底,我对 grub 在 MBR 中安装的内容(BIOS 或 UEFI 模式)了解不够。理论上,UEFI不应该关心MBR本身,但只是不确定。
仅供参考,grub-install
在 VirtualBox 中运行 Ubuntu LiveCD,因为,因为它就在那里。
答案1
你可以试试这个tuto_by_sysmatck_ubuntuforums.org
第一步:格式化U盘
要创建与 EFI 固件兼容的启动驱动器,您需要一个 GPT 分区表和至少一个 FAT32 分区。执行以下操作...
sudo apt-get install gdisk
sudo sgdisk --zap-all /dev/sdb
此时您可能需要再次移除并插入 USB 驱动器,以便内核更新有关它的信息...
sudo sgdisk --new=1:0:0 --typecode=1:ef00 /dev/sdb
sudo mkfs.vfat -F32 -n GRUB2EFI /dev/sdb1
第二步:复制文件并设置目录结构
让我们安装 USB 驱动器
sudo mount -t vfat /dev/sdb1 /mnt -o uid=1000,gid=1000,umask=022
为了让生活更轻松,我创建了一个包含所有必要文件的包,供您根据需要进行修改usb-pack_efi。如果您不信任我的文件,请使用以下命令创建您的文件 此页作为参考。
提取 zip 文件并使用命令行界面或您喜欢的文件管理器粘贴这些内部文件。
cd ~/Downloads/
unzip usb-pack_efi.zip
rsync -auv usb-pack_efi/ /mnt
最重要的文件是 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
第四步:设置要加载的ISO
像现有示例一样放入(复制)要加载/mnt/iso/
和设置的.iso 文件...grub.cfg
请注意,要设置的最重要的变量是 isofile。网上有很多关于如何配置 grub2 菜单的示例。用于#
注释您不想使用的那些行,例如隐藏 /iso 处不存在的 .iso 的配置。
最后一步:配置固件并测试 首先也是最重要的是,停用计算机固件上的安全启动。如果您不知道如何,请在网络上搜索。
要启动 USB 驱动器,您可以将机器固件设置为首先搜索 USB 设备(启动顺序)。或者,您可以在打开计算机后立即选择启动哪个驱动器。每个制造商都有自己的关键点。如果需要,请搜索机器的手册。
谢谢你
答案2
是的,您可以同时安装 Grub2 EFI 和 Legacy。它们不会互相攻击,而且顺序并不重要。
其工作的前提是你使用GPT分区并且您有一个BIOS启动分区(1 MiB 就足够了)。
否则,旧版 MBR Grub2 安装将会失败,因为没有足够的空间用于中间阶段。
Grub2 安装命令如下所示 - 安装到 MBR 中:
grub2-install --target=i386-pc /dev/sdb
并安装到EFI系统分区(ESP) 要么(ESP 安装在 下之后/boot/efi
)
grub2-install --target x86_64-efi
或者,在类似 Fedora 的发行版上,它是:
dnf reinstall grub2-efi-x64 shim-x64
(grub2-install 也可以在那里使用,但需要额外的软件包并破坏安全启动)