如何创建混合实时 USB

taz*_*taz 4 linux usb boot livecd uefi

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

我读过其他帖子,似乎表明这是可能的,但没有一个明确说明如何做到这一点:

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

是否可以使用用于 UEFI 和传统 BIOS 的混合 Linux USB 棒?

Her*_*ann 5

当您要求清楚地说明如何操作时,它就在这里。我假设您已经启动了实时 Linux。

  1. 对 U 盘进行分区

    我推荐命令行工具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
      
      Run Code Online (Sandbox Code Playgroud)
  2. 使用任何方法将 Linux 安装到 U 盘。

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

  3. 安装 GRUB 两次

    最后一步,为两种引导方法、UEFI 风格引导和传统 BIOS 引导安装 GRUB。

    grub-install --target=x86_64-efi --removable /dev/sdx
    
    grub-install --target=i386-pc /dev/sdx
    
    Run Code Online (Sandbox Code Playgroud)

    /dev/sdx显然,您的 USB 拇指驱动器在哪里。
    --removable很重要。我花了三个小时才意识到我需要它在一个可移动的 USB 拇指驱动器上......

    如果从“外部”将 GRUB 安装到 U 盘(未从 U 盘启动 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 或其他任何信息。为此,在 GRUB 阶段 1 中嵌入了 BIOS 启动分区的位置信息。因此,如果 BIOS 启动分区被移动,则需要重新安装 GRUB。加载 GRUB 阶段 2 后,GRUB 理解 GPT 并可以继续引导 Linux 内核。