2013-02-10 107 views
1

我想學習linux內核編程,所以我從www.kernel.org下載了Linux內核3.7.6源代碼。然而,在編輯任何東西之前,我嘗試使用在線教程進行編譯。快速測試Linux內核

make需要很多時間來編譯,我還沒有完全完成。有沒有快速的方法來改變源代碼並對其進行測試?因爲我讀過內核編譯需要大約一個小時。

此外,如果有可能在USB驅動器上覆制和測試修改的內核? 是否可以在USB驅動器上安裝GRUB,在USB上覆制內核,在USB上配置GRUB,然後運行它?如果是這樣,請給我任何資源,採取相同的步驟。我的筆記本電腦上也安裝了GRUB。如何在不影響筆記本電腦配置的情況下在USB上設置新的GRUB?

謝謝.. :)

+5

別擔心。它只需要很長時間一次。如果您修改一個源文件並重新編譯,則只會編譯該文件。這就是'make'的奇蹟。 – 2013-02-10 16:59:30

+3

我建議您使用虛擬機進行測試,至少在第一次迭代中:Qemu可以直接啓動內核。啓動起來更快,更容易,並且當你破壞事物時,你不會冒着自己的機器冒險。因爲你_will_會破壞一些東西...... – rodrigo 2013-02-10 17:50:01

回答

2

你需要構建內核它,直到結束時,如果你想要啓動它。但是,在代碼稍作修改後,第二次應該會更快,只需要重建內核的一部分。

通過向grub.cfg添加新條目(對於grub2),可以非常容易地擁有多個引導選項(使用不同的內核)。然而,我不能在這裏重複多頁文檔。

+0

我把grub2設置好了(我還沒有創建grub.cfg,只是用ext4格式化了USB驅動器,並用'grub-install'在它上面安裝了grub2。 – 2013-02-10 18:10:53

5

你提到你想學習Linux內核編程,所以我想我對你有更好的建議,因爲你對所有這些都是陌生的。

爲什麼不讓初學者嘗試像引入非常簡單的驅動程序或使用netfilter(幾乎可以控制整個TCP/IP使用這個)的小內核編程,而無需編譯內核?

Kernel modules是你的朋友:)
他們是一段簡單的代碼,編譯分別然後問運行內核(使用insmod Linux命令)這個代碼附加到正在運行的內核,有你走!你有自己的代碼在內核空間中運行。

我知道這並不能完全回答你的問題,但我真的認爲像這樣開始對你更容易,可能更有用;一旦你對這裏可以找到的許多東西更加熟悉,試着繼續修改現有的內核代碼。

爲了讓你知道你可以用內核模塊做什麼:
-Drivers
-Adding一個新的功能到內核
-I've親自與netfilter的(在一組功能和鉤子用它內核)修改處理網絡流量
- 你也可以修補你的內核(修改源代碼,編譯,運行整個事情),然後使用內核模塊編輯一些通常需要重新編譯的東西,比如編輯系統調用;雖然這種方法不建議,但它可以提高你的測試時間,每次你想做一個測試,你不必編譯和重新啓動。
-...更多..

讓我知道如果我在某個時候感到困惑。