我有 USB 上的 Linux(32 位 x86)和两台电脑,
- 一台 64x uefi 笔记本电脑启动正常。
- 一台配备 64 位处理器的平板电脑但 32 位 uefi-bios不启动。
第二个没有传统启动选项,但可以从.efi
文件启动。
不幸的是没有任何.efi
文件...
- /efi/boot/bootx64.efi
- /efi/启动/grubx64.efi
... 加载并给出相同的消息:\efi\boot\bootx64.efi boot failed
。
有什么建议么?
答案1
EFI 支持位深度相同的程序(包括引导加载程序)。换句话说,x86-64(又名 AMD64、x64 或 EM64T)EFI 可以启动 64 位二进制文件,其文件名通常以 结尾x64.efi
;而 x86(又名 IA32、i686 或相关)EFI 可以启动 32 位二进制文件,其文件名通常以 结尾ia32.efi
。请注意,如果您有 32 位 EFI,则 CPU 的位深度无关紧要。结果是,具有 32 位 EFI 和 64 位 CPU 的系统只能运行 32 位 EFI 程序。
通常,EFI 引导加载程序(这只是一种特定类型的 EFI 程序)的位深度也会限制其运行的操作系统的位深度。因此,在具有 32 位 EFI 的计算机上安装 32 位操作系统是最简单的方法。不过,有一些方法可以绕过此限制。特别是,Apple 的 OS X 引导加载程序和 Linux 的 GRUB 都支持跨位深度内核引导,因此您可以从 32 位引导加载程序启动 64 位内核,反之亦然。(显然,您需要 64 位 CPU 才能启动 64 位内核。)由于您说您正在使用 Linux,但没有说您使用的是哪个发行版,所以我无法提供非常详细的说明——事实上我手头也没有详细信息。这种跨位深度安装非常“前沿”,我建议尽可能避免它们。
坚持使用 32 位操作系统可能更容易,但许多操作系统(包括大多数 Linux 发行版)都忽略了 32 位 EFI,因此您可能需要自己添加引导加载程序。此过程针对 Ubuntu 进行了描述这里。据我所知,Debian 现在提供 32 位 EFI 支持,因此您可能会觉得它“开箱即用”。
最终,要让一个磁盘可以在 32 位和 64 位 EFI 上启动,并且无法支持 BIOS/CSM/传统模式启动,您需要安装 32 位和 64 位版本的启动加载程序,并将其中一个配置为以跨位深度方式启动。最好有两个磁盘,或者在一个磁盘上至少安装两个,一个是 32 位,另一个是 64 位。对于外部磁盘,32 位启动加载程序将是EFI/BOOT/bootia32.efi
,64 位启动加载程序将是EFI/BOOT/bootx64.efi
。