记录一次Linux内核升级失败最后完美修复的案例

案发场景
系统: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等系统的叫法,道理都是通的,不认识英文自行百度吧)

  1. 打开一个terminal,先输入sudo fdisk -l查看磁盘信息
  2. 输入 sudo -i (此步用于取得root权限)
  3. mkdir /media/temp【这里创建一个临时文件夹,用于挂载本机的系统(你电脑灭有用LVM就是ID是83的那个盘,如果是LVM,那么你就要找/的组,ID为8e确认/所在的盘。)】
  4. mount /dev/sda1 /media/temp
    成不成在此一举了;
  5. grub-install --root-directory=/media/temp /dev/sda
    哈哈哈,当然失败。

上面两个方法都是看的其他前辈的案例,据说都可以成功,然而我在实施的时候就不行,救援系统还是要因设备而异(应该是因错误原因而异)

第三次尝试
这次尝试,胆小误入。
接着第二次尝试进入救援模式打开terminal,

  1. 查看了一下内核版本(uname -r),以及所有关于linux内核的程序(dpkg --get-selections | grep linux
  2. 卸载linux-image-×;linux-headers-×
  3. 卸载grub的所有程序,apt-get remove grub
  4. 卸载到这里并没有全部卸载完成哦,切记要执行一下几条命令
    apt-get autoremove;dpkg -l | grep ^rc
  5. 执行dpkg -l | grep ^rc的时候,你应该会看到很多刚才卸载的程序,因为配置文件没有卸载掉,所有程序仍旧存在,此时就执行dpkg --purge ‘程序名称’
  6. 安装linux内核,及grub引导,怎么安装我就不赘述了。
  7. 安装完成出现 done,中间没有报错就表示没有问题, 你就可以重启系统
  8. 恭喜你,看到了熟悉的界面,开心吧

以上三种方法,并不一定适合你,但是你要会发现问题,处理问题。当然如果这个系统只是你心血来潮的看看,里面没有重要东西,你完全可以重装,不用费这么大的劲,因为我这个机器里面有很重要的东西,不得不修复。
再次提示各位,数据一定要及时备份,数据无价啊。真的丢失很痛心的。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux 内核升级可以通过不同的方式进行。一种方法是从 kernel.org 下载并编译安装官方内核,这是获取官方支持的内核版本的一种方式。然而,大多数 Linux 发行版提供了自己维护的内核,可以通过包管理系统(如 yum 或 rpm)进行升级。这些发行版提供的内核可能与官方内核版本有所不同,并且升级过程可能更加简单可靠,但可选择的内核版本相对较少。 在使用 Docker 时,通常要求使用的 Linux 内核版本至少是 3.10,因此在 CentOS 7.2 版本上可以满足这个要求。然而,有一些功能可能在这个版本上无法实现,因此您可能需要升级内核到更高的版本。目前 Linux 内核的最新版本是 4.X,您可以在 Linux 内核官网上查看当前版本并选择使用最新版本的内核。为了使用最新版本的内核,您可以在安装 CentOS 7 后对内核进行升级。 需要注意的是,Linux 只表示内核,而各大 Linux 发行版(如 RedHat、Ubuntu、CentOS 等)会在内核基础上集成其他一系列软件,并按照各自的版本规则发布。例如,在 CentOS 7.2 中,通过运行 uname -r 命令可以查看到内核版本为 3.10.0-514.26.2.el7.x86_64,表示对应的 Linux 内核版本是 3.10。 如果您想要区分您正在使用的是官方内核还是 Linux 发行版提供的内核,可以使用 uname -r 命令来检查。如果横线后面有任何东西,那么表示这不是官方内核。例如,运行 uname -r 命令返回的结果是 3.10.0-514.26.2.el7.x86_64,这意味着您使用的是 Linux 发行版提供的内核。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘浩涵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值