更新内核的好处:
- 可以获得在新内核中的工具,例如rtla在5.17内核才引入。
- 兼容某些工具,例如5.14中的osnoise。
当前我使用的虚拟机Ubuntu的Linux内核为5.10版本,需要更换到更高的版本。 接下来是几种做法。
1、使用ubuntu-mainline-kernel脚本升级
1.通过命令:
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
下载ubuntu-mainline-kernel脚本
2.安装脚本
sudo install ubuntu-mainline-kernel.sh /usr/local/bin/
3.运行脚本进行更换内核版本
sudo ubuntu-mainline-kernel.sh -i V5.16.20
-i xx.xx.xx更换成自己需要的内核版本,我这里先更换成5.16.20版本
4.重启虚拟机,查看内核版本
reboot
uname -r
可以通过sudo ubuntu-mainline-kernel.sh -u, 卸载掉不需要的内核版本。
2、手动用deb包进行更换内核
1.在kernel.ubuntu.com/mainline/ 下载需要的内核版本的deb包。这里选则amd64的deb包,也可以通过git方式获取。下载后放到ubuntu中。
2.进入下载好的文件的文件夹,运行命令
sudo dpkg -i *.deb
安装过程可能会报错,缺少什么装什么。我运行的时候报错,但是重启后内核版本已经更新。
3.重启虚拟机,查看内核版本
reboot
uname -r
3、使用包管理工具apt进行更新
1.先更新一下ubuntu
sudo apt update
sudo apt upgrade
2.查看当前可获取的内核
sudo apt search linux-image
3.选择一个版本进行安装
sudo apt install linux-image-<version>
4.更新grub
sudo update-grub
5.重启虚拟机,查看内核版本
reboot
uname -r
由于我的虚拟机运行sudo apt search linux-image里最高版本只有5.15,因此我采用的是最后一种方法,用源码进行更新。
4、用Linux内核源码进行更新
1.wget获取源码 或者 到官网去下载源码
wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.x.x.tar.gz
linux-5.x.x.tar.gz换成自己需要的版本。
或者到网站Index of /pub/linux/kernel/ 下载对应的源码。
2.解压获取源码
tar -xzvf linux-5.x.x.tar.gz
3.进入到源码目录下
cp /boot/config-$(uname -r) /path/to/linux-5.x.x/.config
将当前系统配置文件复制到源码目录下,这里cp的目录换成刚解压的源码目录。
4.进入menuconfig界面
make menuconfig
直接选择exit,保存当前配置。
5.编译源码
make -j8
根据自己配置的核数选择,我这里是8核
6.编译和安装内核模块
sudo make modules_install
sudo make install
7.更新grub并重启
sudo update-grub
reboot