双启动 Ubuntu 16.04 + Windows 7 UEFI — GRUB 菜单不出现

双启动 Ubuntu 16.04 + Windows 7 UEFI — GRUB 菜单不出现

我有一台索尼 VAIO PC(具体型号为 SVS1511T9ES),安装了原装 Windows 7 Pro。我尝试安装 Ubuntu 16.04 进行双启动设置,但每次重新启动,都只能看到 Windows,没有 GRUB 菜单。(有一个非 Windows 非 GRUB 例外,请参阅下面的第 14 页)

尤其:

  • 我的 BIOS 将启动模式设置为“UEFI”,
  • BIOS 中似乎没有“安全启动”设置(在任何地方都没看到类似的东西),
  • 我正在从实时 USB 启动 Ubuntu 16.04 安装程序(我不使用 18.04,因为它无法从 USB 启动),
  • 我没有尝试升级 BIOS,因为我担心电脑会坏掉。在屏幕的顶行,我当前的 BIOS 配置器显示为InsydeH2O Setup Utility,右上角显示Rev. 3.7

具体来说,到目前为止,我所尝试过的、我记得的方法是:

  1. 在 Windows 上释放一些空间,运行碎片整理,然后下载并运行“免费 AOMEI 分区助手”来缩小分区(纯 Windows 工具不够好,因为 pagefile.sys 阻止了缩小)。值得注意的是,这会创建一些“WinPE”内容,需要重新启动才能完成其工作。
  2. 此后,Windows 成功启动并且似乎可以正常工作,并且释放了额外的空间。
  3. 我从 U 盘运行 Ubuntu 16.04 LiveUSB ISO。选择“安装”。选择“自定义”分区,因为我不需要交换分区(如果必要且可能,我希望使用交换文件)。Ubuntu 安装完毕,看起来不错。
  4. 重启后,没有 GRUB,只有“Windows 正在启动...”和正常的 Windows 启动。
  5. 嗯,好的,重新启动 LiveUSB 并尝试运行boot-repair。首先单击“备份”,然后将其保存到磁盘上新 Ubuntu 分区中的某个目录中。然后检查设置,我认为没有更改任何内容,单击“确定”或其他操作;没有将日志上传到 pastebin(但似乎已保存在 EFI 分区上);收到一些长报告,总体来说一切正常;重新启动。
  6. 重启后,没有 GRUB,只有 Windows。
  7. 嗯嗯,好的,现已尝试bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi(在 Windows 上)。重新启动。
  8. 重启后……你知道该怎么做。只需 Windows。(顺便说一句,我必须说我真的很高兴保留 Windows 的这个部分运行得如此顺利。我记得在古老的 Slackware 时代。非常感谢所有好心人:D)
  9. 值得注意的是,在 Windows 上运行bcdedit似乎显示路径确实已更改为\EFI\ubuntu\...,它仍然显示为这样。无论如何,我尝试过bcdedit ......\grubx64.efi现在。重启。
  10. 重启后... Windows。bcdedit仍然显示grubx64.efi
  11. 嗯。好吧;我不确定我还能做什么,所以我开始写 Askubuntu 问题。相关问题出现。好的,让我们看看efibootmgr会显示什么。
  12. 启动回 LiveUSB;

    ubuntu@ubuntu:~$ sudo efibootmgr -v
    BootCurrent: 0000
    Timeout: 2 seconds
    BootOrder: 0000,0002
    Boot0000* EFI USB Device    PciRoot(0x0)/Pci(0x14,0x0)/USB(4,0)/HD(1,MBR,0x4294967285,0x800,0x1ce7800)RC
    Boot0002* Windows Boot Manager  HD(2,GPT,a6098758-cdae-433d-87ce-ab327609a343,0x2b7d000,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)RC
    

    好吧,事情似乎开始变得有点奇怪了。此命令似乎显示了bcdedit与Windows 上的路径不同,即\EFI\Microsoft\Boot\bootmgfw.efi,即在我更改之前 bcdedit 中最初设置的内容。但bcdedit似乎仍然显示grubx64.efi

  13. boot-repair又试了一次。我以为我只是点击并取消点击了“高级”,但显然我可能不小心点击了“重命名 Windows...”选项。这次我有一个 pastebin 日志出于好奇,我efibootmgr -v再次运行并得到:

    ubuntu@ubuntu:~$ sudo efibootmgr -v
    BootCurrent: 0000
    Timeout: 2 seconds
    BootOrder: 0001,0000,0002
    Boot0000* EFI USB Device    PciRoot(0x0)/Pci(0x14,0x0)/USB(4,0)/HD(1,MBR,0x4294967285,0x800,0x1ce7800)RC
    Boot0002* Windows Boot Manager  HD(2,GPT,a6098758-cdae-433d-87ce-ab327609a343,0x2b7d000,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)RC
    

    请注意BootOrder这里的不同:这是0001第一次,但还有没有此条目在下面列表中(没有Boot0001)。值得注意的是,启动修复日志似乎有~3个efibootmgr电话,其中最后一个似乎表明Boot0001入口。为什么后来就消失了?后续的 grub 调用是否会将其删除,还是怎样???

  14. 重新启动并...奇怪的东西!我记不太清楚,但是而不是“Windows 正在启动...”,我得到了一些描述一些启动错误的 4 行文本;值得注意的是,它抱怨在一个奇怪的路径上缺少一个文件,或多或少类似于:(\EFI\Microsoft\Boot\grubx64.efi注意那里有 Microsoft 和 grub)。

  15. 嗯。奇怪。嗯。也许这在某种程度上推动了事情的发展?— 我心里想。再次重新启动 LiveUSB。现在efibootmgr似乎显示出来0000,0002。再次运行boot-repair,现在只需单击初始的“推荐恢复”按钮,这次再次保存日志.efibootmgr -v再次显示0001,0000,0002. 重新启动。
  16. 重启后,“Windows 正在启动....”....................
  17. 帮忙!:( 好的,坐下来,写完这个 Askubuntu 求助电话。

我在路上观察到的一些现象可以不可以相关: - 我似乎有 2 个分区带有“EFI”目录。其中一个分区有目录ubuntu(我认为这是 /dev/sda2);另一个分区似乎是“Windows 恢复分区”,并且似乎没有目录ubuntu。奇怪的是,它在根路径中同时有“EFI”和“efi”目录(不记得这是哪个 sda)。 - 如果我写bcdedit /enum all在 Windows 上,我收到了很多东西,其中有一个似乎与我使用的 AOMEI 工具有关,带有ramdisksdipath \Aomei\AomeiBoot.sdi。我怀疑它不相关,但以防万一还是提一下。

所以 -有什么想法我下一步可以尝试什么来让 GRUB 出现?

答案1

哇哦,再次尝试后终于成功了!

因此,通常,我会再次启动到 LiveUSB 并运行boot-repair,但这次我祈祷好运,并故意点击了“重命名某些 Windows 文件某些内容”选项。然后继续,然后做了一个额外的步骤:

$ sudo mount /dev/sda2 /mnt/boot-sav/sda2
$ sudo cp /mnt/boot-sav/sda2/EFI/ubuntu/grub* /mnt/boot-sav/sda2/EFI/Microsoft/Boot/

尝试从第 14 页开始尝试故障模式。重新启动 — 瞧,得到了 GRUB!它对我来说有太多选项,但第一个是 Ubuntu,随后的某个提到 Windows,第一个启动到 Ubuntu,而另一个启动 Windows。所以,现在我似乎是一个快乐的孩子!:) 希望它能继续工作……

