电脑技术学习

RedHat 开机起动流程

dn001
#;版权宣告:;1999;Copyright;OLS3;All;rights;reserved.

#;作者:;OLS3;(卧龙小三)
#;本讲义仅供台南县;87;学年度网路管理进阶研习班上课之用.
#;学员可保存一份自用,;供日後网管时参考备查.
#;作者保有一切形式的着作权.
#;欲作其它用途者,;需经作者授权同意.
#;未经作者授权同意之前,;请勿转载刊登.

RedHat;开机起动流程;:

1.;LILO;取得控制权.

PC;起动时,;会读取开机磁碟第一条;cylinder;的第一个;sector(此即;MBR),;然後它会试着将读取到的程式码载入记忆体中并且予以执行.;这些程式码,;就是;LILO.;记不记得,;当初我们安装时,;曾选择将;LILO;放入MBR;呢?!

2.;载入;kernel

Red;Hat;的;kernel;放在;/boot;中,;通常档名类似;vmlinuz-2.0.34-0.6,;vmlinuz-2.2.5-15

3.;kernel;执行第一支程式;/sbin/init

init;会根据;/etc/inittab;这个;initialization;table;来决定不同的;run-level;应该如何设定系统.

Red;Hat;的;run-level;有以下;7;层:;(定义在;/etc/inittab;中)

0;---;halt;:;关机;level;
1;---;Single;user;mode;:;单人模式,;如果你忘记;root;密码,;这是补救的方式之一.;
2;---;Multiuser,;without;NFS;:;多人使用模式,;但没有;NFS;功能,;如果安装时没有使用网路功能,;那麽;level;3;是一样的.;
3;---;Full;multiuser;mode;:;这是预定的;run-level;
4;---;unused;:;这个;run-level;目前尚未定义使用;
5;---;X11;:;X;Windows;使用的;level;
6;---;reboot;:;重新开机时使用的;level;
Linux;系统开机时,;最重要的观念便是这个;run-level;,;run-level;可以说是;Linux;的系统状态(system;states;of;Linux),;根据不同的情况进入不同的系统状态,;以执行不同的初始化动作.

另外一点,;Linux;虽然融合了;System;V;及;BSD;的特色,;但在开机起动的部份,;比较接近;System;V;的作法,;并且这种方式几乎已成为;Linux;世界的一项标准.;因为它具有容易使用,;功能强大以及富有弹性的特色.;

其目录档案结构如下:

/etc/rc.d;中包含:

目录;script;档案;
/etc/rc.d/init.d;
/etc/rc.d/rc0.d;
/etc/rc.d/rc1.d;
/etc/rc.d/rc2.d;
/etc/rc.d/rc3.d;
/etc/rc.d/rc4.d;
/etc/rc.d/rc5.d;
/etc/rc.d/rc6.d;
rc;
rc.local;
rc.sysinit;


rc0.d;便是;run-level;0;起动;script;存放的目录,;rc3.d;是;run-level;3,;其它依此类推

不过,;rc0.d;~;rc6.d;中的;script;并不是各自独立的,;其实它们都是;symbolic;file,;连结到;/etc/rc.d/init.d;中的;script.

比如;rc3.d;目录中的档案列表如下:

