1. 程式人生 > >Linux核心原始碼目錄結構詳解

Linux核心原始碼目錄結構詳解

    3.1 Linux核心原始碼目錄如下:

        /arch:目錄包括了所有和體系結構相關的核心程式碼。它下面的每一個子目錄都代表一種Linux支援的體系結構,例如i386就是Intel CPU及與之相相容體系結構的子目錄。PC機一般都基於此目錄。
  /documentation:目錄下是一些文件,沒有核心程式碼,可惜都是English的,是對每個目錄作用的具體說明。
  /drivers:目錄中是系統中所有的裝置驅動程式。它又進一步劃分成幾類裝置驅動,每一種有對應的子目錄,如音效卡的驅動對應於/drivers/sound;block 下為塊裝置驅動程式,比如ide(ide.c)。如果你希望檢視所有可能包含檔案系統的裝置是如何初始化的,你可以看/drivers/block/genhd.c中的device_setup()。它不僅初始化硬碟,也初始化,因為安裝nfs檔案系統的時候需要網路。其他: 如, Lib放置核心的庫程式碼; Net,核心與網路相關的程式碼; Ipc,這個目錄包含核心的程序間通訊的程式碼; Fs,所有的檔案系統程式碼和各種型別的檔案操作程式碼,它的每一個子目錄支援一個檔案系統,例如fat和ext2。
  /fs:目錄存放Linux支援的檔案系統程式碼和各種型別的檔案操作程式碼。每一個子目錄支援一個檔案系統,如ext3檔案系統對應的就是ext3子目錄
  /include:目錄包括編譯核心所需要的大部分標頭檔案,例如與平臺相關的標頭檔案在/include/linux子目錄下,與intel cpu相關的標頭檔案在/include/asm-i386子目錄下,而/include/scsi目錄則是有關scsi裝置的標頭檔案目錄。
  /init:目錄包含核心的初始化程式碼(不是系統的引導程式碼),有main.c和Version.c兩個檔案。這是研究核心如何工作的好起點。
  /ipc:目錄包含了核心程序間的通訊程式碼。
  /Kernel:核心管理的核心程式碼,此目錄下的檔案實現了大多數linux系統的核心函式,其中最重要的檔案當屬sched.c;同時與處理器結構相關程式碼都放在/arch/*/kernel目錄下。
  /lib:目錄包含了核心的庫程式碼,不過與處理器結構相關的庫程式碼被放在/arch/*/lib/目錄下。
  /mm:目錄包含了所有獨立於 cpu 體系結構的記憶體管理程式碼,如頁式儲存管理記憶體的分配和釋放等。與具體硬體體系結構相關的記憶體管理程式碼位於/arch/*/mm目錄下,例如/arch/i386/mm/Fault.c 。
  /net:目錄裡是核心的網路部分程式碼,實現了各種常見的網路協議,其每個子目錄對應於網路的一個方面。
  /scripts:目錄包含用於配置核心的指令碼檔案等
  /block:塊裝置驅動程式I/O排程。
  /crypto:常用加密和雜湊演算法(如AES,SHA等),還有一些壓縮和CRC校驗演算法。
  /security:主要包含SELinux模組。
  /sound:ALSA,OSS音訊裝置的驅動核心程式碼和常用裝置驅動。
  /usr:實現了用於打包和壓縮的cpio等。