Linux中國

Linux 內核測試與調試(2)

如果你想開上內核快車道,追求與時俱進,那就去下載 mainline 狀態的內核或 linux-next 狀態的內核(LCTT:讀者可進入 kernel.org 獲取代碼,linux 代碼被分為4種狀態:mainline, stable, longterm, linux-next)。安裝測試 mainline 狀態或 linux-next 狀態的內核,你就可以在正式發布之前幫助內核找到並修復裡面的 bug。

mainline 狀態的內核源碼:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

linux-next 狀態的內核源碼:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

編譯安裝這兩種內核的步驟與編譯安裝穩定版內核一樣。按之前講過的步驟來就行了。

打補丁

Linux 內核的補丁是一個文本文件,包含新源碼與老源碼之間的差異。每個補丁只包含自己所依賴的源碼的改動,除非它被特意包含進一系列補丁之中。打補丁方法如下:

patch -p1 < file.patch
git apply --index file.patch 

兩種方法都可以打補丁。但是,如果你要打的補丁包含一個新文件,git 命令不能識別這個新增的文件,也就是說這個新文件在 git 裡面屬於 untracked 文件(LCTT:玩 git 的人對這個會比較熟悉,就是文件處於未被跟蹤的狀態,你需要使用 git add 命令將文件放入暫存區)。git diff 命令不會將這個文件的增量顯示出來,並且 git status 命令會顯示這個文件處於 untracked 狀態。

大多數情況下,有個沒被跟蹤的文件,對於編譯安裝內核來說沒什麼問題,但是 git 操作就會出現一些問題了: git reset --hard 命令不會刪除這個新加的文件,並且接下來的 git pull 操作也會失敗。你有多種選擇來避免上面所說的狀況:

選項1,不跟蹤這個新文件:

如果打補丁後新添加了文件,在 git reset --hard 前使用 git clean 命令來刪除沒有被跟蹤的文件。舉個例子,git clean -dfx 命令會強制刪除未被跟蹤的目錄和文件,忽略在 .gitigniore 文件內規定的文件。如果你不在乎哪些文件會被刪除,你可以使用 -q 選項讓 git clean 命令進入安靜模式,不輸出任何處理過程。

選項2,跟蹤新文件:

你可以在使用 git apply --index file.patch 命令後讓 git 跟蹤打完補丁後新產生的文件(LCTT:使用 git add 命令),就是讓 git 把文件放入 index 區域。做完這個後,git diff 命令會將新文件的增量列印出來,git status 也會顯示者這是一個正常的新增文件。

via: http://www.linuxjournal.com/content/linux-kernel-testing-and-debugging?page=0,1

譯者:bazz2 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國