1. 说明
基于Ubuntu20.04 升级 Linux kernel 到 5.14.11。
2. 升级内核
下载内核源代码
Linux5.14.11 https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.14.11.tar.xz
解压缩
# xz -d linux-5.10.13.tar.xz
# tar xf linux-5.10.13.tar
安装必要编译库
#apt-get update
#apt-get install libncurses5-dev build-essential kernel-package
- libncurses5-dev是为之后配置内核能运行 make menuconfig程序做准备
- Build-essential为编译工具
- kernel-package是编译内核工具
生成 .config
1. 重新生成新的版本
make menuconfig
2. 复制当前 config
sudo find /boot/ \( -iname "*config*" -a -iname "*`uname -r`*" \) -exec cp -i -t ./ {} \;
mv *`uname -r`* .config
注:两者二选一
修改 .config
保证能够正常编译
#CONFIG_SYSTEM_TRUSTED_KEYS=""
#CONFIG_DEBUG_INFO_BTF
编译
# sudo make deb-pkg KDEB_PKGVERSION=$(make kernelversion) -j64
编译完成后会在上级目录生成linux-image-*.deb和linux-headers-*.deb文件,如下图:
后面的安装过程就是在安装这里的image和headers文件。
安装
sudo dpkg -i ../linux-image*.deb ../linux-headers*.deb
重启系统
reboot
3. 设置相关启动项
vim /etc/default/grub
GRUB_DEFAULT=0 # 默认启动项,从0开始,依次加 1
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" # 启动参数
# GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,115200n8" # 添加引导信息
GRUB_CMDLINE_LINUX=""
4. 移除内核
手动移除
1. 删除掉/lib/modules/目录下过时的内核库文件
2. 删除掉/usr/src/kernels/目录下过时的内核源代码
3. 删除掉/boot目录下启动的核心档案以及内核映像
4. 更新启动文件,update-grub
自动移除
移除指定版本,如5.14.11
apt autoremove linux-headers-5.14.11 linux-image-5.14.11
update-grub
5. 错误记录
1. 编译时报 vmlinux-gdb 相关错误
cannot represent change to vmlinux-gdb.py
dpkg-source: error: cannot represent change to vmlinux-gdb.py:
dpkg-source: error: new version is symlink to /home/raymond/linux/scripts/gdb/vmlinux-gdb.py
dpkg-source: error: old version is nonexistent
Resolved:
rm vmlinux-gdb.py