双系统grub引导时,出现error: file '/boot/vmlinuz-xxx-xxx-xxx' not found的解决方法

晚上本想修改一下grub.cfg文件,去掉多余的引导项,没成想出现如题之尴尬局面。。。
一番度娘之后终解决,下面是解决方法:
Note: 在grub下,注意提示按c进入grub命令行模式

首先需要确定你的ubutun安装到哪个硬盘哪个区;

1.1 可以先使用ls命令,查看所有硬盘分区,如(hd0), (hd1,gpt1)等等。
1.2 然后再使用ls (hd1, gpt8)查看。如果出现unknown filesystem则尝试其他的;如出现的是你ubutun主文件夹和文件的名字,基本就是它了。

确定之后,按照4步下面进行设置;

set root=(hd1,gpt8)
set prefix=(hd1,gpt8)/boot/grub
linux /boot/vmlinuz-xxx-xxx root=/dev/nvme0n1p8

上面这一步,要说两点:
(1)xxx-xxx是可以tab补全的。如果双tab后没有,有可能你第一步分区都没找对。
(2)/dev/nvme0n1p8这个分区,由于是在固态盘里,所以映射成nvme0n1p8了。猜测这里的8和第一步的gpt8中的8应该是一致的。但不能写成/dev/sda8。

initrd /boot/initrd.img
boot

boot之后应该就可以重新进入ubutun了。重新进入后,要做的就是更新grub配置。很简单,只需要下面一句:

sudo update-grub

该事件原因分析由于/boot/下的vmlinuz文件丢失(原因暂不详),但grup.cfg还是原先版本的vmlinuz,所以启动找不到,kernel起不来。

顺提一句,去掉grub多余引导项要修改的文件就是/boot/grub/grub.cfg. 去掉的内容可以参考此文去除多余引导项。

你可能感兴趣的:(linux_ubutun)