linux核心原始碼目錄結構分析

2021-07-24 02:01:03 字數 2355 閱讀 6554

注:本文是學習朱老師課程整理的筆記,基於linux2.6.35.7和九鼎x210bv3s開發板進行移植。

/arch。arch是architecture的縮寫。arch目錄下是好多個不同架構的cpu的子目錄,譬如arm這種cpu的所有檔案都在arch/arm目錄下,x86的cpu的所有檔案都在arch/x86目錄下。

/block。是塊的意思,在linux中block表示塊裝置,塊裝置是以資料塊方式接收和傳送的資料的裝置。譬如說sd卡、inand、nand、硬碟等都是塊裝置。幾乎可以認為塊裝置就是儲存裝置。block目錄下放的是一些linux儲存體系中關於塊裝置管理的**。

/crypto。是加密的意思。這個目錄下放了核心本身所用的加密api,實現了常用的加密和雜湊演算法,還有一些壓縮和crc校驗演算法。

/documentation。裡面放了一些幫助文件。

/drivers。驅動目錄,這個目錄是核心中最龐大的乙個目錄,裡面分門別類的列出了linux核心支援的所有硬體裝置的驅動源**。

/firmware。韌體。什麼是韌體?韌體其實是軟體,不過這個軟體是固化到ic裡面執行的,為了了讓計算機讀取和理解從裝置發來的訊號的**,就像s5pv210裡的irom**。

/fs。fs就是file system,檔案系統,裡面列出了linux支援的各種檔案系統的實現。

/include。頭檔案目錄,公共的(各種cpu架構共用的)標頭檔案都在這裡。每種cpu架構特有的一些標頭檔案在arch/***/include目錄及其子目錄下。

/init。init是初始化的意思,這個目錄下的**就是linux核心啟動時初始化核心的**。

/ipc。ipc就是inter process commuication,程序間通訊,裡面都是linux支援的ipc的**實現。

/kernel。kernel就是核心,核心中最核心的部分,包括程序的排程(sched.c),以及程序的建立和撤銷(fork.c和exit.c)和平台相關的另外一部分核心**在arch/***/kernel目錄下。

/lib。lib是庫的意思,這裡面都是一些公用的庫函式,注意這裡的庫函式和c語言的庫函式不一樣的。在核心程式設計中是不能用c語言標準庫函式,這裡的lib目錄下的庫函式就是用來替代那些標準庫函式的。譬如要把字串轉成數字用atoi,核心程式設計中只能用lib目錄下的atoi函式,不能用標準c語言庫中的atoi。譬如在核心中要列印資訊時不能用printf,而要用printk,這個printk就是我們這個lib目錄下的。

/mm。mm是memory management,記憶體管理,此目錄包含了與體系無關的部分記憶體管理**。與體系結構相關的記憶體管理**位於arch/***/mm下。

/net。該目錄下是網路相關的**,譬如tcp/ip協議棧等都在這裡。

/scripts。指令碼,這個目錄下全部是指令碼檔案,這些指令碼檔案不是linux核心工作時使用的,而是用來輔助對linux核心進行配置編譯生產的。當執行make menuconfig或者make xconfig之類的命令配置核心時,使用者就是和位於這個目錄下的指令碼進行互動的。

/security。安全相關的**。對計算機免於受到病毒和黑客的侵害很重要.

/sound。音訊處理相關的。

/tools。linux中用到的一些有用工具

/usr。實現用於打包和壓縮的cpio等。這個資料夾中的**在核心編譯完成後建立這些檔案。

/virt。此資料夾包含了虛擬化**,它允許使用者一次執行多個作業系統。通過虛擬化,客戶機作業系統就像任何其他執行在linux主機的應用程式一樣執行。

根目錄下的一些單獨檔案:

copying:許可和授權資訊。linux核心在gplv2許可證下授權。該許可證授予任何人有權免費去使用、修改、分發和共享源**和編譯**。然而,沒有人可以**源**。

credits : 貢獻者列表。

kbuild:是kernel build的意思,就是核心編譯的意思,設定一些核心設定的指令碼。打個比方,這個指令碼設定乙個arch變數,這是開發者想要生成的核心支援的處理器型別。

kconfig:這個指令碼會在開發人員配置核心的時候用到。

maintainers:這是乙個目前維護者列表,他們的電子郵件位址,主頁,和他們負責開發和維護的核心的特定部分或檔案。當乙個開發者在核心中發現乙個問題,並希望能夠報告給能夠處理這個問題的維護者時,這是是很有用的。

makefile:這個指令碼是編譯核心的主要檔案。這個檔案將編譯引數和編譯所需的檔案和必要的資訊傳給編譯器。

readme:這個文件提供給開發者想要知道的如何編譯核心的資訊。

reporting-bugs:這個文件提供如何報告問題的資訊。

總結:這麼多目錄跟我們關係很緊密的就是arch和drivers目錄,然後其他有點相關的還有include、block、mm、net、lib等目錄。根目錄下的單檔案比較重要的是kbuild,kconfig,makefile。

Linux核心原始碼目錄結構

在對linux核心學習的同時,我們首先應該對linux核心原始碼的目錄有一定的了解,下面是核心原始碼目錄的大概結構說明,根據核心版本的不同略有差異,不過不影響學習。以2.6.28.6核心原始碼為例 arch目錄包括了所有和體系結構相關的核心 它下面的每乙個子目錄都代表一種linux支援的體系結構,例...

Linux核心原始碼目錄結構

3.3 核心原始碼目錄結構 瀏覽核心 之前,有必要知道核心原始碼的整體分布情況,按照慣例,核心 安裝在 usr src linux目錄下,該目錄下的每乙個子目錄都代表了乙個特定的核心功能性子集,下面針對2.6.23版本進行簡單描述。1 documentation。這個目錄下面沒有核心 只有很多質量參...

linux核心原始碼目錄結構分析

1 分析原始碼目錄下的單個檔案 1 kbuild,kbuild是kernel build的意思,就是核心編譯的意思。這個檔案就是linux核心特有的核心編譯體系需要用到的檔案。2 makefile,這個是linux核心的總makefile,整個核心工程用這個makefile來管理的。3 mk,是九鼎...