>> 欢迎您, 傲气雄鹰: 重登陆 | 退出 | 注册 | 资料 | 设置 | 排行 | 新贴 | 精华 | 管理 | 帮助 首页

  小榕软件实验室
  刀光雪影
  linux系统各文件、目录介绍(zz)
发表文章 发表涂鸦
  回复数:5  点击数:124 将此页发给您的朋友        
作者 主题: linux系统各文件、目录介绍(zz) 回复 | 收藏 | 打印 | 篇末
spark帅哥哦
级别:长 老 级
威望:4
经验:0
货币:723
体力:34.5
来源:江苏
总发帖数:780
注册日期:2001-06-26
查看 邮件 主页 QQ 消息 引用 复制 下载 


网站:http://www.webrj.com e-maileelinux@163.com

一、简介:

linux操作系统中,以文件来表示所有的逻辑实体与非逻辑实体。逻辑实体系指文件与目录; 非逻辑实体则泛指硬盘、终端机、打印机等。
一般而言,linux文件名称的组成除由连续字母、标点符号、数字等构成外,中间不能有空格符、路径名称符号 / 或 # * % & {} [] ……..等与shell有关的特殊字符。
linux文件系统中,结构上以root file system 位最上位也最为重要,所谓root file system乃于开机时将root partition挂载在 / 的目录,若无法mount / 则开机时无法进入linux系统中此时仅能remount / 的目录。该目录下有/etc、/dev、/boot、/home、/lib、/lost+found、/mnt、/opt、/proc、/root、/bin、/sbin、/tmp、/var、/usr等重要目录,以下兹分别介绍之。

二、目录与文件简介

1./etc:本目录下存放着许多系统所需的重要设定与管理文件,有一些为纯档名,有些是以.conf的型态出现另亦有一些自成单一目录:当然亦有些设定文件并非放在/etc目录下,例如使用者家目录之.bashrc、.bash_profile等文件;通常祇要更动过/etc目录下之设定档内容必须重新激活设定档使设定生效,且一般亦无须重开机。以下谨胪列主要文件如后:

(1) hostname
本文件内容仅记载主机+网域名称,在系统提示符号下输入hostname可以显示hostname之文件内容。如:www.webrj.com、www.webrj.net、www.e0797.com、www.ok138.com等。

(2) xf86config
本文件内容为x window system的主要设定档,caldera的版本放在/etc目录下,redhat版本则放在/etc/x11目录下,有关显示卡、鼠标、键盘均可在此加以设定。

(3) aliases
本文件内容用来设定邮件别名及邮件清单可以让特定的地址转寄给不同的使用者或群组;编辑完/etc/aliases后须下newaliases指令使之生效,对于由远程寄送至local端的邮件具有备份功能,为mail server重要的设定档之一。

(4) amd.conf
本文件为一常驻服务程序(daemon),全名为automatically mount file system,caldera的版本称为am.d;是一个能自动mount和umount cdrom和floppy的文件系统。

(5) at.deny
本文件为对能否使用at指令的使用者加以限制, at 是一个非常有用的工具,可以让使用者指定在特定时刻执行某个程序或指令,通常只执行一次。如果你想定时定期的执行某项工作,应该使用cron工具而非at。

(6) crontab
本文件可让系统定时执行排程工作为系统管理上极为重要之文件,cron是一个常驻程序 (daemon),在开机时激活cron的daemon时,它会自动去检查/var/spool/cron 目录下面看看是否有任何cron文件。每一个user的可以去设定自己所要排定执行的工作。在这一个目录底下,每一个user会有一个属于他loginid名称的cron文件,crond会自动将这些user的cron文件加载至内存中,并定期去执行每个user的cron文件。另外,crond也会去读取 /etc/crontab 的内容。

这是属于系统的cron工作设定文件,主要系统会定期去执行 /etc/cron.d/ 目录下面四个cron.daily、cron.hourly、cron.weekly、cron.monthly目录下(redhat版本则集中放在/etc目录下)的命令。

(7) dhcpd.conf
本文件为dhcp server的设定档,可烤贝/usr/doc/dhcp-serial number目录下的dhcpd.conf.sample至/etc目录下,该文件内容一般有记载着subnet、netmask、routers、domain-name、default-lease-time、max-lease-time及 ip range;亦可一并指派固定ip给特定主机。

(8) dosemu.conf
本文件为dos仿真器的设定文件可以在linux上仿真dos环境,用dos 指令。

(9) dumpdate
dump指令可对linux ext2文件系统进行检查备份(例如dumpe2fs /etc 对/etc目录作备份),dumpdate则是存放dump指令的执行日期。

(10) exports
本文件为nfs(network file system)设定档,nfs主要是运用在unix 系统上,用来使unix系统能够在几部计算机间做文件的分享。其功能类似windows的网络磁盘驱动器,可以mount的方式,分享其它linux或unix主机的目录或文件。exports文件内则分别记载着分享目录、分享对象及权限等项目。

(11) fdprm
本文件为软盘机参数表,含有各大小格式扇区磁道等资料。

