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

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

我的想法是创建一个带有 Lubuntu 的 USB-Boot-Stick,它能够在旧的 BIOS 笔记本电脑和较新的 UEFI 系统上启动。

当 Stick 被设置为传统启动设备时,这会非常容易,但我希望它是一个支持 UEFI 的设备。

  1. 这有道理吗?!还是我对 UEFI 概念的理解完全错误?
  2. 如果有必要,可以安装两个不同的 Linux(一个用于 UEFI,一个用于传统,但都位于同一驱动器上)
  3. 在旧式 Bios 上启动 GPT 设备 - 可以吗?

我看不清楚,也许有一个单独的传统 Linux 启动棒是一个更好的主意,但我很好奇探索其边界:)

那么,我的想法是混合 linux-uefi-boot-usb-stick 可以与传统 bios 配合使用吗?


(3)对于使用 grub 的 Linux 来说似乎可以http://www.rodsbooks.com/gdisk/booting.html

此外,除了 Swap、Fat32 和两个 Ext4 分区之外,我在该棒上还准备好了一个 EF00 分区。


(1)似乎也有可能http://www.rodsbooks.com/bios2uefi/

但是,这些说明是 2012 年的,已经过去一段时间了 - 有没有人有更简单的实用示例?


对于此主题的其他研究人员:

在非 EFI 主板上从 GPT 磁盘启动 Windows 7 有没有办法使用 GPT 上的 BIOS 启动 Windows 7/8?

http://www.borncity.com/blog/2012/07/25/uefi-emulation-auf-pcs/


更新:

我已经设法使用 rEFInd 创建了 UEFI 部分,其中包括安全启动设置。

根据给出的建议,我将其dd复制gptmbr.bin到我的驱动器,现在它似乎至少在 BIOS 系统上做了一些事情:“这不是可启动磁盘”

但是,我按照建议设置了pmbr磁盘标志和 gptlegacy boot标志 - 仍然出现此错误,有什么想法吗?

我的 ESP 分区是磁盘上的第二个分区,并设置了 efi 文件。

设置:

  • 64GB 空间
  • GPT 分区表
  • 磁盘已设置 pmbr 标志
  • 第一个分区从 16MiB 开始,大约 45GB,是用于存储数据的 fat32 主分区
  • 第二个分区大约有 45GB,是 EFI 系统 (fat32),带有可正常工作的 rEFInd 设置
  • 第 3 到第 5 个分区是我正在使用的 Lubuntu 14.04.1 的主分区(ext4)、交换分区和根分区(ext4)

使用dd我已经编译的 6.02 Syslinux 复制gptmbr.bin到前 440 字节。

在 parted 3.2 下我可以看到我的分区 2 有一个bootlegacy_boot标志。

在启动过程中我得到未找到可启动磁盘- 如果我将第五个分区而不是第二个分区设置legacy_boot缺少操作系统

它还活着!

