Linux
核心黑客環境
我一直在像 uCOS、ThreadX 這樣的嵌入式作業系統中工作。雖然我已經在 Linux 中編寫了應用程序,但現在我正計劃開始學習 Linux Kernel。我有幾個關於環境的問題。
- 哪個是最好的發行版,哪個具有易於使用的核心開發工具?(到目前為止,我使用過 RHEL 和 Fedora。雖然我對這些很滿意,但看起來 Ubuntu 也有內置的腳本,以便於核心編譯,比如
make_kpkg
等)- 你能描述一下核心調試的最佳設置嗎?在調試其他嵌入式作業系統時,我使用串口轉儲進度、JTAG 等。Linux 核心開發人員使用哪種設置?(我的帶有串列埠的測試台 PC 是否足以滿足我的需求?如果是,如何配置核心轉儲到串列埠?)我計劃將核心消息重定向到串列控制台,該控制台將在我的筆記型電腦中讀取。
- 什麼工具最適合調試和跟踪核心程式碼?如前所述,串列控制台是唯一的方法嗎?或者 PC 是否存在任何 IDE/JTAG 類型的介面?
我個人對 Linux 核心開發的喜好是 Debian。現在為您的觀點:
- 正如您可能猜到的那樣,除了 Debian 中已經提供的功能之外,Ubuntu 並沒有為核心帶來任何新的東西來簡化開發 afaik。例如 make_kpkg 是 Debian 的功能,而不是 Ubuntu。以下是一些連結,可幫助您開始在 Debian 中執行常見的 Linux 核心開發任務:
- 進行核心調試的最簡單方法是使用 QEMU 和 GDB。一些幫助您入門的連結:
- http://files.meetup.com/1590495/debugging-with-qemu.pdf
- http://www.cs.rochester.edu/~sandhya/csc256/assignments/qemu_linux.html但是,您應該知道,這種方法在某些情況下不可行,例如特定硬體問題調試等,您最好使用物理串列調試和真實硬體。為此,您可以使用KGDB(它也可以使用乙太網)。KDB也是一個不錯的選擇。哦,順便說一句,KGDB 和 KDB 都已合併到 Linux 核心中。更多關於這兩個在這裡。另一種很酷的方法是使用使用者模式 Linux 核心,它非常適用於非硬體相關問題。像任何其他程序一樣在使用者模式下執行核心允許您像任何其他程序(範例)一樣調試它。更多關於使用者模式 Linux在這裡。UML 是自 2.6.0 以來的 Linux 核心的一部分,因此您可以按照以下步驟將高於該版本的任何官方核心版本建構為 UML 模式。
- 請參閱第 2 項。不幸的是,這裡沒有最終的最佳方法,因為每種工具/方法都有其優點和缺點。