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

2021-08-14 13:32:56 字數 2208 閱讀 4713

1、分析原始碼目錄下的單個檔案

(1)kbuild,kbuild是kernel build的意思,就是核心編譯的意思。這個檔案就是linux核心特有的核心編譯體系需要用到的檔案。

(2)makefile,這個是linux核心的總makefile,整個核心工程用這個makefile來管理的。

(3)mk,是九鼎在移植時自己新增的,不是linux核心本身的東西。九鼎新增這個檔案的作用是用這個檔案來整天管理kernel目錄的配置和編譯,也就是說這個檔案有點類似於我們之前移植uboot時自己建立的那個cp.sh。

2、簡單講一下linux核心的配置體系。

(1)linux核心很龐大,裡面模組很多,而且可配置性非常高。所以linux源**的配置是乙個很複雜的事情,必須要有一套很複雜的機制來保證linux核心可以被正確的配置。(對比一下uboot,uboot的配置項都是在***.h中,用巨集定義來表示的。uboot的這種方式很依賴於人的水平,因為uboot的配置體系很簡單。)

(2)linux核心本身配置項有上千個,光靠人眼睛去看腦袋去記根本不可能,所以核心發明了一種體系用來幫助人進行簡單化的配置。這種體系就是我們本課程中重點要研究的東西。

(3)kbuild、kconfig等檔案,都是和核心的配置體系有關的。

3、linux核心原始碼目錄結構2

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

(2)block。英文是塊的意思,在linux中block表示塊裝置(以塊(多個位元組組成的整體,類似於扇區)為單位來整體訪問),譬如說sd卡、inand、nand、硬碟等都是塊裝置。你幾乎可以認為塊裝置就是儲存裝置。block目錄下放的是一些linux儲存體系中關於塊裝置管理的**。

(3)crypto。英文意思是加密。這個目錄下放了一些各種常見的加密演算法的c語言**實現。譬如crc32、md5、sha1等。

(4)documentation。裡面放了一些文件。

(5)drivers。驅動目錄,裡面分門別類的列出了linux核心支援的所有硬體裝置的驅動源**。

(6)firmware。韌體。什麼是韌體?韌體其實是軟體,不過這個軟體是固話到ic裡面執行的叫韌體。就像s5pv210裡的irom**。

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

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

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

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

(11)kernel。kernel就是核心,就是linux核心,所以這個資料夾下放的就是核心本身需要的一些**檔案。

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

(13)mm。mm是memory management,記憶體管理,linux的記憶體管理**都在這裡。

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

(15)scripts。指令碼,這個目錄下全部是指令碼檔案,這些指令碼檔案不是linux核心工作時使用的,而是用來輔助對linux核心進行配置編譯生產的。我們並不會詳細進入分析這個目錄下的指令碼,而是通過外圍來重點學會配置和編譯linux核心即可。

(16)security。安全相關的**。不用去管。

(17)sound。音訊處理相關的。

(18)tools。linux中用到的一些有用工具

(19)usr。目錄下是initramfs相關的,和linux核心的啟動有關,暫時不用去管。

(20)virt。核心虛擬機器相關的,暫時不用管。

總結:這麼多目錄跟我們關係很緊密的就是arch和drivers目錄,然後其他有點相關的還有include、block、mm、net、lib等目錄。

Linux核心原始碼目錄結構

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

Linux核心原始碼目錄結構

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

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

注 本文是學習朱老師課程整理的筆記,基於linux2.6.35.7和九鼎x210bv3s開發板進行移植。arch。arch是architecture的縮寫。arch目錄下是好多個不同架構的cpu的子目錄,譬如arm這種cpu的所有檔案都在arch arm目錄下,x86的cpu的所有檔案都在arch ...