问题描述
我预装了安装了Windows 8的Sony VAIO S系列,并在新分区上安装了Ubuntu 12.10。当PC启动Grub显示时,我可以选择Windows 8(一开始没有工作,不得不改变Grub设置)和Ubuntu 12.10。当我选择Ubuntu 12.10时一切正常,但是当我使用Windows 8时,我重新启动Grub不再显示(Windows 8立即启动)。
我启动了一个Ubuntu 12.10 LiveUSB,使用了efibootmgr
,发现Windows 8(每次启动时)都将EFI默认启动加载程序从Grub更改为Windows启动管理器。
如何在Windows 8中更改此设置?我读了一些关于bcdedit
的东西,但是它不起作用或者我不知道如何使用它…
最佳解决方法
我不做任何承诺,但是从具有管理员权限的Windows命令提示符窗口中尝试此操作:
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
请注意,{bootmgr}
应该准确输入;那不是变数。如果这不起作用,您可以在Linux中尝试:
-
备份
/boot/efi
(您的EFI系统分区或ESP)的全部内容。 -
键入
sudo mv /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft
。 -
键入
cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
。 -
创建一个引用
EFI/Microsoft/bootmgfw.efi
的新/etc/grub.d/40_custom
文件条目。在/boot/grub/grub.cfg
中指向EFI/Microsoft/Boot/bootmgfw.efi
的现有条目之后对其进行建模;只需从引导路径中删除Boot
并为该条目指定一个新名称。 -
键入
sudo update-grub
以安装新的GRUB条目。
重新启动时,GRUB应该出现。麻烦的是,如果/当Windows决定将re-install作为其启动加载程序时,系统将再次开始直接启动到Windows。
对于第4步,您可以:
-
复制以
menuentry 'Windows ...'
开头的40_custom
条目,该条目位于一组### BEGIN <path> ###
和### END <path> ###
标签/注释之间。这是具有包含Boot
的路径的条目。 -
通过添加复制的
menuentry
在文件/etc/grub.d/40_custom
中创建一个新条目。 -
更改新条目的名称(原始文件应为
Windows Boot Manager
或类似名称)。 -
将路径从
EFI/Microsoft/Boot/bootmgfw.efi
更改为EFI/Microsoft/bootmgfw.efi
。
编辑:
自写这个答案以来,我已经了解了一个名为EasyUEFI,的third-party Windows工具,这是一个比bcdedit
更简单的GUI工具,用于调整Windows的EFI启动顺序。我不知道EasyUEFI是否会阻止Windows进行更改,但是,如果Windows习惯在每次启动时将自己设置为默认值。因此,可能仍然需要bcdedit
,但EasyUEFI也绝对值得一试。
次佳解决方法
How do I change this in Windows 8? I read something about bcdedit, but it does not work or I >don’t know how to use it…
同样的问题在这里,我终于想通了这个最新的W8.1更新做到了,我知道因为我今天刚刚更新并且还没有33天左右我的HP Pavilion告诉我..
无论如何,这是有效的:
我按照这个Utube视频停止’自动[Boot] Repair’:http://www.youtube.com/watch?v=VRQYmtysFkg
然后使用Rod提供的上述解决方案更改了bootmgr:bcdedit /set {bootmgr} path \ EFI \ ubuntu \ grubx64.efi
答对了!
顺便说一句:从我的LiveUsb启动修复确实虚无功,但在W8修复其启动条目时导致短暂闪存。