双重启动和文件 /boot/grub/grub.cfg ——使用哪一个?

双重启动和文件 /boot/grub/grub.cfg ——使用哪一个?

假设我有 2 个 Linux 系统。它们都有/boot/grub/grub.cfg,但启动时使用的分区来自其中一个。没有/boot分区。如何确定/boot/grub/grub.cfg应该使用哪个分区以及如何更改?

我有 1 个物理磁盘、2 个分区和 UEFI/GPT。

答案1

您的问题不太清楚,但我相信:

  • 假设我们有两个物理磁盘,这取决于 BIOS/UEFI 查找的位置。也称为启动顺序。这与 UEFI 略有不同,因为安装程序直接与系统对话以安装其垫片,但您可以有两个系统安装两个单独的 UEFI 垫片。顺序由系统在启动时决定。

  • 假设一个物理磁盘上有两个分区,带有 BIOS,这取决于谁最后(在安装时或自运行以来)写入了 MBR(主引导记录,磁盘的开始部分)install-grub。如果您重新安装 grub,它们可以相互覆盖。update-grub应该只更新本地配置。

  • 假设两个分区,一个物理磁盘,UEFI,两者应该能够和平共处。您可以在系统级别选择启动顺序,每个引导加载程序可能都知道另一个,但它们不会争夺一个 MBR。

答案2

我在一个 SSD 上安装了三个发行版。设置是 UEFI/GPT。每当安装新发行版时,它都会控制 grub。

为了获得所需的/boot/grub/grub.cfg控制,请使用该发行版启动并使用:

$ sudo cat /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid 8337e8c8-6461-44f2-b5fe-dfd5b6b05883 root 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

$ sudo grub-install
Installing for x86_64-efi platform.
Installation finished. No error reported.

$ sudo cat /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid b40b3925-70ef-447f-923e-1b05467c00e7 root 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
  • 第一个cat显示 Ubuntu 19.04 grub 的使用情况8337e8c8-6461-44f2-b5fe-dfd5b6b05883
  • grub-install命令将使用已启动的发行版覆盖该命令UUID
  • 最后cat揭示了现在正在使用 Ubuntu 16.04 grub b40b3925-70ef-447f-923e-1b05467c00e7
  • 从现在开始,只有 Ubuntu 16.04update-grub命令会更改 grub 启动菜单。update-grub在 Ubuntu 19.04 中运行将更改其本地副本,/boot/grub/grub.cfg但不会影响启动菜单。

我创建了一个脚本来为 grub 菜单选项提供更有意义的名称:

sed -i "s|Windows Boot Manager (on /dev/nvme0n1p2)|Windows 10|g" /boot/grub/grub.cfg
sed -i "s|Windows Boot Manager (on /dev/sda1)|Windows 10 original|g" /boot/grub/grub.cfg
sed -i "s|Ubuntu 16.04.5 LTS (16.04) (on /dev/nvme0n1p7)|Broken Ubuntu 16.04|g" /boot/grub/grub.cfg
sed -i "s|Ubuntu 19.04 (19.04) (on /dev/nvme0n1p10)|Ubuntu 19.04|g" /boot/grub/grub.cfg

现在 grub 菜单选项从以下改变:

2. Ubuntu 19.04 (19.04) (on /dev/nvme0n1p10)
3. Advanced options for Ubuntu 19.04 (19.04) (on /dev/nvme0n1p10)

到:

2. Ubuntu 19.04
3. Advanced options for Ubuntu 19.04

相关内容