内核打补丁
內(nèi)核打補丁
如果需要的某些特性并沒有被現(xiàn)有內(nèi)核支持,則需要去獲取相關(guān)的補丁。比如,為了使內(nèi)核支持圖形化的啟動界面,我們可能要用到bootsplash工具。!bootsplash項目 http://www.bootsplash.org/ 上提供了針對很多內(nèi)核版本的補丁供下載。
- 通過打補丁升級內(nèi)核
通過打補丁的方法升級內(nèi)核,可以不用下載整個內(nèi)核源碼。針對每個內(nèi)核版本的補丁文件可以在 ftp.kernel.org 上面獲得,問題是我們應(yīng)該選擇哪個補丁文件,一個補丁文件到底應(yīng)該打在哪個版本的內(nèi)核上。下面小節(jié)介紹了如何應(yīng)用和卸載補丁,詳細(xì)的內(nèi)容請查看內(nèi)核文檔Document/applying-patchs.txt
1. 什么是補丁
一個補丁文件就是一個文本文檔,由diff工具創(chuàng)建,它存放了兩個不同版本的源碼之間的差異
2. 如何打補丁與卸載補丁
patch工具可以用于打補丁和卸載補丁。內(nèi)核的補丁是相對于保存內(nèi)核源碼的父目錄生成的,這就意味著,補丁文件中的文件路徑包含了內(nèi)核源碼存放目錄的名字(比如,linux-2.6.29,或者像是"/a"和"/b"之類的其它名字)。但是很可能我們本地系統(tǒng)上的內(nèi)核源碼存放目錄和補丁中不匹配,為了解決這個問題,我們需要切換到自己的源碼目錄,并且在執(zhí)行patch命令的時候加上"-p1"參數(shù),這樣就會去掉補丁文件中路徑的第一個分量,比如:
為了卸載一個以前打上的補丁,需要使用"-R"參數(shù)。
# patch -R -p1 < ../patch.x.y.z3. 如何利用補丁升級內(nèi)核
考慮這樣的幾個場景:將內(nèi)核從2.6.23升級到2.6.24;將內(nèi)核從2.6.23.8升級到2.6.24.6;將內(nèi)核從2.6.23.6升級到2.6.23.8。不管處于哪種場景,打補丁時要謹(jǐn)記的一點是:內(nèi)核的補丁文件都是以2.6.x(基礎(chǔ)穩(wěn)定版basic stable, 2.6.x.y是穩(wěn)定版 stable)為基礎(chǔ)發(fā)布的。下面對這3種場景分別進(jìn)行介紹
(1)將內(nèi)核從2.6.23升級到2.6.24。這種情況,可直接使用補丁文件patch-2.6.24
# patch -p1 < ../patch-2.6.24因為下載得到的補丁文件通常是使用gzip或者bzip2壓縮的格式,所以使用前還要將其解壓生成patch-x.y文件。不過,我們也可以不解壓,使用下面的命令形式:
# bzcat ../patch-2.6.24.bz2 | patch -p1(bz2格式) or # zcat ../patch-2.6.24.gz | patch -p1(gz格式)(2)將內(nèi)核從2.6.23.8升級到2.6.24.6。這種情況下,我們需要將升級的過程分解為幾個步驟,首先將2.6.23.8退回到2.6.23,然后再升級到2.6.24,最后升級到2.6.24.6。
# bzcat ../patch-2.6.23.8.bz2 | patch -p1 -R # bzcat ../patch-2.6.24.bz2 | patch -p1 # bzcat ../patch-2.6.24.6.bz2 | patch -p1(3)將內(nèi)核從2.6.23.6升級到2.6.23.8。在這種情況下,我們同樣需要將升級過程分解,首先將2.6.23.6退回到2.6.23,然后再升級到2.6.23.8。
# bzcat ../patch-2.6.23.6.bz2 | patch -p1 -R # bzcat ../patch-2.6.23.8.bz2 | patch -p1除了patch之外,也有其它的用來打補丁的工具,比如interdiff、ketchup等。
總結(jié)
- 上一篇: Mesos | 1.3.2 webui
- 下一篇: html相册浏览页面怎么做,ul结合CS