适用于UEFI和旧版BIOS的混合Linux USB-Stick是否可行?


14

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

当将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磁盘legacy boot标志和gpt 标志-仍然会出现此错误,有什么想法吗?

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

设置:

  • 64GB空间
  • GPT分区表
  • 磁盘已设置pmbr标志
  • 第一个分区从16MiB开始,大约为45GB,fat32主要用于数据
  • 第2个分区的起始容量约为45GB,是具有有效rEFInd设置的EFI系统(fat32)
  • 第3-第5个分区是我正在工作的Lubuntu 14.04.1的主目录(ext4),交换区和根目录(ext4)

使用,dd我已将已gptmbr.bin编译的6.02 Syslinux的复制到了前440bytes。

在part 3.2下,我可以看到我的分区2有一个bootand legacy_boot标志。

在引导过程中,我得到没有启动盘发现 -如果我把我的第5,而不是第二个分区的是legacy_boot我得到缺少OS

它还活着!

(由于我的老问题被删除/ubuntu//q/516730/319747


我的猜测是,我必须将其中的一些*.c32文件和其他文件复制到EFI(位置?!)或根分区(?!)上的syslinux文件夹中/boot/syslinux,以使其正常工作-对吗?哪些文件是必不可少的?

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


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

更新:

尽管我不知道为什么,但我可以正常工作-但无法手动安装。

  • pmbr标志是错误的,并禁止我的UEFI系统以UEFI身份启动该棒
  • legacy_boot标志对于我的第5个分区(Linux根目录)是必需的
  • 我不得不用 extlinux --install /path/to/root/parition
  • 我必须syslinux.cfg在根分区引导下的syslinux文件夹中创建一个

我在第二个较小的棒上进行了所有这些操作,然后尝试仅复制syslinux文件夹,但没有运气- extlinux --install似乎是强制性的。

有人知道究竟extlinux --install是什么吗?可以手动完成此操作,还是可以在不将其安装到系统上的情况下安装更高的版本(如6.02)呢?

我坚持不懈地使用BIOS,UEFI和UEFI SecureBoot上提到的分区,经历了一段艰难的旅程,学到了很多东西,几乎分开杀死了2TB,小心翼翼并祝好运。


您的链接已断开..您在其他地方有故事吗?我也想这样做。谢谢。
pvinis

1
@pvinis感谢您提供信息,我在这里合并了来自askubuntu的问题/结果,因为它被删除了
Jook

Answers:


11

这是可能的,并且非常经常使用外部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分区类型分配给0xEFEFI系统分区(第5.2.2节)。

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

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

关于操作系统,Linux通常并不关心它是否从今天的BIOS以及从明天的UEFI引导。我不得不将笔记本电脑从UEFI模式重启到“ BIOS兼容性”模式,并且本周可能恢复了一百次,同时试图找到3.17 UEFI支持中的错误...


请注意,“ BIOS到UEFI的转换”一文是完全不同的。它描述了如何从仅BIOS的系统开始安装UEFI本身(称为“ DUET”的UEFI实现)。它与直接从BIOS引导操作系统无关。


+1-syslinux_install我会调查一下,谢谢您的确认,保证和新的输入
-Jook

我听从了您的建议,但是安装程序卡住了,我mbr似乎还可以,但是找不到我的EFI System分区。这是磁盘上的第二个分区,大约从45GB开始进入磁盘是否有问题?除了在那里已有的有效EFI设置之外,我是否还必须在EFI上设置特定部分?
Jook

得到了工作:)所以,谢谢!syslinux非常好,引导我进入gPxe和plopkexec,我将在以后再讨论。对于其他研究人员:askubuntu.com/q/516730/319747
Jook 2014年

2

是的,这是可能的。

基本想法是对GPT分区,如下所示:

  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文件系统

此分区使我们可以在Legacy系统上引导,因为有了GPT,MBR仍然有空间(出于向后兼容的原因),而Grub2有足够的空间将某些中间阶段安装到BIOS引导分区中。旧版BIOS不在乎分区方案,并且Grub2 / Linux内核在了解旧版系统上的GPT时没有问题。

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

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

确保Linux引导文件系统安装在下/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


PS:我编写了一个配置脚本,该脚本实现了这种混合方法,因此可以用来自动创建这样的USB记忆棒。
maxschlepzig
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.