Linux系统和内核目录解析
??在學習Linux以及Linux內核的過程中,總是會忘記Linux系統以及內核里的一些目錄的含義,因此特地收集了關于Linux系統目錄的含義解析以及Linux內核目錄的解析。
Linux系統目錄解析
??關于Linux的系統目錄,可以按照以下分類來了解其對應的功能:
??系統啟動必須:
- /boot:存放的啟動Linux 時使用的內核文件,包括連接文件以及鏡像文件。
- /etc:存放所有的系統需要的配置文件和子目錄列表,更改目錄下的文件可能會導致系統不能啟動。
- /lib:存放基本代碼庫(比如c++庫),其作用類似于Windows里的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。
- /sys: 這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統 sysfs 。sysfs文件系統集成了下面3種文件系統的信息:針對進程信息的proc文件系統、針對設備的devfs文件系統以及針對偽終端的devpts文件系統。該文件系統是內核設備樹的一個直觀反映。當一個內核對象被創建的時候,對應的文件和目錄也在內核對象子系統中。
??指令集合:
- /bin:存放著最常用的程序和指令
- /sbin:只有系統管理員能使用的程序和指令。
??外部文件管理:
- /dev :Device(設備)的縮寫, 存放的是Linux的外部設備。注意:在Linux中訪問設備和訪問文件的方式是相同的。
- /media:類windows的其他設備,例如U盤、光驅等等,識別后linux會把設備放到這個目錄下。
- /mnt:臨時掛載別的文件系統的,我們可以將光驅掛載在/mnt/上,然后進入該目錄就可以查看光驅里的內容了。
??臨時文件:
- /run:是一個臨時文件系統,存儲系統啟動以來的信息。當系統重啟時,這個目錄下的文件應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。
- /lost+found:一般情況下為空的,系統非法關機后,這里就存放一些文件。
- /tmp:這個目錄是用來存放一些臨時文件的。
??賬戶:
- /root:系統管理員的用戶主目錄。
- /home:用戶的主目錄,以用戶的賬號命名的。
- /usr:用戶的很多應用程序和文件都放在這個目錄下,類似于windows下的program files目錄。
- /usr/bin:系統用戶使用的應用程序與指令。
- /usr/sbin:超級用戶使用的比較高級的管理程序和系統守護程序。
- /usr/src:內核源代碼默認的放置目錄。
??運行過程中要用:
- /var:存放經常修改的數據,比如程序運行的日志文件(/var/log 目錄下)。
- /proc:管理內存空間!虛擬的目錄,是系統內存的映射,我們可以直接訪問這個目錄來,獲取系統信息。這個目錄的內容不在硬盤上而是在內存里,我們也可以直接修改里面的某些文件來做修改。
??擴展用的:
- /opt:默認是空的,我們安裝額外軟件可以放在這個里面。
- /srv:存放服務啟動后需要提取的數據(不用服務器就是空)
sys文件夾下的子目錄
-
/sys/devices
/sys/devices 該目錄下是全局設備結構體系,包含所有被發現的注冊在各種總線上的各種物理設備。一般來說,所有的物理設備都按其在總線上的拓撲結構來顯示,但有兩個例外,即platform devices和system devices。platform devices是注冊在虛擬總線上的外設;system devices不是外設,而是芯片內部的核心結構,比如CPU,timer等,它們一般沒有相關的驅動,但是會有一些體系結構相關的代碼來配置它們。 (sys/devices是內核對系統中所有設備的分層次表達模型,也是/sys文件系統管理設備的最重要的目錄結構) 。 -
/sys/dev
sys/dev 該目錄下維護一個按照字符設備和塊設備的主次號碼(major:minor)鏈接到真實設備(/sys/devices)的符號鏈接文件。 -
/sys/class (按功能分的設備模型)
/sys/class 該目錄下包含所有注冊在kernel里面的設備類型,這是按照設備功能分類的設備模型,每個設備類型表達具有一種功能的設備。每個設備類型子目錄下都是這種設備類型的各種具體設備的符號鏈接,這些鏈接指向/sys/devices/name下的具體設備。設備類型和設備并沒有一一對應的關系,一個物理設備可能具備多種設備類型;一個設備類型只表達具有一種功能的設備,比如:系統所有輸入設備都會出現在/sys/class/input之下,而不論它們是以何種總線連接到系統的。(/sys/class也是構成linux統一設備模型的一部分) -
/sys/block (塊設備)
/sys/block 該目錄下的所有子目錄代表著系統中當前被發現的所有塊設備。按照功能來說放在/sys/class下會更合適,但由于歷史遺留因素而一直存在于/sys/block,但從linux2.6.22內核開始這部分就已經標記為過去時,只有打開了CONFIG_SYSFS_DEPRECATED配置編譯才會有這個目錄存在,并且其中的內容在從linux2.6.26版本開始已經正式移到了/sys/class/block,舊的接口/sys/block為了向后兼容而保留存在,但其中的內容已經變為了指向在/sys/devices/中真實設備的符號鏈接文件。 -
/sys/bus
/sys/bus 該目錄下的每個子目錄都是kernel支持并且已經注冊了的總線類型。這是內核設備按照總線類型分層放置的目錄結構,/sys/devices中的所有設備都是連接于某種總線之下的,bus子目錄下的每種具體總線之下可以找到每個具體設備的符號鏈接, 一般來說每個子目錄(總線類型)下包含兩個子目錄,一個是devices,另一個是drivers;其中devices下是這個總線類型下的所有設備,這些設備都是符號鏈接,它們分別指向真正的設備(/sys/devices/name/下);而drivers下是所有注冊在這個總線上的驅動,每個driver子目錄下是一些可以觀察和修改的driver參數。 (它也是構成linux統一設備模型的一部分) -
/sysy/fs
/sys/fs 按照設計,該目錄使用來描述系統中所有的文件系統,包括文件系統本身和按照文件系統分類存放的已掛載點。 -
/sys/kernel
/sys/kernel 這個目錄下存放的是內核中所有可調整的參數 。 -
/sys/firmware
/sys/firmware 該目錄下包含對固件對象(firmware object)和屬性進行操作和觀察的接口,即這里是系統加載固件機制的對用戶空間的接口.(關于固件有專用于固件加載的一套API) /sys/hypervisor 該目錄是與虛擬化Xen相關的裝置。(Xen是一個開放源代碼的虛擬機監視器) 。 -
/sys/module
/sys/module 該目錄下有系統中所有的模塊信息,不論這些模塊是以內聯(inlined)方式編譯到內核映像文件中還是編譯為外模塊(.ko文件),都可能出現在/sys/module中。即module目錄下包含了所有的被載入kernel的模塊。 -
/sys/power
/sys/power 該目錄是系統中的電源選項,對正在使用的power子系統的描述。這個目錄下有幾個屬性文件可以用于控制整個機器的電源狀態,如可以向其中寫入控制命令讓機器關機/重啟等等。
Linux內核目錄解析
??從上面我們知道內核源碼放置在/usr/src/目錄下,因此當你想了解對應的對應的目錄含義時,可以進入內核目錄下,閱讀下面的解析來理解:
- arch
這個文件夾包含了一個Kconfig文件,它用于設置這個目錄里的源代碼編譯所需的一系列設定。每個支持的處理器架構都在它相應的文件夾中。如,Alpha處理器的源代碼在alpha文件夾中。請記住,隨著時間的推移,一些新的處理器將被支持,有些會被放棄。 - block
此文件夾包含塊設備驅動程序的代碼,該目錄用于實現塊設備的基本框架和塊設備的I/O調度算法。塊設備是以數據塊方式接收和發送的數據的設備。數據塊都是一塊一塊的數據而不是持續的數據流。 - crypto
這個文件夾包含許多加密算法的源代碼。例如,“sha1_generic.c”這個文件包含了SHA1加密算法的代碼。 - Documentation
此文件夾包含了內核信息和其他許多文件信息的文本文檔。如果開發者需要一些信息,他們也許能在這里找到所需要的信息。 - drivers
該目錄包含了驅動代碼。驅動是一個控制硬件的軟件。例如,要讓計算機知道鍵盤并使其可用,鍵盤驅動是必要的。這個文件夾中存在許多文件夾。每個文件夾都以硬件的種類或者型號命名。例如,'bluetooth’包含了藍牙驅動程序的代碼。還有其他很明顯的驅動像SCSI、USB和火線等。有些驅動程序可能會比較難找到。例如,操縱桿驅動不在’joystick’文件夾中,它們卻在./drivers/input/joystick。同樣鍵盤和鼠標驅動也在這個input文件夾中。 'Macintosh’包含了蘋果的硬件代碼。 'Xen’包含了Xen hypervisor代碼(hypervisor是一種允許用戶在一臺計算機上運行多個操作系統的軟件或硬件。這意味著在Xen允許用戶在一臺計算機上同時運行的兩個或兩個以上的Linux系統。用戶還可以運行Windows,Solaris,FreeBSD或其他操作系統在Linux系統上)。 - firmware
包含讓計算機讀取和理解從設備發來的信號的代碼。舉例來說,一個攝像頭管理它自己的硬件,但計算機必須了解攝像頭給計算機發送的信號。Linux系統會使用vicam固件(firmware)來理解攝像頭的通訊。否則,沒有了固件,Linux系統將不知道如何處理攝像頭發來的信息。另外,固件同樣有助于將Linux系統發送消息給該設備。這樣Linux系統可以告訴攝像頭重新調整或關閉攝像頭。 - fs
這是文件系統的文件夾。理解和使用的文件系統所需要的所有的代碼就在這里。在這個文件夾里,每種文件系統都有自己的文件夾。例如,ext4文件系統的代碼在ext4文件夾內。 在fs文件夾內,開發者會看到一些不在文件夾中的文件。這些文件用來控制整個文件系統。例如,mount.h中會包含掛載文件系統的代碼。文件系統是以結構化的方式來存儲和管理的存儲設備上的文件和目錄。每個文件系統都有自己的優點和缺點。這是由文件系統的設計決定的。舉例來說,NTFS文件系統支持的透明壓縮(當啟用時,會在用戶不知道的情況下自動壓縮存儲文件)。大多數文件系統缺乏此功能,但如果在fs文件夾里編入相應的文件,它們也有這種能力。 - include
include包含了內核所需的各種頭文件。這個名字來自于C語言用"include"來在編譯時導入頭文件。 - init
init文件夾包含了內核啟動的處理代碼(INITiation)。main.c是內核的核心文件,這是用來銜接所有的其他文件的源代碼主文件。 - ipc
IPC代表進程間通訊。----用于實現System V的進程間通信(Inter Process Communication,IPC)模塊 . 此文件夾中的代碼是作為內核與進程之間的通信層。內核控制著硬件,因此程序只能請求內核來執行任務。假設用戶有一個打開DVD托盤的程序。程序不直接打開托盤,相反,該程序通知內核托盤應該被打開。然后,內核給硬件發送一個信號去打開托盤。這些代碼同樣管理kill信號。舉例來說,當系統管理員打開進程管理器去關閉一個已經鎖死的程序,這個關閉程序的信號被稱為kill信號。內核接收到信號,然后內核會要求程序停止或直接把進程從內存和CPU中移除(取決于kill的類型)。命令行中的管道同樣用于進程間通信。管道會告訴內核在某個內存頁上寫入輸出數據。程序或者命令得到的數據是來自內存頁上的某個給定的指針。 - kernel
這個文件夾中的代碼控制內核本身。例如,如果一個調試器需要跟蹤問題,內核將使用這個文件夾中代碼來將內核指令通知調試器跟蹤內核進行的所有動作。這里也有跟蹤時間的代碼。在內核文件夾下有個"power"文件夾,這里的代碼可以使計算機重新啟動、關機和掛起。
lib – 這個文件夾包含了內核需要引用的一系列內核庫文件代碼。
mm – mm文件夾中包含了內存管理代碼。內存并不是任意存儲在RAM芯片上的。相反,內核小心地將數據放在RAM芯片上。內核不會覆蓋任何正在使用或保存重要數據的內存區域。 - net
net文件夾中包含了網絡協議代碼。這包括IPv6、AppleTalk、以太網、WiFi、藍牙等的代碼,此外處理網橋和DNS解析的代碼也在net目錄。 - samples
此文件夾包含了程序示例和正在編寫中的模塊代碼。假設一個新的模塊引入了一個想要的有用功能,但沒有程序員說它已經可以正常運行在內核上。那么,這些模塊就會移到這里。這給了新內核程序員一個機會通過這個文件夾來獲得幫助,或者選擇一個他們想要協助開發的模塊。 - scripts
這個文件夾有內核編譯所需的腳本。最好不要改變這個文件夾內的任何東西。否則,您可能無法配置或編譯內核。 - security
這個文件夾是有關內核安全的代碼。它對計算機免于受到病毒和黑客的侵害很重要。否則,Linux系統可能會遭到損壞。關于內核的安全性,將在以后的文章中討論。 - sound
這個文件夾中包含了聲卡驅動。------存放聲音系統架構相關代碼和具體聲卡的設備驅動程序 - tools
這個文件夾中包含了和內核交互的工具。 - usr
還記得在以前的文章中提到vmlinuz和其他類似的文件么?這個文件夾中的代碼在內核編譯完成后創建這些文件。----該目錄中的代碼為內核尚未完全啟動時執行用戶空間代碼提供了支持 - virt
此文件夾包含了虛擬化代碼,它允許用戶一次運行多個操作系統。這與先前提到的Xen是不同的。通過虛擬化,客戶機操作系統就像任何其他運行在Linux主機的應用程序一樣運行。通過Xen這樣的hypervisor(注:虛擬機管理程序),兩個操作系統可以同時管理硬件。在虛擬化中,在客戶機操作系統上運行在Linux內核上,而在hypervisor中,它沒有客戶系統并且所有的系統不互相依賴。
??還有一些文件在源代碼的根目錄下。它們會在下面列出:
- COPYING
許可和授權信息。Linux內核在GPLv2許可證下授權。該許可證授予任何人有權免費去使用、修改、分發和共享源代碼和編譯代碼。然而,沒有人可以出售源代碼。 - CREDITS
貢獻者列表 - Kbuild
這是一個設置一些內核設定的腳本。打個比方,這個腳本設定一個ARCH變量,這是開發者想要生成的內核支持的處理器類型。 - Kconfig
這個腳本會在開發人員配置內核的時候用到。 - MAINTAINERS
這是一個目前維護者列表,他們的電子郵件地址,主頁,和他們負責開發和維護的內核的特定部分或文件。當一個開發者在內核中發現一個問題,并希望能夠報告給能夠處理這個問題的維護者時,這是是很有用的。 - Makefile
這個腳本是編譯內核的主要文件。這個文件將編譯參數和編譯所需的文件和必要的信息傳給編譯器。 - README
這個文檔提供給開發者想要知道的如何編譯內核的信息。 - REPORTING-BUGS
這個文檔提供如何報告問題的信息。
ARCH目錄解析
??對于Linux v3.9.4,arch下有以下文件夾:
??Alpha、arc、arm、arm64、avr32、blackfin、c6x、cris、frv、h8300、hexagon、ia64、m32r、m68k、metag、microblaze、mips、mn10300、openrisc、parisc、powerpc、s390、score、sh、sparc、tile、um、unicore32、x86、xtensa
??該目錄中每個子目錄都與某種體系結構對應,用于存放系統結構相關代碼,向平臺無關的系統核心模塊提供所需的功能接口。每個體系結構對應的子目錄下通常至少包含以下幾個子目錄:
- Kernel子目錄
用于存放特定體系結構特有信號量的實現代碼和對稱多處理器(Symmetric MultiProccessing,簡稱SMP)相關模塊。 - Lib子目錄
用于存放以來依賴當前體系結構的輔助功能,如利用當前體系結構特性實現的strlen和memcpy內存操作函數;與通用的實現方法相比,他們的開銷小、更加高效。 - Mm子目錄
用于存放體系架構特定的內存管理模塊,包括內存的初始化、頁表管理等內容。 - Boot子目錄
該目錄中包含了當前平臺上系統引導過程使用的部分或全部代碼。這部分代碼以來當前平臺,用于完成向系統內存裝載內核鏡像的工作。
??其中各處理器簡單介紹:
- alpha 處理器
Alpha 處理器最早由美國DEC 公司設計制造,在Compaq (康柏)公司收購DEC 之后,Alpha 處理器繼續得到發展,并且應用于許多高檔的Compaq 服務器上,HP (惠普)收購的Compaq ,Alpha 便為HP(惠普)所有,不過HP (惠普)已經放棄發展alpha 處理器。 - arm 處理器
Arm 系列處理器 是英國Arm 公司設計的主流嵌入式32 位RISC 處理器,Arm 公司不直接生產Arm 處理器,而是采用IP 授權的方式由第3 方開發生產,著名的公司如Ti 、Samsung 等都有出品Arm 處理器。目前在手機領域廣泛應用。 - avr32 處理器
Avr32 處理器美國 Atmel 公司設計開發的32 位RISC 處理器, 設計目的是在每一個時鐘周期內完成更多處理工作,從而在較低的時鐘頻率下實現相同的吞吐量。適合在工業控制、汽車電子等嵌入式設備領域中使用。Avr32 屬于MCU 型的處理器。 - blackfin 處理器
Blackfin 處理器是美國ADI 公司開發的具有DSP 能力的 32 位RISC 處理器, Blackfin 處理器基于由 ADI 和 Intel 公司聯合開發的微信號架構 (MSA ), 適用于 嵌入式音頻、視頻和通信應用等領域。 - cris 處理器
Cris 處理器是 瑞典 Axis 通信公司開發的32 位RISC 處理器,主要用于網絡設備,屬于比較專業的應用領域。因為 Axis 通信公司主要開發網絡監控設備,所以 Cris 處理器在其網絡監控設備中應用廣泛。 - frv 處理器
Frv 處理器是 日本富士通開發的32 位高性能RISC處理器, 采用VLIW (Very Long Instruction Word )構架,具備良好的多媒體處理能力,在機頂盒(STB )、數碼刻錄機(DVR )、數碼相機(DSC)等嵌入式領域應用廣泛。 - h8300 處理器
H8300 處理器是 日本瑞薩科技開發的32 位高性能RISC 處理器, 具有強大的位操作指令,最適于實時控制應用如汽車電子、家用電器、醫療器械等領域。H8300 屬于MCU 型的處理器。 - ia64 處理器
Ia64 處理器是 美國英特爾開發的面向服務器應用的64 位處理器, 由于具有64 位尋址能力,它能夠使用100 萬TB 的地址空間,足以運算企業級或超大規模的數據庫任務;64 位寬的寄存器可以使CPU 浮點運算達到非常高的精度。 - m32r 處理器
M32r 處理器是 日本瑞薩科技開發的32 位高性能RISC 處理器, 內置大容量存儲器,適用于車載系統、數字AV 設備、數字成像設備等產品領域。屬于MCU 型的處理器。 - m68k 處理器
M68k 處理器是美國 Motorola 公司開發的高性能處理器, 具有高性價比、高集成度等特點,在工業自動化設備、控制設備、醫療儀器系統、安全系統等領域多有應用?,F在為Freescale 公司所有, 風頭已不敵PowerPC 處理器。 - microblaze 處理器
Microblaze 處理器是美國 Xilinx 公司提供的嵌入在其FPGA 芯片上的32 位RISC 軟核。 它具有運算能力強、外圍接口配置靈活等特點,集成在 FPGA之中,可以和FPGA 實現協同設計,具備軟硬件可配置的靈活性。 - mips 處理器
Mips 處理器是由美國斯坦福大學Hennessy 教授領導的研究小組研制出來, 現為Mips 公司擁有,和Arm 處理器一樣采用IP 授權的方式由第3 方開發生產。著名的公司如Broadcom 、Nxp 等都有出品Mips處理器。我國的龍芯CPU 也是采用Mips 體系結構。 - mn10300 處理器
Mn10300 處理器 日本松下開發的32 位多媒體處理器。 - parisc 處理器
Parisc 處理器是由 HP (惠普)開發設計的處理器,主要用于HP (惠普)公司的服務器中,目前HP(惠普)已經放棄 Parisc 處理器的開發,不過一些Parisc 處理器技術已經融合到ia64 處理器之中。 - powerpc 處理器
Powerpc 處理器是由美國IBM 、Apple 、Motorola 聯合開發的處理器,Powepc 處理器在IBM 的服務器、Apple 的MAC 電腦中都有應用。不過現在多應用在網絡設備、視頻系統、工業系統等領域。Sony PS3 游戲機Cell 處理器也是Powerpc 體系結構。 - s390 處理器
S390 處理器是由美國IBM 開發的面向大型機應用的處理器 。 - score 處理器
Score 處理器是由臺灣 凌陽開發的32 位RISC 處理器。Score 屬于MCU 型的處理器。 - sh 處理器
Sh 處理器又稱SuperH 處理器 ,最先由日本Hitachi 公司開發,后由 Hitachi 及 ST Microelectronics 兩家公司共同開發,2003 年 瑞薩科技從 Hitachi 公司繼承到擁有權。Sh 屬于MCU 型的處理器。 - sparc 處理器
Sparc 處理器是由美國SUN 和TI 公司共同開發的RISC 微處理器,最突出的特點就是它的可擴展性。SUN 公司將它做為高端處理器應用到服務器產品。 - x86 處理器
X86 處理器是由美國Intel 推出的 復雜指令集(cisc ) 處理器,廣泛應用在PC 電腦領域和服務器領域,在工業控制領域也有應用。目前主要是Intel、AMD 、VIA 在開發x86 體系結構的處理器。 - xtensa 處理器
Xtensa 處理器是由美國 Tensilica (泰思立達)公司開發的可配置及可擴展的微處理器 - OpenRisc處理器
OpenRisc是OpenCores組織提供的基于GPL協議的開放源代碼的RISC(精簡指令集計算機)處理器。有人認為其性能介于ARM7和ARM9之間,適合一般的嵌入式系統使用。最重要的一點是OpenCores組織提供了大量的開放源代碼IP核供研究人員使用,因此對于一般的開發單位具有很大的吸引力
drivers目錄解析
?? 許多驅動程序是通用驅動程序,這意味著一個通用鍵盤驅動可以使內核可以處理幾乎所有的鍵盤。然而,有些驅動是專用驅動,像蘋果和Commodore就分別為蘋果電腦和Amiga系統制造了專門的硬件。Linux內核中已經包含了許多諸如智能手機、蘋果、Amiga系統、PS3、Android平板,和許多其他設備的驅動程序。
??注意有些設備的驅動不在本目錄中。比如,射頻驅動在net和media文件夾下。
- accessibility
這些驅動提供支持一些輔助設備。在Linux 3.9.4中,這個文件夾中只有一個驅動就是盲文設備驅動。 - acpi
高級配置和電源接口(ACPI : Advanced Configuration and Power Interface)驅動用來管理電源使用。 - amba
高級微控制器總線架構(AMBA : Advanced Microcontroller Bus Architecture)是與片上系統(SoC)的管理和互連的協議。SoC是一塊包含許多或所有必要的計算機組件的芯片。這里的AMBA驅動讓內核能夠運行在這上面。 - ata
該目錄包含PATA和SATA設備的驅動程序。串行ATA(SATA)是一種連接主機總線適配器到像硬盤那樣的存儲器的計算機總線接口。并行ATA(PATA)用于連接存儲設備,如硬盤驅動器,軟盤驅動器,光盤驅動器的標準。PATA就是我們所說的IDE。 - atm
異步通信模式(ATM : Asynchronous Transfer Mode)是一種通信標準。這里有各種接到PCI橋的驅動(他們連接到PCI總線)和以太網控制器(控制以太網通信的集成電路芯片)。 - auxdisplay
這個文件夾提供了三個驅動。LCD 幀緩存(framebuffer)驅動、LCD控制器驅動和一個LCD驅動。這些驅動用于管理液晶顯示器 —— 液晶顯示器會在按壓時顯示波紋。注意:按壓會損害屏幕,所以請不要用力戳LCD顯示屏。 - base
這是個重要的目錄包含了固件、系統總線、虛擬化能力等基本的驅動。 - 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
這些驅動用于作為定時器的時鐘。 - connector
這些驅動使內核知道當進程fork并使用proc連接器更改UID(用戶ID)、GID(組ID)和SID(會話ID)。內核需要知道什么時候進程fork(CPU中運行多個任務)并執行。否則,內核可能會低效管理資源。 - cpufreq
這些驅動改變CPU的電源能耗。 - cpuidle
這些驅動用來管理空閑的CPU。一些系統使用多個CPU,其中一個驅動可以讓這些CPU負載相當。 - crypto
這些驅動提供加密功能。 - 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的負載。 - 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的處理器。 - gpio
通用輸入/輸出(GPIO :General Purpose Input/Output)是可由用戶控制行為的芯片的管腳。這里的驅動就是控制GPIO。 - gpu
這些驅動控制VGA、GPU和直接渲染管理(DRM :Direct Rendering Manager )。VGA是640*480的模擬計算機顯示器或是簡化的分辨率標準。GPU是圖形處理器。DRM是一個Unix渲染系統。 - hid
這驅動用于對USB人機界面設備的支持。 - hsi
這個驅動用于內核訪問像Nokia N900這樣的蜂窩式調制解調器。 - hv
這個驅動用于提供Linux中的鍵值對(KVP :Key Value Pair)功能。 - hwmon
硬件監控驅動用于內核讀取硬件傳感器上的信息。比如,CPU上有個溫度傳感器。那么內核就可以追蹤溫度的變化并相應地調節風扇的速度。 - hwspinlock
硬件轉鎖驅動允許系統同時使用兩個或者更多的處理器,或使用一個處理器上的兩個或更多的核心。 - i2c
I2C驅動可以使計算機用I2C協議處理主板上的低速外設。系統管理總線(SMBus :System Management Bus)驅動管理SMBus,這是一種用于輕量級通信的two-wire總線。 - ide
這些驅動用來處理像CDROM和硬盤這些PATA/IDE設備。 - idle
這個驅動用來管理Intel處理器的空閑功能。 - iio
工業I/O核心驅動程序用來處理數模轉換器或模數轉換器。 - infiniband
Infiniband是在企業數據中心和一些超級計算機中使用的一種高性能的端口。這個目錄中的驅動用來支持Infiniband硬件。 - input
這里包含了很多驅動,這些驅動都用于輸入處理,包括游戲桿、鼠標、鍵盤、游戲端口(舊式的游戲桿接口)、遙控器、觸控、耳麥按鈕和許多其他的驅動。如今的操縱桿使用USB端口,但是在上世紀80、90年代,操縱桿是插在游戲端口的。 - iommu
輸入/輸出內存管理單元(IOMMU :Input/Output Memory Management Unit)驅動用來管理內存管理單元中的IOMMU。IOMMU連接DMA IO總線到內存上。IOMMU是設備在沒有CPU幫助下直接訪問內存的橋梁。這有助于減少處理器的負載。 - ipack
Ipack代表的是IndustryPack。 這個驅動是一個虛擬總線,允許在載體和夾板之間操作。 - irqchip
這些驅動程序允許硬件的中斷請求(IRQ)發送到處理器,暫時掛起一個正在運行的程序而去運行一個特殊的程序(稱為一個中斷處理程序)。 - isdn
這些驅動用于支持綜合業務數字網(ISDN),這是用于同步數字傳輸語音、視頻、數據和其他網絡服務使用傳統電話網絡的電路的通信標準。 - leds
用于LED的驅動。 - lguest
lguest用于管理客戶機系統的中斷。中斷是CPU被重要任務打斷的硬件或軟件信號。CPU接著給硬件或軟件一些處理資源。 - macintosh
蘋果設備的驅動在這個文件夾里。 - mailbox
這個文件夾(pl320-pci)中的驅動用于管理郵箱系統的連接。 - md
多設備驅動用于支持磁盤陣列,一種多塊硬盤間共享或復制數據的系統。 - media
媒體驅動提供了對收音機、調諧器、視頻捕捉卡、DVB標準的數字電視等等的支持。驅動還提供了對不同通過USB或火線端口插入的多媒體設備的支持。 - memory
支持內存的重要驅動。 - memstick
這個驅動用于支持Sony記憶棒。 - message
這些驅動用于運行LSI Fusion MPT(一種消息傳遞技術)固件的LSI PCI芯片/適配器。LSI大規模集成,這代表每片芯片上集成了幾萬晶體管、 - mfd
多用途設備(MFD)驅動提供了對可以提供諸如電子郵件、傳真、復印機、掃描儀、打印機功能的多用途設備的支持。這里的驅動還給MFD設備提供了一個通用多媒體通信端口(MCP)層。 - misc
這個目錄包含了不適合在其他目錄的各種驅動。就像光線傳感器驅動。 - mmc
MMC卡驅動用于處理用于MMC標準的閃存卡。 - mtd
內存技術設備(MTD :Memory technology devices)驅動程序用于Linux和閃存的交互,這就就像一層閃存轉換層。其他塊設備和字符設備的驅動程序不會以閃存設備的操作方式來做映射。盡管USB記憶卡和SD卡是閃存設備,但它們不使用這個驅動,因為他們隱藏在系統的塊設備接口后。這個驅動用于新型閃存設備的通用閃存驅動器驅動。 - net
網絡驅動提供像AppleTalk、TCP和其他的網絡協議。這些驅動也提供對調制解調器、USB 2.0的網絡設備、和射頻設備的支持。 - nfc
這個驅動是德州儀器的共享傳輸層之間的接口和NCI核心。 - ntb
不透明的橋接驅動提供了在PCIe系統的不透明橋接。PCIe是一種高速擴展總線標準。 - nubus
NuBus是一種32位并行計算總線。用于支持蘋果設備。 - of
此驅動程序提供設備樹中創建、訪問和解釋程序的OF助手。設備樹是一種數據結構,用于描述硬件。 - oprofile
這個驅動用于從驅動到用戶空間進程(運行在用戶態下的應用)評測整個系統。這幫助開發人員找到性能問題----性能分析機制-是用于 Linux 的若干種評測和性能監控工具中的一種 - parisc
這些驅動用于HP生產的PA-RISC架構設備。PA-RISC是一種特殊指令集的處理器。 - parport
并口驅動提供了Linux下的并口支持。 - pci
這些驅動提供了PCI總線服務。 - pcmcia
這些是筆記本的pc卡驅動 - pinctrl
這些驅動用來處理引腳控制設備。引腳控制器可以禁用或啟用I/O設備。 - platform
這個文件夾包含了不同的計算機平臺的驅動像Acer、Dell、Toshiba、IBM、Intel、Chrombooks等等。 - pnp
即插即用驅動允許用戶在插入一個像USB的設備后可以立即使用而不必手動配置設備。 - power
電源驅動使內核可以測量電池電量,檢測充電器和進行電源管理。 - pps
Pulse-Per-Second驅動用來控制電流脈沖速率。這用于計時。 - ps3
這是Sony的游戲控制臺驅動- PlayStation3。 - ptp
圖片傳輸協議(PTP)驅動支持一種從數碼相機中傳輸圖片的協議。 - pwm
脈寬調制(PWM)驅動用于控制設備的電流脈沖。主要用于控制像CPU風扇。 - rapidio
RapidIO驅動用于管理RapidIO架構,它是一種高性能分組交換,用于電路板上交互芯片的交互技術,也用于互相使用底板的電路板。 - regulator
校準驅動用于校準電流、溫度、或其他可能系統存在的校準硬件。----用于控制系統中某些設備的電壓電流供應 - remoteproc
這些驅動用來管理遠程處理器。 - rpmsg
這個驅動用來控制支持大量驅動的遠程處理器通訊總線(rpmsg)。這些總線提供消息傳遞設施,促進客戶端驅動程序編寫自己的連接協議消息。----該基礎架構允許主處理器上的 Linux 操作系統管理遠程處理器上遠程軟件環境的生命周期和通信-用于在 AMP 環境中的操作系統之間實現 IPC 的 rpmsg 組件和 API - rtc
實時時鐘(RTC)驅動使內核可以讀取時鐘。 - s390
用于31/32位的大型機架構的驅動。 - sbus
用于管理基于SPARC的總線驅動。 - scsi
允許內核使用SCSI標準外圍設備。例如,Linux將在與SCSI硬件傳輸數據時使用SCSI驅動。 - sfi
簡單固件接口(SFI)驅動允許固件發送信息表給操作系統。這些表的數據稱為SFI表。 - sh
該驅動用于支持SuperHway總線。 - sn
該驅動用于支持IOC3串口。 - spi
這些驅動處理串行設備接口總線(SPI),它是一個在在全雙工下運行的同步串行數據鏈路標準,。全雙工是指兩個設備可以同一時間同時發送和接收信息。雙工指的是雙向通信。設備在主/從模式下通信(取決于設備配置)。 - ssb
ssb(Sonics Silicon Backplane)驅動提供對在不同博通芯片和嵌入式設備上使用的迷你總線的支持。 - staging
該目錄含有許多子目錄。這里所有的驅動還需要在加入主內核前經過更多的開發工作。 - target
SCSI設備驅動 - tc
這些驅動用于TURBOchannel,TURBOchannel是數字設備公司開發的32位開放總線。這主要用于DEC工作站。 - thermal
thermal驅動使CPU保持較低溫度。—Linux溫控框架 - tty
tty驅動用于管理物理終端連接。 - uio
該驅動允許用戶編譯運行在用戶空間而不是內核空間的驅動。這使用戶驅動不會導致內核崩潰。-----運行在用戶空間的IO技術 - usb
USB設備允許內核使用USB端口。閃存驅動和記憶卡已經包含了固件和控制器,所以這些驅動程序允許內核使用USB接口和與USB設備。 - uwb
Ultra-WideBand驅動用來管理短距離,高帶寬通信的超低功耗的射頻設備 - vfio
允許設備訪問用戶空間的VFIO驅動。----用戶態驅動框架 - vhost
這是用于宿主內核中的virtio服務器驅動。用于虛擬化中。 - video
這是用來管理顯卡和監視器的視頻驅動。 - virt
這些驅動用來虛擬化。 - virtio
這個驅動用來在虛擬PCI設備上使用virtio設備。用于虛擬化中。 - vlynq
這個驅動控制著由德州儀器開發的專有接口。這些都是寬帶產品,像WLAN和調制解調器,VOIP處理器,音頻和數字媒體信號處理芯片。 - vme
WMEbus最初是為摩托羅拉68000系列處理器開發的總線標準 - w1
這些驅動用來控制one-wire總線。 - watchdog
該驅動管理看門狗定時器,這是一個可以用來檢測和恢復異常的定時器。 - xen
該驅動是Xen管理程序系統。這是個允許用戶運行多個操作系統在一臺計算機的軟件或硬件。這意味著xen的代碼將允許用戶在同一時間的一臺計算機上運行兩個或更多的Linux系統。用戶也可以在Linux上運行Windows、Solaris、FreeBSD、或其他操作系統。 - zorro
該驅動提供Zorro Amiga總線支持。
總結
以上是生活随笔為你收集整理的Linux系统和内核目录解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 极速office2021(ppt)怎么修
- 下一篇: linux 其他常用命令