今天早上我尝试将我的 Ubuntu 18.04 LTS 升级到 20.04。重启后,symbol 'grub_file_filters' not found
报告错误。
我搜索并尝试了找到的两种常用方法,但都没有成功。每次我重新启动系统时都会出现同样的错误
我所采取的操作如下所示,希望能够帮助找出根本原因和解决方案:
1. 通过 livecd 修复
我的/boot
是独立分区,所以我根据找到的解决方案将其作为额外步骤安装。整个操作顺序如下
% sudo su
% mount /dev/sdb3 /mnt
% mount --bind /dev /mnt/dev
% mount --bind /dev/pts /mnt/dev/pts
% mount --bind /proc /mnt/proc
% mount --bind /sys /mnt/sys
% mount /dev/sdb2 /mnt/boot
% chroot /mnt
% grub-install /dev/sdb
% update-grub
% exit
% umount /mnt/boot
% umount /mnt/dev/pts
% umount /mnt/dev
% umount /mnt/proc
% umount /mnt/sys
% umount /mnt
% reboot
2. 引导修复
我怀疑这个操作和第一部分的操作顺序是否相似。整个日志有点长,所以我把它上传到了https://0bin.net/paste/aChHYcRK#h2E3oydL5mm6JxbVmBAOQgpKkax4nHHXuDCFgOm77qp
3. 安装
在 grub 救援控制台中,我尝试
grub rescure> insmod (hd1,2)/grub/i386-pc/linux.mod
error: symbol `grub_file_filters' not found.
grub rescure> ls (hd1,2)/grub/
./ ../ gfxblacklist.txt unicode.pf2 i386-pc/ locale/ fonts/ grubenv grub.cfg
请帮助我,谢谢!
答案1
问题解决了。在 BIOS 中,我发现预设的安装顺序是我的 Win10 (/dev/sda) -> Linux (/dev/sdb)。重新排序顺序并将 Linux 分区放在第一位后,我现在可以看到 grub 了。
答案2
我在 Azure VM 18.04LTS 升级到 20.04 LTS 时遇到了此错误。遇到此错误后修复此错误并不容易。尝试了不同的克隆映像和升级选项后,我发现如果在有关自动删除过时软件包的提示中选择 N(在发布升级过程结束时),则不会发生这种情况,升级成功。