理解Linux内核和补丁发布

7

我希望更好地了解Linux内核/补丁发布的工作方式。

例如,如果我今天(2013年12月12日)打开www.kernel.org,主要下载(黄色按钮)将带我进入“linux-3.12.5.tar.xx”,这是最新的稳定版本。这很清楚。

但是,如果我进入“https://www.kernel.org/pub/linux/kernel/v3.x/”,我可以找到(在许多存档文件中):

(1) linux-3.12.tar.gz

(2) patch-3.12.5.gz

(3) patch-3.12.gz

因此,第一个问题:是否“linux-3.12.5”=(1)linux-3.12 +(2)patch-3.12.5?

如果是这样,那么“patch-3.12”(3)是用来干什么的?是否像上面一样,“linux-3.12”= linux-3.11 +(3)patch-3.12?

谢谢!


2
你需要应用补丁来从“之前”的版本升级到当前版本。因此,linux-3.12.4 + patch-3.12.5 = linux-3.12.5。对于版本3.12,之前的版本是3.11,而不是3.11.999或其他版本。对于版本3.11.1,之前的版本也是3.11。 - n. m.
@n.m. 所以想象一下,我有一个linux-3.12的存档,如果我想要得到linux-3.12.5,我必须应用所有这些补丁:patch-3.12.1、patch-3.12.2、patch-3.12.3、patch-3.12.4、patch-3.12.5吗?(当然,除非我直接下载linux-3.12.5存档 :))。所以如果我只将patch-3.12.5应用于linux-3.12,我就不会得到linux-3.12.5,对吧? - lviggiani
是的,您必须应用几个补丁。如果您尝试将3.12.5应用于3.12,则可能会失败。看一下补丁大小,它们是另一个指示。 - n. m.
...嗯,一些人告诉我相反的事情:所有的补丁都在同一级别上应用,因此linux-3.12.5 = linux-3.12 + patch-3.12.5... 我刚在 https://www.kernel.org/pub/linux/kernel/v3.x/ 查看了一下,patch-3.12.5 >(大于) patch-3.12.4 > patch-3.12.3 > patch-3.12.2 > patch-3.12.1。我也尝试将patch-3.12.5 应用到linux-3.12上,并成功了... 所以,谁是正确的呢? - lviggiani
请查看这里这里。如果在3系列中有所改变,我一无所知:(也不知道为什么大小会增加,但是请看x.y路径大小与x.y.z大小的比较---x.y要大得多,而且它们并不单调增长。不知道这意味着什么。我将不得不比较补丁本身。 - n. m.
1
啊,看起来在3系列中(或者说是转移到Git上)事情确实发生了很大变化。对于3系列的补丁并非增量更新!请参考https://github.com/torvalds/linux。对于造成的混淆,我深感抱歉。 - n. m.
1个回答

5
根据 https://github.com/torvalds/linux/blob/master/README (第95行开始):
与3.x内核的补丁不同,3.x.y(也称为-stable内核)的补丁不是增量的,而是直接应用于基础3.x内核。例如,如果您的基础内核是3.0,并且您想要应用3.0.3补丁,则不应首先应用3.0.1和3.0.2补丁。同样,如果您正在运行内核版本3.0.2并想要跳到3.0.3,则必须先撤消3.0.2补丁(即打补丁-R)然后再应用3.0.3补丁。您可以在Documentation/applying-patches.txt中了解更多信息。
感谢n.m.提供的来源链接!

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