内核打补丁的问题

shichunda
内核打补丁的问题

关于内核打补丁,我有一些疑问,希望高手们能给出答案。

1 为内核打补丁有什么原则?比如我原来的内核是2.6.9,我下载了patch-2.6.10和patch-2.6.9,我想把2.6.10的补丁打上去,还用打2.6.9的补丁吗?


2 我的AS4内核,2.6.9-5.EL,我下载了patch-2.6.9,但在/usr/src/kernel中有三个文件夹,2.6.9-5.EL-hugemen-i686,2.6.9-5.EL-i686,2.6.9-5.EL-smp-i686,我在/usr/src/kernel这个目录下用patch -p1 < patch-2.6.9,总是出现file to patch(我的patch文件就在kernel这个目录下)
请问,我的路径是否正确?如果不正确又应该在这三个文件夹的哪个下面打补丁呢?


3 如果我的内核是2.6.16,我下了patch-2.6.16.1和2.6.16.4,是否可以先打.1的补丁,之后再打.4的补丁,而不用patch -R -p1 < patch-2.6.16.1 之后再打.4的补丁呢?关于这个问题还有一个疑问,是不是因为有了.4这个补丁而没必要打.1这个补丁了呢?

请高手赐教,谢谢

kenduest
[quote]原帖由 [i]shichunda[/i] 于 2008-5-1 00:31 发表 [url=http://linux.chinaunix.net/bbs/redirect.php?goto=findpost&pid=6574290&ptid=997993][img]http://linux.chinaunix.net/bbs/images/common/back.gif[/img][/url]
关于内核打补丁,我有一些疑问,希望高手们能给出答案。[/quote]

我比較想問的是,目前大家吃飽很閒都在自己 patch kernel source 與 make kernel 嗎?這年頭編譯核心需求已經很少很少很少,除非你是 linux distro 的 kernel package maintainer/developer,或者是 kernel source 的 developer/hacker,也或者有其他特殊原因考量,要不然實在不需要在這部份著墨。尤其系統面的管理者更不需要在這地方花時間。  

[quote]1 為內核打補丁有什麼原則?比如我原來的內核是2.6.9,我下載了patch-2.6.10和patch-2.6.9,我想把2.6.10的補丁打上去,還用打2.6.9的補丁嗎?[/quote]

patch-2.6.10 是給 linux-2.6.9 更新到 linux-2.6.10 的版本。所以 patch-2.6.9 根本不需要,因為那是給 2.6.8 更新到 2.6.9 用的 patch 檔案。

[quote]2 我的AS4內核,2.6.9-5.EL,我下載了patch-2.6.9,但在/usr/src/kernel中有三個文件夾,2.6.9-5.EL- hugemen-i686,2.6.9-5.EL-i686,2.6.9-5.EL-smp-i686,我在/usr/src/kernel這個目錄下用 patch -p1 < patch-2.6.9,總是出現file to patch(我的patch文件就在kernel這個目錄下)
請問,我的路徑是否正確?如果不正確又應該在這三個文件夾的哪個下面打補丁呢?[/quote]

首先你方向錯誤了。

linux distro 發行的 kernel source 已經經過大量本身修正過,簡單說已經包含大量的 patch 修正,所以所謂的 2.6.9-5.EL 的 kernel source 目錄內的檔案已經與原本 kernel.org 官方本身的 2.6.9 版本 kernel source 完全不一樣了,所以您無法在這種版本上進行所謂使用 patch 2.6.10 版本讓該 kernel source 版本可以更新到 2.6.10 版本上。

所以姑且不論您的操作流程與步驟,您也無法在這版本上進行 patch 的動作,因為可以進行也只會得到一堆 Fail 的錯誤訊息,因為 code 根本不一樣。

[quote]
3 如果我的內核是2.6.16,我下了patch-2.6.16.1和2.6.16.4,是否可以先打.1的補丁,之後再打.4的補丁,而不用patch -R -p1 < patch-2.6.16.1 之後再打.4的補丁呢?關於這個問題還有一個疑問,是不是因為有了.4這個補丁而沒必要打.1這個補丁了呢?
請高手賜教,謝謝[/quote]

patch-2.6.16.1 是給 2.6.16 --> 2.6.16.1 版本,patch-2.6.16.6 是給 2.6.16 --> 2.6.16.6,所以最新的 patch-2.6.16.16 已經包含 patch 2.6.16.1 ~ patch-2.6.16.15 版本。

--

shichunda
好的,谢谢版主,说的很详细。我对升级内核是没有需求,但技不压身,趁年轻多学点东西没坏处,至少能更深刻的理解操作系统啊。

“如果我的內核是2.6.16,我下了patch-2.6.16.1和2.6.16.4,是否可以先打.1的補丁,之後再打.4的補丁,而不用patch -R -p1 < patch-2.6.16.1 之後再打.4的補丁呢?”
这个问题能在说说吗,可以不卸载.1而继续升级到.4吗?

谢谢