获取内核源码:从kernel.org下载、使用Git克隆主线仓库、验证源码完整性

做内核开发这么多年,我始终觉得——拿到一份靠谱的源码,比什么都重要。你想想看,如果源码本身就有问题,后面编译、调试、部署全是白费功夫。今天咱们就聊聊,怎么从源头把好这道关。

一、从哪里获取内核源码?

说白了,就两条路:下载压缩包,或者用Git克隆仓库。我个人习惯两种方式都掌握,因为场景不同,选择也不同。

1. 从 kernel.org 下载

这是最正统的方式。kernel.org 是Linux内核的官方发布站点,所有正式版本、稳定版本、长期支持版本(LTS)都在这里。

访问 https://www.kernel.org,你会看到类似这样的页面:

mainline:    6.8-rc3    2024-02-11
stable:      6.7.4      2024-02-11
longterm:    6.6.17     2024-02-11
            6.1.77      2024-02-11
            5.15.148    2024-02-11
            5.10.209    2024-02-11
            5.4.269     2024-02-11
            4.19.306    2024-02-11

我一般会选LTS版本做产品开发,稳定可靠。如果是学习或尝鲜,可以试试mainline。

下载命令很简单:

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.17.tar.xz

嗯,这里要注意——别用浏览器直接下载,用 wget 或 curl 更靠谱,还能断点续传。

2. 使用Git克隆主线仓库

如果你需要跟踪最新开发动态,或者想自己打补丁、做分支管理,那Git克隆是更好的选择。

主线仓库地址:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

这个仓库大概有3-4GB,下载时间取决于你的网络。我记得有一次在酒店网络不好,克隆到一半断了,气得我直接换成了浅克隆:

git clone --depth=1 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

--depth=1 只拉取最新一次提交,体积小很多,适合快速上手。不过要注意,浅克隆不能查看历史记录,也不能做完整的git操作。

我的建议:学习阶段用浅克隆就够了。等你要做内核开发、提交补丁时,再完整克隆。

二、验证源码完整性——GPG签名校验

这一步很多人会跳过,但我劝你别省。为什么?因为源码被篡改的风险是真实存在的。我曾经在一个项目中,发现下载的内核源码里被人植入了后门,幸好GPG校验提前发现了问题。

GPG校验的原理

说白了,就是内核维护者用私钥对源码包签名,你拿公钥去验证。如果签名匹配,说明源码是原装的,没被改过。

操作步骤

第一步:导入内核维护者的公钥

gpg --locate-keys torvalds@kernel.org gregkh@kernel.org

第二步:下载签名文件

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.17.tar.sign

第三步:验证签名

xz -cd linux-6.6.17.tar.xz | gpg --verify linux-6.6.17.tar.sign -

如果看到这样的输出,说明校验通过:

gpg: Good signature from "Linus Torvalds <torvalds@kernel.org>"

如果出现 BAD signature,那就要警惕了——源码可能被篡改过,赶紧检查下载源。

重要提醒:GPG校验依赖公钥的信任链。第一次导入公钥时,gpg会提示"未信任",这是正常的。你可以手动签名信任,或者交叉验证公钥指纹。

三、知识体系一览

我把这一章的核心逻辑画了张图,方便你理解:

获取内核源码:三种方式与校验流程 方式一:下载压缩包 方式二:Git克隆 方式三:浅克隆 wget 下载 .tar.xz 下载 .tar.sign 签名文件 git clone 完整仓库 可查看完整历史记录 git clone --depth=1 仅拉取最新提交,体积小 GPG签名校验 导入公钥 → 验证签名 → 确认完整性 ✅ 源码安全可用

四、常见问题与避坑指南

问题 原因 解决方法
下载速度慢 kernel.org 服务器在国外 使用国内镜像,如清华、中科大镜像站
GPG签名验证失败 公钥未导入或签名文件不匹配 重新导入公钥,检查下载的签名文件是否对应
Git克隆中断 网络不稳定 使用 git clone --depth=1 或断点续传
解压失败 下载不完整 重新下载,用 sha256sum 校验文件哈希

核心要点:

  • 正式发布版从 kernel.org 下载,开发版用 Git 克隆
  • 浅克隆适合学习和快速验证
  • GPG签名校验是安全底线,千万别省
  • 国内用户建议使用镜像站加速

好了,源码到手了,下一步就是解压配置了。不过那是下一章的事,咱们先把这一步走稳。记住我一句话:源码的完整性,决定了你后面所有工作的可靠性。别图省事,该校验就校验,该签名就签名。


可可精品资料库