update-grub 设置了错误的 linux 根分区

adr*_*n m 6 partitioning grub2 root

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

在某些时候,我确实手动将根分区移动到 sda2。

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

root            (hd0,5)
Run Code Online (Sandbox Code Playgroud)

进入

root            (hd0,1)
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*pat 2

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

\n\n

但是,menu.lst有时仍与Ubuntu 的云版本一起使用。如果这适用于您,请继续阅读。

\n\n

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

\n\n
## default grub root device   \n## e.g. groot=(hd0)\n# groot=(hd0)\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
## default grub root device   \n## e.g. groot=(hd0)\n# groot=(hd0,5)\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,该groot=\xe2\x80\xa6行仍然以 开头#不要取消注释更改的行!我不知道哪个天才想到了在注释掉的行中添加配置参数,但这就是它的工作原理。

\n\n

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

\n\n
sudo update-grub-legacy-ec2\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n


Sal*_*dor 1

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

sudo fdisk -l                # where you get the disk
sudo grub-install /dev/hda   # in my computer it is /dev/sda
Run Code Online (Sandbox Code Playgroud)

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

update-grub2
Run Code Online (Sandbox Code Playgroud)

希望您成功,您最好等待专家的答复。