(12) fstab
本文件包含了开机时需加载的文件系统,每一行都表示一个文件系统,各字段分别有特定的装置或远程的文件系统、挂载点、加载的文件型态、挂载选项、dump设定及fsck设定。此文件可供linux于开机时加载到系统上,并于关机时卸载。

(13) ftp*
以ftp开头的文件如ftpaccess(主要设定档)、ftpconversions(文件的相关压缩规定)、ftpgroups、ftphosts、ftpusers(分别为ftp群组、主机、使用者拒绝存取设定)等均为ftp server相关的设定档。

(14) group 本文件为群组的资料文件,可以使每个使用者均拥有自己的群组;一般而言新的使用者建立后的的同时会产生相同于使用者名称的群组名称(redhat distribution)(caldera distribution 则会随adduser 或useradd 指令的不同而会纳入users群组或相同于使用者名称的群组名称);在gnome环境中可用linuxconf设定,在kde环境中可用user manger加以设定之。

(15) host*
在/etc目录下以host开头的文件有host.conf、hosts、hosts.allow、host.deny等目录,兹分述如下:
host.conf
本文件设定网络搜寻顺序系依hosts或dns之先后顺序定之;同时亦可一并设定是否将多重ip指定给一台主机与否。
hosts
本文件设定主机的ip及网域名称,利用此文件可加速特定主机的搜寻速度无须借助dns之功能,早期未有dns前即是依赖hosts档作名称查寻。
hosts.allow
本文件记载着允许那些主机联机到你的主机,在系统安全上为tcpwrapper机制的存取控制文件。通常是维护主机安全或作测试用。
hosts.deny
本文件记载着拒绝那些主机联机到你的主机,在系统安全上为tcpwrapper机制的存取控制文件。通常是维护主机安全或作测试用。一般而言,常与hosts.allow檔原则上先deny all 再设定allow,被allow同意的存取便不会再被deny否决。

(16) httpd
本目录下置放有conf目录、log 及module等文件其中尤以conf目录下的httpd.conf(主要设定档) 、access.conf(网页目录及资料来源路径文件)、srm.conf(设定apache的存取控制檔),目前apache 1.3.9以后版本已整合成httpd.conf加以设定即可;/etc/httpd为apache server重要目录所在。

(17) inetd.conf
通常当系统激活时,有部份的service是并没有在开机时被激活的,以节省系统资源。他们是利用inetd( internet daemon)--来监控网络服务的要求,再激活适当的daemon。inetd 是用来监控各种service的daemon,依不同的port提供不同的监控。/etc/inetd.conf即为其设定档,并由tcpd来提供监控。例如将telnet加上#,系统便不提供telnet的服务。
本文件最常与tcpwrapper机制的存取控制文件hosts.allow及 hosts.deny搭配负责网络安全的监控;举ftp为例,当inetd接收到使用ftp的请求时,便会激活tcpd,tcpd先纪录这项ftp的请求,然后检查hosts.allow、host.deny这二个存取设定控制档,如果同意存取,就会激活。另外,tcpwapper只能影响inetd激活,并且在inetd.conf里面经过编辑,由tcpd呼叫的服务,所以并不能为其它服务提供安全保障(如sendmail、nfs等)。管理者可以看log文件知道系统是否有被别人侵入。

(18) inittab
一般linux系统激活时,lilo 执行后加载kernel,kernel激活后呼init program(/sbin/init)激活系统必备程序,init为parent process(呼叫后fork 许多child process),接着便检视/etc/inittab,视/etc/inittab以runlevel? 启动再执行/etc/rc.d/rc.?d/下所有s开头之shell script,直到完成(ex.s10network ; s40cron)是以inittab文件乃在规范使用者要以那一种runlevel登入linux系统,我们亦可直接在系统提示符号下输入init 或 telinit 后加上欲豋入之第几层runlevel,例如init 3 或telinit 5,即可进入该环境模式。

(19) isapnp.gone
本文件包含isa适配卡所使用的资源,可用来设定硬件所需的内存、i/o base、irq及dma。

(20) issue(net)
本文件是记载使用者在登入本机时所出现的一段文字讯息,例如「red hat linux release 6.2 (zoot) + cle v0.9p1 (yami) kernel 2.2.17-4cle on an i586」而issue.net则用于远程登入时之文字讯息显示之用。issue文件可加以修改成你需要出现的内容, 但需同时将/etc/rc.d/rc.local文件中「echo “” > /etc/issue至echo >> /etc/issue」等几行加上批注起来,始能生效。

