双启动 Win 8 / Ubuntu 仅加载 Win

use*_*880 13 dual-boot vaio uefi boot-repair

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

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

old*_*red 21

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

有几个解决方案建议您将 grubgrubx64.efishimx64.efi文件移动到 Windows 之上/EFI/windows/bootmgfw.efi。但是,不建议这样做,因为 Windows 更新将恢复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 然后启动硬盘条目。新版本的引导修复自动使用高级选项中的“使用标准 EFI 文件”执行此操作。它还备份当前的 bootx64.efi,它可能只是 Windows .efi 启动文件的副本。

    从实时安装程序将 efi 分区挂载到硬盘上:挂载 efi 分区。使用引导标志检查哪个分区是 FAT32。通常是 sda1 或 sda2 但各不相同。

    sudo mount /dev/sda1 /mnt
    
    Run Code Online (Sandbox Code Playgroud)

    只有在不存在的情况下,

    sudo mkdir /mnt/EFI/Boot
    sudo cp /mnt/EFI/ubuntu/* /mnt/EFI/Boot
    
    Run Code Online (Sandbox Code Playgroud)

    如果新建文件夹,bootx64.efi 将不存在,跳过此命令

    sudo mv /mnt/EFI/Boot/bootx64.efi /mnt/EFI/Boot/bootx64.efi.backup
    
    Run Code Online (Sandbox Code Playgroud)

    使 grub 成为 UEFI 中的硬盘启动项。如果不存在,可能还需要使用 efibootmgr 更新 UEFI。

    sudo mv /mnt/EFI/Boot/grubx64.efi /mnt/EFI/Boot/bootx64.efi 
    
    Run Code Online (Sandbox Code Playgroud)

    如果需要,添加一个新的 UEFI 硬盘启动项:另见

    man efibootmgr
    
    Run Code Online (Sandbox Code Playgroud)

    如果 ESP 是 sda 或默认驱动器和分区条目:

    sudo efibootmgr -c -L "UEFI Hard drive" -l "\EFI\Boot\bootx64.efi"
    
    Run Code Online (Sandbox Code Playgroud)

    如果 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 
    
    Run Code Online (Sandbox Code Playgroud)
  2. (这和之前在II 中使用 Boot-Repair 所做的相同现在不推荐:重命名 /efi/Microsoft/Boot/bootmgfw.efi 并将 grub 或 shim 复制到 /efi/Microsoft/Boot 并命名为 bootmgfw.efi 然后boot Windows entry to boot to grub menu. 你必须手动添加一个 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”运行引导修复修复程序,最好将其撤消。然后进行上面的更改以使用 bootx64.efi 要撤消并将文件重命名为原始名称,您只需要勾选 Boot-Repair 的“Restore EFI backups”选项。

任何手动或使用引导修复的重命名都需要在 Windows 更新后重做,因为它会恢复 Windows 文件。

三、编辑 Windows BCD,这是引导修复重命名的一种替代方法,可以使 shim 具有 Windows 名称。有些系统可以更好地从 Windows 内部注册 grub/shim - 对于那些将 Windows 重置为默认值的系统。

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

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Run Code Online (Sandbox Code Playgroud)

https://coderwall.com/p/vfyqkg

四、如果描述必须是 Windows,则更改 UEFI 描述。这真的只适用于那些只有 Ubuntu 并且根本没有安装 Windows 的人。

sudo efibootmgr -c -L "Windows Boot Manager" -l "\EFI\ubuntu\shimx64.efi"
Run Code Online (Sandbox Code Playgroud)

还原或新的 Windows UEFI 条目 - 假设默认 sda1 add -p 2 如果 sda2(请参阅 man efibootmgr -d drive & -p partition options):

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 
Run Code Online (Sandbox Code Playgroud)

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

六、恢复 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
Run Code Online (Sandbox Code Playgroud)

七、使用 efibootmgr 更改引导顺序:

使用 efibootmgr 更改引导顺序

八。卸载 UEFI 条目:

卸载 Grub 并使用 Windows 引导加载程序 使用 efibootmgr 更改引导顺序