如何创建混合实时 USB

如何创建混合实时 USB

我有一台运行原版 UEFI 和 Windows 8.1 的笔记本电脑。我想创建一个可启动的 live linux USB 棒,可用于启动我的旧 BIOS 系统或新版 UEFI 系统。如果需要,我可以在 USB 棒的不同分区上拥有两个单独的 live 发行版副本。实现此目的的步骤是什么?

我读过其他文章似乎表明这是可能的,但没有一个清楚地说明如何做到这一点:

如何在 USB 驱动器上创建混合 MBR/GPT 分区?

是否可以将混合 Linux USB 控制器用于 UEFI 和传统 BIOS?

答案1

既然您要求清晰地说明如何操作,这里就是。我假设您已启动实时 Linux。

  1. 对 USB 拇指驱动器进行分区

    我推荐使用命令行工具gdisk。它能产生非常干净的结果。或者,您也可以使用gparted

    1. 创建新的分区表。使用具有保护性 MBR 的 GPT。

    2. 定义这些分区:

      • (可选)数据分区
      • Linux 分区
      • 旧式 BIOS 启动分区(1MB 就足够了)
      • EFI 系统分区(至少 32MB)
    3. 示例:在我的 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
      
  2. 使用任意方法将 Linux 安装到 USB 拇指驱动器。

    在此过程中,使用您选择的文件系统(最好是)格式化 Linux 分区ext4。将此分区用作 root /
    使用 FAT16 格式化 EFI 系统分区。BIOS
    启动分区保持未格式化状态。

  3. 安装 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 内核。

相关内容