编译 Debian 官方内核

  • debian 官方内核重现

  • 资料来源:

    https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s4.5
    https://gist.github.com/malakudi/b90fe4c5b7ca6182fda07ed51e8eaaa5
    https://www.ubuntu-tw.org/modules/newbb/viewtopic.php?viewmode=compact&order=DESC&topic_id=104652&forum=48

  • 更新

    1
    2023.06.15 初始

导语

编译出与官方相同的 kernel

编译

编译环境准备, 因为涉及比较复杂的编译工具链, 建议使用 docker 环境配置.

1
2
3
sudo apt-get install build-essential
# 需要在 apt 源中启用 source code
sudo apt-get build-dep linux

下载源码

  • 可以直接 apt 下载对应内核源码.但这样选择有限.
  • debian 的内核 (.deb 格式) 也算是个 apt 的软件包,因此有对应的 orig 和 debian 文件,可以由镜像站自行下载. 推荐是 阿里云镜像 三网访问速度都不错.
  • 这里以 4.19.171 和 4.19.171-2 为例
1
2
3
4
5
6
7
8
9
10
# sudo apt-get source linux_version
wget https://mirrors.aliyun.com/debian-security-bak/pool/updates/main/l/linux/linux_4.19.171.orig.tar.xz

wget https://mirrors.aliyun.com/debian-security-bak/pool/updates/main/l/linux/linux_4.19.171-2.debian.tar.xz
tar Jxvf linux_4.19.171-2.debian.tar.xz

tar Jxvf linux_4.19.171.orig.tar.xz
cd linux_4.19.171
# debian 文件解压到 linux 源码根目录
tar Jxf ../linux_4.19.171-2.debian.tar.xz

编译

  • orig 会在 linux 源码目录同级生成 orig 目录存在解压源码
  • 编译完成后打包生成的内核 deb 文件也在 orig 同级目录
1
2
3
4
5
6
7
8
9
10
11
12
ARCH=amd64 # 架构
FEATURESET=none # 功能集
FLAVOUR=amd64 #通常与 arch 相同
export MAKEFLAGS=-j$(nproc) # 全核心编译

fakeroot make -f debian/rules clean # 清理,可能有错误输出,可无视.
fakeroot make -f debian/rules orig # 解压源码
fakeroot make -f debian/rules source # 应用 debian patch
fakeroot make -f debian/rules.gen setup_amd64_none_amd64 # 设置编译环境 | .config 由这一步生成

# DEB_RULES_REQUIRES_ROOT=no 也可以替换成 fakeroot 但是 fakeroot 编译时 cpu 利用率有一些问题,不排除是环境问题
DEB_RULES_REQUIRES_ROOT=no make -f debian/rules.gen binary-arch_amd64_none_amd64