我正在尝试加载 Windows 10 和两个不同的16.04 LTS 的安装(未来可能会有其他发行版)。我已经安装了 Win10、16.04 v1 和 16.04 v2,但运行时sudo update-grub
只检测到 16.04 v2 的安装并将其添加到 boot.cfg 文件中。为什么检测不到 16.04 v1,以及安装多个 Linux 发行版以便它们能被 GRUB2 检测到的最简单方法是什么?
我尝试了以下方法:
- 添加
/boot
为分区 1 - 安装 Windows(使用默认值)
- 安装 Ubuntu v1(选择分区 4 作为
/
引导加载程序/dev/sda
) - 安装 Ubuntu v2(选择分区 5 作为
/
引导加载程序/dev/sda
)
这失败了,因为我只能从 Ubuntu v2(分区 5)成功更新 grub,并且我想使用 Ubuntu v1 作为默认安装。
然后我尝试:
- 添加
/boot
为分区 1 - 安装 Windows(使用默认值)
- 安装 Ubuntu v1(选择分区 4 作为
/
引导加载程序/dev/sda
) - 安装 Ubuntu v2(选择分区 5 作为
/
引导加载程序/dev/sda5
)
这失败了,因为现在我只能从 Ubuntu v2(分区 5)更新 grub,并且它无法成功检测到分区 4 上的安装。
话虽如此,我该如何安装后续发行版(在第一次安装 Ubuntu 之后)而不让它们吞噬 grub 安装?我在安装过程中选择放置引导加载程序的位置时是否搞砸了什么?(有关详细安装步骤,请参阅下文)
更多细节
我使用的安装步骤:
- 从 Ubuntu Live USB(16.04.4 LTS)启动。
- 使用 gparted,将新的 GPT 写入 SSD,并将启动分区(1GiB)添加到 SSD 的起始位置。(关机)
- 从 Win10 安装 USB 启动。
- 安装 Windows 10(如果有必要,则安装 Pro 64 位)。(关机)
- 启动 Ubuntu Live USB,选择
Try Ubuntu
。 - 使用 gparted,添加分区如下:
- (分区号、大小、标签)
- 4、50 GB,ubuntu1
- 5、20 GB,Ubuntu2
- 6、33 GB、iso
- ...(最后),9 GB,交换
- 安装 Ubuntu,选择
Something else
并指定第 4 个/
分区第一的安装 Ubuntu。- 引导加载程序安装在 上的默认位置
/dev/sda
,覆盖 Windows 引导加载程序。移除安装媒体并关机。
- 引导加载程序安装在 上的默认位置
- 启动 Ubuntu v1 以确保其正常工作...成功。(关机)
- 启动到 Windows(启动时通过 GRUB 选择)以确保其正常工作...成功。(关机)
- 此时,没有更新安装因为这会导致无线网卡出现问题(我稍后会回来解决这个问题。)
从这里我尝试了两种不同的方法,但都失败了......
方法 1
- 启动 Ubuntu Live USB,选择
Try Ubuntu
。 - 单击
Install Ubuntu
选择Something else
。- 指定分区 5 用于
/
此第二安装 Ubuntu。
- 指定分区 5 用于
- 保留引导加载程序设置并进行安装。
结果:Bootloader 与分区 5 相关联,而不是分区 4。
方法 2
- 启动 Ubuntu Live USB,选择
Try Ubuntu
。 - 单击
Install Ubuntu
选择Something else
。- 指定分区 5 用于
/
此第二安装 Ubuntu。
- 指定分区 5 用于
- 告诉引导加载程序安装以
/dev/sda5
希望 MBR 和当前引导设置保持不变。
结果:引导加载程序与分区 5 相关联,而不是分区 4,和分区 4 上的 ubuntu 安装在update-grub
附注:是的,我sudo update-grub
在运行时使用update-grub
。我也尝试过sudo update-grub2
并得到了相同的结果。
如果重要的话,这是一台带有 UEFI 的 Dell XPS 13 9360。
答案1
我不知道为什么 grub 没有检测到第二个 ubuntu,但是您可以将自定义配置添加到 grub 配置中,添加到名为 custom 的文件中:
$ ls /etc/grub.d/
00_header 10_linux 20_memtest86+ 30_uefi-firmware 41_custom
05_debian_theme 20_linux_xen 30_os-prober 40_custom README
检查配置中为 ubuntu 1 添加的内容(放置在 /boot/ 中),在 40_custom 中进行相同操作,但使用 ubunti 2 的实际 uuid
进行更改后运行 sudo update-grub。