ubuntu24.04 手动编译内核
修改内核具有风险,请勿直接在生产环境操作
修改配置开启源码仓库
nano /etc/apt/sources.list.d/ubuntu.sources
找到 Types: deb,后面添加 deb-src,修改为允许获取源码:

安装依赖
apt update
apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev dwarves git dpkg-dev fakeroot debhelper libdw-dev gawk ccache linux-headers-$(uname -r) -y
下载内核官方源码
mkdir ~/kernel-build && cd ~/kernel-build
下载当前版本的源码
apt source linux-image-unsigned-$(uname -r)
或者直接下载指定版本的源码
apt source linux-image-unsigned-6.17.0-22-generic
通过Patch方式修改内核源码
创建patch文件,文件内容需自己修改,此处省略
nano ~/kernel-build/my.patch
应用patch,如果没有错误提示,说明patch成功。
cd ~/kernel-build/linux-*/
patch -p1 --dry-run < ../my.patch

配置内核
复制当前系统的配置文件作为基础
cp /boot/config-$(uname -r) .config
make olddefconfig
关闭系统信任密钥检查
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
scripts/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""
scripts/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS ""
编译与打包
网上说使用ccache可以加速第二次编译,但未验证
export CCACHE_COMPILERCHECK=content
export CCACHE_BASEDIR=$PWD
fakeroot make -j$(nproc) CC="ccache gcc" bindeb-pkg
安装新内核并重启验证
安装
cd ..
dpkg -i linux-image-*.deb linux-headers-*.deb
重启
reboot
验证,ubuntu自带的内核都是-generic结尾的,比如6.17.0-22-generic,如果内核名字变了说明成功修改了内核
uname -a