update-grub 正在设置错误的 Linux 根分区

update-grub 正在设置错误的 Linux 根分区

最初,Ubuntu 安装在另一个分区(sda5 或 sda4)上。

有时我确实手动将根分区移动到 sda2。

现在,问题是每当安装新内核时,自动再生都会menu.lst 使用旧的 Linux 分区。所以我必须手动更改以下menu.lst行:

root            (hd0,5)

进入

root            (hd0,1)

如何配置update-grub以使用当前 Linux 根分区自动生成menu.lst?我假设 (hd0,5) 在安装时写在某处,但我找不到它。

答案1

自从 grub2 以来,menu.lst它就不再被使用了,所以如果您遇到 grub 问题,您可能需要去其他地方寻找。

然而,menu.lst有时仍与Ubuntu 的云版本。如果这适用于您,请继续阅读。

自动生成的root (hd0)条目实际上是通过修改/boot/grub/menu.lst文件来配置的。您需要找到如下行:

## default grub root device   
## e.g. groot=(hd0)
# groot=(hd0)

并将最后一行更改为指向新的根,例如:

## default grub root device   
## e.g. groot=(hd0)
# groot=(hd0,5)

请注意,该groot=…行仍然以 开头#不要取消注释已改变的行!我不知道哪个天才想到在注释行中包含配置参数,但这就是它的工作原理。

完成更改后,menu.lst通过运行重新生成:

sudo update-grub-legacy-ec2

现在应该更新所有root条目menu.lst以指向(hd0,5)(或您将其配置为的任何内容)。

答案2

我选择的一种可能性是告诉 grub 安装在主引导分区上

sudo fdisk -l                # where you get the disk
sudo grub-install /dev/hda   # in my computer it is /dev/sda

然后使用以下命令更新所有内容:

update-grub2

希望你成功,你最好等待专家的回答。

相关内容