在笔记本电脑上预装Windows 8和Linux UEFI双启动

Modified on: Tue, 12 Feb 2019 21:00:02 +0800

我正在尝试在预装了Windows 8的新Sony Vaio E14上安装Windows 8和Arch Linux。

到目前为止:

  • 使用Recovery Media
  • 将W8安装到我的新SSD(为原始HDD切换)
  • 缩小了W8分区,删除了恢复分区,禁用了交换
  • 确认W8正常启动

开到Arch:

  • 在BIOS中禁用安全启动
  • 确认W8正常启动
  • 从CD启动Arch并将所有内容安装到第4和第5分区
  • 为EFIstub内核引导程序设置rEFInd

之后情况变得更糟。我无法启动除Windows 8以外的任何其他功能(虽然我很高兴他们至少保持良好的工作状态)。

尝试:

  • 创建EFI \ refind \并将.efi放在那里(根据Arch手册
  • 覆盖EFI \ boot \ bootx64.efi
  • 覆盖EFI \ Microsoft \ Boot \ bootmgr.efi
  • 覆盖EFI \ Microsoft \ Boot \ bootmgfw.efi --- YAY rEFInd出现了!

到目前为止,非常好。我把整个W8 Boot \目录保存在EFI \ windows8中并为它设置启动菜单项;它启动就好了。

但是,重启后,一切都错了 - “找不到操作系统”而不是任何引导加载程序(refind或w8)。

使用live CD重新启动到Arch,以找出EFI分区有错误的FAT表。 fsck.vfat修复它,我发现EFI \ Microsoft \ Boot已恢复到原始状态(所有refind文件都被删除并替换为W8 bootloaders)。我再次覆盖了它们,然后回到rEFInd正确显示,Arch完全可以启动。

之后我尝试将EFI \ Microsoft \ Boot \ bootmgfw.efi重命名为bootmgfw.001.efi(然后将refind的.efi复制到bootmgfw.efi并保存其他文件),但确切地说同样的结果。尝试将GPT EFI分区标记为只读,结果相同。

现在我运气不好。拱门启动很好,W8也是如此,但它会在此过程中破坏EFI分区。

感谢任何想法,谷歌搜索给我带来了这么远,我找不到更好的。

PS - windows 8 MAYBE在关闭时破坏分区 - 当我在W8中命令关闭时,它需要非常长的时间(大约半分钟而不是~5秒)。所以理论上我可以通过硬重置笔记本电脑而不是正常关机来解决这个问题,但这并不好。

作者:itchy355

最佳答案

在Windows中进行冷关机(点击电源按钮)可能值得看看是否可以在之后启动,就像测试一样。显然,您不希望定期执行此操作,但确认Windows正在覆盖您修改的ESP数据可能会有所帮助。如果它实际上在Windows关闭时损坏了文件系统,那么这听起来像应该向Microsoft报告的Windows错误。如果它只是替换bootmgfw.efi文件,那么这在技术上是在微软的条件下,所以它不是一个真正的错误。

更广泛地说,您是否尝试过使用linux的efibootmgr程序以自己的名义在EFI上注册rEFInd(例如ESP上的EFI/refind) ? rEFInd的文档中对此进行了描述,请参见有关手动Linux安装的部分。 ,您可以使用install.sh脚本进行安装。这两种方法都需要EFI模式启动才能成功,但您应该能够使用rEFInd CD执行此操作,或者在EFI模式下从紧急光盘启动。

如果efibootmgr不起作用,请尝试在EFI shell程序中使用bcfg,如此Arch维基页面。

如果这些步骤不起作用,请尝试使用efibootmgrbcfg 删除 bootmgfw.efi

EFI规范要求计算机遵守其NVRAM设置(由Linux中的efibootmgr,EFI shell中的bcfg或类似程序管理),所以如果这些实用程序不起作用,您的固件已损坏,您可能需要考虑将计算机还原为其他型号。 (如果你这样做的话,一定要告诉索尼为什么要退回电脑!)这类问题实际上很常见;例如,我有一台带有“混合EFI”的技嘉主板,它会忘记其NVRAM设置。但至少在这个板上,可以通过命名我的引导管理器/加载器EFI/BOOT/bootx64.efi来绕过这个问题。

如果您无法使其正常工作且不愿意或无法更换计算机,我还有其他两个建议可供解决方法:

  • 您可以使用rEFInd随身携带可启动CD或USB闪存驱动器,并在需要启动Linux时使用它。但是,这可能需要使用功能键告诉计算机从可移动介质引导,而不是在引导时从硬盘引导。
  • 您可以从磁盘擦除分区,使用MBR重新分区,然后在BIOS模式下重新安装两个操作系统,而不是在EFI模式下。这将从图片中删除任何EFI flakiness,并使您能够使用BIOS模式GRUB作为引导加载程序。但这可能需要Windows 8安装程序的零售副本;至少对于Windows 7,OEM副本在安装模式(BIOS与EFI)方面缺乏灵活性。或者,可以在不重新安装的情况下从EFI模式引导转换为BIOS模式引导。相反的开关是可能的(我打算发布链接到描述它的网站,但这个网站不会让我发布超过两个链接;抱歉),我似乎记得在执行EFI的描述中运行 - 在某处进行BIOS转换,但我没有方便的URL。谷歌搜索可能会有所改变。

发布后,我偶然发现了此页我的第一个答案,它还有另一个可能导致至少部分问题的原因:显然Windows 8使用的关闭方法更类似于挂起到磁盘的操作。结果是,如果关闭Windows然后启动Linux,安装的分区可能会损坏。虽然ESP通常不安装在Windows 7,AFAIK中,但可能是Windows 8的操作方式不同,或者ESP 安装在Windows 7中,似乎只是隐藏了。无论如何,您可以通过在管理员命令提示符窗口中键入以下命令来禁用Windows 8的此功能:

powercfg /h off

相关问答

添加新评论