最近,Linux 内核圈子里发生了一件不大不小的“地震”:大家熟悉的 kernel.org 官网,悄咪咪地删除了所有版本的 release tar 包(.tar.xz, .tar.gz 等)。

如果你习惯像下载软件一样,直接去内核官网点个链接就下源码,那现在打开页面可能会愣住——链接没了。这对于很多老司机和刚入门的运维朋友来说,无疑增加了点使用门槛。今天我们就来聊聊这到底是怎么回事,以及对我们后续的“玩机”和开发工作有什么影响。

kernel.org 官网下载页面截图,显示传统的 tar 包下载链接已消失的界面

kernel.org 官网下载页面现状,旧版 Tar 包链接已不再直接提供

为什么突然删包?

官方这次“动刀”,核心原因其实是为了统一代码管理流程,降低维护成本。

  1. 维护压力大:每一次内核发布,官方都需要同时维护 Git 仓库和 Tar 包。Tar 包本质上只是 Git 仓库某一刻代码的“快照”,两者容易出现不一致的情况(比如有人改了 Tar 包但没推到 Git,虽然罕见,但存在风险)。
  2. 安全性考量:直接从 Git 仓库获取代码,可以通过签名(Tag)验证完整的提交历史,安全性比单独分发一个 Tar 包要高得多。
  3. 顺应开源趋势:现在的开源项目,主推的都是 Git 工作流。删掉 Tar 包,其实是倒逼大家去适应更现代化的代码获取方式。

对我们有什么实际影响?

对于绝大多数“搬砖”党来说,影响其实不大,甚至可以忽略不计;但对于特定场景的朋友,可能需要改改习惯了。

  • 普通用户/小白:基本无感。我们平时用的都是发行版(如 Ubuntu、CentOS、Debian)自带或仓库里的内核,没人会去官网上手搓源码。
  • 服务器运维:如果你有脚本直接 wget kernel.org 的某个链接来升级内核,那恭喜你,脚本要报错了。你需要修改脚本,改用发行版源或者 Git 方式。
  • 内核开发者/极客:这是受影响最大的一群人。以后获取“纯净版”源码,必须通过 Git 命令或者特定的镜像站了。

以后怎么下载内核源码?

既然官方不提供 Tar 包了,我们该怎么获取代码?别慌,这里有几个实用的替代方案。

终端界面展示使用 git clone 命令克隆 Linux 内核仓库的代码片段

使用 Git 命令克隆 Linux 内核仓库的操作示意图

方案一:使用 Git 克隆(推荐,最正宗)

这是官方最推荐的方式,也是以后的主流。

1. 安装 Git 确保你的系统里有 Git 工具:

# Debian/Ubuntu
sudo apt install git

# CentOS/RHEL
sudo yum install git

2. 克隆仓库 Linus Torvalds 的主仓库在 kernel.org 上,网速可能感人。我们可以先克隆,然后切到对应的版本 Tag。

# 克隆主仓库(可能比较慢,耐心等)
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux

# 查看所有版本标签(Tag)
git tag | grep "v6.6"  # 比如找 6.6 系列的版本

# 切换到你想要的版本,比如 v6.6.1
git checkout v6.6.1

3. 验证签名(安全党必备) 如果你担心代码被人动过手脚,可以验证官方签名:

git verify-tag v6.6.1

方案二:使用 GitHub 镜像(速度快,国内推荐)

kernel.org 的 Git 协议在国内访问经常抽风,这时候 GitHub 镜像就是救星了。GitHub 上有官方的同步仓库,内容是一模一样的。

# 克隆 GitHub 上的镜像
git clone https://github.com/torvalds/linux.git
cd linux

# 同样使用 git tag 和 git checkout 切换版本
git checkout v6.6.1

这个方式对于国内用户来说,体验通常比直连 kernel.org 要好很多。

方案三:通过 Snapshots 获取(类似 Tar 包)

如果你真的很讨厌 Git 操作,就想找个压缩包,其实还是有曲线救国的方法。某些镜像站或者第三方工具提供了基于 Git Tag 自动生成的 Snapshot(快照),本质上和以前的 Tar 包一样。

你可以尝试访问一些第三方内核镜像站,或者使用 Git 命令直接导出压缩包:

# 不克隆整个历史,只导出特定版本的压缩包(省空间)
git archive --remote=git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git \
    --output=v6.6.1.tar.xz \
    --prefix=linux- v6.6.1

(注:如果远程 Git 协议不通,请替换为 GitHub 地址)

方案四:依赖发行版源(最稳妥)

如果你只是为了获取某个特定版本的内核来编译模块,而不是为了研究内核源码本身,其实没必要非去官网。

大多数 Linux 发行版都提供了内核源码包,你可以直接用包管理器下载,这样通常还带上了该发行版的一些补丁,兼容性更好。

# Ubuntu/Debian 下载源码
apt source linux-image-$(uname -r)

# CentOS/RHEL 通常在 src.rpm 里

总结

kernel.org 移除 Tar 包,虽然短期内让人觉得不适应,但这确实是开源项目规范化管理的一步。对于咱们这种喜欢折腾技术的群体来说,掌握 Git Clone 基本上成了必修课。

建议大家以后尽量养成使用 GitHub 镜像或者官方 Git 仓库的习惯,不仅资源更快,而且还能顺带练习一下 Git 命令,何乐而不为呢?

标签: none

AI Skills Smart Station on Nick Launches

评论已关闭