内核构建: "torvalds" 与 "stable" 存储库有什么关系?

9
当涉及到Kernel.org内核仓库时,有几个是最新的:
  • linux/kernel/git/stable
  • linux/kernel/git/torvalds
这些似乎在它们各自的标签方面大多不相交。看起来除非我在开发前沿,否则我应该只使用“stable”(我的当前测试基于现有的稳定内核)。这个假设正确吗?
torvalds树是否实际上是stable的完全超集(虽然从标签上看似乎不是)?如果不是,那么两者之间如何进行变更传播?

不,它是稳定版本的子集。稳定树跟踪Torvalds仓库,然后添加其他内容。虽然会有等效的补丁提交进入torvalds/master分支,但这不是与稳定分支相同的历史记录。 - stsquad
是的,我同意。我的主要目标是在虚拟机中创建一个相对简单的安装程序,以便我可以进行调试。 - MartyMacGyver
2个回答

3

如果您不是在处理最前沿的东西,通常情况下您会希望基于稳定版本构建。

标签仅仅是指向提交的指针 - 只因为一个仓库有标签而另一个没有并不意味着该提交不在两个仓库中存在。 (例如,“stable”可能有一个名为“Foo”的标签,它指向提交“A” - Torvalds也可能将该提交A作为某些分支的一部分,但没有命名的标签)。


实际上,我很可能无法从Torvalds仓库中重建特定的稳定版本 - 更改可能存在,但顺序不同,标签也不存在。简而言之,这两个仓库几乎共享完全相同的代码,但一个绝对不是另一个的直接超集。这似乎是一种将“主线”与“开发边缘”隔离的方法,这很好,但不是立即明显的。 - MartyMacGyver
谢谢您的快速回答!我现在正在克隆稳定的代码库。 - MartyMacGyver

0
[...] 大多数情况下,它们在各自的标签方面是不相交的。
它们最好不要相交或者出现其他问题!这些标签代表着官方的Linux版本,带有前缀 v。像 v4.19 这样的两部分版本是Torvalds的提交之一。Linus还会标记/发布 -rc 候选版本。(这样人们就可以测试和修复,他只需要合并即可;)。 kernel.org 在起始页面上称其为“主线”,并在下方列出了“稳定”和“长期支持”。这些版本号有三个部分,现在从 v4.4.228 - v5.14.11
进化树看起来像这样,中间有空隙:
                                                                    LONGTERM
                                                5.4.1 -- 5.4.152 - ...
                                                /
... - 4.4 -- 4.19 - 4.20-rc1 - 4.20 - 4.21 -- 5.4 -- 5.10 -- 5.14 - 5.15-rc5 - ...   MAINLINE
        \                                                      \  
         4.4.1 - 4.4.2 -- 4.4.228 - ...                         \
            LONGTERM                                               5.14.1 - 5.14.11 - ...
                                                                STABLE

现在有2个稳定版本和6个长期支持版本。这些由“稳定组”在一个带有许多分支的单独存储库中进行管理:

  • master:新的分支点(vX.Y,而不是候选版本)
  • linux-5.14.y:每个主线发布版本,从2.6开始。
  • rolling:稳定版和长期支持版(-stable/lts)

这两个“rolling”分支是为实际目的而设立的:在该分支上,可以出现新的v5.14.5v5.13.18。这些分支中的标签由S. Levin维护,而G. Kroah-H.则进行主要的“linux-....y”分支提交。


以下是在三个分支中有四个版本的情况下,git log --oneline --graph 的显示效果:

* 3cbd3f978 (tag: v5.10.72, Stable-510.y) 5.10.72 (archive)
| * 4c33b80bc (HEAD -> Stable-514.y, tag: v5.14.11) 5.14.11 (archive)
| * 3bb9b4940 (tag: v5.14, Mainline) 5.14 (archive)
|/  
* ecfd56a3c (tag: v5.10) 5.10 (archive)
* 8a877cbd4 (tag: v5.4) Init with tar archive 5.4

5.10有一个主线版本5.14和一个稳定版本5.10.72。在下一个主线提交(v5.15)之后,祖先关系应该变得更加明显。

.git/objects/pack中需要400MB的空间。除了所显示的内容外,没有提交记录,但是git diff可以使用。

--> 你可能不需要克隆就能获得感兴趣的新“每月”内核。您可能想要使用v5.10.72、73、74而不是编译和运行v5.14,然后很快开始5.15的工作。

发行版还会采用稳定的内核并进行半秘密修改:例如5.11.2-arch1-1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接