total;0
lrwxrwxrwx;;1;root;;root;;20;May;23;15:56;K15postgresql;->;../init.d/postgresql
lrwxrwxrwx;;1;root;;root;;17;May;23;15:56;K20rusersd;->;../init.d/rusersd
lrwxrwxrwx;;1;root;;root;;15;May;23;15:56;K20rwhod;->;../init.d/rwhod
lrwxrwxrwx;;1;root;;root;;16;May;23;15:56;K55routed;->;../init.d/routed
lrwxrwxrwx;;1;root;;root;;17;May;23;15:56;S01kerneld;->;../init.d/kerneld
lrwxrwxrwx;;1;root;;root;;17;May;23;15:56;S10network;->;../init.d/network
lrwxrwxrwx;;1;root;;root;;15;May;23;15:56;S15nfsfs;->;../init.d/nfsfs
lrwxrwxrwx;;1;root;;root;;16;May;23;15:56;S20random;->;../init.d/random
lrwxrwxrwx;;1;root;;root;;16;May;23;15:56;S30syslog;->;../init.d/syslog
lrwxrwxrwx;;1;root;;root;;13;May;23;15:56;S40atd;->;../init.d/atd
lrwxrwxrwx;;1;root;;root;;15;May;23;15:56;S40crond;->;../init.d/crond
lrwxrwxrwx;;1;root;;root;;17;May;23;15:56;S40portmap;->;../init.d/portmap
lrwxrwxrwx;;1;root;;root;;15;May;23;15:56;S40snmpd;->;../init.d/snmpd
lrwxrwxrwx;;1;root;;root;;16;May;23;15:56;S45pcmcia;->;../init.d/pcmcia
lrwxrwxrwx;;1;root;;root;;14;May;23;15:56;S50inet;->;../init.d/inet
lrwxrwxrwx;;1;root;;root;;15;May;23;15:56;S55named;->;../init.d/named
lrwxrwxrwx;;1;root;;root;;13;May;23;15:56;S60lpd;->;../init.d/lpd
lrwxrwxrwx;;1;root;;root;;18;May;23;15:56;S75keytable;->;../init.d/keytable
lrwxrwxrwx;;1;root;;root;;18;May;23;15:56;S80sendmail;->;../init.d/sendmail
lrwxrwxrwx;;1;root;;root;;13;May;23;15:56;S85gpm;->;../init.d/gpm
lrwxrwxrwx;;1;root;;root;;15;May;23;15:56;S85httpd;->;../init.d/httpd
lrwxrwxrwx;;1;root;;root;;15;May;23;15:56;S85sound;->;../init.d/sound
lrwxrwxrwx;;1;root;;root;;13;May;23;15:56;S91smb;->;../init.d/smb
lrwxrwxrwx;;1;root;;root;;11;May;23;15:48;S99local;->;../rc.local

各位可以发现:;这些;script;档不是以;S;开头,;就是以;K;开头,;其後再接上二位数字,;并且皆连结到;init.d;目录中的相关;scripts;档.

以;S;开头的,;表示;Start;起动之意,;而;K;开头的,;则是;Kill;杀除之意.

4.;init;执行第一支;script;:;/etc/rc.d/rc.sysinit

rc.sysinit;会设定许多系统变数,;如:

设定;PATH;
设定网路:;读取;/etc/sysconfig/network,;以设定;NETWORKING,;FORWARD_IPV4,;HOSTNAME,;DOMAINNAME,;GATEWARY,;GATEWAYDEV(eth0);
设定;NIS;domain;name;
并且执行;run-level;启动之前所需的许多准备动作,;如:

起动;swapping;
checking;root;filesystems;:;检查;root;档案系统;
检查系统参数;(/proc),;设定;PNP;
清除;/etc/mtab;
mount;root;及;/proc;档案系统;
决定是否使用模组,;载入模组;
检查档案系统;(使用;fsck);
挂上其它档案系统;
设定;console;字型;
打开;quota;
清除不必要的档案,;如;lock,;pid;
设定;clock;
serial;port;初始化;
将开机讯息经由;dmesg;放入;/var/log/dmesg;中;


5.;init;执行预设的;run-level;目录中所有的;scripts

正常情况下就是;rc3.d,;因为;/etc/inittab;中有一行设定是:;id:3:initdefault:;表示预设要执行的;run-level;是;level;3.;因此,;刚刚上面各位看到的;rc3.d;中的;Sxx;及;Kxx;都会被执行.

6.;最後;init;执行;/etc/rc.d/rc.local;这支;script.

rc.local;会在各;run-level;的;script;执行完之後再执行.;您可以将自己想在开机时处理的动作加在这个;script;之中.

7.;init;执行完之後,;接着执行;/bin/login;程式

login;程式会提示使用者需输入帐号及密码,;接着编码并确认密码的正确性,;若二者相合,;则为使用者进行初始化环境,;并将控制权交给;shell.

8.;shell;

假设预设的;shell;是;bash,;则;bash;会先寻找;/etc/profile,;执行其中的指令,;然後搜寻使用者目录中,;是否有;.bash_profile,;.bash_login,;或;.profile,;执行其中一个,;接着命令提示符号;$;便出现在萤幕上,;等待您输入命令.

至此,;完成了整个开机的流程.

标签: