案发场景
系统:kali-deppin
内核版本:4.19.0-kali4-amd64
升级版本:4.19.0-kali5-amd64
升级工具:apt upgrade
在执行升级过程中一切顺利,重启后,报出一个
`error:symbol ‘grub_file_filters’ not found
…
grub rescue>
`
发现这个问题第一反应是引导坏了,需要修复,该怎么修复,是我头疼的问题。
第一次尝试
grub rescue>ls
(hd0) (hd0,ds0) (hd0,ds1)
grub rescue>ls (hd0,ds1)
(hd0,ds1)×××××××××ext2
grub rescue>set root=hd0,ds1
grub rescue>set prefix=(hd0,ds1)
grub rescue>insmod normal (这一步的时候报错)
××××××× not found
~~本人电脑根目录在hd0,ds1上,各位伙计因人而异~~
失败告终;
第二次尝试
系统压根起不来,想起来linux有一个救援模式(Rescue mode),果断找了一台win系统的电脑,下载新版的kail系统,并用DD制作系统U盘,进入Live CD模式(这是其他像Ubuntu等系统的叫法,道理都是通的,不认识英文自行百度吧)
- 打开一个terminal,先输入sudo fdisk -l查看磁盘信息
- 输入 sudo -i (此步用于取得root权限)
- mkdir /media/temp【这里创建一个临时文件夹,用于挂载本机的系统(你电脑灭有用LVM就是ID是83的那个盘,如果是LVM,那么你就要找
/
的组,ID为8e确认/
所在的盘。)】 - mount /dev/sda1 /media/temp
成不成在此一举了; - grub-install --root-directory=/media/temp /dev/sda
哈哈哈,当然失败。
上面两个方法都是看的其他前辈的案例,据说都可以成功,然而我在实施的时候就不行,救援系统还是要因设备而异(应该是因错误原因而异)
第三次尝试
这次尝试,胆小误入。
接着第二次尝试进入救援模式打开terminal,
- 查看了一下内核版本(
uname -r
),以及所有关于linux内核的程序(dpkg --get-selections | grep linux
) - 卸载
linux-image-×;linux-headers-×
- 卸载grub的所有程序,
apt-get remove grub
- 卸载到这里并没有全部卸载完成哦,切记要执行一下几条命令
apt-get autoremove;dpkg -l | grep ^rc
- 执行
dpkg -l | grep ^rc
的时候,你应该会看到很多刚才卸载的程序,因为配置文件没有卸载掉,所有程序仍旧存在,此时就执行dpkg --purge ‘程序名称’
- 安装linux内核,及grub引导,怎么安装我就不赘述了。
- 安装完成出现 done,中间没有报错就表示没有问题, 你就可以重启系统
- 恭喜你,看到了熟悉的界面,开心吧
以上三种方法,并不一定适合你,但是你要会发现问题,处理问题。当然如果这个系统只是你心血来潮的看看,里面没有重要东西,你完全可以重装,不用费这么大的劲,因为我这个机器里面有很重要的东西,不得不修复。
再次提示各位,数据一定要及时备份,数据无价啊。真的丢失很痛心的。