linux学习笔记 linux内核6.0.2目录结构
一、linux內核目錄
| arch | 包含和硬件體系結構相關的代碼,每種平臺占一個相應的目錄,如i386、arm、arm64、powerpc、mips等。Linux內核目前已經支持30種左右的體系結構。在arch目錄下,存放的是各個平臺以及各個平臺的芯片對Linux內核進程調度、內存管理、中斷等的支持,以及每個具體的SoC和電路板的板級支持代碼。 |
| block | 塊設備驅動程序I/O調度。 |
| certs | 使系統密鑰環依賴于內置的 x509 解析器 |
| crypto | 常用加密和散列算法(如AES、SHA等),還有一些壓縮和CRC校驗算法。 |
| documentation | 內核各部分的通用解釋和注釋。 |
| drivers | 設備驅動程序,每個不同的驅動占用一個子目錄,如char、block、net、mtd、i2c等。 |
| fs | 所支持的各種文件系統,如EXT、FAT、NTFS、JFFS2等。 |
| include | 頭文件,與系統相關的頭文件放置在include/linux子目錄下。 |
| init | 內核初始化代碼。著名的start_kernel()就位于init/main.c文件中。 |
| io_uring | 其中包含最新的Linux IO接口io_uring,以及epoll等等 |
| ipc | 進程間通信的代碼。 |
| kernel | 內核最核心的部分,包括進程調度、定時器等,而和平臺相關的一部分代碼放在arch/*/kernel目錄下。 |
| lib | 庫文件代碼。 |
| mm | 內存管理代碼,和平臺相關的一部分代碼放在arch/*/mm目錄下。 |
| net | 網絡相關代碼,實現各種常見的網絡協議。 |
| Rust | Linux 內核中集成的第二語言。 |
| samples | 此文件夾包含了程序示例和正在編寫中的模塊代碼。假設一個新的模塊引入了一個想要的有用功能,但沒有程序員說它已經可以正常運行在內核上。那么,這些模塊就會移到這里。這給了新內核程序員一個機會通過這個文件夾來獲得幫助,或者選擇一個他們想要協助開發的模塊。 |
| scripts | 用于配置內核的腳本文件。 |
| security | 主要是一個SELinux的模塊。 |
| sound | ALSA、OSS音頻設備的驅動核心代碼和常用設備驅動。 |
| tools | 這個文件夾中包含了和內核交互的工具。 |
| usr | 還記得在以前的文章中提到vmlinuz和其他類似的文件么?這個文件夾中的代碼在內核編譯完成后創建這些文件。----該目錄中的代碼為內核尚未完全啟動時執行用戶空間代碼提供了支持 |
| virt | 此文件夾包含了虛擬化代碼,它允許用戶一次運行多個操作系統。這與先前提到的Xen是不同的。通過虛擬化,客戶機操作系統就像任何其他運行在Linux主機的應用程序一樣運行。通過Xen這樣的hypervisor(注:虛擬機管理程序),兩個操作系統可以同時管理硬件。在虛擬化中,在客戶機操作系統上運行在Linux內核上,而在hypervisor中,它沒有客戶系統并且所有的系統不互相依賴。 |
二、其它相關文件
還有一些文件在源代碼的根目錄下。它們會在下面列出。
COPYING?--許可和授權信息。Linux內核在GPLv2許可證下授權。該許可證授予任何人有權免費去使用、修改、分發和共享源代碼和編譯代碼。然而,沒有人可以出售源代碼。
CREDITS?-- 貢獻者列表
Kbuild?-- 這是一個設置一些內核設定的腳本。打個比方,這個腳本設定一個ARCH變量,這是開發者想要生成的內核支持的處理器類型。
Kconfig?-- 這個腳本會在開發人員配置內核的時候用到,這會在以后的文章中討論。
MAINTAINERS?-- 這是一個目前維護者列表,他們的電子郵件地址,主頁,和他們負責開發和維護的內核的特定部分或文件。當一個開發者在內核中發現一個問題,并希望能夠報告給能夠處理這個問題的維護者時,這是是很有用的。
Makefile?-- This script is the main file that is used to compile the kernel. This file passes parameters to the compiler as well as the list of files to compile and any other necessary information. 這個腳本是編譯內核的主要文件。這個文件將編譯參數和編譯所需的文件和必要的信息傳給編譯器。
README?-- 這個文檔提供給開發者想要知道的如何編譯內核的信息。
REPORTING-BUGS?-- 這個文檔提供如何報告問題的信息。
三、主要的二級目錄
1、ARCH目錄
????????該目錄中每個子目錄都與某種架構體系對應,用于存放系統結構相關代碼,向平臺無關的系統核心模塊提供所需的功能接口。
????????每個體系結構對應的子目錄下通常至少包含以下幾個子目錄:????
????????Kernel目錄
????????用于存放特定體系結構特有信號量的實現代碼和對稱多處理器(Symmetric MultiProccessing,簡稱SMP)相關模塊。
????????Lib目錄
????????用于存放以來依賴當前體系結構的輔助功能,如利用當前體系結構特性實現的strlen和memcpy內存操作函數;與通用的實現方法相比,他們的開銷小、更加高效。?
????????Mm目錄
????????用于存放體系架構特定的內存管理模塊,包括內存的初始化、頁表管理等內容。
????????Boot目錄
????????該目錄中包含了當前平臺上系統引導過程使用的部分或全部代碼。這部分代碼以來當前平臺,用于完成向系統內存裝載內核鏡像的工作。
| alpha | Alpha 處理器最早由美國DEC 公司設計制造,在Compaq (康柏)公司收購DEC 之后,Alpha 處理器繼續得到發展,并且應用于許多高檔的Compaq 服務器上,HP (惠普)收購的Compaq ,Alpha 便為HP(惠普)所有,不過HP (惠普)已經放棄發展alpha 處理器。 |
| arc | ARC架構處理器是Synopsys公司推出的32位RISC系列IP。ARC處理器的IP產品線覆蓋了從低端到高端各個領域。據說ARC是除了ARM之外的全球第二大嵌入式處理器IP供應商。 |
| arm | Arm 系列處理器 是英國Arm 公司設計的主流嵌入式32 位RISC 處理器,Arm 公司不直接生產Arm 處理器,而是采用IP 授權的方式由第3 方開發生產,著名的公司如Ti 、Samsung 等都有出品Arm 處理器。目前在手機領域廣泛應用。 |
| arm64 | 獨立的文件夾,和arm文件夾區分開來了。 |
| csky | C-SKY處理器架構是由杭州中天微系統有限公司(以下簡稱中天微)研發的具有自主知識產權的32位嵌入式CPU架構。采用此架構的處理器具有低功耗、高性能、高代碼密度、易使用等特點。2018年4月,阿里巴巴集團全資收購中天微。 |
| hexagon | Hexagon是高通公司設計的 VLIW DSP 架構。它在許多 Qualcomm 的 SoC 中用作音頻、傳感器或計算協處理器,并在許多 Qualcomm 調制解調器中使用。通常運行某種實時操作系統,針對低功耗和小芯片面積進行了優化。 |
| ia64 | IA-64(英特爾安騰架構)是64 位英特爾微處理器安騰家族的指令集架構(ISA) 。主要應用于服務器,而非個人PC。Ia64 處理器是美國英特爾開發的面向服務器應用的64 位處理器, 由于具有64 位尋址能力,它能夠使用100 萬TB 的地址空間,足以運算企業級或超大規模的數據庫任務;64 位寬的寄存器可以使CPU 浮點運算達到非常高的精度。 |
| loongarch | 大名鼎鼎的龍芯。 |
| m68k | M68k 處理器是美國 Motorola 公司開發的高性能處理器, 具有高性價比、高集成度等特點,在工業自動化設備、控制設備、醫療儀器系統、安全系統等領域多有應用。現在為Freescale 公司所有, 風頭已不敵PowerPC 處理器。 |
| microblaze | Microblaze 處理器是美國 Xilinx 公司提供的嵌入在其FPGA 芯片上的32 位RISC 軟核。 它具有運算能力強、外圍接口配置靈活等特點,集成在 FPGA之中,可以和FPGA 實現協同設計,具備軟硬件可配置的靈活性。 |
| mips | Mips 處理器 是由美國斯坦福大學Hennessy 教授領導的研究小組研制出來, 現為Mips 公司擁有,和Arm 處理器一樣采用IP 授權的方式由第3 方開發生產。著名的公司如Broadcom 、Nxp 等都有出品Mips處理器。我國的龍芯CPU 也是采用Mips 體系結構。 |
| nios2 | Nios II是專為Altera系列現場可編程門陣列(FPGA) 集成電路設計的32 位嵌入式處理器架構。Nios II 對原始 Nios 架構進行了許多增強,使其更適用于更廣泛的嵌入式計算應用,從數字信號處理(DSP) 到系統控制。Nios II 是 Altera于 2000 年推出的首款可配置16 位嵌入式處理器Nios的繼任者。? |
| OpenRisc | OpenRisc是OpenCores組織提供的基于GPL協議的開放源代碼的RISC(精簡指令集計算機)處理器。有人認為其性能介于ARM7和ARM9之間,適合一般的嵌入式系統使用。最重要的一點是OpenCores組織提供了大量的開放源代碼IP核供研究人員使用,因此對于一般的開發單位具有很大的吸引力。 |
| parisc | Parisc 處理器是由 HP (惠普)開發設計的處理器,主要用于HP (惠普)公司的服務器中,目前HP(惠普)已經放棄 Parisc 處理器的開發,不過一些Parisc 處理器技術已經融合到ia64 處理器之中。 |
| powerpc | Powerpc 處理器是由美國IBM 、Apple 、Motorola 聯合開發的處理器,Powepc 處理器在IBM 的服務器、Apple 的MAC 電腦中都有應用。不過現在多應用在網絡設備、視頻系統、工業系統等領域。Sony PS3 游戲機Cell 處理器也是Powerpc 體系結構。 |
| riscv | RISC-V(發音為“risk-5” :其中 5 是指加州大學伯克利分校自 1981 年以來開發的RISC 架構的代數)是一種開放標準指令集架構( ISA) 基于已建立的 RISC 原則。與大多數其他 ISA 設計不同,RISC-V 是根據開源許可提供的,使用時不需要付費。許多公司正在提供或已經宣布推出 RISC-V 硬件,提供支持 RISC-V 的開源操作系統,并且該指令集在多個流行的軟件工具鏈中得到支持。 |
| s390 | S390 處理器是由美國IBM 開發的面向大型機應用的處理器 。 |
| sh | Sh 處理器又稱 SuperH 處理器 ,最先由日本 Hitachi 公司開發,后由 Hitachi 及 ST Microelectronics 兩家公司共同開發,2003 年,瑞薩科技從 Hitachi 公司繼承到擁有權。Sh 屬于MCU 型的處理器。 |
| sparc | Sparc 處理器是由美國SUN 和TI 公司共同開發的RISC 微處理器,最突出的特點就是它的可擴展性。SUN 公司將它做為高端處理器應用到服務器產品。 |
| um | 全名叫user mode,它不是一種實體的cpu架構,這個架構的linux內核可以像 hello world程序一樣運行,運行于linux之上用戶空間中,取名User Mode Linux,簡寫UM,AMD 和 英特爾 的電腦上都可以運行UM linux 內核。 |
| x86 | X86 處理器是由美國Intel 推出的 復雜指令集(cisc ) 處理器,廣泛應用在PC 電腦領域和服務器領域,在工業控制領域也有應用。目前主要是Intel、AMD 、VIA 在開發x86 體系結構的處理器。 |
| xtensa | Xtensa 處理器是由美國 Tensilica (泰思立達)公司開發的可配置及可擴展的微處理器 |
? ? ? ? 如果對比以前的linux內核,這部分不是一直增加的,很多架構都被刪掉了,從技術角度充分體現了市場的變化。
2、drivers目錄
? ? ? ? 許多驅動程序是通用驅動程序,這意味著一個通用鍵盤驅動可以使內核可以處理幾乎所有的鍵盤。然而,有些驅動是專用驅動,像蘋果和Commodore就分別為蘋果電腦和Amiga系統制造了專門的硬件。Linux內核中已經包含了許多諸如智能手機、蘋果、Amiga系統、PS3、Android平板,和許多其他設備的驅動程序。
????????驅動程序是使內核能夠溝通和操作硬件或協議(規則和標準)的程序。沒有驅動程序,內核不知道如何與硬件溝通或者處理協議(內核實際上先發送指令給BIOS,然后BIOS傳給硬件)。 Linux的內核代碼在驅動程序文件夾中以源代碼的形式包含了許多驅動程序。驅動文件夾中的每個文件夾會在下面說明,有助于在配置和編譯內核時了解驅動程序。否則,用戶可能會在編譯時加入不必要的或者漏掉重要的驅動。驅動代碼通常會包含一個單行注釋來指出驅動的目的。 比如,tc的驅動代碼,有一行的注釋說是用于TURBOchannel總線。由于這些文檔,用戶應該看驅動前幾行的注釋來了解它們的用途。
注意有些設備的驅動不在本目錄中。比如,射頻驅動在net和media文件夾下。
| accessibility | 這些驅動提供支持一些輔助設備。在Linux 3.9.4中,這個文件夾中只有一個驅動就是盲文設備驅動。 |
| acpi | 高級配置和電源接口(ACPI : Advanced Configuration and Power Interface)驅動用來管理電源使用。 |
| amba | 高級微控制器總線架構(AMBA : Advanced Microcontroller Bus Architecture)是與片上系統(SoC)的管理和互連的協議。SoC是一塊包含許多或所有必要的計算機組件的芯片。這里的AMBA驅動讓內核能夠運行在這上面?! ?/p> |
| android | Binder 在 Android 中用于進程之間的通信和遠程方法調用。 |
| ata | 該目錄包含PATA和SATA設備的驅動程序。串行ATA(SATA)是一種連接主機總線適配器到像硬盤那樣的存儲器的計算機總線接口。并行ATA(PATA)用于連接存儲設備,如硬盤驅動器,軟盤驅動器,光盤驅動器的標準。PATA就是我們所說的IDE。 |
| atm | 異步通信模式(ATM : Asynchronous Transfer Mode)是一種通信標準。這里有各種接到PCI橋的驅動(他們連接到PCI總線)和以太網控制器(控制以太網通信的集成電路芯片)。 |
| auxdisplay | 這個文件夾提供了三個驅動。LCD 幀緩存(framebuffer)驅動、LCD控制器驅動和一個LCD驅動。這些驅動用于管理液晶顯示器 —— 液晶顯示器會在按壓時顯示波紋。注意:按壓會損害屏幕,所以請不要用力戳LCD顯示屏?! ?/p> |
| base | 這是個重要的目錄包含了固件、系統總線、虛擬化能力等基本的驅動?! ?/p> |
| bcma | 這些驅動用于使用基于AMBA協議的總線。AMBA是由博通公司開發。
|
| block | 這些驅動提供對塊設備的支持,像軟驅、SCSI磁帶、TCP網絡塊設備等等。 |
| bluetooth | 藍牙是一種安全的無線個人區域網絡標準(PANs)。藍牙驅動就在這個文件夾,它允許系統使用各種藍牙設備。例如,一個藍牙鼠標不用電纜,并且計算機有一個電子狗(小型USB接收器)。Linux系統必須能夠知道進入電子狗的信號,否則藍牙設備無法工作。 |
| bus | 這個目錄包含了三個驅動。一個轉換ocp接口協議到scp協議。一個是設備間的互聯驅動,第三個是用于處理互聯中的錯誤處理。 |
| cdrom | 這個目錄包含兩個驅動。一個是cd-rom,包括DVD和CD的讀寫。第二個是gd-rom(只讀GB光盤),GD光盤是1.2GB容量的光盤,這像一個更大的CD或者更小的DVD。GD通常用于世嘉游戲機中。 |
| char | 字符設備驅動就在這里。字符設備每次傳輸數據傳輸一個字符。這個文件夾里的驅動包括打印機、PS3閃存驅動、 東芝SMM驅動和隨機數發生器驅動等。 |
| clk | 這些驅動用于系統時鐘。 |
| clocksource | 這些驅動用于作為定時器的時鐘。 |
| comedi | 應該是數據采集設備相關的驅動。 |
| connector | 這些驅動使內核知道當進程fork并使用proc連接器更改UID(用戶ID)、GID(組ID)和SID(會話ID)。內核需要知道什么時候進程fork(CPU中運行多個任務)并執行。否則,內核可能會低效管理資源。 |
| counter | 計數器設備在各行各業中很普遍。這些設備的普遍存在需要一個通用的接口和交互和暴露的標準。此驅動程序 API 嘗試通過引入通用計數器接口來解決在現有計數器設備驅動程序中發現的重復代碼問題。通用計數器接口使驅動程序能夠支持和公開計數器設備中存在的一組通用組件和功能。 |
| cpufreq | 這些驅動改變CPU的電源能耗?! ?/p> |
| cpuidle | 這些驅動用來管理空閑的CPU。一些系統使用多個CPU,其中一個驅動可以讓這些CPU負載相當。 |
| crypto | 這些驅動提供加密功能。 |
| cxl | CXL (Compute Express Link) Devices Support,CXL 是一種與 PCI Express 電氣兼容的總線,但在該信令上分層三層協議(CXL.io、CXL.cache 和CXL.mem)。 |
| dax | 直接訪問差異化內存,通過支持 mmap(2) 的字符設備支持對差異化(持久性、帶寬、延遲...)內存的原始訪問。 |
| dca | 直接緩存訪問(DCA : Direct Cache Access)驅動允許內核訪問CPU緩存。CPU緩存就像CPU內置的RAM。CPU緩存的速度比RAM更快。然而,CPU緩存的容量比RAM小得多。CPU在這個緩存系統上存儲了最重要的和執行的代碼。 |
| devfreq | 這個驅動程序提供了一個通用的動態電壓和頻率調整(DVFS : Generic Dynamic Voltage and Frequency Scaling)框架,可以根據需要改變CPU頻率來節約能源。這就是所謂的CPU節能。 |
| dio | 數字輸入/輸出(DIO :Digital Input/Output)總線驅動允許內核可以使用DIO總線。 |
| dma | 直接內存訪問(DMA)驅動允許設備無需CPU直接訪問內存。這減少了CPU的負載。 |
| dma-buf | 同步文件框架通過用戶空間添加了顯式同步。 它允許通過同步文件 fds 向/從用戶空間發送/接收“struct dma_fence”對象,以便通過用戶空間組件在驅動程序之間進行同步。 它是從安卓移植過來的。第一個也是主要的用戶是其中圍欄與緩沖區相關聯的圖形。 當一個作業被提交到 GPU 時,一個柵欄被附加到緩沖區并通過用戶空間傳輸,例如使用同步文件 fds 到 DRM 驅動程序。 更多詳細信息,請參見 Documentation/driver-api/sync_file.rst。 |
| edac | 錯誤檢測和校正( Error Detection And Correction)驅動幫助減少和糾正錯誤。 |
| eisa | 擴展工業標準結構總線(Extended Industry Standard Architecture)驅動提供內核對EISA總線的支持。 |
| extcon | 外部連接器(EXTernal CONnectors)驅動用于檢測設備插入時的變化。例如,extcon會檢測用戶是否插入了USB驅動器。 |
| firewire | 這些驅動用于控制蘋果制造的類似于USB的火線設備。 |
| firmware | 這些驅動用于和像BIOS(計算機的基本輸入輸出系統固件)這樣的設備的固件通信。BIOS用于啟動操作系統和控制硬件與設備的固件。一些BIOS允許用戶超頻CPU。超頻是使CPU運行在一個更快的速度。CPU速度以MHz(百萬赫茲)或GHz衡量。一個3.7 GHz的CPU的的速度明顯快于一個700Mhz的處理器。 |
| fpga | 如果您想支持從內核配置 FPGA。 FPGA 框架添加了 FPGA 管理器類和 FPGA 管理器驅動程序。???????? |
| fsi | FRU 支持接口 - 是一種簡單的總線,用于對基于 POWER 的硬件進行低級訪問。???????? |
| gnss | 如果您有 GNSS 接收器(例如 GPS 接收器)。 |
| gpio | 通用輸入/輸出(GPIO :General Purpose Input/Output)是可由用戶控制行為的芯片的管腳。這里的驅動就是控制GPIO。 |
| gpu | 這些驅動控制VGA、GPU和直接渲染管理(DRM :Direct Rendering Manager )。VGA是640*480的模擬計算機顯示器或是簡化的分辨率標準。GPU是圖形處理器。DRM是一個Unix渲染系統。 |
| greybus | 此選項啟用 Greybus 驅動程序核心。 Greybus 是一種硬件協議,旨在為 Unipro 提供一個健全的應用層。 它最初是為 ARA 項目設計的,一個模塊電話系統,但已經出現在其他電話中,并且可以通過其他總線隧道來控制硬件設備。 |
| hid | 這驅動用于對USB人機界面設備的支持。 |
| hsi | 這個驅動用于內核訪問像Nokia N900這樣的蜂窩式調制解調器 |
| hte | 硬件時間戳引擎 (HTE) 支持。一些設備提供了一個硬件時間戳引擎,可以實時對某些設備線路/信號進行時間戳。 它為需要準確時間戳事件且抖動較少的應用程序帶來了好處。 該框架為此類 HTE 提供者和消費者設備提供了通用接口。 |
| hv | 這個驅動用于提供Linux中的鍵值對(KVP :Key Value Pair)功能。 |
| hwmon | 硬件監控驅動用于內核讀取硬件傳感器上的信息。比如,CPU上有個溫度傳感器。那么內核就可以追蹤溫度的變化并相應地調節風扇的速度。 |
| hwspinlock | 硬件轉鎖驅動允許系統同時使用兩個或者更多的處理器,或使用一個處理器上的兩個或更多的核心。???????? |
| hwtracing | 硬件跟蹤支持 |
| i2c | I2C驅動可以使計算機用I2C協議處理主板上的低速外設。系統管理總線(SMBus :System Management Bus)驅動管理SMBus,這是一種用于輕量級通信的two-wire總線。 |
| i3c | I3C 是 MIPI 聯盟標準化的串行協議。它應該與 I2C 向后兼容,同時提供對高速傳輸的支持和本地中斷支持,而無需額外的引腳。I3C 協議還對從設備類型進行了標準化,主要用于與傳感器通信。 |
| idle | 這個驅動用來管理Intel處理器的空閑功能。 |
| iio | 工業I/O核心驅動程序用來處理數模轉換器或模數轉換器。 |
| infiniband | Infiniband是在企業數據中心和一些超級計算機中使用的一種高性能的端口。這個目錄中的驅動用來支持Infiniband硬件。 |
| input | 這里包含了很多驅動,這些驅動都用于輸入處理,包括游戲桿、鼠標、鍵盤、游戲端口(舊式的游戲桿接口)、遙控器、觸控、耳麥按鈕和許多其他的驅動。如今的操縱桿使用USB端口,但是在上世紀80、90年代,操縱桿是插在游戲端口的。 |
| interconnect | 支持片上互連的管理。該框架旨在提供一個通用接口來管理 SoC 中的互連。 |
| iommu | 輸入/輸出內存管理單元(IOMMU :Input/Output Memory Management Unit)驅動用來管理內存管理單元中的IOMMU。IOMMU連接DMA IO總線到內存上。IOMMU是設備在沒有CPU幫助下直接訪問內存的橋梁。這有助于減少處理器的負載。 |
| ipack | Ipack代表的是IndustryPack。 這個驅動是一個虛擬總線,允許在載體和夾板之間操作。 |
| irqchip | 這些驅動程序允許硬件的中斷請求(IRQ)發送到處理器,暫時掛起一個正在運行的程序而去運行一個特殊的程序(稱為一個中斷處理程序)。 |
| isdn | 這些驅動用于支持綜合業務數字網(ISDN),這是用于同步數字傳輸語音、視頻、數據和其他網絡服務使用傳統電話網絡的電路的通信標準。 |
| leds | 用于LED的驅動。 |
| macintosh | 蘋果設備的驅動在這個文件夾里。 |
| mailbox | 這個文件夾(pl320-pci)中的驅動用于管理郵箱系統的連接。 |
| mcb | MCB(MEN Chameleon Bus)是一種特定于 MEN Mikroelektronik FPGA 設備的總線。 它用于識別 FPGA 中基于 MCB 的 IP 核,并為實例化這些設備的驅動程序提供必要的框架。 |
| md | 多設備驅動用于支持磁盤陣列,一種多塊硬盤間共享或復制數據的系統。 |
| media | 媒體驅動提供了對收音機、調諧器、視頻捕捉卡、DVB標準的數字電視等等的支持。驅動還提供了對不同通過USB或火線端口插入的多媒體設備的支持。 |
| memory | 支持內存的重要驅動。 |
| memstick | 這個驅動用于支持Sony記憶棒。 |
| message | 這些驅動用于運行LSI Fusion MPT(一種消息傳遞技術)固件的LSI PCI芯片/適配器。LSI大規模集成,這代表每片芯片上集成了幾萬晶體管、 |
| mfd | 多用途設備(MFD)驅動提供了對可以提供諸如電子郵件、傳真、復印機、掃描儀、打印機功能的多用途設備的支持。這里的驅動還給MFD設備提供了一個通用多媒體通信端口(MCP)層。 |
| misc | 這個目錄包含了不適合在其他目錄的各種驅動。就像光線傳感器驅動。 |
| mmc | MMC卡驅動用于處理用于MMC標準的閃存卡。 |
| most | 該驅動程序至少需要一個額外的組件來啟用來自用戶空間的所需訪問(例如字符設備),并且需要一個與網絡控制器的硬件接口(例如 USB)相匹配的組件。 如果您想通過 USB 連接到網絡收發器。 |
| mtd | 內存技術設備(MTD :Memory technology devices)驅動程序用于Linux和閃存的交互,這就就像一層閃存轉換層。其他塊設備和字符設備的驅動程序不會以閃存設備的操作方式來做映射。盡管USB記憶卡和SD卡是閃存設備,但它們不使用這個驅動,因為他們隱藏在系統的塊設備接口后。這個驅動用于新型閃存設備的通用閃存驅動器驅動。 |
| mux | 多路復用器設備?MUX_ADG792A、MUX_ADGS1408、MUX_GPIO、MUX_MMIO |
| net | 網絡驅動提供像AppleTalk、TCP和其他的網絡協議。這些驅動也提供對調制解調器、USB 2.0的網絡設備、和射頻設備的支持。 |
| nfc | 這個驅動是德州儀器的共享傳輸層之間的接口和NCI核心。 |
| ntb | 不透明的橋接驅動提供了在PCIe系統的不透明橋接。PCIe是一種高速擴展總線標準。 |
| nubus | NuBus是一種32位并行計算總線。用于支持蘋果設備。 |
| nvdimm | 對非易失性存儲設備的通用支持,包括 ACPI-6-NFIT 定義的資源。 在定義 NFIT 或以其他方式可以發現 NVDIMM 資源的平臺上,注冊 libnvdimm 總線以通告 PMEM(持久內存)命名空間 (/dev/pmemX)。 PMEM 命名空間是指可能跨越多個 DIMM 并支持 DAX 的內存資源(請參閱 CONFIG_DAX)。 |
| nvme | NVMe支持,NVMe標準的延時只有AHCI的一半不到。 |
| nvmem | 支持 NVMEM(非易失性存儲器)設備,如 EEPROM、EFUSES... 該框架旨在為來自 Linux 內核和用戶空間的 NVMEM 提供通用接口。 |
| of | 此驅動程序提供設備樹中創建、訪問和解釋程序的OF助手。設備樹是一種數據結構,用于描述硬件。 |
| opp | SOC 有一組標準的元組,由設備將支持每個電壓域的頻率和電壓對組成。 這稱為操作性能點或 OPP。 OPP 的實際定義因同一器件系列中的硅而異。 |
| parisc | 這些驅動用于HP生產的PA-RISC架構設備。PA-RISC是一種特殊指令集的處理器。 |
| parport | 并口驅動提供了Linux下的并口支持。 |
| pci | 這些驅動提供了PCI總線服務。 |
| pcmcia | 這些是筆記本的pc卡驅動 |
| peci | 平臺環境控制接口 (PECI) 是一個接口,它為來自外部監控或控制設備的英特爾處理器和芯片組組件提供通信通道。 |
| perf | 性能監視器支持 |
| phy | 該框架旨在為內核中的 PHY 設備提供通用接口。 該層將具有通用 API,phy 驅動程序可以通過該 API 使用 phy 框架創建 PHY,并且 phy 用戶可以獲得對 PHY 的引用。 這個框架的所有用戶都應該選擇這個配置。 |
| pinctrl | 這些驅動用來處理引腳控制設備。引腳控制器可以禁用或啟用I/O設備。 |
| platform | 這個文件夾包含了不同的計算機平臺的驅動像Acer、Dell、Toshiba、IBM、Intel、Chrombooks等等。 |
| pnp | 即插即用驅動允許用戶在插入一個像USB的設備后可以立即使用而不必手動配置設備。 |
| power | 電源驅動使內核可以測量電池電量,檢測充電器和進行電源管理。 |
| powercap | 功率上限 sysfs 接口允許內核子系統以一致的方式向用戶空間公開功率上限設置。 通常,它由多種控制類型組成,這些控制類型確定可以公開哪些設置,以及代表系統中可能受到功率限制的部分的功率區域。 |
| pps | Pulse-Per-Second驅動用來控制電流脈沖速率。這用于計時?! ?/p> |
| ps3 | 這是Sony的游戲控制臺驅動- PlayStation3。 |
| ptp | 圖片傳輸協議(PTP)驅動支持一種從數碼相機中傳輸圖片的協議。 |
| pwm | 脈寬調制(PWM)驅動用于控制設備的電流脈沖。主要用于控制像CPU風扇。 |
| rapidio | RapidIO驅動用于管理RapidIO架構,它是一種高性能分組交換,用于電路板上交互芯片的交互技術,也用于互相使用底板的電路板。 |
| ras | 可靠性、可用性和可維護性 (RAS) 是一個計算機硬件工程術語。 設計有更高級別 RAS 的計算機具有多種功能,可保護數據完整性并幫助它們長時間保持可用而不會出現故障。 |
| regulator | 校準驅動用于校準電流、溫度、或其他可能系統存在的校準硬件。----用于控制系統中某些設備的電壓電流供應 |
| remoteproc | 這些驅動用來管理遠程處理器。 |
| reset | 通用重置控制器支持。 該框架旨在通過 GPIO 或 SoC 內部復位控制器模塊抽象設備復位處理。 |
| rpmsg | 這個驅動用來控制支持大量驅動的遠程處理器通訊總線(rpmsg)。這些總線提供消息傳遞設施,促進客戶端驅動程序編寫自己的連接協議消息。----該基礎架構允許主處理器上的 Linux 操作系統管理遠程處理器上遠程軟件環境的生命周期和通信-用于在 AMP 環境中的操作系統之間實現 IPC 的 rpmsg 組件和 API |
| rtc | 實時時鐘(RTC)驅動使內核可以讀取時鐘。 |
| s390 | 用于31/32位的大型機架構的驅動。 |
| sbus | 用于管理基于SPARC的總線驅動。 |
| scsi | 允許內核使用SCSI標準外圍設備。例如,Linux將在與SCSI硬件傳輸數據時使用SCSI驅動。 |
| sh | 該驅動用于支持SuperHway總線。 |
| siox? ? | SIOX 代表串行輸入輸出擴展,是 Eckelmann AG 發明的同步總線系統。 它用于商業和工業制冷的控制和遠程監控系統,以驅動額外的 I/O 單元。 |
| slimbus | SLIMbus 是片上系統和音頻編解碼器以及典型嵌入式系統中的其他外圍組件之間的標準接口。 |
| soc | SOC(片上系統)特定驅動程序 |
| soundwire | SoundWire 是 MIPI 聯盟批準的帶有數據和時鐘線的 2 針接口。 SoundWire 用于傳輸通常與音頻功能相關的數據。 SoundWire 接口經過優化,可將音頻設備集成到移動或移動系統中。 |
| spi | 這些驅動處理串行設備接口總線(SPI),它是一個在在全雙工下運行的同步串行數據鏈路標準,。全雙工是指兩個設備可以同一時間同時發送和接收信息。雙工指的是雙向通信。設備在主/從模式下通信(取決于設備配置)。 |
| spmi | SPMI(系統電源管理接口)是基帶和應用處理器與電源管理集成電路 (PMIC) 之間的兩線串行接口。 |
| ssb | ssb(Sonics Silicon Backplane)驅動提供對在不同博通芯片和嵌入式設備上使用的迷你總線的支持。 |
| staging | 該目錄含有許多子目錄。這里所有的驅動還需要在加入主內核前經過更多的開發工作。 |
| target | SCSI設備驅動 |
| tc | 這些驅動用于TURBOchannel,TURBOchannel是數字設備公司開發的32位開放總線。這主要用于DEC工作站。 |
| tee | 實現了一個面向可信執行環境 (TEE) 的通用接口。 |
| thermal | thermal驅動使CPU保持較低溫度。---Linux溫控框架 |
| thunderbolt | USB4 和 Thunderbolt 驅動程序。 USB4 是基于 Thunderbolt 3 協議的公共規范。 如果您想在 Apple 硬件或配備 Intel Falcon Ridge 或更新版本的 PC 上熱插拔符合 Thunderbolt 和 USB4 的設備,則需要此驅動程序。 |
| tty | tty驅動用于管理物理終端連接。 |
| ufs | 啟用對 UFS(通用閃存)主機控制器的支持。 UFS 主機控制器是一種電子元件,能夠與 UFS 卡通信。 UFS 主機控制器發生在 智能手機、筆記本電腦、數碼相機以及汽車中。 內核模塊將被稱為 ufshcd。 |
| uio | 該驅動允許用戶編譯運行在用戶空間而不是內核空間的驅動。這使用戶驅動不會導致內核崩潰。-----運行在用戶空間的IO技術 |
| usb | USB設備允許內核使用USB端口。閃存驅動和記憶卡已經包含了固件和控制器,所以這些驅動程序允許內核使用USB接口和與USB設備。 |
| vdpa | 啟用此模塊以支持使用符合 virtio 規范和供應商特定控制路徑的數據路徑的 vDPA 設備。 |
| vfio | 允許設備訪問用戶空間的VFIO驅動。----用戶態驅動框架 |
| vhost? | 這是用于宿主內核中的virtio服務器驅動。用于虛擬化中?! ?/p> |
| video? | 這是用來管理顯卡和監視器的視頻驅動。 |
| virt? | 這些驅動用來虛擬化。 |
| virtio? | 這個驅動用來在虛擬PCI設備上使用virtio設備。用于虛擬化中。 |
| vlynq? | 這個驅動控制著由德州儀器開發的專有接口。這些都是寬帶產品,像WLAN和調制解調器,VOIP處理器,音頻和數字媒體信號處理芯片。 |
| w1? | 這些驅動用來控制one-wire總線。 |
| watchdog? | 該驅動管理看門狗定時器,這是一個可以用來檢測和恢復異常的定時器。 |
| xen? | 該驅動是Xen管理程序系統。這是個允許用戶運行多個操作系統在一臺計算機的軟件或硬件。這意味著xen的代碼將允許用戶在同一時間的一臺計算機上運行兩個或更多的Linux系統。用戶也可以在Linux上運行Windows、Solaris、FreeBSD、或其他操作系統。 |
| zorro? | 該驅動提供Zorro Amiga總線支持。 |
3、fs目錄
? ? ? ? 未完
4、kernel目錄
????????未完
5、lib目錄
????????未完
6、net目錄
????????未完
7、security目錄
? ? ? ? Linux內核是所有Linux系統的核心。如果有任何惡意代碼控制或破害了內核的任何一部分,那么系統會嚴重受損,文件可能被刪除或損壞,私人信息可能被盜等等。很明顯,保持內核安全涉及到用戶的最大利益。值得慶幸的是,由于Linux內核極其安全,Linux是一個非常安全的系統。在用戶比例上,Linux病毒比Windows病毒更少,并且Linux用戶比Windows用戶個人更少感染病毒。(這就是為什么許多公司使用Linux來管理他們的服務器的一個原因。)
AppArmor:
????????最初是由Immunix寫的安全模塊。AppArmor限制了程序的能力。AppArmor使用文件路徑來跟蹤程序限制。許多Linux管理員稱AppArmor是最容易配置的安全模塊。然而,而許多Linux用戶覺得這個模塊與其它的替代品相比很糟糕。
????????SELinux:
????????安全增強Linux(SELinux)是AppArmor的替代品,它最初由美國國家安全局開發(NSA)。SELinux自從2.6版本就進入內核主分支中。SELinux是限制修改內核和用戶空間的工具。SELinux給可執行文件(主要是守護進程和服務端程序)最小特權去完成它們的任務。SELinux也可以用來控制用戶權限。SELinux不像AppArmor那樣使用文件路徑,而SELinux在追蹤權限時使用文件系統去標記可執行文件。因為SElinux本身使用文件系統管理可執行文件,所以SELinux不能像AppArmor那樣對整個文件系統提供保護。
注意:守護進程是在后臺運行的程序
注意:雖然在內核中有AppArmor、SELinux及其它安全模塊,但只能有一個安全模塊被激活。
Smack:
????????是安全模塊的另一種選擇。Smack從2.6.25起進入內核主分支。Smack應能比AppArmor更安全,但比SELinux更容易配置。
TOMOYO:
????????是另外一個安全模塊,在2.6.30進入內核主分支。TOMOYO可以提供安全防護,但是它的主要用途是分析系統安全缺陷。
AppArmor、SELinux、Smack和TOMYO組成了四個標準Linux安全模塊。這些都通過使用強制訪問控制(MAC : mandatory access control)工作,這種訪問控制是通過限制程序或者用戶執行一些任務來實現的。安全模塊還有某些形式的列表規定了它們可以做什么不可以做什么。
Yama:
????????在Linux內核中一個新安全模塊。Yama還沒有作為標準的安全模塊,但是在將來他會成為第5個標準安全模塊。Yama和其他安全模塊一樣使用相同的機制。
總結
以上是生活随笔為你收集整理的linux学习笔记 linux内核6.0.2目录结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络版控制台三国杀结构图
- 下一篇: bootstrap 文字图标 glyph