将“Windows To Go”外部硬盘添加到 grub2 启动菜单

将“Windows To Go”外部硬盘添加到 grub2 启动菜单

我在外置 USB 3.0 硬盘上安装了 Windows 10。目前,我启动它的唯一方法是进入 BIOS 启动选项并从列表中选择它。

我已经在内部 M.2 SSD 上安装了 Ubuntu 16.04,但 Ubuntu 安装程序并没有像我预期的那样自动添加 GRUB2 启动外部驱动器的选项。

我不确定如何添加菜单项来告诉 grub 从安装了 Windows 10 的外部驱动器启动。我知道我可以使用搜索命令和外部驱动器的 uuid 来设置根变量,但我不确定之后如何使用启动命令,或者编辑哪个文件来添加启动选项。

更新:我最终做了一些类似于接受的答案的事情,但简单得多

menuentry "Windows 10" {
    set root=(hd0,msdos1)
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

答案1

尝试简单地告诉 GRUB 尝试检测其他操作系统。

启动终端(++ CTRL),并运行以下命令:ALTT

sudo update-grub

如果这不起作用,请尝试从实时 DVD/USB 启动并从终端运行此命令:

sudo grub-install /dev/sda #Replace block accordingly

答案2

通常 Grub 运行os-prober安装自动分区并添加条目。

对于自定义菜单项,您可以将自己的配置添加到/etc/grub.d/40_custom。我推荐此选项,因为依赖 os-prober 要求在更新 Grub 的配置时始终挂载其他操作系统的分区,当更新管理器安装新的 Linux 内核或更新 grub 包本身(例如安全更新)时就是这种情况。

对于接下来的步骤,我假设你的 Ubuntu 使用 UEFI 启动,Windows 10 也是如此,如果不是这样,请查看这里或者在 MBR 部分Arch wiki 中的文章我从中借用了以下代码:

menuentry "Microsoft Windows Vista/7/8/8.1 UEFI-GPT" {
    insmod part_gpt
    insmod fat
    insmod search_fs_uuid
    insmod chain
    search --fs-uuid --set=root $hints_string $fs_uuid
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

将其放入您的 40_custom 中,并用命令的输出替换$hints_string和变量。为此,您需要挂载 EFI 系统分区(这就是$fs_uuidgrub-probeESP代表)的 Windows To Go 驱动器。最简单的方法是启动gnome-disks,选择您的驱动器和分区,然后单击播放按钮 (‣) 并记下驱动器的安装位置(通常是 /media/your_username),并$esp在以下命令中用此字符串替换(如果需要,请添加引号):

# fs_uuid
grub-probe --target=fs_uuid $esp/EFI/Microsoft/Boot/bootmgfw.efi

# hints_string
grub-probe --target=hints_string $esp/EFI/Microsoft/Boot/bootmgfw.efi

相关内容