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-grub
为menu.lst
使用当前 Linux 根分区自动生成?我假设 (hd0,5) 是在安装时写的,但我找不到它。
自从 grub2 以来,menu.lst
就不再真正使用了,所以如果您遇到 grub 问题,您很可能需要寻找其他地方。
但是,menu.lst
有时仍与Ubuntu 的云版本一起使用。如果这适用于您,请继续阅读。
自动生成的root (hd0)
条目实际上是通过修改/boot/grub/menu.lst
文件来配置的。您需要找到如下所示的行:
## 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
行仍然以 开头#
。不要取消注释更改的行!我不知道哪个天才想到了在注释掉的行中添加配置参数,但这就是它的工作原理。
完成更改后,menu.lst
通过运行重新生成:
sudo update-grub-legacy-ec2\n
Run Code Online (Sandbox Code Playgroud)\n\nroot
现在应该更新中的所有条目menu.lst
以指向(hd0,5)
(或您将其配置为的任何内容)。
我选择的一种可能性是告诉 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)
希望您成功,您最好等待专家的答复。