分区中无法识别引导加载程序(GRUB)以及 Windows 引导管理器

分区中无法识别引导加载程序(GRUB)以及 Windows 引导管理器

首先,我来解释一下我的情况

  • 设备:华硕 x205ta,配备 32GB eMMC(已安装 Windows 8.1+Bing)。我们称之为/dev/mmcblk0
  • usb 闪存驱动器:64GB Sandisk ultra。安装了 Ubuntu 14.04。我们称之为/dev/sda

查看结果parted -l

root@chkwag-X205TA:/home/chkwag# parted -l
Model: SanDisk SanDisk Ultra (scsi)
Disk /dev/sda: 31.6GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  2048MB  2047MB  linux-swap(v1)
 2      2048MB  2147MB  99.6MB  fat32                 boot
 3      2147MB  31.6GB  29.5GB  ext4


Error: /dev/mmcblk0rpmb: unrecognised disk label                          

Error: /dev/mmcblk0boot0: unrecognised disk label                         

Error: /dev/mmcblk0boot1: unrecognised disk label                         

Model: MMC SDW32G (sd/mmc)
Disk /dev/mmcblk0: 31.3GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name                          Flags
 1      1049kB  106MB   105MB   fat32        EFI system partition          boot
 2      106MB   240MB   134MB                Microsoft reserved partition  msftres
 3      240MB   20.5GB  20.3GB  ntfs         Basic data partition          msftdata
 4      20.5GB  31.3GB  10.7GB  ntfs         Basic data partition          hidden, diag

eMMC 和闪存驱动器各有一个 ESP(格式:FAT32)。目前,我正在通过 GRUB2(名为bootia32.efi)在 USB 闪存驱动器的 ESP 中加载 Ubuntu,方法是添加指向此文件的 UEFI 菜单项bootia32.efi。(下面的条目grub-stable

检查 UEFI 菜单条目:

root@chkwag-X205TA:/home/chkwag# efibootmgr -v
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0005,0007,0006,000C,0000,0001,0002,0003
Boot0000* Windows Boot Manager  HD(1,800,32000,321f056d-350b-44ac-ac85-b19a4fac6b77)File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...e................
Boot0001* UEFI:CD/DVD Drive BIOS(81,0,00)
Boot0002* UEFI:Removable Device BIOS(82,0,00)
Boot0003* UEFI:Network Device   BIOS(83,0,00)
Boot0005* grub_stable   HD(2,3d0800,2f800,97a32bdd-cbf7-4583-a071-d205f5134f43)File(\EFI\BOOT\bootia32.efi)
Boot0006* fakeMS    HD(1,800,32000,321f056d-350b-44ac-ac85-b19a4fac6b77)File(\EFI\FAKE_MS\BOOT\BOOTMGFW.EFI)
Boot0007* grub1 HD(1,800,32000,321f056d-350b-44ac-ac85-b19a4fac6b77)File(\EFI\GRUB32.EFI)
Boot000C* UEFI: SanDisk SanDisk Ultra PMAP  ACPI(a0341d0,0)PCI(14,0)USB(2,0)USB(2,0)HD(2,3d0800,2f800,97a32bdd-cbf7-4583-a071-d205f5134f43)..BO
root@chkwag-X205TA:/home/chkwag# 

从构建双启动系统的意义上讲,这已经足够了,但我想更进一步,让 UEFI 固件从 eMMC 的 ESP 加载 GRUB2(这只是个人探索)。为此,我刚刚复制了bootia32.efi之前在 eMMC 的 ESP 中使用的内容,并创建了一个 UEFI 菜单项,明确加载此文件。(名为 的条目grub1只是grub32.efi的重命名版本bootia32.efi

理论上,我相信这是正确的。但是,当我使用此 UEFI 菜单项时,它将不起作用,只会执行也位于同一 ESP 中的原始 Windows 启动管理器。

我尝试了所有我能尝试的方法,比如重命名或用相同名称bootia32.efi替换原来的 Windows 启动管理器 ( bootmgfw.efi) 。但所有尝试都失败了。bootia32.efi

正如我所说的,如果一切都按照理论正确设置,那么我遗漏了什么?还有什么可以以某种方式忽略加载 GRUB2 的 UEFI 菜单项并决定加载 Windows 启动管理器?或者还有另一种可能性,bootia32.efieMMC 中的 ESP 不知何故神奇地不起作用?

启动顺序在这里不应该成为问题,因为如果我的菜单项正确,那么就不需要继续下一个启动顺序。此外,我已经确认,如果附近没有找到 GRUB2,bootia32.efi单独加载仍应该可以得到命令行界面的 GRUB2 。grub.cfg

答案1

为了验证自定义 EFI 固件是否会导致我无法执行我想要的操作,我向华硕技术支持寻求帮助。我收到的回复是,他们无法回答这种需要修改固件的尝试。

虽然这个答案没有阐明问题的原因,但它确实增加了固件被操纵的可能性。对 BIOS 固件进行逆向工程对于进一步调查是必要的,但由于这种方法的深度和技术难度,在这里结束这个问题是合适的。

相关内容