双启动Win 8 / Ubuntu仅加载Win


13

我的电脑是Sony Vaio笔记本电脑。我将Ubuntu和Win 8与Dualboot一起使用,但是Windows在某种程度上设法删除了启动时选择操作系统的菜单。我认为BIOS是UEFI。安全启动已被禁用,启动修复以某种方式失败。

我怎样才能解决这个问题?



3
使用UEFI,您不会在sda的MBR中拥有grub,而只是在它所在的efi分区中。
oldfred 2014年

Answers:


19

索尼,惠普和许多笔记本电脑供应商都经过严格编码,只能引导Windows。

建议您将grub grubx64.efishimx64.efi文件移至Windows之上,进行一些工作/EFI/windows/bootmgfw.efi。但是不建议这样做,因为将还原Windows Update,bootmgfw.efi并且您将仅返回到引导窗口。

相反,我建议重命名后备/EFI/Boot/bootx64.efi并引导硬盘驱动器条目或使用rEFInd。

进行更改之前,请确保备份整个EFI分区。

您有几种选择:

I.移动并重命名grub文件grubx64.efishim64.efi(为了安全启动)到此文件夹/文件/EFI/BOOT/BOOTX64.EFI

  1. 重命名/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 
    
  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中安装

http://www.rodsbooks.com/refind/getting.html


是! 重命名为我工作!我安装了efi分区,然后将文件../EFI/ubuntu/grubx64.efi复制到../EFI/Boot/和/ EFI / Microsoft / Boot中,并按如下所示更改了文件名。在../EFI/Boot目录中,我用文件覆盖了bootx64.efi;在../EFI/Microsoft/Boot中,我用文件覆盖了bootmgfw.efi。我就是这么想的。非常感谢你!
user296880 2014年

对于那些滞留在Windows上的用户:我设法在不离开Windows的情况下执行了选项a1中描述的重命名方法。我以管理员身份打开了一个命令窗口,然后运行mountvol S: /S以将EFI分区挂载为S:。我在上下移动文件夹时遇到了奇怪的问题,但是一次将一个文件夹grubx64.efi的副本移动到/ EFI / Boot中,然后将其重命名为bootx64.efi是可行的。
彼得·贝克尔

令我改头换面的英语少校没有做到这一点,我感到很惊讶。我有较早的评论,其中主要部分提到A:&B:。:)
oldfred '19

2

上面答案不适用于我朋友的HP Pavilion,但是我找到了一个不错的解决方法。HP的固件似乎总是BootOrder在每次引导时覆盖它,并首先设置Windows,但仍要遵守BootNext。所以我写了一个启动脚本来设置BootNext每次启动。

  1. efibootmgr
    

    查找的数字代码BootCurrent。就我朋友而言,是0003

  2. /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
    
  3. systemctl enable --now boot-linux-next.service
    

这确实意味着,如果您要引导其他东西,则下次必须手动选择Linux。


0

我有一个具有相同问题的Acer。我的解决方案是“重新启动” Windows,而不是关闭(这实际上只是一个hybernate。)

通过重新启动(可能触发更新),系统将关闭,您可以从BIOS中选择启动。您必须在重新启动之前捕获它。

我很少使用Windows,因此以这种方式启动根本不会打扰我。当然,除非Windows更新。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.