我的 16.04 运行在 3 个 SSD/HDD 上。Ubuntu 将其自己的 SSD 识别为 /dev/sdc,因此我猜想它会按如下方式创建我的/boot/grub/grub.cnf
SSD :update-grub2
set root='hd2,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos5 --hint-efi=hd2,msdos5 --hint-baremetal=ahci2,msdos5 66754cf8-aeb2-4eeb-a799-c4641cda0065
else
search --no-floppy --fs-uuid --set=root 66754cf8-aeb2-4eeb-a799-c4641cda0065
fi
但是当我启动系统时,我需要手动将 grub 中的所有hd2
s更改hd0
为 才能启动 Ubuntu,否则它无法找到 rootfs。我猜问题出在从 14.04 升级后,但由于我很少使用这台电脑,所以我不太确定。
/etc/defaults/grub
据我记得,我的应该没有变化:
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
知道可能出了什么问题吗?(我测试东西可能很慢,因为我无法一直使用这台机器,但我们很感激大家的回答!)
编辑:两个 SSD 上都有这个问题,尽管另一个 SSD 上有一个旧的 Windows 安装。我当然检查了我在 /boot/grub 中的更改是否影响了它,但两个 grub 似乎都在使用该配置。长话短说,感谢 @Dorian 的评论,我在 bios 中更改了启动顺序,现在它可以正常工作了。
答案1
听起来,grub 安装在未设置为启动的磁盘/分区上。或者它可能安装在多个驱动器上。
运行sudo fdisk -l
列出所有分区并查看哪个分区设置为启动。
您有 2 个选择。
1) 您可以更改 BIOS 启动顺序,以便您的计算机启动到 Linux 正在使用的正确 GRUB。2
) 或者,您可以将 Grub 安装到设置为首先启动的正确驱动器,其中sudo grub-install /dev/sdx
X 是您在 BIOS 中设置为启动的驱动器。