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内核源代码是很困难的!

时间: 2024-10-11 13:40:20

linux源码简介的相关文章

Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装

原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底,同时在博文中如果那些地方有问题还请各位大神为我讲解. 今天我们会分析到以下内容: 1.      Linux体系结构简介 2.      Linux内核源码简介 3.      Linux内核配置.编译.安装 l  Linux体系结构简介 1.       Linux体系结构(linux系统构成)

QtCreator源码分析(一)——QtCreator源码简介

QtCreator源码分析(一)--QtCreator源码简介 一.QtCreator简介 QtCreator是设计精巧的插件式系统,QtCreator的核心是一个插件管理器,其所有功能都是使用插件完成.在启动时,QtCreator会首先加载一个名为coreplugin的插件,coreplugin插件提供了Qt Creator最基本的功能和扩展点,其余的插件都是直接或间接依赖于coreplugin插件提供的机制,一步步扩充QtCreator的功能,最终将其变成一个功能完整的IDE.针对QtCre

linux源码包的安装

一.基础知识    编译源程序的步骤:     # tar xf testapp-version.tar.{xz|bz2|gz}     # cd testapp-version     # ./configure      还需通过许多选项指定编译特性     # make     # make install    ./configure脚本的使用:     1.获取帮助      ./configure --help     2.较通用的一些选项      安装路径相关:       --

linux源码编译安装php出现 cannot find -lltdl

原因: 在编辑php时添加的“–with-mcrypt”选项造成. 解决方法: 1.如果不需要mcrypt,那么编辑php时去掉该选项,然后再make.make install. 2.如果需要mcrypt,那么需要安装libltdl libltdl在libmcrypt软件包中就有,具体过程: #cd /software/libmcrypt-2.5.8/libltdl #./configure –enable-ltdl-install #make #make install 这个时候再回到php的

用linux源码构建xen的domU

linux源码版本linux-3.14,可以从https://www.kernel.org/获取. 由于已经有了dom0(fedora19),现在需要安装domU,domU可以用xen源码自带的miniOS,这个os是xen客户机的最小系统,有机会一定安装一下试试.这次我配置安装的是linux. 参考xen的wiki页 http://wiki.xenproject.org/wiki/Mainline_Linux_Kernel_Configs Configuring the Kernel for

linux源码升级内核

 当前环境: [[email protected] ~]# uname -r 2.6.18-348.el5 配置流程: 1.准备yum库安装g++ gcc [[email protected] ~]# cat /etc/yum.repos.d/rh_5.9.repo [rhel-server] name=Red server baseurl=file:///misc/cd/Server enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM

如何从Linux源码获知版本信息

/*************************************************************************** * 如何从Linux源码获知版本信息 * 声明: * 本文主要在移植BQ27441-G1电量监测计驱动过程中,发现I2C获取的值有异常, * 之前移植官方的驱动发现驱动与当前版本的Linux版本好像是不兼容的,但没有进行 * 更进一步的深究,这里记录一下. * * 2016-2-15 深圳 南山平山村 曾剑锋 *****************

Linux源码学习(7) 2013-3-1

Linux源码学习(7) 2013-3-1 空间 内存管理Memory.c 主要用于内存分页管理.实现对主内存页面的动态分配和回收 Linux通过一个字节数组来管理所有的物理页面.每个字节用来表示其对应的物理页面被占用的次数 1. invalidate宏 :通过重新赋值CR3寄存的方法使CPU缓存的页表数据刷新.用于页表相关属性变化时 2. CODE_SPACE(addr)宏:判断addr是否位于当前进程的代码段 3. copy_page(from,to)宏 :复制一页内存 4. unsigne

Linux源码安装软件

Linux源码安装软件 源码安装:最原始最有效的安装方式 三部曲(1)—./configure xxx 生成makefile文件,随后需要的安装信息都是从这一步中获取 (2)make 根据makefile的指示开展编译工作,利用gcc将原始码编译为目标文件目标文件使用动态或静态函数库产生一个完整的可执行文件 (3)make install根据makefile文件里关于install的项目,将所编译完成的文件安装到指定目录一般有etc.lib.bin.man等目录 源码安装是费力不讨好的,这种方式