2 Linux核心目錄概述

2021-10-09 07:07:40 字數 3786 閱讀 2754

arch目錄表示核心所支援的處理器架構,如經典的arm、x86,在編譯核心時要指定arch=arm

此資料夾包含塊裝置驅動程式的**,該目錄用於實現塊裝置的基本框架和塊裝置的i/o排程演算法。塊裝置是以資料塊方式接收和傳送的資料的裝置。資料塊都是一塊一塊的資料而不是持續的資料流。

這個資料夾包含許多加密演算法的源**。例如,「sha1_generic.c」這個檔案包含了sha1加密演算法的**。

此資料夾包含了核心資訊和其他許多檔案資訊的文字文件。如果開發者需要一些資訊,他們也許能在這裡找到所需要的資訊。

該目錄包含了驅動**。驅動是乙個控制硬體的軟體。例如,要讓計算機知道鍵盤並使其可用,鍵盤驅動是必要的。這個資料夾中存在許多資料夾。每個資料夾都以硬體的種類或者型號命名。例如,'bluetooth』包含了藍芽驅動程式的**。還有其他很明顯的驅動像scsi、usb和火線等。有些驅動程式可能會比較難找到。例如,操縱桿驅動不在』joystick』資料夾中,它們卻在./drivers/input/joystick。同樣鍵盤和滑鼠驅動也在這個input資料夾中。 'macintosh』包含了蘋果的硬體**。 'xen』包含了xen hypervisor**。(hypervisor是一種允許使用者在一台計算機上執行多個作業系統的軟體或硬體。這意味著在xen允許使用者在一台計算機上同時執行的兩個或兩個以上的linux系統。使用者還可以執行windows,solaris,freebsd或其他作業系統在linux系統上。)driver資料夾下還有許多其他的資料夾,但他們在這篇文章中無法一一枚舉。

fireware中包含了讓計算機讀取和理解從裝置發來的訊號的**。舉例來說,乙個攝像頭管理它自己的硬體,但計算機必須了解攝像頭給計算機傳送的訊號。linux系統會使用vicam韌體(firmware)來理解攝像頭的通訊。否則,沒有了韌體,linux系統將不知道如何處理攝像頭發來的資訊。另外,韌體同樣有助於將linux系統傳送訊息給該裝置。這樣linux系統可以告訴攝像頭重新調整或關閉攝像頭。

這是檔案系統的資料夾。理解和使用的檔案系統所需要的所有的**就在這裡。在這個資料夾裡,每種檔案系統都有自己的資料夾。例如,ext4檔案系統的**在ext4資料夾內。 在fs資料夾內,開發者會看到一些不在資料夾中的檔案。這些檔案用來控制整個檔案系統。例如,mount.h中會包含掛載檔案系統的**。檔案系統是以結構化的方式來儲存和管理的儲存裝置上的檔案和目錄。每個檔案系統都有自己的優點和缺點。這是由檔案系統的設計決定的。舉例來說,ntfs檔案系統支援的透明壓縮(當啟用時,會在使用者不知道的情況下自動壓縮儲存檔案)。大多數檔案系統缺乏此功能,但如果在fs資料夾裡編入相應的檔案,它們也有這種能力。

include包含了核心所需的各種標頭檔案.這個名字來自於c語言用"include"來在編譯時匯入標頭檔案。

init資料夾包含了核心啟動的處理**(initiation)。main.c是核心的核心檔案,這是用來銜接所有的其他檔案的源**主檔案。

ipc代表程序間通訊。----用於實現system v的程序間通訊(inter process communication,ipc)模組 . 此資料夾中的**是作為核心與程序之間的通訊層。核心控制著硬體,因此程式只能請求核心來執行任務。假設使用者有乙個開啟***托盤的程式。程式不直接開啟托盤,相反,該程式通知核心托盤應該被開啟。然後,核心給硬體傳送乙個訊號去開啟托盤。這些**同樣管理kill訊號。舉例來說,當系統管理員開啟程序管理器去關閉乙個已經鎖死的程式,這個關閉程式的訊號被稱為kill訊號。核心接收到訊號,然後核心會要求程式停止或直接把程序從記憶體和cpu中移除(取決於kill的型別)。命令列中的管道同樣用於程序間通訊。管道會告訴核心在某個記憶體頁上寫入輸出資料。程式或者命令得到的資料是來自記憶體頁上的某個給定的指標。

這個資料夾中的**控制核心本身。例如,如果乙個偵錯程式需要跟蹤問題,核心將使用這個資料夾中**來將核心指令通知偵錯程式跟蹤核心進行的所有動作。這裡也有跟蹤時間的**。在核心資料夾下有個"power"資料夾,這裡的**可以使計算機重新啟動、關機和掛起。

這個資料夾包含了核心需要引用的一系列核心庫檔案**。

mm資料夾中包含了記憶體管理**。記憶體並不是任意儲存在ram晶元上的。相反,核心小心地將資料放在ram晶元上。核心不會覆蓋任何正在使用或儲存重要資料的記憶體區域。

此資料夾包含了程式示例和正在編寫中的模組**。假設乙個新的模組引入了乙個想要的有用功能,但沒有程式設計師說它已經可以正常執行在核心上。那麼,這些模組就會移到這裡。這給了新核心程式設計師乙個機會通過這個資料夾來獲得幫助,或者選擇乙個他們想要協助開發的模組。

這個資料夾有核心編譯所需的指令碼。最好不要改變這個資料夾內的任何東西。否則,您可能無法配置或編譯核心。

這個資料夾是有關核心安全的**。它對計算機免於受到病毒和黑客的侵害很重要。否則,linux系統可能會遭到損壞。

這個資料夾中包含了音效卡驅動。------存放聲音系統架構相關**和具體音效卡的裝置驅動程式

這個資料夾中包含了和核心互動的工具。

還記得在以前的文章中提到vmlinuz和其他類似的檔案麼?這個資料夾中的**在核心編譯完成後建立這些檔案。----該目錄中的**為核心尚未完全啟動時執行使用者空間**提供了支援。

此資料夾包含了虛擬化**,它允許使用者一次執行多個作業系統。這與先前提到的xen是不同的。通過虛擬化,客戶機作業系統就像任何其他執行在linux主機的應用程式一樣執行。通過xen這樣的hypervisor(注:虛擬機器管理程式),兩個作業系統可以同時管理硬體。在虛擬化中,在客戶機作業系統上執行在linux核心上,而在hypervisor中,它沒有客戶系統並且所有的系統不互相依賴。

還有一些檔案在源**的根目錄下。它們會在下面列出。

許可和授權資訊。linux核心在gplv2許可證下授權。該許可證授予任何人有權免費去使用、修改、分發和共享源**和編譯**。然而,沒有人可以**源**。

貢獻者列表

這是乙個設定一些核心設定的指令碼。打個比方,這個指令碼設定乙個arch變數,這是開發者想要生成的核心支援的處理器型別。

這個指令碼會在開發人員配置核心的時候用到,這會在以後的文章中討論。

這是乙個目前維護者列表,他們的電子郵件位址,主頁,和他們負責開發和維護的核心的特定部分或檔案。當乙個開發者在核心中發現乙個問題,並希望能夠報告給能夠處理這個問題的維護者時,這是是很有用的。

這個指令碼是編譯核心的主要檔案。這個檔案將編譯引數和編譯所需的檔案和必要的資訊傳給編譯器。

這個文件提供給開發者想要知道的如何編譯核心的資訊。

這個文件提供如何報告問題的資訊。

linux核心目錄結構

分類 嵌入式 l arch目錄 arch 是architecture 的縮寫。核心所支援的每種 cpu體系,在該目錄下都有對應的子目錄。每個 cpu的子目錄,又進一步分解為 boot,mm,kernel 等子目錄,分別包含控制系統引導,記憶體管理,系統呼叫等。x86 英特爾 cpu及與之相相容體系結...

Linux核心目錄結構

arch 存放特定平台的晶元對linux核心程序排程 記憶體管理 中斷等支援 基於架構的具體實現,都應該在該目錄下尋找 block 塊裝置驅動程式i o排程 certs 證書 credits crypto 常用加密演算法 非對稱加密演算法rsa 對稱加密演算法aes 雜湊演算法 又稱hash演算法 ...

分析核心目錄

注 為學習朱有鵬課程的筆記 在根目錄裡kbuild kernel build核心編譯 arch目錄裡是不同架構的cpu block表示塊裝置,以扇區等進行整體訪問 不是以位元組進行訪問 幾乎可以認為塊裝置就是儲存裝置,外存 crypto裡面放了加密演算法的實現crc32 md5 init核心初始化 ...