(21) ldso.conf
本文件存放了系统中共享函式库(shared libraries)的路径;linux提供了两种形式函式库:shared及static,而unix只提供shared libraries。当程序被编译时,程序便会去连结该程序所需用到的函式库。有时候程序为了便于侦错,或是为了某些考量,我们不希望程序去使用共享函式库,而是把会用到的链接库全部连结进程序的执行文件,让程序本身拥有一份函式库中函式的副本,这种方式称为静态连结程序(static linked),而依赖共享函式库所建立的程序称动态连结程序(dynamically linked)。系统安装了library后,必须告诉程序library放置于何处,使用共享函式库的好处是免除不同的程序里重复使用静态函数库(static libraries),与其在每个呼叫这些函式的程序里都储存一份copy,不如把函式库集中在系统的文件里,让执行的程序都可以读到这个程序。
当编辑完ldso.conf文件增加新的函式库或新安装某个套件之后(可能会安装某个新的共享函式库),后须下ldconfig -v,使之生效。

(22) lilo.conf
lilo即linux loader,本文件lilo.conf内容可以分为两部分: global及per-image,负责指定开机时所使用的kernel及开机时所要读取的lilo是放在哪一个装置,另亦有设定多重开机功能,使多个操作系统并存;如果对本文件进行修改,须下lilo –v –v –v 的指令重改设定由于lilo并非为一daemon,仅为一内部程序,通常须重开机后设定始能生效。

(23) mediaprm
本文件用来定义磁盘驱动器位于linux下的代号ex. /dev/fd0、/dev/cdrom

(24) modules.conf
本文件为模块的主要设定文件,在red hat 版本之名称命名为conf.modules ,modules一般来说大部分为一些装置、网络、文件系统等的驱动程序,传统上,驱动程序是核心的一部份,因为几乎所有的核心都需要藉由成为核心码的一部份来取得使用硬件的能力,至于模块化程序则是一种可加载之式驱动程序(loadable
device driver),在系统执行时是直接由加载内存或从内存卸载;而使用module的方式,可以不用重新建立kernel,同时也可以节省时间及内存空间。

(25) motd
本文件为系统显示与user的提示讯息提示的时机则在user login并输入帐号及密码后出现之讯息,例如:「last login: mon dec 18 10:19:15 on tty1」。

(26) mtab
本文件记载着已挂载(mount)的文件系统,当你下mount指令时所显现之内容与mtab内容常相一致。

(27) ntp.conf
ntp全名为network time protocol(网络对时协议),系client端针对ntp server作同步化对时所使用之协议,为达到ntp同步化获致正确而可信赖时间。ntp.conf则为主要设定文件提供模式的选择和使用的servers设定。

(28) pam.d
pam(pluggable authentication modules)即可插拔的认证模块;当login时,必需提供username和password,然后系统根据所给予的username和password来验证可否login,确认使用者身份,pam允许设置多种认证方式,不须再重新编译核心要进行认证的程序。使用pam,可编辑配置文件动态的去读取配置模块,然后再去执行验证;pam.d目录下则放置与pam相关的文件。

(29) passwd
每一位使用者皆有使用者名称供以辨识身份,亦必须一并设定密码在/etc/passwd文件中可以root身份来加入新的使用者,通常user输入username及密码,系统会先将输入之密码加密成13位码,再与 / etc / passwd作一比对,无误与否。至于实际的密码则放在/etc/shadow文件中。

(30) protocols
通讯协议号码是ip数据段表头中的一个字节,藉以显示出数据应该传给ip层以上的何种协议;至于协议号码则规范在本文件中,protocols内容是一个对照表,包含协议名称及协议号码和批注等栏项,利用协议号码与协议名称的对照便可知使用何种协议。

(31) rc.d
本目录下以etc/rc.d/rc0.d ~ /etc/rc.d/rc6.d里的文件代表各种不同runlevel所激活的daemon尤为重要,k代表kill,s代表start。在渠等目录下的文件通常为一连结档link至/etc/rc.d/init.d 里的daemon以供激活。/etc/inittab文件乃在规范使用者要以那一种runlevel登入linux系统,至于本文件案则视以runlevel? 登入,代表激活rc?.d目录下依序激活各连结档的shell script(/etc/rc.d/init.d 里的daemon)。

(32) resolv.conf
bind的伺服端透过daemon(/etc/rc.d/init.d/named)来执行;bind的客户端则透过resolver,它是一个程序函式库组成,会发出名称查询,而由/etc/resolv.conf设定之(即将nameserver加入该文件中),例如echo “
nameserver 172.17.0.10” >> /etc/resolv.conf 或者手动vi编辑之。

(33) rpc
rpc全名为remote procedure call即远程程序呼叫,通常系指local 端程序对位于远程系统中的程序进行呼叫,俟其完成任务并将该任务传回给local端;/etc/rpc文件内存rpc程序号码数据库,含有使用者可识别之替代rpc程序号码的名称基本格式则含有rpc程序的server名称、rpc程序号码、别名等记载栏项。

(34) samba.d/smb.conf:
samba(server message block protocol)使用来将linux system与windows system透过网络上的芳邻作沟通整合之用,而/etc/samba.d/smb.conf 则为samba的重要设定档,该档中主要分global与share defini tions二大项;/etc/samba.d/ smbpasswd则是samba password的设定档。

(35) securetty
本文件定义了root可login的terminal,一般而言预设为tty1至tty8,root只能从定义中的terminal登入。

