我在外置 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_uuid
grub-probe
ESP代表)的 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