我有一台运行原版 UEFI 和 Windows 8.1 的笔记本电脑。我想创建一个可启动的 live linux USB 棒,可用于启动我的旧 BIOS 系统或新版 UEFI 系统。如果需要,我可以在 USB 棒的不同分区上拥有两个单独的 live 发行版副本。实现此目的的步骤是什么?
我读过其他文章似乎表明这是可能的,但没有一个清楚地说明如何做到这一点:
答案1
既然您要求清晰地说明如何操作,这里就是。我假设您已启动实时 Linux。
对 USB 拇指驱动器进行分区
我推荐使用命令行工具
gdisk
。它能产生非常干净的结果。或者,您也可以使用gparted
。创建新的分区表。使用具有保护性 MBR 的 GPT。
定义这些分区:
- (可选)数据分区
- Linux 分区
- 旧式 BIOS 启动分区(1MB 就足够了)
- EFI 系统分区(至少 32MB)
示例:在我的 64GB 拇指驱动器上,结果如下所示:
Number Start (sector) End (sector) Size Code Name 1 2048 107632639 51.3 GiB 0700 DATA 2 107632640 124411903 8.0 GiB 8300 Linux filesystem 3 124411904 124413951 1024.0 KiB EF02 BIOS boot partition 4 124413952 124822453 199.5 MiB EF00 EFI System
使用任意方法将 Linux 安装到 USB 拇指驱动器。
在此过程中,使用您选择的文件系统(最好是)格式化 Linux 分区
ext4
。将此分区用作 root/
。
使用 FAT16 格式化 EFI 系统分区。BIOS
启动分区保持未格式化状态。安装 GRUB 两次
最后一步,安装 GRUB 以实现两种启动方式,即 UEFI 样式启动和传统 BIOS 启动。
grub-install --target=x86_64-efi --removable /dev/sdx grub-install --target=i386-pc /dev/sdx
/dev/sdx
显然,您的 USB 拇指驱动器在哪里。
这--removable
很重要。我花了三个小时才意识到我需要将它放在可移动 USB 拇指驱动器上...如果您从“外部”将 GRUB 安装到 U 盘(没有从 USB 驱动器启动 Linux),则需要先安装 Linux 分区。也许您可以将其安装到
/mnt
。然后将 EFI 系统分区安装到 Linux 分区/mnt/boot/efi
目录中。用作--root=/mnt
的参数grub-install
。只有这样才能grub-install
找到所有必要的目录。
完毕。
进一步阅读:
我们实际上并没有在 MBR 中定义分区。所以你可能会问,为什么它在旧版 BIOS 机器上能工作。请记住,我们将 GRUB 安装到了 MBR 中。在旧版 BIOS 启动过程中,存储在 MBR 中的引导加载程序会被执行。这会加载 GRUB 的第 1 阶段,然后从旧版 BIOS 启动分区加载第 2 阶段。但此时,GRUB 实际上对分区 MBR 或其他内容一无所知。因此,有关 BIOS 启动分区位置的信息已嵌入到 GRUB 第 1 阶段中。因此,如果移动了 BIOS 启动分区,则需要重新安装 GRUB。加载 GRUB 第 2 阶段后,GRUB 会理解 GPT 并可以继续启动 Linux 内核。