(36) sendmail.cf
本文件为mail server的重要设定档,sendmial是一种mta,目前在unix或linux上使用相当广泛,由柏克莱大学大学生所写的程序,功能强大,但sendmail.cf内容由宏指令写成较为艰涩难懂,因此一般除伪装名称、主机的别名、收信的主机位置名称等少数项目由sendmail.cf文件直接于其中设定外,一般而言,均另用m4产生sendmail.cf的宏定义档,redhat版本名称为/etc/sendmail.mc ,openlinux版本则放在/usr/share/sendmail/cf/cf/gerneric-col2.2.mc;此外/etc/aliases、/etc/access、/etc/mail/relay-domains亦为sendmail的相关设定檔。

(37) services
一般而言linux或unix的操作系统port号码常定义在/etc/services文件中由port号码可辨示出application process(应用程序行程)即网络服务例如ftp、telnet;在services文件中256以下port号码保留给常用的网络服务,256到1024的port号码则由特定的linux服务使用,另不同的transport layer(传输层)可以共享相同的port号码;port号码必须与协议号码共同搭配始能将资料导引到正确的网络服务。

(38) shadow
shadow passwording将密码移到另一个文件,本文件即属密码文件而与/etc/passwd搭配;权限上则较为严格,一般而言,仅有root有读写(caldera distribution)或读(redhat distribution)的权利。

(39) skel
本目录下之文件内容例如:.bash_logout、.bash_profile、.bashrc、.kde、.kderc、.netscape、.screenrc、destop等即是用来在建立一新的使用者时在/home/目录下的使用者名称目录的内容即烤贝至skel此目录下之文件内容。

(40) sysconfig/network-sccripts/ifcfg-eth?
本文件为网络卡的设定档内容有设备名称、ip地址、屏蔽、广播地址、网段、开机激活设定等项目。

(41) wgetrc
wget乃使用来将world wide web上之文件取回之工具指令,wgetrc文件则是wget初始化的文件其中有quota、mail header、重传文件的预设次数、firewall及proxy的相关设定。

(42) z*
以下z开头的文件均为zshell相关的设定档zlogin系指z shell的登入设定;zlogout系指z shell的注销设定;zprofile系指z shell的使用者设定;zshenv系指z shell的使用环境设定;zshrc系指z shell的资源档设定。


2./dev:
本目录中存放了device file(装置文件),使用者可以经由核心用来存取系统中之硬设备,当使用装置文件时 核心会辨识出i/o request传递到相对应装置的驱动程序以便完成特定的动作;每个装置在/dev目录下均有一个相对应的项目;另/dev目录下尚有一些项目是没有的装置这通常是安装系统时所建立的,它不一定对应到实体的硬件装置;此外亦有一些虚拟的装置,不对应到任何实体装置,例如俗称黑洞装置的/dev/null,任何写入该档的请求均会被执行但被写入的资料均会如进入黑洞般的消失无踪。
在/dev目录下第一栏的文件型态会发现常存有既非directory亦非file而是“b”或”c”,”b”指block device file(区块装置文件),”c”指character device(字符装置文件);区块装置(例如硬盘)通常是外接装置,资料的读写都是以整个区块的形式进行读写,字符装置(例如串行端口),资料的读写都是以一个byte来进行读写。

(1) /dev/fd*
fd0、fd1--------等指第几个软盘支持的装置驱动接口,fd0表示第一个fd1表示第二个。

(2) /dev/hd
系指ide硬盘的装置驱动接口,在/dev/lilo.conf设定中boot=/dev/hda即指整颗硬盘,/dev/hda1则指硬盘中的第一个partition。

(3) /dev/sd
系指scsi磁盘的装置驱动接口。

(4) /dev/console
系指系统的操作控制台乃实际连接到linux操作系统的屏幕。

(5) /dev/tty
系指提供使用者不同的terminal操作控制台的装置驱动接口,并有virtual console的功能切换上可使用ctrl+alt+f1~f6。

(6) /dev/ttys?
ttys系指串行端口接口ttys0即为com1,ttys1即为com2


3./boot:
本目录下放置有系统激活的相关文件例如initrd.img、vmlinuz、system.map,均为重要的文件,是以本目录不可任意删除。

initrd.img为系统激活时最先加载的文件。

vmlinuz即为kernel的image文件。

system.map包括了kernel的功能及位置。top、ps指令会去读此文件来显示系统目前的信息状态。因此system.map必须对应到相同的kernel,不然会显示错误的信息。

4./home:
一般而言,使用者的家目录就($home)是放在/home这个目录下,而以使用者名称作为/home目录下各个目录的名称例如使用者col的家目录路径即为/home/col目录下当使用者col login时,其所在的目录即为/home/col,此外ftp站台目录(ftp)及web站台目录(httpd)亦置于/home目录下。

5./lib:
许多系统激活时所需要用到重要的共享函式库shared libraries均放于此,包含最重要的gnu c library在内,凡档名为library.so.version的共享函式库,通常放在/lib目录下。