(因为我的旧问题被删除了https://askubuntu.com/q/516730/319747


我的猜测是,我必须将一些*.c32和其他文件复制到系统Linux在我的 EFI 上 (在哪里?!) 或在我的根分区上 ( /boot/syslinux?!) 找到文件夹 eighter 以使其工作 - 我说得对吗?哪些文件是必需的?

此外,我想我也需要该syslinucx.cfg文件-对吗?


我的目标至少是在根 ext4 分区上直接启动 lubuntu 系统。

更新:

虽然我不知道为什么,但我让它工作了 - 但不是通过手动安装。

  • 这个pmbr标志是错误的,它禁止我的 UEFI 系统以 UEFI 方式启动该设备
  • 这个legacy_boot标志对于我的第五个分区(Linux 根)来说是必需的
  • 我不得不用extlinux --install /path/to/root/parition
  • 我必须syslinux.cfg在根分区的 boot 下的 syslinux 文件夹中创建一个

我把所有这些操作都放到第二块较小的硬盘上,然后尝试复制 syslinux 文件夹,但是没有成功——这extlinux --install似乎是强制性的。

有人知道具体extlinux --install是做什么的吗?可以手动完成吗?或者,如何安装较新的版本(如 6.02)而不将其安装到您的系统上?

让我的记忆棒能够与 BIOS、UEFI 和 UEFI SecureBoot 中提到的分区一起工作,真是一段艰难的旅程,学到了很多东西,差点用 parted 毁掉 2TB,要小心,祝你好运。

答案1

这是可能的,而且非常频繁通过外部 USB 记忆棒和内部驱动器完成。

关于分区表类型:

  • BIOS 通常不会需要任何分区表。它只关心引导代码部分,即 MBR 的前 440 个字节。(但也有例外。如果某些 BIOS 实现无法找到具有常见分区类型之一的 MBR,它们实际上会中断。但愿这种情况很少见。)

    GPT 分区表没有身体上替换 MBR – 它始终从扇区 1 开始,而 MBR 位于扇区 0 – 因此磁盘可以同时具有这两种格式。事实上,大多数 GPT 磁盘有一个仅包含一个覆盖整个磁盘的分区的“保护性 MBR”,以防止较旧的仅限 MBR 的分区工具意外破坏数据。

    因此,您可以将 Syslinux 启动扇区安装到 MBR 中,然后它就会启动。(脚本 syslinux-install_update将为您执行此操作,但您可以gptmbr.bin在 syslinux 包中查找以手动执行此操作。)

    与 MBR 分区上的“活动”标志非常相似,Syslinux 将在 GPT 分区上查找“传统 BIOS 可启动”标志(位 2 - UEFI 规范 2.4 节 5.3.3 表 20);如果您安装了sgdisk(来自 gptfdisk),上述脚本也会自动设置该标志。

    也可以使用 GRUB,但它也有点烦人。由于 GRUB 2 想要将其自身的一部分“嵌入”到传统上未使用的扇区 1-62 中,因此它会覆盖存储在同一位置的 GPT。因此,您可能需要创建一个 2-4 MB 的专用分区并将其标记为 BIOS 可引导,这样它grub-install就会找到一个嵌入位置。

  • 另一方面,UEFI 规范需要支持 MBR 分区类型(第 12.3.1 节)并将 MBR 分区类型分配0xEF给 EFI 系统分区(第 5.2.2 节)。

    因此,如果您出于某种原因无法让您的磁盘使用 GPT,您仍然可以在 MBR 上创建一个 EFI 系统分区,并且只要它具有正确的文件系统和所有必要的文件,它就会被使用(第 12.3.1.3 节):

    对于可移动媒体设备,必须只有一个符合 UEFI 标准的系统分区,并且该分区的根目录中必须包含一个 UEFI 定义的目录。该目录将被命名为EFI。所有操作系统加载器和应用程序都将存储在下面的子目录中,EFI名为BOOT。目录中每个受支持的处理器架构只能有一个可执行 EFI 映像BOOT。要使可移动媒体在 EFI 下可启动,必须​​按照第 3.4.1.1 节中列出的规则进行构建。

至于操作系统,Linux 通常根本不关心今天是从 BIOS 启动,明天是从 UEFI 启动。本周,我不得不将笔记本电脑从 UEFI 模式重新启动到“BIOS 兼容性”模式,然后再重新启动回来,大概有一百次,同时试图在 3.17 UEFI 支持中找出一个错误……


请注意,“BIOS 到 UEFI 转换”文章讲的是完全不同的事情。它描述了如何安装UEFI 本身– 名为“DUET”的 UEFI 实现 – 可从仅 BIOS 系统启动。这与直接从 BIOS 启动操作系统无关。

答案2

是的,这是可能的。

基本思想是GPT 分区你的 USB 记忆棒如下:

  1. BIOS 启动分区(GPT 类型1686148-6449-6E6F-744E-656564454649)- 1 MiB,无文件系统
  2. EFI 系统分区(GPT 类型C12A7328-F81F-11D2-BA4B-00A0C93EC93B)- 200 MiB,VFAT 文件系统
  3. Linux 启动分区(GPT 类型0FC63DAF-8483-4772-8E79-3D69D8477DE4) - 1 GiB,ext4 文件系统
  4. Linux 根/主文件系统(GPT 类型0FC63DAF-8483-4772-8E79-3D69D8477DE4)- 剩余空间,XFS 或 Btrfs 文件系统

此分区允许我们启动遗留系统因为 GPT 仍然有空间用于 MBR(出于向后兼容的原因),并且Grub2有足够的空间将一些中间阶段安装到 BIOS 启动分区中。旧版 BIOS 不关心分区方案,而 Grub2/Linux 内核在理解旧版系统上的 GPT 时没有任何问题。

UEFI 系统,UEFI 固件忽略 MBR 并使用 EFI 系统分区作为入口点。

例如,使用 Fedora,您基本上必须执行以下操作:

确保 Linux Boot 文件系统已安装在 下,/boot并且 EFI 系统分区文件系统已安装在 下/boot/efi

(重新)安装传统和 UEFI 引导加载程序:

grub2-pc grub2-efi-x64 shim-x64 efibootmgr

(重新)生成用于传统启动和 UEFI 启动的 grub 配置文件:

# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

根据您的系统是在传统模式还是 UEFI 模式下启动,您必须修复第一个或第二个文件并替换(linux|initrd)16(linux|initrd)efi或反过来。

将 grub 安装到 MBR 中:

# grub2-install --target=i386-pc /dev/sd_your_usb_stick_device

瞧。

相关内容