双启动 Win 8 / Ubuntu 仅加载 Win

双启动 Win 8 / Ubuntu 仅加载 Win

我的电脑是索尼 Vaio 笔记本电脑。我使用 Ubuntu 和 Win 8 进行双启动,但 Windows 不知何故设法删除了启动时选择操作系统的菜单。我认为 BIOS 是 UEFI。安全启动已被禁用,并且启动修复不知何故失败了。

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

答案1

索尼、惠普和许多笔记本电脑供应商都硬编码为仅启动 Windows。

有几种解决方法建议你将 grubgrubx64.efishimx64.efi文件移到 Windows 之上/EFI/windows/bootmgfw.efi。但是,不建议这样做,因为 Windows 更新将恢复bootmgfw.efi,你将回到仅启动窗口的状态。

相反,我建议重命名后备 /EFI/Boot/bootx64.efi 和启动硬盘条目或使用 rEFInd。

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

您有多种选择:

我。移动并重命名 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. (这与 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

二.如果您使用旧副本运行 Boot-Repair 的“有问题的 UEFI”修复程序,最好撤消它。然后进行上述更改以使用 bootx64.efi 要撤消并将文件重命名为原始名称,您只需勾选 Boot-Repair 的“恢复 EFI 备份”选项。

任何重命名(无论是手动重命名还是使用 Boot-Repair 重命名)都需要在 Windows 更新后重新进行,因为它将恢复 Windows 文件。

编辑 Windows BCD,这是 Boot-Repair 重命名的替代方法之一,可使 shim 具有 Windows 名称。某些系统更适合从 Windows 内部注册 grub/shim - 对于那些不断将 Windows 重置为默认设置的系统。

Windows 8.1 Ubuntu 13.10 双启动时不显示 Grub

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi

https://coderwall.com/p/vfyqkg

如果描述必须是 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 

五、有些人安装了 rEFInd,这似乎是另一种解决方法,并且具有漂亮的启动图标。

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

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

PPA 可轻松在 Ubuntu 中安装

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

恢复 Ubuntu UEFI 条目 sdX 是驱动器,Y 是 efi 分区,例如 sda2

sudo efibootmgr -c -L ubuntu -l "\EFI\ubuntu\shimx64.efi"  -d /dev/sda -p 1
sudo efibootmgr -c -L "Ubuntu" -l "\EFI\ubuntu\shimx64.efi" -d /dev/nvme0nX -p Y

使用 efibootmgr 更改启动顺序:

使用 efibootmgr 更改启动顺序

八、卸载 UEFI 条目:

卸载 GRUB 并使用 Windows 引导加载程序

您可以使用系统 UEFI/BIOS 设置键(通常为 F2,请查看手册)来更改启动顺序或其他 UEFI 设置,然后这些设置将出现在 UEFI 启动菜单中(通常为 F12):

https://askubuntu.com/a/757426/53503

答案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。

答案3

我的 Acer 电脑也存在同样的问题。我的解决方案是“重启”Windows,而不是关机(这实际上只是休眠)。

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

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

相关内容