kernel一级目录: 内核源代码的根目录下包含了以下文件夹
arch block crypto Documentation drivers firmware fs include init ipc kernel lib mm net samples scripts security sound tools usr virt
arch- 这个文件夹包含一个Kconfig该文件用于本目录中源代码编译所需的一系列设置。每个支持的处理器架构都在其相应的文件夹中。Alpha处理器的源代码在alpha文件夹。请记住,随着时间的推移,一些新的处理器将得到支持,一些将被放弃。
block– 本文件夹包含块设备驱动程序的代码。块设备是通过数据块接收和发送数据的设备。数据块是一个接一个的数据,而不是连续的数据流。-目录用于实现块设备的基本框架和块设备I/O调度算法
crypto- 这个文件夹包含了许多加密算法的源代码。sha1_generic.c这份文件包含了SHA加密算法的代码。
Documentation- 本文件夹包含内核信息和许多其他文件信息的文本文件。如果开发人员需要一些信息,他们可能会在这里找到所需的信息。
drivers- 目录包含驱动代码。驱动是一个控制硬件的软件。例如,有必要让计算机知道键盘并使其可用。文件夹中有许多文件夹。每个文件夹都以硬件的类型或型号命名。bluetooth包含蓝牙驱动程序的代码。还有其他明显的驱动像SCSI、USB还有火线等。有些驱动程序可能很难找到。例如,操纵杆驱动不在‘joystick他们在文件夹里./drivers/input/joystick。键盘和鼠标驱动也在这里input文件夹中。Macintosh包含苹果的硬件代码。Xen'包含了Xen hypervisor代码。(hypervisor它是一种软件或硬件,允许用户在计算机上操作多个操作系统。这意味着在Xen允许用户在计算机上同时运行两个或两个以上Linux系统。用户也可以运行。Windows,Solaris,FreeBSD或者其它操作系统在Linux系统上。)driver文件夹下还有许多其他的文件夹,但它们不能在本文中逐一列出,它们将在以后的文章中提到。
firmware- fireware中包含了让计算机读取和理解从设备发来的信号的代码。举例来说,一个摄像头管理它自己的硬件,但计算机必须了解摄像头给计算机发送的信号。Linux系统会使用vicam固件(firmware)了解相机的通信。否则,没有固件,Linux系统不知道如何处理摄像头发来的信息。此外,固件也有助于Linux系统向设备发送消息。Linux该系统可以告诉摄像头重新调整或关闭摄像头。
fs- 这是文件系统的文件夹。理解和使用的文件系统所需要的所有的代码就在这里。在这个文件夹里,每种文件系统都有自己的文件夹。例如,ext文件系统的代码在ext在4文件夹在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内核在GPLv授权2许可证。许可证授予任何人免费使用、修改、分发和共享源代码和编译代码。然而,没有人能出售源代码。
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目录
对于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 公司开发的高性能处理器, 具有高性价比、高集成度等特点,在工业自动化设备、控制设备、医疗仪器系统、安全系统等领域多有应用。现在为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核供研究人员使用,因此对于一般的开发单位具有很大的吸引力
(2)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内核是所有Linux系统的核心。如果有任何恶意代码控制或破害了内核的任何一部分,那么系统会严重受损,文件可能被删除或损坏,私人信息可能被盗等等。很明显,保持内核安全涉及到用户的最大利益。值得庆幸的是,由于Linux内核极其安全,Linux是一个非常安全的系统。在用户比例上,Linux病毒比Windows病毒更少,并且Linux用户比Windows用户个人更少感染病毒。(这就是为什么许多公司使用Linux来管理他们的服务器的一个原因。) 然而,我们仍然没有借口去忽视内核的安全。Linux有几个安全特性和程序,但本文只讨论Linux安全模块(LSM)及其它的内核安全特性。
提示: 绝不在内核源代码内移动文件,除非你知道你在做什么。否则,编译会由于 失文件失败。