0 前言
《Debian内核编译》介绍了Debian及其衍生发行版内核编译为.deb安装包的方法,本文描述更为通用的方法(编译结果不一定为.deb)。
验证版本:Ubuntu14.04/18.04/20.04/22.04、UOS Pro 20、银河麒麟SP1 V10
1 源码
1.1 标准内核
可到官网下载内核(用于产品的建议选择长期支持版,可获得2~6年支持[35]):

(1)方法1:压缩包
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.6.4.tar.gz
tar axvf linux-4.6.4.tar.gz
注:压缩包中不含git仓库,因此无法查看提交记录。
(2)方法2:torvalds仓库
git clone https://github.com/torvalds/linux.git
注:git tag只含大版本号,不含小版本号(第2个小数点后的版本),因此无法切换到上述4.6.4版本。
(3)方法3:稳定仓库(推荐)
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
注:git tag包含详细的版本号,因此可以切换到上述4.6.4版本。
1.2 发行版内核
1.2.1 方法1:普通内核
Ubuntu可通过下面方式下载含发行版patch的内核:
# 确认当前所用内核版本
uname -r
# 查看可用内核源码
apt-cache search linux-source
# 安装内核源码
apt-get install -y linux-source-5.3.0 # 得到/usr/src/linux-source-5.3.0/linux-source-5.3.0.tar.bz2
1.2.2 方法2:HWE内核
第1.2.1小节方法通常无法下载HWE版本内核,可通过下面方法下载[25]:
(1)准备
- <=ubuntu22.04
将“/etc/apt/sources.list”中的“deb-src”配置全都取消注释,然后
sudo apt-get update
- >=ubuntu24.04
相关配置已迁移到了“/etc/apt/sources.list.d/ubuntu.sources”,在其“Types”后添加“deb-src”即可:

注:若不做上面一步,下面下载会提示“E: You must put some 'source' URIs in your sources.list”错误。
(2)下载
sudo apt-get install -y dpkg-dev # 下面命令需要用到其中的“dpkg-source”
# 无需sudo
apt-get source linux-image-unsigned-$(uname -r)
# or
apt-get source linux-image-$(uname -r)
# or
apt-get source linux-modules-$(uname -r)
# or
apt-get source linux-modules-extra-$(uname -r)
无论是通过image还是modules名称下载的源码,都是同一份,正常情况下会将源码下载到当前目录,例如ubuntu20.04下载并解压