您的位置:首页 > 运维架构 > Linux

linux源码目录结构详解

2013-04-14 11:15 246 查看

/bin

这是存放ls, mv, rm,mkdir, rmdir, gzip, tar, telnet及ftp等等常用执行程序的地方,有时候这个目录的内容与/usr/bin是一样的。

/boot

没错,这里就是放置你 Linux 核心与开机相关档案的地方,这个目录底下的vmlinuz-xxx 就是Linux 的 Kernel 。而如果你的开机管理程序选择grub的话,那么这个目录内还有/boot/grub这个子目录。

/dev

存放与设备有关的文件。基本上Unix或Linux系统均把设备当成是文件来看待,例如 /dev/fd0 代表软盘,亦即Windows 系统下的A盘,而/dev/cdrom则代表光盘,等等。而如上所述,在这个目录底下的文件类型通常分为两种,分别是管理磁盘Input/Output的Block文件与周边的Character文件。

/etc

系统在开机过程中需要读取的文件都在这个目录中,例如Lilo的参数、人员的账号与密码、系统的主要设定、http架站的参数内容、你所要开启的服务项目等等都在这个目录中。[注意:在这个目录下工作的时候,请记得一定要备份,否则档案被改掉了可是很麻烦的。]

/etc/rc.d 这个路径主要记录一些开关机过程中的scripts档案,scripts有点像是DOS下的批处理(.bat)
/etc/rc.d/init.d 所有服务预设的启动scripts都是放在这里的,例如要启动与关闭iptables的话,可以:

/etc/rc.d/init.d/iptablesstart

/etc/rc.d/init.d/iptablesstop

/etc/xinetd.d

这个路径在较新的Linuxdistribution当中才有,由于早期的版本用来开启服务的档案是inetd.conf,但是在较新的版本中,开启服务的项目已经变成使用xinetd.conf这个文件。因此,你若需要启动一些额外的服务的话,在Mandrake9.0或者是Red Hat 7.0以后就要到/etc/xinetd.d这个目录下了。

/etc/X11 这是与X windows有关的设定文件所在的目录,尤其里面的XF86Config-4更是重要。

/home

基本上,这是系统预设的用户的家目录(home directory),在你新增一般用户账号的时候,预设的用户家目录都在这里设定好了。

/lib

在Linux执行或编译一些程序的时候,都会使用到一些函数库(library),就在这个目录下。

/lost+found

系统异常或产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在设备目录下。例如你加装一块硬盘于/disk中,那在这个目录下就会自动产生一个这样的目录 /disk/lost+found。

/mnt

这是软盘与光盘预设挂载点的地方;通常软盘挂在/mnt/floppy下,而光盘挂在/mnt/cdrom下。不过也不一定,只要你高兴,随便找一个地方来挂载都可以。

/proc

系统核心与执行程序的一些信息,例如网络状态的问题,等等。这个目录将在启动Linux的时候自动的被挂上,而且该目录底下不会占去硬盘空间,因为里面都是的数据都存于内存。

/root

系统管理员的家目录。

/sbin

放置一些系统管理常用的程序,例如:fdisk,mke2fs, fsck, mkswap, mount等等。与/bin 不太一样的地方,这个目录下的程序通常是给 root 等系统管理员使用的程序。

/tmp

这是让一般使用者暂时存放档案的地方,例如你在安装Linux下的软件时,可能软件预设的工作目录就是 /tmp ,所以你要定期的清理一下。当然,重要数据最好不要放在这里!

/usr

这是最重要的一个目录了,里面含有相当多的系统信息,内有许多目录,用来存放程序与指令等等。这个目录有点像是Windows 底下的『Program Files』。

/usr/bin 放置可执行程序,如前所说,这个目录的档案与/bin几乎是相同的。
/usr/include 一些套件的头文件。基本上,当我们在以tarball方式(*.tar.gz 的方式安装软件)安装某些数据时,会使用到的一些函数库都在这个目录底下。
/usr/lib 内含许多程序与子程序所需的函数库。
/usr/local 在安装完了Linux之后,基本上所有的配备都有了,但是软件总是可以升级的,例如要升级proxy服务,则通常软件预设的安装地方就是在/usr/local中,同时,安装完毕之后所得到的执行文件,为了与系统原先的执行文件有分别,因此升级后的可执行文件通常放在/usr/local/bin这个目录。
/usr/sbin 放置管理者使用的程序,与/sbin类似的功能。
/usr/share/doc 放置一些系统说明文件的地方,例如你安装了lilo了,那么在该目录底下找一找,就可以查到lilo的说明文件了。
/usr/share/man 放置一些程序的说明文件的地方,那是什么?呵呵!就是你使用man的时候,会去查询的路径呀!例如使用man ls这个指令时,就会查出/usr/share/man/man1/ls.1.bz2这个说明档的内容。
/usr/src 这是放置内核原码的预设目录,未来我们要编译核心的时候,就必须到这个目录底下。
/usr/X11R6 X Window System存放相关档案的目录。

/var

这个目录可就重要了!所有服务的登录文件或错误讯息档案(logfiles)都在/var/log 里面,此外,一些数据库如MySQL的数据库则在/var/lib里头,此外,使用者未读邮件的预设放置地点为/var/spool/mail。

arch

目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。

copying

目录下是GPL版权申明。对具有GPL版权的源代码改动而形成的程序,或使用GPL工具产生的程序,具有使用GPL发表的义务,如公开源代码。

credits

目录下是光荣榜。对Linux做出过很大贡献的一些人的信息。

Documentation

目录下是一些文档,没有内核代码,可惜都是English的,是对每个目录作用的具体说明。

drivers

目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound;block 下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block/genhd.c中的device_setup()。

fs

目录存放Linux支持的文件系统代码和各种类型的文件操作代码。每一个子目录支持一个文件系统,如ext3文件系统对应的就是ext3子目录。

include

目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录。

init

目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。

ipc

目录包含了核心进程间的通信代码。

kernel

内核管理的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同时与处理器结构相关代码都放在arch/*/kernel目录下。

lib

目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下。

Maintainers

目录存放了维护人员列表,对当前版本的内核各部分都有谁负责。

Makefile

目录第一个Makefile文件。用来组织内核的各模块,记录了个模块间的相互这间的联系和依托关系,编译时使用;仔细阅读各子目录下的Makefile文件对弄清各个文件这间的联系和依托关系很有帮助。

mm

目录包含了所有独立于 cpu
体系结构的内存管理代码,如页式存储管理内存的分配和释放等。与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下,例如arch/i386/mm/Fault.c


modules

目录存放了已建好的、可动态加载的模块文件目录,是个空目录,用于存放编译时产生的模块目标文件。

net

目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面。

ReadMe

目录里是核心及其编译配置方法简单介绍。

Reporting-bugs

目录里是有关报告Bug 的一些内容。

Rules.make

目录里是各种Makefile make所使用的一些共同规则。

scripts

目录包含用于配置核心的脚本文件等。

一般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。仔细阅读这两个文件对弄清各个文件之间的联系和依托关系很有帮助。另外有的目录下还有Readme文件,它是对该目录下文件的一些说明,同样有利于对内核源码的理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: