Linux 內核源代碼的目錄結構
Linux 內核源代碼包含如下目
● arch :包含和硬件體系結構相關的代碼,每個架構的CPU都對應一個目錄,如i386、arm、
arm64、powerpc、mips 等。Linux 內核目前已經支持30 種左右的體系結構。在arch
目錄下,存放的是各個平台以及各個平台的芯片對Linux 內核進程調度、內存管理、
中斷等的支持,以及每個具體的SoC 和電路板的板級支持代碼。
● block:塊設備的通用函數,驅動程序I/O 調度。
● crypto:常用加密和散列算法(如AES、SHA 等),還有一些壓縮和CRC 校驗算法。
● documentation:內核文檔:各部分的通用解釋和注釋。
● drivers :所有的設備驅動程序,每一類的驅動對應一個子目錄,如drivers/block為塊設備驅動
、drivers/char為字符設備驅動程序、driver/mtd為NOR Flash /Nand Flash 等存儲設備 的驅動
● fs:所支持的各種文件系統,如EXT、FAT、NTFS、JFFS2 等。
● include:內核頭文件,與系統相關的基本頭文件放置在include/linux 子目錄下,各種驅動及功 能部件的頭文件(如:include/media/ , include/mtd/ , include/net/ )、各種體系相關 的頭文件(如:include/asm-arm/ , include/asm-i386),配置內核后,include/asm、 是某個include/asm-xxx的鏈接。
● init:內核初始化代碼。內核引導后運行的第一個函數start_kernel() 就位於init/main.c 文件中。
● ipc:進程間通信的代碼。
● kernel :內核最核心的部分,包括進程調度、定時器等,而和處理器相關的部分代碼放在 arch/*/kernal目錄下。
● lib:庫文件代碼,與處理器相關的庫函數代碼位於arch/*/lib目錄下。
● mm:內存管理代碼,和處理器相關的一部分代碼放在arch/*/mm 目錄下。
● net:網絡相關代碼,實現各種常見的網絡協議。
● scripts:用於配置內核的腳本文件。
● security:主要是一個SELinux 的模塊,安全、秘鑰相關代碼。
● sound:ALSA、OSS 音頻設備的驅動核心代碼和常用設備驅動。
● usr:實現用於打包和壓縮的cpio 等。
對於ARM架構的s3c2440,其體系相關的代碼在 arch/arm目錄下,在進行linux移植時,最先修改的就是此目錄下的文件。通過下圖了解一下內核代碼的層次結構:

