Linux内核编译

Linux 内核编译与 Deb 打包完整流程。

7 / 7

Linux 内核编译与 Deb 打包完整指南

这份指南包含了从零开始编译 Linux 最新内核并将其打包为 .deb 文件的所有完整步骤。

第一阶段:准备环境与源码

安装所有必需的编译工具和打包依赖。

命令
sudo apt-get update
命令
sudo apt-get install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev bc dkms dwarves zstd rsync dpkg-dev debhelper libdw-dev

下载并解压内核源码。

命令
wget https://cdn.kernel.org/pub/linux/kernel/v7.x/linux-7.0.3.tar.xz
命令
tar xvf linux-7.0.3.tar.xz
命令
cd linux-7.0.3

第二阶段:配置内核

复用当前系统的配置,这能保证新内核沿用你当前的硬件。

命令
cp /boot/config-$(uname -r) .config
命令
make olddefconfig
命令
scripts/config --disable DEBUG_INFO

说明: 禁用 DEBUG_INFO 可以极大地减少生成的包体积并显著加快编译速度。

第三阶段:编译并生成 Deb 包

使用全部 CPU 核心进行编译,并直接生成 Debian 安装包。

命令
make bindeb-pkg -j$(nproc)

提示: 这个过程可能会持续一段时间,具体取决于你的 CPU 性能。完成后,.deb 文件会生成在当前源码目录的上一级目录中。

第四阶段:安装生成的内核包

退回上一级目录并使用 dpkg 安装生成的 .deb 文件。

命令
cd ..
命令
sudo dpkg -i linux-image-*.deb linux-headers-*.deb

第五阶段:重启与兼容性排查

重启后,运行以下脚本进行全方位的兼容性排查。首先创建脚本并赋予执行权限:

配置块
cat << 'EOF' > check_kernel.sh
#!/bin/bash
echo "1. 内核版本: $(uname -r)"
echo "2. 严重启动错误:"
dmesg --level=emerg,alert,crit,err
echo "3. 失败的系统服务:"
systemctl --failed --no-pager --no-legend
echo "4. 关键硬件驱动绑定状态:"
lspci -k | awk '/VGA|Ethernet|Network/{print "\n"$0; getline; print; getline; print}'
EOF
命令
chmod +x check_kernel.sh

然后使用 sudo 权限运行:

命令
sudo ./check_kernel.sh

附录:tmux 常用命令说明

tmux 是一个终端复用器,允许你将长时间运行的任务(如编译)放在后台执行而不用担心 SSH 断开或终端关闭。常用操作如下:

创建并进入后台 tmux 会话 (例如命名为 deb_build):

命令
tmux new-session -d -s deb_build 'make bindeb-pkg -j$(nproc) | tee deb_build.log; exec bash'

重新连接 (Attach) 到已存在的后台 tmux 会话中查看进度:

命令
tmux attach -t deb_build

临时退出当前 tmux 会话,让它继续在后台运行 (Detach):

快捷键: 在 tmux 窗口中,先按下 Ctrl + B,松开后再按 D。

查看当前正在运行的所有 tmux 会话列表:

命令
tmux ls

强制关闭/杀死某个会话:

命令
tmux kill-session -t deb_build