/usr/lib/:
本目录与/lib目录不同的是/lib乃系统激活时所需要用到重要的共享函式库而/usr/lib乃关于应用软件常置放函式库之处;例如放置一些其它应用程序(如netscape、x server)等的share libraries。其中,最重要的函式库为libc或glibc (glibc 2.x便是libc 6.x版本,标准c语言函式库)。几乎所有程序都会用到libc或glibc,因为这两个程序提供了对于linux kernel的标准接口。又档名为library.a的静态函式库,通常亦放在/usr/lib目录下。

6./lost+found:
一般重启或关闭system,可下sync;sync.避免有些message会留在硬盘之cache上,此时dirty bit为1,当再开机时,system会去检查每一个dirtybit是否为0,如果为1则会执行fsck。作fsck时,常会问要否删除dirtybit,如选yes时,会把inode集中放在lost+found®用file 指令去查寻,不重要再行删除即可(inode number)。简单言之,本目录乃记录硬盘上的partition于资料流失时作fsck寻找回来的遗失文件片段。

7./mnt:
本目录为系统内定的mount point(挂载点),预设则有/nnt/cdrom和/mnt/floppy,使用自动的挂载程序例如kde桌面上的cdrom与floppy或者gnome的drive mount applet,均会自动地把光驱和软盘机挂载至这二个目录。如果要挂加载额外的文件系统,一般而言我们都会将/mnt目录当作挂载点,然后在该目录下建立任一目录名称作为挂载目录;家目录把同一颗硬盘上的另一个window 2000操作系统mount到本机linux操作系统上则可用此法。

8./proc:
本目录为一个虚拟的文件系统,其功能乃在统一文件与行程,它不占用任何硬盘空间,因为该目录下的文件均放置于内存内;每当你存取/proc文件系统时kernel会拦截你的存取动作撷取相关信息再动态的产生目录与文件内容。
本目录下主要有二大形态的文件;其一是以pid数字为文件名,/proc会记录系统每个行程,有助于系统的管理于与除错;其二乃kernel所搜集到的系统使用的硬件信息例如/proc/ioports、/proc/dma、/proc/meminfo、/proc/interrupts均属之。

9./root:
本目录为系统管理者 root的家目录。

10./bin:
bin为binary的简写主要放置一些系统的必备执行文件例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

/usr/bin:
主要放置一些应用软件工具的必备执行文件例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、newaliases、nslookup passwd、quota、smb*、wget等。

/sbin:
主要放置一些系统管理的必备程序例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、runlevel、shutdown等。

/usr/sbin:
放置一些网络管理的必备程序例如hcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。

11./tmp:
本目录乃供全体使用者暂时放文件的目录,有时某些应用程序执行中产生的临时文件亦会暂放至此目录;然而系统预设本目录权限为可读、写、执行但无法删除之1777(drwxrwxrwt)亦即多加上save program text on swap device即t 的权限;以避免有人任意删除他人存放于/tmp目录的文件。

12./var:
linux操作系统经常需要变动的或暂存的资料常放在固定的目录而后系统新产生的资料都会在这个文件中作更新;在这个目录下有几个重要的目录例如:/var/log;/var/spool;/var/run等以下兹分别介绍之:

(1) /var/log
log文件乃记载着linux操作系统运作过程的记录分别有激活纪录(boot)、网站存取、错误、安全记录(httpd/access_log、httpd/error_log、httpd/ssl*)、邮件记录(maillog)、登入讯息(secure)、ftp讯息(xferlog)。

(2) /var/spool
spool乃linux操作系统将工作暂放置于内存特定区域或硬盘上特定设备,/var/spool是一个队列目录提供spool服务,其底下最为重要的目录即为lpd、mail、squid等三个目录;打印文件的print queue会在/var/spool/lpd。
----------------------------------------------------------
送给你我思念的手
愿它能传递我的温柔
与暖暖的问候
解开你眉间的忧
赶走你心中的愁
让所有幸福与快乐
从此在你的身旁停留

编辑 删除 发表时间发表于 2002-03-29.13:30:36   MSIE 5.01 Windows 2000IP: 已记录
cooldidi帅哥哦
级别:长 老 级
威望:0
经验:0
货币:172
体力:5.9
来源:江苏
总发帖数:901
注册日期:2002-02-06
查看 邮件 主页 QQ 消息 引用 复制 下载 

这个还是贴到新手区吧~~
----------------------------------------------------------
我很懒的---:-)

编辑 删除 发表时间发表于 2002-03-29.13:32:01   MSIE 6.0 Windows XPIP: 已记录
痞菜帅哥哦
级别:管理员
威望:9
经验:15
货币:99939
体力:100
来源:不知道
总发帖数:2601
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

这个不错真的可以完全理解的都是高手了每个目录里的都是什么的 绝对的是高手出学也要好好看看不错
----------------------------------------------------------

哈哈

编辑 删除 发表时间发表于 2002-03-29.13:39:19   MSIE 5.01 Windows 2000IP: 已记录
痞菜帅哥哦
级别:管理员
威望:9
经验:15
货币:99939
体力:100
来源:不知道
总发帖数:2601
注册日期:2001-04-13
查看 邮件 主页 QQ 消息 引用 复制 下载 

