有没有可以下载特定内核版本源的资源?例如,我想获取 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
答案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”[候选发布] 内核是主线内核预发布版本,主要针对其他内核开发人员和 Linux 爱好者。它们必须从源代码编译,并且通常包含必须经过测试才能放入稳定版本的新功能。 Prepatch 内核由 Linus Torvalds 维护和发布。 [他们的版本以 结尾-rcX
,其中X
是数字。]主线
主线树由 Linus Torvalds 维护。这是引入所有新功能以及发生所有令人兴奋的新开发的树。新的主线内核每 9-10 周发布一次。稳定的
每个主线内核发布后,就被认为是“稳定的”。稳定内核的任何错误修复都会从主线树向后移植,并由指定的稳定内核维护者应用。在下一个主线内核可用之前,通常只有几个错误修复内核版本 - 除非它被指定为“长期维护内核”。稳定的内核更新根据需要发布,通常每周一次。长期
通常会提供几个“长期维护”内核版本,用于向后移植旧内核树的错误修复。只有重要的错误修复才会应用于此类内核,并且它们通常不会出现非常频繁的版本,特别是对于较旧的树。 [请参阅此处所有长期版本的表格:https://kernel.org/category/releases.html。其中大多数的支持期限长达 6 年。]
git clone
网址
克隆您想要的存储库。请注意,如果有多个克隆 URL,则任何一个都可用,但我更喜欢下面每个列表中的第一个:
- 对于 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
- 对于稳定版和长期版:
# 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
- 对于“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/然后点击“浏览”链接:
然后单击顶部的“摘要”列标题,并查找底部的“克隆”链接:
参考
- https://kernel.org/category/signatures.html- 我学会了如何验证 PGP 签名并从此页面找到各个 tar 文件的下载 URL。
- 我的答案:显示所有标签
git log
- https://linuxize.com/post/how-to-extract-unzip-tar-xz-file/