Ubuntu更换内核

仍然是复现论文需要,论文是基于TCP漏洞的旁道攻击,用的是Ubuntu18.04 (kernel 5.5),而我用的是Ubuntu22.04 (kernel 5.15),于是悲剧发生了,我怎么跑也攻击不成功,原因是,漏洞在5.15中已经被补好了。
重装虚拟机太费劲了,因此我选择更新内核。根据学长提供的信息,退回到5.13即可。

查看内核版本

uname -a 查看详细信息
uname -r 查看版本信息

更新内核三种方式

1.从apt中装
如果是升级,情形比较简单,命令见下(引用自title中链接的文章):

要升级包括内核的整个系统,只需要执行:
$ sudo apt-get update
$ sudo apt-get upgrade
如果只希望升级内核,运行:
$ sudo apt-get upgrade linux-image-generic

如果要换到旧版本,需要:

$ apt-cache search linux | grep linux-image
$ sudo apt-get install linux-headers-4.15.0-76-generic linux-image-4.15.0-76-generic
(Ubuntu 升级/降级 Kernel 到指定版本)
但可能出现想要的版本因为太久而不在列表中的情况,导致第二步失败。这种情况,就要用后面两种更新方式。

2.下载预编译版本后,用dpkg装

  • 官方下载地址:https://kernel.ubuntu.com/~kernel-ppa/mainline/
    选择想要的版本,点进去。选择自己计算机相应的架构。这七条我们不用全部下载,一般情况需要如图4个(我自己电脑amd64的):
    Ubuntu更换内核_第1张图片
  • 下载好后,放入虚拟机的一个文件夹中。从命令行进入这个文件夹,执行:$ sudo dpkg --install *.deb。这个过程中,可能出现缺少其他依赖包的问题,它缺什么你就按照要求下载即可。比如缺少libssl1.1.0,解决方案在这里。
  • 完成后,它可能显示这样一句话:Warning: os-prober will not be executed to detect other bootable partitions。os-prober是一个探测系统中可用内核的工具。在旧版本的Linux中,是要通过修改grub.d(如果我没记错)手动添加内核信息并表现出它们之间的优先级关系,在启动的时候可以选择相应内核。但os-prober不需要你自己添加内核信息了。[引用]
  • 有的教程说,这时候reboot即可。但我的情况是,重启后用的还是原来的版本。所以还是要改grub。【提示:修改grub是一件很危险的事,搞不好内核崩了,虚拟机启动不了,只能重装,这就是为什么我现在有时间在这发csdn。所以修改一定要谨慎,修改前先给虚拟机留一个快照!!!】
    ① 先进入/boot中,ls看看内核的具体版本信息,复制一下备用(不然挺难记住的……)
    ② 然后进入/etc/default中,sudo vim grub。我的grub文件默认长这样:
    Ubuntu更换内核_第2张图片
    根据教程,如果GRUB_DISABLE_OS_PROBER=true,要把它改为false,但如果像我一样没有这行,就加上
    GRUB_DISABLE_OS_PROBER=false
    增加 GRUB_SAVEDEFAULT=true
    另外,修改GRUB_DEFAULT项:[引用]
    GRUB_DEFAULT='Advanced options for Ubuntu>Ubuntu, with Linux <你的版本号,一直到generic>'
    ③ 修改完成后,:wq退出,用sudo update-grub命令激活。
    reboot重启。
    如果还是不行,参考这里提供的其他修改项。

3.从源码装
这个我自己没有试过,各位看官自己搜一下教程吧。相关的教程很多。温馨提示,编译很慢,如果你的机子有很多核,可以-j 核数并行编译,很爽。
源码地址:https://mirrors.edge.kernel.org/pub/linux/kernel/

你可能感兴趣的:(Linux内核,ubuntu,linux,运维)