linux源码简介

linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大约包含200万行代码,大概占用58MB磁盘空间。 

 

http://blog.csdn.net/liaoshengjiong/article/details/3957654

kernel-3.10.0-123.el7.src.rpm

 

源代码所有在目录:/usr/src/linux (大部分linux发行版本中)


■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处理器的体系结构 
■block   部分块设备驱动程序
■crypto 用Diff和Patch维护源码常用加密和散列算法(如AES、SHA等),还有一些压缩和CRC校验算法
■Documentation有关内核各个部分的通用解释和注释的文本文件 
■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支持(尚未完成)
■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 远程文件锁定的支持 
■Include 头文件(.h).其中,和系统相关的头文件被放置在linux子目录下
  ◆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 定义内核配置的宏所在的头文件 
■init 内核初始化代码 
■Ipc System V的进程间通信 
■kernel 内核核心部分:进程、定时、程序执行、信号、模块. 和平台相关的一部分代码放在arch/*/kernel目录下
■lib:库文件代码。 
■mm 内存处理,和平台相关的一部分代码放在arch/*/mm目录下
■net 网络代码 ,实现了各种常见的网络协议。
■scripts 用于配置内核文件的脚本文件
■security:主要是一个SELinux的模块
■sound:常用音频设备的驱动程序等
■usr:实现了一个cpio

在i386体系下,系统引导将从arch/i386/kernel/head.s开始执行,并进而转移到init/main.c中的main()函数初始化内核。我个人认为可以按照这个顺序进行阅读(最好首先看完主要的数据结构定义等),对于各模块代码粗略看看就可以了,重点应该放在你所要研究的那个方向。要知道,一个人掌握全部Linux内核源代码是很困难的!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。