1. 程式人生 > >linux核心原始碼目錄結構分析

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

注:本文是學習朱老師課程整理的筆記,基於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核心原始碼目錄結構分析

注:本文是學習朱老師課程整理的筆記,基於linux2.6.35.7和九鼎X210BV3S開發板進行移植。 /arch。arch是architecture的縮寫。arch目錄下是好多個不同架構的CP

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

    3.1 Linux核心原始碼目錄如下:         /arch:目錄包括了所有和體系結構相關的核心程式碼。它下面的每一個子目錄都代表一種Linux支援的體系結構,例如i386就是Intel

linux 核心原始碼 目錄結構 介紹

注意:各個版本結構稍有不同,不要死板硬套。 arch arch:包含和硬體體系結構相關的程式碼,每種平臺佔一個相應的目錄。它下面的每個子目錄代表一種linux支援的體系結構。 和32位PC相關的程式碼存放在i386目錄下,其中比較重要的包括kernel(核心核心部分)、

linux核心原始碼目錄結構(2.6.35.7版本)

以下內容源於朱有鵬嵌入式課程的學習,如有侵權,請告知刪除。 1、單個檔案 (1)Kbuild,Kbuild是kernel build的意思,就是核心編譯的意思。這個檔案就是linux核心特有的核心編譯體系需要用到的檔案。 (2)Makefile,這個是linux核心的總m

Linux核心原始碼-目錄結構

一、目錄結構 Linux核心原始碼採用樹形結構進行組織,非常合理地把功能相關的檔案都放在同一個子目錄下,使得程式更具可讀性。 核心原始碼下載地址:www.kernel.org 1. arch目錄 arch是architecture的縮寫。核心所支援的每種CPU體系,在該目錄下都有對應的子目錄。每個CPU的子

WebRTC M64 原始碼目錄結構分析

WebRTC M64 原始碼目錄結構分析 WebRTC框架圖 目錄結構分析 api WebRTC 介面層。包括 DataChannel, MediaStream, SDP相關的介面。各瀏覽器都是通過該介面層呼叫的 WebRTC audio 存放音訊網路邏輯層

Android原始碼 目錄結構分析

Google提供的Android包含了原始android的目標機程式碼,主機編譯工具、模擬環境,下載的程式碼包經過解壓後(這裡是Android2.2的原始碼包),原始碼的第一層目錄結構如下: |– Makefile |– bionic

【Arch】Android 7 Nougat原始碼目錄結構分析

|- art // Android Runtime,一種App執行模式,區別於傳統的Dalvik虛擬機器,旨在提高Android系統的流暢性,包括以下幾個目錄。 |- benchmark // 程式測試基準。

如何確定Linux核心原始碼目錄即,$KBUILD的路徑

方法一:確定核心原始碼目錄通常==檔案系統中核心驅動模組的build路徑即/lib/modules/2.6.25-14.fc9.i686/build,這個build通常為連結檔案,連線到/usr/src/kernels/2.6.25-14.fc9.i686此方法較準確,通常

Linux核心原始碼目錄介紹

· Arch :arch子目錄包括了所有和體系結構相關的核心程式碼。它的每一個子目錄都代表一種支援的體系結構,例如i386就是關於intel cpu及與之相相容體系結構的子目錄。PC機一般都基於此目錄;  · Include: include子目錄包括編譯核心所需要的

Android原始碼目錄結構分析及淺談OS體系結構:

附上自己工作平臺程式碼目錄結構圖: Android原始碼結構: Android 2.1 |– Makefile       (全域性的Makefile) |– bionic (bionic C庫,Bion

《深入分析Linux核心原始碼》筆記:Linux 核心結構

一、Linux 核心在整個作業系統中的位置                      圖1 Linux核心在整個作業系統中的位置 1)使用者程序 使用者程序位於作業系統的最上層,它執行在作業系統上,成為一個作業系統中的一個程序。 2)系統呼叫介面 應用程式中,可以

MySQL原始碼分析核心內幕之1 -- 原始碼目錄結構

        一直以來都在使用MySQL來做資料庫開發,但是MySQL底層是如何實現大資料量的儲存對我來說一直是個未知數,並且現在很多公司都會使用MySQL來作為後端資料儲存工具,其簡單強大的特點深受廣大公司青睞。現在在公司開始接觸效能優化方面的任務,由於MySQL資料量

linux核心原始碼分析-夥伴系統

之前的文章已經介紹了夥伴系統,這篇我們主要看看原始碼中是如何初始化夥伴系統、從夥伴系統中分配頁框,返回頁框於夥伴系統中的。   我們知道,每個管理區都有自己的夥伴系統管理屬於這個管理區的頁框,這也說明了,在夥伴系統初始化時,管理區必須要已經存在(初始化完成)

《深入分析linux核心原始碼》筆記:linux 核心原始碼

一、Linux核心原始碼的結構 Linux 核心原始碼位於/usr/src/linux 目錄下。 include/目錄包含了建立核心程式碼時所需的大部分包含檔案,這個模組利用其他模組重建核心。 i

Linux核心原始碼分析--zImage出生實錄(Linux-3.0 ARMv7)

此文為兩年前為好友劉慶敏的書《嵌入式Linux開發詳解--基於AT91RM9200和Linux 2.6》中幫忙寫的章節的重新整理。如有雷同,純屬必然。經作者同意,將我寫的部分重新整理後放入blog中。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Linux核心原始碼情景分析-特殊檔案系統/proc

    由於proc檔案系統並不物理地存在於任何裝置上,它的安裝過程是特殊的。對proc檔案系統不能直接通過mount()來安裝,而要先由系統核心在核心初始化時自動地通過一個函式kern_mount()安裝一次,然後再由處理系統初始化的程序通過mount()安裝,實際上是"重

Linux原始碼目錄結構說明

3.3 核心原始碼目錄結構 瀏覽核心程式碼之前,有必要知道核心原始碼的整體分佈情況,按照慣例,核心程式碼安裝在/usr/src/linux目錄下,該目錄下的每一個子目錄都代表了一個特定的核心功能性子集,下面針對2.6.23版本進行簡單描述。 (1)Documentation。 這個目錄下面沒有核心程

Linux原始碼目錄結構Linux檔案系統目錄結構

學習Linux也有一段時間了,具體來整理一下Linux原始碼的目錄結構和檔案系統的目錄結構,以便加深記憶。一、Linux原始碼的目錄結構首先上一張截圖,如下所示:再看各個檔案的介紹,借用一下其他資源。arch:這個為目錄是架構相關,裡面存放了許多CPU架構,比如arm,x86

Linux核心原始碼情景分析筆記---對照4.2.5核心

/* * These routines also need to handle stuff like marking pages dirty * and/or accessed for architectures that don't do it in hardware