配合这个看看 更好




发信人: fkbch (无灵子@笨愚斋), 信区: linux
标 题: [转载]关于lilo--原理篇  (转载)
发信站: bbs 水木清华站 (thu dec 30 17:08:46 1999)

1一般的开机引导过程。
在pc机上,最初的启动由bios完成。当开机自检结束时(power-on self test,post),
bios尝试读入软盘的第一个扇区,把它看作引导扇区。若没有软盘,则尝试读入硬盘
的第一个扇区。新的bios可以改变这种次序,先从硬盘启动。甚至从光盘启动。由于
大多数bios不提供scsi支持,若要从scsi磁盘启动,scsi适配器要提供他自己的
bios.如果什么都找不到,老的bios会启动内置的rom basic,或直接打印"no
rom-basic".
  操作系统的启动分几步完成。由于引导扇区比较小,通常它主要任务是读入第二
个loader,第二个loader再读入第三个loader,直到整个操作系统被完全读入。
 
  dos 引导区:
offset
0x000  jmp xx     near jump into the program code
0x003  disk parameters
0x03e  program code loading the dos kernel
0x1fe  0xaa55     magic number for bios
  可见,引导区的结构相对比较简单。它的长度总是512字节。以上,磁盘参数
只对dos有意义。重要的是引导区从0开始,以bios的magic number 结束。
  从软盘启动比较简单,因为只有一个引导扇区:第一个扇区。硬盘则困难一些,
它被分成很多分区。但是,bios根本不管分区信息,它象对待软盘一样对待硬盘,
仍读入第一个分区,叫作:master boot record.(mbr).
  所以mbr也应该和上面介绍的结构一样:从0开始,以bios的magic number 结束
在mbr的最后部分,有分区表。如下图:
 
offset length
0x000  0x1be code loading and starting the boot sector of the active
       partitian
0x1be  0x010  partition1
0x1ce  0x010  partition2
0x1de  0x010  partition3
0x1ee  0x010  partition4
0x1fe  0x0012 0xaa55   disk parameters
 
每个分区信息占16字节,结构如下:
    1 boot boot flag: 0=not active ,0x80 active
    1 hd  begin:head number
    2 sec cyl beginector and cylinder number of boot sector
    1 sys system code:0x83 linux , 0x82 linux swap etc.
    1 hd  end:head number
    2 sec cyl end: sector and cylinder number of boot sector
    4 low byte high byte    relative sector number of start sector
    4 low byte high byte    number of sectors in the partition
  所以硬盘可以有4个分区。这四个分区叫做主分区rimary prititions.假如它
们不够用,可以设置所谓的扩展分区。  扩展分区包含至少一个逻辑分区。扩展
分区的第一个扇区结构类似mbr,它的分区表的第一表项对应第一个逻辑分区。如果
存在第二个逻辑分区,那么分区表的第二个表项就包含了一个指针。这个指针指向
第一个逻辑分区后面的一个地址。这个地址包含一个分区表。该分区表的第一表项
对应第二个逻辑分区。这样就组成一个链表,从而扩展分区可以有任意多的逻辑分
区。
  每一个主分区和扩展区都包含一个引导扇区。系统只能从这几个地方之一启动。
boot标志决定哪个区被引导。
  原来,只有主分区,因此,ms-dos的fdisk和大多数同类工具只能激活主分区..
mbr的代码要作以下的操作:
  1:确定活动分区。
  2:使用bios,将活跃分区的启动扇区读入。
  3:跳到启动扇区的0位置。
  mbr的空间足够完成这些工作。如上所述,每个分区理论上包含一个引导扇区,
而且,存在的第二个硬盘也包含和第一个类似的结构。mbr完全可以容纳一个复杂
的引导程序。即所谓的boot manager,动态的决定活动分区。linux 为我们提供了lilo
 
2 lilo:the linux loader
  lilo引导扇区包括一个分区表的空间,所以,lilo即可以安装在mbr中,也可以安
装在某个分区的引导扇区。lilo拥有dos引导扇区的所有功能,而且,它还可以引导
逻辑扇区和第二硬盘分区。lilo还可以和另外的引导者合作(例如:nt loader),这样,
用户就可以有很多选择。
(注:以下几个标题,为防止引起歧义,用原文)
2.1 lilo started by ms-dos mbr
如果系统至少有一个linux主分区,(非交换区,且在第一硬盘上),那么lilo就可
以安装在这些分区中的一个。当 lilo对应分区被激活后,引导过程如下:
  bios 读入 mbr
mbr 读入 活跃主分区:lilo所在的分区。
lilo 引导linux或另外的操作系统。
要引导其它os且不用lilo很简单,激活那个分区。linux分区没有任何变化,非常安全。
 
