我的电脑是Sony Vaio笔记本电脑。我将Ubuntu和Win 8与Dualboot一起使用,但是Windows在某种程度上设法删除了启动时选择操作系统的菜单。我认为BIOS是UEFI。安全启动已被禁用,启动修复以某种方式失败。
我怎样才能解决这个问题?
我的电脑是Sony Vaio笔记本电脑。我将Ubuntu和Win 8与Dualboot一起使用,但是Windows在某种程度上设法删除了启动时选择操作系统的菜单。我认为BIOS是UEFI。安全启动已被禁用,启动修复以某种方式失败。
我怎样才能解决这个问题?
Answers:
索尼,惠普和许多笔记本电脑供应商都经过严格编码,只能引导Windows。
建议您将grub grubx64.efi
或shimx64.efi
文件移至Windows之上,进行一些工作/EFI/windows/bootmgfw.efi
。但是不建议这样做,因为将还原Windows Update,bootmgfw.efi
并且您将仅返回到引导窗口。
相反,我建议重命名后备/EFI/Boot/bootx64.efi并引导硬盘驱动器条目或使用rEFInd。
进行更改之前,请确保备份整个EFI分区。
您有几种选择:
I.移动并重命名grub文件grubx64.efi
或shim64.efi
(为了安全启动)到此文件夹/文件/EFI/BOOT/BOOTX64.EFI
重命名/efi/boot/bootx64.efi,将shim或grub复制到/ efi / boot,并将其命名为bootx64.efi,然后引导硬盘驱动器。新版本的Boot-Repair会通过高级选项中的“使用标准EFI文件”自动执行此操作。它还会备份当前的bootx64.efi,这可能只是Windows .efi引导文件的副本。
通过实时安装程序将efi分区安装在硬盘驱动器上:安装efi分区。使用引导标志检查哪个分区是FAT32。通常为sda1或sda2,但有所不同。
sudo mount /dev/sda1 /mnt
仅当尚不存在时,
sudo mkdir /mnt/EFI/Boot
sudo cp /mnt/EFI/ubuntu/* /mnt/EFI/Boot
如果创建了新文件夹,bootx64.efi将不存在,请跳过此命令
sudo mv /mnt/EFI/Boot/bootx64.efi /mnt/EFI/Boot/bootx64.efi.backup
使grub成为UEFI中的硬盘启动项。如果不存在,则可能还必须使用efibootmgr更新UEFI。
sudo mv /mnt/EFI/Boot/grubx64.efi /mnt/EFI/Boot/bootx64.efi
如果需要,添加新的UEFI硬盘启动项:另请参见
man efibootmgr
如果ESP是sda或默认驱动器和分区条目:
sudo efibootmgr -c -L "UEFI Hard drive" -l "\EFI\Boot\bootx64.efi"
如果ESP不是sda1,则sdX是驱动器,Y是efi分区,也是NVMe驱动器:
sudo efibootmgr -c -g -w -L "UEFI hard drive" -l '\EFI\Boot\bootx64.efi' -d /dev/sdX -p Y
sudo efibootmgr -c -L "UEFI hard drive" -l "\EFI\Boot\bootx64.efi" -d /dev/nvme0n1 -p 2
(这与II中的 Boot-Repair相同。现在不建议使用:重命名/efi/Microsoft/Boot/bootmgfw.efi并将grub或shim复制到/ efi / Microsoft / Boot中并将其命名为bootmgfw.efi然后要启动Windows进入grub菜单,您必须手动添加一个grub菜单项来启动重命名的Windows efi文件Grub2的os-prober条目会引导bootmgfw.efi条目,该条目现在只是grub,因此将无法使用。
手动移动efi文件的用户请参阅文章#6。
http://ubuntuforums.org/showthread.php?t=2101840
http://ubuntuforums.org/showthread.php?t=2219452
http://ubuntuforums.org/showthread.php?t=2221498&p=13012109#post13012109
二。如果您使用较旧的副本运行“越野UEFI”的Boot-Repair修复程序,则最好将其撤消。然后进行上述更改以使用bootx64.efi要撤消并将文件重命名为原始名称,您只需要勾选Boot-Repair的“ Restore EFI backups”选项。
Windows更新后,需要重做任何手动或使用“引导修复”的重命名,因为它会还原Windows文件。
三,编辑Windows BCD,这是Boot-Repair重命名的一种替代方法,以使填充片具有Windows名称。对于将Windows重置为默认值的系统,某些系统可以更好地从Windows内部注册grub / shim。
Windows 8.1 Ubuntu 13.10双重启动启动时未显示Grub
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
https://coderwall.com/p/vfyqkg
IV。如果“描述”必须为Windows,则更改UEFI描述。实际上,这仅适用于仅安装Ubuntu而根本没有安装Windows的用户。
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\ubuntu\shimx64.efi"
还原或新的Windows UEFI条目-假定默认为sda1,如果为sda2,则添加-p 2(请参见man efibootmgr -d驱动器和-p分区选项):
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi"
sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\Microsoft\Boot\bootmgfw.efi" -d /dev/nvme0n1 -p 1
V.某些安装rEFInd似乎是另一个解决方法,并且具有不错的启动图标。
http://www.rodsbooks.com/refind/index.html
http://www.rodsbooks.com/refind/secureboot.html
可使用PPA轻松在Ubuntu中安装
mountvol S: /S
以将EFI分区挂载为S:。我在上下移动文件夹时遇到了奇怪的问题,但是一次将一个文件夹grubx64.efi的副本移动到/ EFI / Boot中,然后将其重命名为bootx64.efi是可行的。
上面的答案不适用于我朋友的HP Pavilion,但是我找到了一个不错的解决方法。HP的固件似乎总是BootOrder
在每次引导时覆盖它,并首先设置Windows,但仍要遵守BootNext
。所以我写了一个启动脚本来设置BootNext
每次启动。
跑
efibootmgr
查找的数字代码BootCurrent
。就我朋友而言,是0003
。
/etc/systemd/system/boot-linux-next.service
:
[Unit]
Description=Boot Linux next
[Service]
Type=oneshot
# Replace '3' in the next line with the appropriate code.
ExecStart=efibootmgr --bootnext 3
[Install]
WantedBy=multi-user.target
跑
systemctl enable --now boot-linux-next.service
这确实意味着,如果您要引导其他东西,则下次必须手动选择Linux。