因为debian的内核更新频率实在过于保守,于是便打算自己编译最新的5.14.6 stable
一、编译准备
先做一下编译前的环境准备工作:
sudo apt install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison dwarves
然后,在Linux kernel的官网下载最新的内核源码。
last release即为最新的稳定版内核。
下载完成后解压:
在这个目录里打开终端准备编译工作:
二、配置内核要编译的模块
再进行编译之前,你需要对要编译的相关模块进行配置。
最简单的方法就是将你当前所使用的内核模块配置复制一份。
使用命令
sudo cp /boot/config-$(uname -r) .config
直接拷贝一份配置。
如果你希望精简那就使用:
make localmodconfig
直接按照当前系统加载的模块生成一份配置
接下来直接开始编译
或者直接使用
make menuconfig
手动选择你要编译的模块
配置完成,开始编译!!!
三、编译和安装
输入:make -j8
-j
表示使用的线程数
我有8个核心,所以就是8
然后就是等待了
编译完成后就该安装了:
你需要使用这个命令安装你刚刚编译的模块
sudo make modules_install
等命令跑完
然后
sudo make install
安装内核
在debian 11上,它会自动配置相关的启动选项。
重启,进入新的内核。
四、可能会遇到的坑:
1.编译报错
这种一般是依赖没装全,根据报错内容百度即可。
2.开机卡在loading ramdisk
initrd文件过大,Grub 2.04无法支持过大的initrd文件(如500M),导致内核启动时卡在“loading initial ramdisk”(Can't allocate initrd)。
解决方案就是在安装内核时,启用INSTALL_MOD_STRIP=1
即:
sudo make INSTALL_MOD_STRIP=1 modules_install
3.卡fsckd-cancel-msg
我遇到的是显卡驱动的问题,去NVIDIA官网下载最新的驱动即可。
Q.E.D.