RETBleed: WARNING: Spectre v2...的解决办法及一次被内核折腾的经历
此文章使用
CC-BY-NC
协议,协议详情介绍请看此文
前言
尽管文章标题是这个, 但RETBleed: WARNING: Spectre v2...
这个报错是在我被内核折腾完后发生的.
所以我要先述说折腾的故事.
为什么被内核折腾
我使用的电脑系统是Ubuntu 22.04.1 LTS
(以下简用ub
代之).
ub
有一个很大的特点就是: 稳. 稳
向来都是一个中性词, 随着知识面的不断扩展, 稳
在我这儿逐渐变成了贬义词.
为什么这么说呢? 又要从我的审美说起了(别着急马上到重点, 我这前面都是铺垫🌚).
我很喜欢gtk风格的软件, 圆滑, 有质感. 但是apt中的gtk软件并不多, 同时那些开发者并没有发布编译好的软件包, 因此只能自己从源码编译.
实际上, 他们发布了
flatpak
的包, 但是我非常不喜欢flatpak
, 感觉它和系统没法完全融为一体.
结果就在这编译的过程中遇到了问题: 太老了.
ub
上有一个依赖始终无法安装: libadwaita-1.2.0-1
(如果你可以安装请务必告诉我安装方法!).
首先是通过apt, apt安装的版本是1.1; 接着我尝试从源码编译, 又遇到了新的依赖问题gtk4 4.9.1…
就这样恶性循环, 版本号始终低那么一点点. 后来无意中了解到, ub 22.04
取消了libadwaita-1.2.0-1
!
那这和折腾内核有什么关系呢???
因为版本号过低, 于是我打算使用预发布的apt源. 就在我换了源, update, 然后upgrade完再重启后:
无法开机, 报错了! Kernel offset!
因此, 我踏上了被迫折腾内核的旅程.
过程
我赶紧拿出手机开始搜解决办法, 同时在tg群中求助.
与此同时, 我也通过recovery mode
重新进入到了桌面.
怎么进入这个mode
呢? 首先你需要在加载主版画面的时候狂按ESC
, 直到加载出类似U盘启动盘的菜单画面.
注意,
ESC
多按一下就会进到grub的指令界面, 所以按的时候要看屏幕, 不要按多了!
显示菜单后, 移动到下面的recovery mode
(当时比较慌乱, 没有记太清名字. 总之不是第一个选项)回车.
然后会再显示一个界面, 似乎有一个什么什么boot, 大概是第一个选项, 回车.
接着会看到一堆内核列表, 有些内核后面还有(recovery)
. 我选择了-56版本.
因为在换了预发布源update的时候, 看到了要更新的内核版本为-57, 所以选择一个比它低的.
与此同时, 群友建议我先update. 于是我删除了/etc/apt/sources.list
刚加的两行预发布源, 同时update了一下.
没有过去! 通过分析报错, 大概知道了是因为显卡驱动的问题, 现有的驱动和最新的系统冲突了. 而且我用的是闭源的Nvidia驱动.
于是, 在建议之下, 我purge了nvidia*, 同时autoremove了一些东西.
然后purge了-57的内核, update过去了. 再次尝试重启:
成功!
重新进入到系统后, update时发现了新的错误:
anbox, 似乎是我之前安装过的一个在linux模拟运行安卓软件的容器.
反正也卸载了, 于是直接把报错提示的那个路径删除了.
RETBleed
尽管开机正常了, 却出现了一个新的提示:
这个描述看起来就很恐怖了, 什么数据可能泄露. 一搜索, 好家伙, 居然是一个可执行漏洞!
怎么解决呢? 很多篇文章都没有说怎么解决, 都是在提问.
有些咨询文章提到这个漏洞已经在5.19版本的内核中解决了.
而我现在的内核版本是5.15.0-56
, 怎么之前开机的时候没有这个提示.
想到先前被内核折腾的经历, 我打算升级内核了. 但是apt update和upgrade都是最新的. 更不会考虑使用预发布源了.
于是搜索了怎么升级内核. 看到有一个方法: sudo apt upgrade linux-image-generic
.
奇怪, 我upgrade都提示最新了, upgrade单独一个包怎么可能提示呢?…
但是执行之后, 还真有反应:
microcode, 也有搜到RETBleed是一个对微处理器的攻击, 那这个upgrade大概有用吧.
再次重启, 提示消失!
关于有没有必要更新内核, 可以看这篇文章: https://blog.csdn.net/weixin_33525298/article/details/112200310
我是听话的便当.
Bye~❛‿˂̵✧