2.2 lilo started by a boot manager
假如用户不想删除老的boot manager,或者某个os lilo不能引导,可以考虑该途径。
1. 假如boot manager可以引导扩展区,那儿是lilo的好去处。
2. 假如 boot manager 可以引导第二硬盘分区,linux可以装在第二硬盘上。
3 有些 boot manager 甚至可以引导逻辑分区,那lilo就可以装在逻辑分区上。
当然,也要注意以下情况:
1 某些操作系统直接改写mbr,这会将原来的boot manager破坏。
2 重新分区会破坏扩展分区的引导扇区,这是lilo可能要重装。
  当安装新的系统时,是否要重新安装(linux)依靠新的boot manager,要么lilo引
导扇区被注销,要么boot manager 为它提供一个引导项。重新分区或分区格式化会将
lilo和linux全部删除。
 
2.3 lilo占据mbr
假如整个linux系统都在第二硬盘上,且第一硬盘没有扩展分区,那么,lilo只有装
在mbr上。这样,会将老的mbr冲去,所以,在安装lilo前,要将老的mbr(包括分区
表)做一个备份。dos下有很多工具可以完成这个任务。在linux下,这样备份:
 
     # dd if=/dev/hda of=/backup/mbr bs=512 count=1
 
写会使用命令:
  # dd if=/backup/mbr of=/dev/hda bs=446 count=1
这样,原来的mbr就被写会但不包括分区表。如果分区表也要恢复,那么bs=512.
注意,这样,新的分区表会被破坏!
 
2.4 lilo 文件
  与lilo有关的文件通常放在/boot/下,配置文件lilo.conf在/etc/下。包含实际
引导系统信息的映射文件有/sbin/lilo安装。对于任何lilo安装,配置文件应该被定
置以适合个人需要。
the configuration file:配置文件
  基本上,配置文件是一些变量赋值。每一行包含一个标志变量或一个变量赋值.
配置文件被特殊的变量赋值分成几个区,每个区引导一个linux或其它os.
  下面解释常见的行:
 
boot = device
说明那一个设备或哪一个分区包含引导扇区。假如没有给boot赋值,取当前缺省值。
 
compact
激活一种模式,在此模式下,lilo一次向bios请求读入相邻的几个分区。这极大的
缩短了装载时间,特别是从软盘启动。
 
delay=tenths
以10秒为单位,规定lilo在引导第一个引导配置前应等待用户的时间。若没有定义,则
直接引导。
 
linear
使lilo生成线性地址,而不使用通常的sector/head/cylinder机制。linux地址机制
可以不依赖磁盘的物理结构。
 
install = boot sector
  使用指定的boot sector写入引导扇区,缺省用/boot/boot.b
 
disktab=disktab
  使用指定的disktab,缺省使用/boot/disktab.disktab保存了硬盘物理结构信息。
 
map=map file
说明映射文件的路径。
 
message=file 指
定一个文件,该文件的内容将会在lilo引导是被显示。假如没有说明该文件,那么就
只会出现"lilo"。
 
verbose=level
  说明lilo的调试级别。从0(不显示任何信息)到5(所有的状态信息)。
 
backup = backup file
  以前引导扇区内容的备份文件。缺省使用/boot/boot.device number
 
force-backup=backup file
和backup 相同,当时假如备份文件存在,被覆盖。
 
prompt
  指定要用户通过键盘选择要引导的内核。不会缺省选择。
 
timeout=tenths
设置一个超时值,在此时间内必须有键盘输入,否则用第一个配置。类似,假如超
时,就不能再输入密码。一般情况下,该取缺省值,无穷大。
  注:delay 与 timeout的区别(joe 认为),delay 是"lilo"出现后用户必须有
    输入的最长时间。timeout 是用户在按了任意键后,系统等待选择,用户
    两次击键的最大间隔时间。
 
serial=port,  bps parity bits
  设置串口参数。如果lilo会从该文件获取串口参数的话。如果其中之一无效,
那所有三个参数都无效。port从四个标准串口选择一个:0对应com1 或者
/dev/ttys0.。支持的波特率范围为:100-9600。所有校验设置都支持
(n:none,e:even,odd)
bits为7或者8。缺省为serial=0,2400n8.
 
ignore-table
  让lilo忽略被破坏的分区表。
 
fix-table
  允许lilo将每个分区的(sector/head/cylinder)地址转化为线性地址。通常,
分区地址从cylinder boudary开始。某些操作系统,会改变这一点。由于lilo只能
将它的启动扇区写于两种地址都一致的分区上,不正确的3d地址可以用fix-table
来纠正。但是,这种纠正不能被保证是永远的,所以重分区以保证对齐cylinder
boudary 是最好的选择。
 
password=password
  为引导配置设置password
 
restricted
  放松对password的限制。只有用户想传附加的启动参数给内核时才需要password
 
optional
  允许配置的几个内核有错误的,或者不存在,如果不说明optional,lilo遇到这种
情况就会打印一些错误信息然后退出。
 
  每个从lilo引导的配置从image行开始。
    image = kernel
      label = name
image包含要引导的内核。label是给用户选择用的。image行通常指向一个设备,
例如/dev/fd0,可以找到内核的范围用range来注明。
    range = range
