在ubuntu下更新自编译内核

本文最后更新于:2022年11月30日 上午

如何在ubuntu下下载源码更新最新的内核呢?

获取源码

可以有几种方式获得源码,一种通过apt命令直接安装,也可直接在内核网站下载最新的,本文直接下在最新版内核。

apt 安装

1
sudo apt install linux-source-5.13.0

源码会下载到/usr/src下,且不会解压,可以拷贝至用户目录,再解压。

拷贝到自定义目录

1
2
3
4
5
6
7
8
9
sudo cp /usr/src/linux-source-5.13.0 /path/to/anywhere

# 接着修改文件权限为当前用户权限
sudo chown 当前用户组:当前用户 文件(夹)

# 此时就可以直接解压了,不需要root权限
# 如因权限问题解压错误,一定要确保当前文件夹权限为当前用户,否则就得需要root权限解压
tar -jxvf linux-source-5.13.0.tar.bz2

官网下载

直接在 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ 下载最新,可能直接下载会比较慢,有能力的还是科学一下。

也可以使用镜像源,比如阿里云的 https://mirrors.aliyun.com/linux-kernel/v5.x/

小tips

.tar.xz如何解压?

首先 xz -dk linux-5.17.4.tar.xz然后 tar -xvf linux-5.17.4.tar

或者 tar -Jxvf linux-5.17.4.tar.xz

配置内核

获取当前内核配置并配置

1
sudo cp /boot/config-5.13.0-40-generic ./.config

修改配置

1
make menuconfig

开始编译

安装依赖

1
sudo apt install libelf-dev dwarves bison flex libssl-dev
1
2
make -j$(nproc)
make moudules -j$(proc)

报错 <stdin>:1:10: fatal error: libelf.h: No such file or directory

缺少libelf-dev ,apt命令安装

报错 make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'. Stop.

在.config中搜索 CONFIG_SYSTEM_TRUSTED_KEYS,删除后面的值。

下面的那个也要删除。

错误BTF: .tmp_vmlinux.btf: pahole (pahole) is not available

安装dwarves sudo apt install dwarves

安装

1
2
3
4
5
6
# 先安装模块
sudo make modules_install
# 在安装内核
sudo make install
# 更新grub
sudo update-grub2

验证是否安装成功

通过uname -a 查看版本

安装完成后重启前,

1
Linux ubuntu21 5.13.0-40-generic #45-Ubuntu SMP Tue Mar 29 14:48:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

重启后, 已经是最新版本的了

1
Linux ubuntu21 5.17.4 #2 SMP PREEMPT Sun Apr 24 17:07:59 CST 2022 x86_64 x86_64 x86_64 GNU/Linux

由于是虚拟机,最好重新安装下 open-vm-tools

1
sudo apt uninstall open-vm-tools

移除旧版内核

参考

  1. Ubuntu内核编译

在ubuntu下更新自编译内核
https://www.glj0.top/posts/6b3e9b20/
作者
gong lj
发布于
2022年4月24日
更新于
2022年11月30日
许可协议