我想在此感谢(无先后顺序):askubuntu 和 stackexchange,因为它们最近成为我最喜欢和最成功的橡皮鸭调试场所;boot-pair 的作者和贡献者;Ubuntu 和 Linux 内核的作者和贡献者;在 askubuntu、superuser、stackoverflow 等网站上提问和回答问题的好心人,他们帮助我解决了原始问题中的上述 16 点。


编辑:我当前的 EFI 分区看起来像这样(滤除噪音后):

/boot/efi$ for f in $(find -type f | egrep -v '/boot-repair/log/|\.mui$|\.ttf$'); do printf "% 10d %s\n" $(stat -c%s $f) "$(md5sum $f)"; done
    719808 76c1ab75037265cbe84a872c44ddcec2  ./EFI/Microsoft/Boot/bootmgr.efi
    674536 2fa828b3ba4fd8e25d8e510d56289fb5  ./EFI/Microsoft/Boot/memtest.efi
     65536 f43c0811ca251234dc4a2071ca6bcfa1  ./EFI/Microsoft/Boot/BOOTSTAT.DAT
     32768 9acb266f0ed4efdecbb408cd753f9b2e  ./EFI/Microsoft/Boot/BCD
     29696 dab9a8f88d73984dccb4a890efda05f6  ./EFI/Microsoft/Boot/BCD.LOG
         0 d41d8cd98f00b204e9800998ecf8427e  ./EFI/Microsoft/Boot/BCD.LOG1
         0 d41d8cd98f00b204e9800998ecf8427e  ./EFI/Microsoft/Boot/BCD.LOG2
    722880 b4041c77d7f10c36861203da493662ef  ./EFI/Microsoft/Boot/bkpbootmgfw.efi
   1196736 6e94c3d33194c89bd327bfaa5871e294  ./EFI/Microsoft/Boot/bootmgfw.efi
         0 d41d8cd98f00b204e9800998ecf8427e  ./EFI/Microsoft/Boot/bootx64.efi.grb
   1196736 6e94c3d33194c89bd327bfaa5871e294  ./EFI/Microsoft/Boot/bootx64.efi
       126 69c7bcf29f79cf74e8ac2f6c7f5d16ed  ./EFI/Microsoft/Boot/grub.cfg
   1133944 a0d970cee526c304209c20f0a1ec6452  ./EFI/Microsoft/Boot/grubx64.efi
    722880 b4041c77d7f10c36861203da493662ef  ./EFI/Boot/bkpbootx64.efi
   1196736 6e94c3d33194c89bd327bfaa5871e294  ./EFI/Boot/bootx64.efi
     67536 82894bcbe4f010664226ba7591372538  ./EFI/ubuntu/fwupx64.efi
   1133944 a0d970cee526c304209c20f0a1ec6452  ./EFI/ubuntu/grubx64.efi
       126 69c7bcf29f79cf74e8ac2f6c7f5d16ed  ./EFI/ubuntu/grub.cfg
   1196736 6e94c3d33194c89bd327bfaa5871e294  ./EFI/ubuntu/shimx64.efi
   1153336 d5a2dfd48441834f97d7ab8e3c26ba0f  ./EFI/ubuntu/mmx64.efi

值得注意的是,以下所有内容似乎都是同一个文件,即 shimx64.efi:

  • EFI/Microsoft/Boot/bootmgfw.efi
  • EFI/微软/启动/bootx64.efi
  • EFI/启动/bootx64.efi
  • EFI/ubuntu/shimx64.efi

相关内容