代码位置
执行 sudo apt-get install linux-source 才会获取到源代码. 否则只有HEADER文件.
执行完安装后. 代码依然会在/usr/src下 位置和BSD是一样的.
也可以从GITHUB下载. 比如要编译特定的系统的话.
代码结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| init 内核初始化代码 kernel 内核核心部分:进程、定时、程序执行、信号、模块。。。 mm 内存处理 arch 平台相关代码 i386 IBM的PC体系结构 kernel 内核核心部分 mm 内存管理 math-emu 浮点单元软件仿真 lib 硬件相关工具函数 boot 引导程序 compressed 压缩内核处理 tools 生成压缩内核映像的程序 alpha 康柏的Alpha体系结构 s390 IBM的System/390体系结构 sparc Sun的SPARC体系结构 sparc64 Sun的Ultra-SPARC体系结构 mips SGI的MIPS体系结构 ppc Motorola-IBM的基于PowerPC的体系结构 m68k Motorola的基于MC680x0的体系结构 arm 基于ARM处理器的体系结构 fs 文件系统 proc /proc虚拟文件系统 devpts /dev/pts虚拟文件系统 ext2 Linux本地的Ext2文件系统 isofs ISO9660文件系统(CD-ROM) nfs 网络文件系统(NFS) nfsd 集成的网络文件系统服务器 fat 基于FAT的文件系统的通用代码 msdos 微软的MS-DOS文件系统 vfat 微软的Windows文件系统(VFAT) nls 本地语言支持 ntfs 微软的Windows NT文件系统 smbfs 微软的Windows服务器消息块(SMB)文件系统 umsdos UMSDOS文件系统 minix MINIX文件系统 hpfs IBM的OS/2文件系统 sysv SystemV、SCO、Xenix、Coherent和Version7文件系统 ncpfs Novell的Netware核心协议(NCP0 ufs UnixBSD、SunOs、FreeBSD、NetBSD、OpenBSD和NeXTStep文件系统 affs Amiga的快速文件系统(FFS) coda Coda网络文件系统 hfs 苹果的Macintosh文件系统 adfs Acorn磁盘填充文件系统 efs SGI IRIX的EFS文件系统 qnx4 QNX4 OS使用不的文件系统 romfs 只读小文件系统 autofs 目录自动装载程序的支持 lockd 远程文件锁定的支持 Net 网络代码 Ipc System V的进程间通信 Drivers 设备驱动程序 block 块设备驱动程序 paride 从并口访问IDE设备的支持 scsi SCSI设备驱动程序 char 字符设备驱动程序 joystick 游戏杆 ftape 磁带流设备 hfmodem 无线电设备 ip2 IntelliPort的多端口串行控制器 net 网卡设备 sound 音频卡设备 video 视频卡设备 cdrom 专用CD-ROM设备(除ATAPI和SCSI之外) isd0n ISDN设备 apl000 富士的AP1000设备 macintosh 苹果的Macintosh设备 sgi SGI的设备 fc4 光纤设备 acorn Acorn的设备 misc 杂项设备 pnp 即插即用的支持 usb 通用串行总线(USB)的支持 pci PCI总线的支持 sbus Sun的SPARC SBus的支持 nubus 苹果的Macintosh Nubus的支持 zorro Amiga的Zorro总线的支持 dio 惠普的HP300 DIO总线的支持 tc Sun的TurboChannel支持(尚未完成) Lib 通用内核函数 Include 头文件(.h) linux 内核核心部分 lockd 远程文件加锁 nfsd 集成的网络文件服务器 sunrpc Sun的远程过程调用 byteorder 字节交换函数 modules 模块支持 asm-generic 平台无关低级头文件 asm-i386 IBM的PC体系结构 asm-alpha 康柏的Alpha体系结构 asm-mips SGI的MIPS体系结构 asm-m68k Motorola-IBM的基于PowerPC的体系结构 asm-ppc Motorola-IBM的PowerPC体系结构 asm-s390 IBM的System/390体系结构 asm-sparc Sun的SPARC体系结构 asm-sparc64 Sun的Ultra-SPARC体系结构 asm-arm 基于ARM处理器的体系结构 net 网络 scsi SCSI支持 video 视频卡支持 config 定义内核配置的宏所在的头文件 scripts 生成内核映像的外部程序 Documentation有关内核各个部分的通用解释和注释的文本文件
|
arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分)、mm(内存管理)、math-emu(浮点单元仿真)、lib(硬件相关工具函数)、boot(引导程序)、pci(PCI总线)和power(CPU相关状态)。
block:部分块设备驱动程序。
crypto:常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法。
Documentation:关于内核各部分的通用解释和注释。
drivers:设备驱动程序,每个不同的驱动占用一个子目录。
fs:各种支持的文件系统,如ext、fat、ntfs等。
include:头文件。其中,和系统相关的头文件被放置在linux子目录下。
init:内核初始化代码(注意不是系统引导代码)。
ipc:进程间通信的代码。
kernel:内核的最核心部分,包括进程调度、定时器等,和平台相关的一部分代码放在arch/*/kernel目录下。
lib:库文件代码。
mm:内存管理代码,和平台相关的一部分代码放在arch/*/mm目录下。
net:网络相关代码,实现了各种常见的网络协议。
scripts:用于配置内核文件的脚本文件。
security:主要是一个SELinux的模块。
sound:常用音频设备的驱动程序等。
usr:实现了一个cpio。