哪里可以下载特定版本的Linux内核源代码?

哪里可以下载特定版本的Linux内核源代码?

有没有可以下载特定内核版本源的资源?例如,我想获取 2.6.36.2 源来比较这个包看看引入了哪些更改?

答案1

如果您希望多次执行此操作,最简单且最带宽友好的方法是克隆内核的 git 存储库并根据其标签查看您想要的版本。最好是克隆linux 稳定仓库,因为这将包括所有稳定版本的标签:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux
git checkout v2.6.36.2

要稍后切换到另一个版本,很简单:

git checkout v3.5.2

要更新您的存储库以包含所有最新的标签和提交:

git fetch

答案2

是的,内核.org所有已发布的版本, 包括2.6.36.2。但请注意,大多数 Linux 发行版都会将自己的补丁应用于普通内核源代码。

答案3

如果您不想下载整个内核提交历史记录(远高于 1 GiB),您可以仅下载内核 Git 存储库中通往所需分支的部分。例如,要在本地检查版本 4.5 中的 Ubuntu 内核,您需要执行以下操作:

git clone --depth 1 --single-branch --branch v4.5  git://git.launchpad.net/~ubuntu-kernel-test/ubuntu/+source/linux/+git/mainline-crack

这样,克隆的大小约为 150 MiB。

答案4

我一直在努力弄清楚在哪里以及如何获取各种 Linux 内核分支,因此我想对此进行阐述并展示我是在哪里学到的。这项研究还使我能够修复和更新链接在得票最高的答案中,这是我最近做的。

在哪里如何获取官方Linux内核源代码

快速总结

Linux内核源码的官方代码位置是https://kernel.org/

选项 1:仅手动下载感兴趣的内核版本 tar 文件

转到此处导航并下载您感兴趣的版本:https://mirrors.edge.kernel.org/pub/linux/kernel/

例如:OP 的 v2.6.32.2 在此页面上:https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/。我建议下载.tar.xz该文件的版本,因为它是最小的:linux-2.6.36.2.tar.xz.sign旁边的文件包含加密的 PGP 签名,用于验证下载文件的真实性和完整性。在这里阅读更多相关信息,包括查看验证签名的命令:https://kernel.org/category/signatures.html

从命令行下载文件也非常容易。看起来可能是这样的:

# Download the file, showing a progress bar; this file is 56 MB
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.2.tar.xz
# extract it; on a fast computer this takes ~4 sec.; the extracted 
# "linux-2.6.36.2" dir is ~400 MB when done
time tar -xvf linux-2.6.36.2.tar.xz

方案2(推荐):使用git下载全部版本并查看任何版本

# clone the latest Stable and Longterm release tree (git repo)
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
# cd into it
cd linux
# view all tags, which contain the many many version numbers
# - see my answer here: https://stackoverflow.com/a/69275540/4561887
git log --no-walk --tags --oneline
# Once you identify the one of interest (ex: 2.6.36.2), check out the commit
# with that tag
git checkout v2.6.36.2

细节

官方 Linux 内核源代码位于 Linux Kernel Archives:https://kernel.org/

选择您想要克隆的 git 存储库“树”:

下面的这些引述来自此页面:https://kernel.org/category/releases.html。我还在方括号 ([]) 中添加了我的话。

预补丁
Prepatch 或“RC”[候选发布] 内核是主线内核预发布版本,主要针对其他内核开发人员和 L​​inux 爱好者。它们必须从源代码编译,并且通常包含必须经过测试才能放入稳定版本的新功能。 Prepatch 内核由 Linus Torvalds 维护和发布。 [他们的版本以 结尾-rcX,其中X是数字。]

主线
主线树由 Linus Torvalds 维护。这是引入所有新功能以及发生所有令人兴奋的新开发的树。新的主线内核每 9-10 周发布一次。

稳定的
每个主线内核发布后,就被认为是“稳定的”。稳定内核的任何错误修复都会从主线树向后移植,并由指定的稳定内核维护者应用。在下一个主线内核可用之前,通常只有几个错误修复内核版本 - 除非它被指定为“长期维护内核”。稳定的内核更新根据需要发布,通常每周一次。

长期
通常会提供几个“长期维护”内核版本,用于向后移植旧内核树的错误修复。只有重要的错误修复才会应用于此类内核,并且它们通常不会出现非常频繁的版本,特别是对于较旧的树。 [请参阅此处所有长期版本的表格:https://kernel.org/category/releases.html。其中大多数的支持期限长达 6 年。]

git clone网址

克隆您想要的存储库。请注意,如果有多个克隆 URL,则任何一个都可用,但我更喜欢下面每个列表中的第一个:

  1. 对于 Prepatch(“候选版本”或-rc)和 Mainline(主要工作树)版本:
    # From kernel.org directly
    # See: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
    git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
    
    # Or, an exact mirror on GitHub
    # See: https://github.com/torvalds/linux
    git clone https://github.com/torvalds/linux
    
  2. 对于稳定版和长期版:
    # From kernel.org directly
    # See: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
    git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
    git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux.git
    
    # Note: This URL still works as of Dec. 2022, and has the exact same content
    # as the URLs above, but is no longer listed in the list of **all**
    # repos/trees here (https://git.kernel.org/), and so it appears to be
    # deprecated. Use the URLs above instead.
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
    
  3. 对于“Linux-Next”(我不确定这意味着什么)版本:
    # From kernel.org directly
    # See: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/
    git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
    git clone https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
    git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git
    

如果您正在内核中进行开发或想要查看最新版本,您可能需要主线 git 树:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
# or on GitHub
git clone https://github.com/torvalds/linux

如果您只是尝试下载给定的稳定或长期版本号,例如问题(v2.6.36.2)中的内容,则克隆稳定和长期版本树,然后cd进入其中:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux  # cd into the newly-cloned dir

然后您可以查看所有版本号标签(有关详细信息和更多命令,请参阅我的答案),然后查看感兴趣的一个:

git log --no-walk --tags --oneline
git checkout v2.6.36.2

我如何找到git clone上面的 kernel.org URL?

转到主页:https://kernel.org/然后点击“浏览”链接:

在此输入图像描述

然后单击顶部的“摘要”列标题,并查找底部的“克隆”链接:

在此输入图像描述

参考

  1. https://kernel.org/category/signatures.html- 我学会了如何验证 PGP 签名并从此页面找到各个 tar 文件的下载 URL。
  2. 我的答案:显示所有标签git log
  3. https://linuxize.com/post/how-to-extract-unzip-tar-xz-file/

相关内容