DEBIAN LINUX 内核编译小记

2022-05-23   


因为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的官网下载最新的内核源码。

https://www.kernel.org/

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.