range可以用start sector -end sector 或者 start sector + length 表示。例如:
    image = /dev/fd0
      label = floppy
      range = 1+512
以下变量赋值有可能出现:
append=string
  将string作为引导参数传给内核。例如,硬件参数。
literal=string
  和append查不多。但是,他会冲掉原来的设置。所以不能被全局说明。
ramdisk=size
  设置ram disk的大小。
read-only
read-write
  设置根文件系统的访问方式。
root=device
  设置根文件系统存在的设备。
vga=mode
  屏幕设置。可能模式为:normal,extended 和ask. 。
以下设置是针对别的操作系统的:
loader=loader
  说名用来引导操作系统的文件。缺省为 /boot/chain.b . 另外,lilo包含以
下的loader:
os2_d.b 可以从第二硬盘上引导os/2
any_d.b 在引导操作系统之前试图将两个硬盘的次序颠倒,从而可以引导第二硬盘
上的os.
table=device
  说明一个设备,该设备的某个分区上存放要引导的os.假如没有说明table,
lilo就不会将该信息传给要引导的osunsafe
  关掉对要引导的os的检查。只有要从软盘引导时,才使用该设置。没有该设置,
每次map installer开始运行时,引导盘都要插入软驱。
the disktab file
disktab文件包含lilo要引导的设备的物理结构信息。通常,这些信息可以从设备驱
动程序获取。所以,只有这种方法不行时才会用到disktab 文件。在此情况下,如
果文件不能用,lilo报告错误信息:
    geo_query_dev hdio_getgeo(dev …)
或者
    hdio_req not supported for your sisi controller
    please use /boot/disktab
然后,物理结构信息就必须手工地输入。
# /boot/distab-lilo parameter table
#
#this table contains the geometry parameters for scsi and
# ide disks,which can not be recognized automatically
# entries in this table overwrite recognized parameters!
#
  # dev. bios secs/ heads/ cylin - par.
# num. code track cylin. ders. offset
              (optional)
#0x800 0x80 32 64 202 0 # /dev/sda
各个域含义如下:
  0x800
    设备号.由主副设备号组成。
    设备号.由主副设备号组成。
  0x80
    设备的bios 码。0x80代码系统的第一个硬盘。0x81第二个,。。。。
    所有同一硬盘上的分区该值相同。
  32,64,203
    sector 数目(每个track)
    heads 数目
    cylinders 数目
  0
    分区的开始。也可以从分区表中读,所以可以不说明。
 
2.5 lilo 启动信息

在启动过程中,lilo会显示‘lilo‘,如果lilo出错退出,可以根据显示来判断系统的
出错原因。
没有信息:lilo根本就没有被读入,没安装lilo,或lilo驻留的分区没被激活。
  lnumber : lilo的第一部分被读入并开始执行。但第二部分不能被读入。后面
的数字表明出错原因。这可能是由于硬盘的物理错误或不正确的物理结构信息。
  li: lilo的第一部分可以读入第二部分,第二部分执行时出错。这可能是不正
确的物理结构信息或重装了boot.b而没有运行lilo重新安装。
  lil:lilo的第二部分启动起来了,但是不能从map文件读入descriptor tables.
这说明不正确的物理结构信息或物理错误。
  lil?: lilo的第二部分被读到不正确的地址。原因同li
  lil-: descriptor tables有错。这可能是不正确的物理结构信息或重装了
map file而没有运行lilo重新安装。
 
--
※ origin: 笑 书 亭 <bbs.zd.dhs.org>
◆ from: 210.32.132.203
----------------------------------------------------------

哈哈

编辑 删除 发表时间发表于 2002-03-29.13:42:25   MSIE 5.01 Windows 2000IP: 已记录
88888888帅哥哦
级别:中级站友
威望:0
经验:0
货币:
体力:
来源:其它
总发帖数:66
注册日期:2002-02-27
查看 邮件 主页 QQ 消息 引用 复制 下载 

谢谢了,很不错。

编辑 删除 发表时间发表于 2002-03-29.13:45:17   MSIE 6.0 Windows XPIP: 已记录
jsllfa帅哥哦
级别:老 站 友
威望:0
经验:0
货币:
体力:
来源:黑龙江
总发帖数:259
注册日期:2002-03-26
查看 邮件 主页 QQ 消息 引用 复制 下载 

满分!
----------------------------------------------------------
往事如风

编辑 删除 发表时间发表于 2002-03-31.10:17:21   MSIE 5.5 Windows 98IP: 已记录
选择回复        
 快速回复主题: >>>高级模式
  用户名: 没有注册? 密码: 忘记密码?
记住密码
HTML语法
禁止IDB代码
禁止表情字符

[按 Ctrl+Enter 快捷键可直接提交帖子]
 投票评分: 共 0 票  
所有时间均为: 北京时间 ↑TOP 
关闭主题 拉前主题 移动主题 主题置顶 取消置顶 总固顶主题 取消总固顶 加入精华 移出精华 删除主题