我成功地在已有 8.04 的系统上安装了 10.04(当然是单独的分区)。它还在 MBR 上安装了 GRUB2。
发现不再有 menu.lst 后,我编辑了 /etc/grub.d/40_custom 以指向我的其他操作系统分区所在的位置:
menuentry "Ubuntu 8.04" {
set root=(hd0,0)
linux /boot/vmlinuz-2.6.24-28-generic
initrd /boot/initrd.img-2.6.24-28-generic
}
menuentry "Windows 7 Ultimate 64-bit" {
set root=(hd0,2)
chainloader (hd0,2)+1
}
GRUB2 显示包含这些条目的菜单,但是当我选择其中任何一个时,它拒绝加载它们,并说“没有这样的分区”。
我知道分区在那里,因为 10.04 的“磁盘工具”可以毫无问题地看到它们。
我如何让 GRUB2 识别它们?
答案1
问题解决了:答案是...与旧版 GRUB 不同,GRUB2 开始计算分区数从 1 开始,而不是从 0 开始。
关键是以下关于如何将 menu.lst 条目“转换”为 40_custom 条目的说明,取自以下链接
https://help.ubuntu.com/community/Grub2#Creating%20the%20Custom%20Menu
The following entries from the GRUB menu listing must be changed for them to work:
* title is changed to menuentry. The line must end with {
* root is changed to set root=
* kernel must be changed to linux
* Any partition designation (sda4, sdb6) must be changed, as GRUB and GRUB 2 count the partitions differently. The first partition for GRUB 2 is 1, not 0. Devices still start the count at 0.
答案2
您是否使用下列形式的命令使所编辑的 40_custom 文件可执行:
sudo chmod +x /etc/grub.d/filename
查看教程:
https://ubuntuforums.org/showthread.php?t=1195275
https://www.dedoimedo.com/computers/grub-2.html
当然,除了编辑 40_custom 文件之外,还有一系列步骤,如下所示:
运行
sudo update-grub
以获取当前可用的内核。将所需的“menuentry”列表从复制
/boot/grub/grub.cfg
到/etc/grub.d/40_custom
该条目以“menuentry”开头的行开始,以包含“}”的行结束。添加您希望在启动菜单上看到的任何其他“菜单项”。
如果需要,编辑“menuentry”行的标题(在引号之间)。不要更改“menuentry”行后面的行。每个条目都应以“menuentry”行开头,并以最后一行的“}”结尾。
从 中删除可执行位
/etc/grub.d/10_linux
,/etc/grub.d/20_memtest86+
并/etc/grub.d/30_os-prober
从 中的任何文件中删除可执行位都/etc/grub.d
将排除该文件被包含在 grub 更新中。
代码:sudo chmod -x /etc/grub.d/10_linux /etc/grub.d/20_memtest86+ /etc/grub.d/30_os-prober
跑步
sudo update-grub