编译 linux 3,linux内核的编译(3)
linux內核的編譯(3)
2008-02-23 07:17:46來源:互聯網 閱讀 ()
無論什麼檔名),然後將你做的 zImage 拷貝進去,(例如,如果你用” /vmlinuz ″
的話,就像這樣″ cp zImage /vmlinuz ”)。
接著重新執行 lilo — 在較新的系統上,你可以只執行″ lilo ,″但是在較舊的系
統上,你可能必須執行 /etc/lilo/install 或甚至是
/ect/lilo/lilo -C /etc/lilo/config 。
如果你想知道更多有關於 lilo 的配置,或是你并沒有 lilo 但是你想要安裝的話,從
你喜歡的 ftp 節點拿最新的版本然後依說明行事。
要能夠從硬碟啟動你的舊核心其中之一的話(這是另一個在新核心出狀況的情況下保護
你自己的方法),把 lilo 配置檔中所有的(包括一行)″ image = xxx ″ 拷貝到檔
案的最底端,然後把″ image = xxx ″改成″ image = yyy ,″其中的″ yyy ″是
你備份舊核心所存檔的名字。接著,把″ lable = xXx ″改成像是” lable = linux-
backup。”然後重新執行 lilo 。
你可能得要加上一行″ delay = x ,″其中的 x 是以十分之一秒為單位的時間,這是
用來使 lilo 在啟動前先等一下,所以你可以中斷它的執行(例如用 shift 鍵)。然
後鍵入所備份的啟動映像之 lable (在發生了某些令人不愉快的事情的情況下)。
3. 修補核心
3.1. 使用修補檔
核心的小幅更新是以修補檔的方式發行。例如,如果你的版本是 1.1.45 ,而且你注意
到出現了一個″ patch46.gz ″可以用來升級它,這代表你可以藉由使用這個修補檔將
版本升級到 1.1.46 。你也許會想要先備份 source tree(″make clean ″然後″ cd
/usr/src; tar cvf linux | gzip -c > old-tree.tar.gz″將會為你造出一份 tar 壓
縮檔,里面就是整個原始程序碼與其檔案架構。)。
現在接著繼續上面的例子,假設你已經取得了″ patch46.gz ″并放在 /usr/src 下。
cd 到 /usr/src 然後執行″ zcat patch46.gz | patch -p0 ″(如果并不是壓縮過的
修補檔,那麼就執行″ patch -p0 < patch46″)你將會看到許多東西飛逝而過(也許
它們會慢慢跳過,如果你的電腦真的很慢的話)告訴你它正試著應用 hunks ,以及是
否成功。
通常,這個過程快得無法仔細看清楚它的動作,所以你會無法確定它到底有沒有成功地
執行。那麼就得找找看一些可能不是那麼順利的事。cd 到 /usr/src/linux 并找尋檔
名有 .reg 的檔案。某些版本的修補檔(比較舊的版本,它們可能是在比較早期的檔案
系統上編譯的)會把這些沒有成功的操作記錄在檔名有 # 的檔案里。你可以用
″ find ″來替你找;″ find . -name '*.reg' -print ″會處理這個工作。
如果一切正確無誤的話,執行第二節跟第三節所討論的″ make clean ,″″ config
,″以及″ dep ″。
關於 patch 指令另外還有一些選項。patch -s 將會抑制除了錯誤以外的所有其他訊息
。如果你把核心原始程序碼放在 /usr/src/linux 以外的地方,在該目錄下用
patch -p1 也可以乾凈俐落的執行修補任務。其它的 patch 選項在 manual pages 里
都有很詳細的描述。
3.2. 如果有錯誤發生
通常最常發生的問題是當 patch 修改一個叫做″ config.in ″ 的檔案時,這個檔案
看起來不怎麼對勁,因為你修改了一些選項來配合你的機器。這個問題已經小心的注意
過了,但還是可能有人會在較舊的版本上遭遇這個問題。
要修正這個問題的話,查看 config.in.rej 這個檔案里留下些什麼訊息。有修改過的
部份正常來說會在每一行開始的地方標上″ ″和″ - ″。查看有標記的附近幾行,
然後記得它們是設成″ y ″或是″ n 。″現在編輯 config.in 檔,然後在適當的地
方把″ y ″改成″ n ″以及″ n″改成″y″。
執行″ patch -p0 < config.in.rej ,″如果成功的話(沒有錯誤),那麼你就完成
了。這個 config.in.rej 檔還是會留在那里,但是你可以砍掉它。
如果你仍然遭遇其它問題,那麼可能是你安裝了一份損壞的修補檔。如果 patch 顯示
″ previously applied patch detected: Assume -R? ,″你可能使用了一些比你目
前的版本編號還低的修補檔(并不建議這樣做)。
要還原一個修補檔的話,在原先的修補檔上執行″ patch -R ″。
當修補檔真的失敗的時候,最好的辦法是從一個乾凈的,out-of-the-box source tree
(例如從 linux-x.x.x.tar.gz 檔案其中之一)開始,再重新執行。
3.3. 砍掉 .orig 檔案
只要做過幾次修補以後,那些 .orig 的檔案將會開始堆積。例如,我的一個 1.1.51
版的 tree 最後一次做清掃是在 1.1.48 版(我想是吧)。刪除這些 .orig 檔案會節
省許多的磁碟空間。″ find . -name '*.orig' -exec rm -f {} ';' ″將會替你照料
這件事。某些版本的修補檔會用 tilde 來代替 .orig 。
有其它(更好的?)的辦法可砍掉這些 .orig 檔。用的最多的是以″ xargs ″來代替
″ -exec: ″″find . -name '*.orig | xargs rm ″或是″ find . -name '*.orig'
-print0 | xargs --null rm -- ″(後面這個比較安全。)。
3.4. 其它的修補檔
總是會有一些并不是由 Linus 發行的其它修補檔出現(我將稱之為″非標準的″ )。
如果你使用了它們, Linus 的修補檔可能會而無法正確地執行,那麼你不是得將它們
還原就是得因此而去修改原始程序碼或是修補檔。這個工作對初學者通常是很討厭,所
以,如果你對原始程序碼沒什麼研究,在使用 Linus 的修補檔之前先還原這些非標準
的修補檔。
然後你可以看看這些非標準的修補檔是否仍然可以執行。如果不行的話,那麼你要不就
繼續用舊的核心來修補以執行它們,要不就等別人發表能在你修補後的新核心上用的新
版非標準修補檔。
非標準的修補檔有多普遍?你有可能曾經聽過它們。我使用 Bill Paul 的不閃爍修補
檔來 make 我虛擬控制臺上的游標,因為我討厭會閃爍的游標。就我所知,到目前為止
這個特別的修補檔的最新版本是給 1.0 版的核心使用的,但是我仍然在 1.1.51 版下
使用它 — 我已經修改了它好幾次,因為它通常會搞亂 Linus 修補檔的 driver/char/
console.c 。
4. 附加的套件
你的 Linux 核心有許多在核心的原始程序碼本身里面并沒有說明的特性;這些特性一
標簽:
版權申明:本站文章部分自網絡,如有侵權,請聯系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點,本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系,版權歸原作者所有
相關文章
總結
以上是生活随笔為你收集整理的编译 linux 3,linux内核的编译(3)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arch linux简体中文,User-
- 下一篇: 树莓派 pip安装mysql_树莓派 p