linux内核源码目录分析
/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:這個文檔提供如何報告問題的信息。
總結
以上是生活随笔為你收集整理的linux内核源码目录分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重磅!阿里首次全面公开展示AI布局(附布
- 下一篇: 这里有10个优质Python开源项目,来