Debian 11 编译内核

Linux · 2023-08-23
Debian 11 编译内核

因为内核的代码非常多,所以内核编译需要花费比较长的时间。当然,如果你​的​计算机性能强劲,时间会短很多.
配置要求:2核2GB内存以上,硬盘空间大于20GB

本次用于编译的主机配置

Processor  : AMD Ryzen 7 7700X 8-Core Processor
CPU cores  : 2 @ 4491.560 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ✔ Enabled
RAM        : 1.9 GiB
Swap       : 1024.0 MiB
Disk       : 28.5 GiB
Distro     : Debian GNU/Linux 11 (bullseye)

购买链接

安装依赖

apt install git build-essential libncurses-dev libssl-dev libelf-dev bison bc flex rsync debhelper screen -y

下载源码

Linux内核官网:kernel.org
本次编译的内核版本是6.4.11
这里使用git的方式下载内核:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git --branch linux-6.4.y

等待的时间会比较长
当然,你也可以编译其他你喜欢的版本,--branch后面改一下分支就行,官网里都有的
下载完成后,你会在当前目录里看到一个名为linux的目录,cd进去

cd linux/

可以用ls命令看看这里面有啥内容
2023-08-23T07:43:55.png

编译前的准备工作

确保当前在源代码目录(linux/)
1.从当前机器的启动目录拷贝配置信息到源代码目录

cp -v /boot/config-$(uname -r) .config

这步操作的意思是我们编译内核的配置采用用当前环境一致的配置

2.启动配置界面

make menuconfig

可以看到这个界面
2023-08-23T07:46:47.png
可以看出里面包含所有的内核组件,包括文件系统,网络,IO栈,虚拟化和设备驱动等等。如果你不熟悉,可以不做任何修改,直接保存退出也行

3.编辑.config

vim .config

nano也行,习惯哪个就用哪个
输入/,粘贴CONFIG_SYSTEM_TRUSTED_KEYS=然后回车,快速搜索定位,找到这一行:

CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/debian-uefi-certs.pem"

留空里面的值

CONFIG_SYSTEM_TRUSTED_KEYS=""

4.为节省编译时间,关闭DEBUG

CONFIG_DEBUG_INFO=n

做好上面这些准备工作后就可以开始编译了

开始编译

编译要花很长时间,建议开个screen守护一下

screen -S kernel

开始编译

make deb-pkg LOCALVERSION=-sitao -j$(nproc)

LOCALVERSION后面的字符串可以自定义,我这里是sitao
编译时间要看你机器的性能怎么样.这时候可以关掉ssh终端,去干点别的事

我这台机器大概花了50分钟.

编译完成

编译完成后,我可以看到上一层目录(root目录)多了很多文件.没错,那正是我们想要的
返回上一层

cd .. 或者 cd ~

ls命令查看一下
2023-08-23T07:53:29.png

使用dpkg安装然后重启

dpkg -i linux-image-6.4.11-sitao_6.4.11-4_amd64.deb
dpkg -i linux-headers-6.4.11-sitao_6.4.11-4_amd64.deb
reboot

重启后ssh上去
使用uname -mrs查看一下
2023-08-23T07:55:43.png

至此,我们已经成功编译并安装了内核!

最后

我们也可以把linux-image-6.4.11-sitao_6.4.11-4_amd64.deb和linux-headers-6.4.11-sitao_6.4.11-4_amd64.deb这两个文件上传到其他机器上,其他机器也使用以下命令安装

dpkg -i linux-image-6.4.11-sitao_6.4.11-4_amd64.deb
dpkg -i linux-headers-6.4.11-sitao_6.4.11-4_amd64.deb
reboot

Linux 编译
Theme Jasmine by Kent Liao