标签:
对于无论什么系统, 但无法打开电源这么简单的事, 很多事情将在几秒钟内几秒钟或几十本短时间内发生, 了解这一过程将是完整的引导解决问题的任何或提高开机速度的前提. 下一个, 我们会专门寻找Linux程:
1. 载入 BIOS 的硬件信息并进行自我測试,并根据取得第一个可开机的装置;drwxrwxr-x 10 freeman freeman 4096 10月 18 14:50 ./ drwxrwxrwt 16 root root 4096 10月 18 14:47 ../ drwxr-xr-x 2 freeman freeman 4096 10月 18 14:50 bin/ drwxr-xr-x 3 freeman freeman 4096 10月 18 14:50 conf/ drwxr-xr-x 7 freeman freeman 4096 10月 18 14:50 etc/ -rwxr-xr-x 1 freeman freeman 7237 10月 18 14:50 init* -rw-r--r-- 1 freeman freeman 51981312 10月 18 14:46 initrd drwxr-xr-x 7 freeman freeman 4096 10月 18 14:50 lib/ drwxr-xr-x 2 freeman freeman 4096 10月 18 14:50 lib64/ drwxr-xr-x 2 freeman freeman 4096 10月 18 14:50 run/ drwxr-xr-x 2 freeman freeman 4096 10月 18 14:50 sbin/ drwxr-xr-x 7 freeman freeman 4096 10月 18 14:50 scripts/是不是非常像Linux文件系统的文件夹结构(^-^)
在此, 我们须要了解一下这个init程序的作用:
init 程序的最主要功能是准备软件运行的环境, 当中包含系统的主机名, 网络设定, 语言选择, 文件系统格式及其它服务的启动等. 而这些全部的动作都会透过init的配置文件, 也就是/etc/inittab来规划, 而inittab内另一个非常重要的设定项目, 那就是默认的runlevel(开机运行等级). 所以说, /etc/inittab 文件来指导init程序来运行详细的动作.
以下我们看看/etc/inittab文件的内容:
freeman@freeman-H55M-S2:~$ cat /etc/inittab id:3:initdefault: #设置默认执行等级.init 首先读取这一行来确定执行级别. si::sysinit:/etc/rc.d/init.d/rc sysinit #执行/etc/rc.d/init.d/rc.sysinit脚本, 用于设置主机名, 挂在文件系统, 启动交换分区等. 0:0:wait:/etc/rc.d/init.d/rc 0 1:S1:wait:/etc/rc.d/init.d/rc 1 2:2:wait:/etc/rc.d/init.d/rc 2 3:3:wait:/etc/rc.d/init.d/rc 3 4:4:wait:/etc/rc.d/init.d/rc 4 5:5:wait:/etc/rc.d/init.d/rc 5 6:6:wait:/etc/rc.d/init.d/rc 6 #相应于/etc/rc.d/rc[0-6].d中的脚本. #配置行的排列语法为: # id:runlevels:action:process [argument] #id为标志字段,一般为2至4个字符. #runlevel定义本行适用的执行等级.一般例如以下 #--------------------------------------------------------------------- #执行等级 | 说明 #---------|------------------------------------------------------------ # 0 | Halt,关闭系统. # 1 | 单用户,在grub启动时加上为kernel加上參数single就可以进入此执行等级 # 2 | 无网络多用户模式. # 3 | 有网络多用户模式. # 4 | 有网络多用户模式. # 5 | X模式 # 6 | reboot重新启动系统 # S/s | 同执行等级1 # a,b,c | 自己定义等级,通常不使用. #--------------------------------------------------------------------- #action定义採取的行动. #--------------------------------------------------------------------- # 行动 | 说明 #--------------------------------------------------------------------- # respawn |仅仅要进程一停止,该进程就又一次启动. # wait |进程仅仅执行一次,init将一直等待它结束,再执行其他命令. # once |进程仅仅执行一次. # boot |系统引导进程中,进程执行,init将忽略执行等级这段. # bootwait |系统引导过程中,进程执行,init将等待进程结束. # off |不採取不论什么行动,功能相当于将这行用#凝视掉. # ondemand |仅仅要init调用a,b,c中的不论什么一种执行等级时,进程便执行. #initdefault|系统设置默认执行级别.process字段被忽略. # sysinit |仅仅要系统引导,该进程便执行,优先于boot与bootwait. # powerwait |当init接收到SIGPWR信号时进程開始执行,一般为电源故障时执行. # powerfail |与powerwait同样,但init不会等待进程完毕. #powerokwait|当电源故障修复时执行. # ctrialdel |当init收到SIGNT信号时(按下ctrl+alt+del)时,进程执行. # kbrequest |当init收到键盘处理KeyboardSignal信号时,进程执行. #---------------------------------------------------------------------- ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now #在1-5执行等级中按下ctrl+alt+del时便又一次启动系统. su:S016:once:/sbin/sulogin #在S,0,1,6等级下会执行sulogin. #一般而言,假设在用grub或lilo启动时,假设为kernel加上single參数时,会直接进入单用户模式,而无需password.造成一定安全隐患.加上这一行就可以解决这个问题. 1:2345:respawn:/sbin/agetty -I '\033(K' tty1 9600 2:2345:respawn:/sbin/agetty -I '\033(K' tty2 9600 3:2345:respawn:/sbin/agetty -I '\033(K' tty3 9600 4:2345:respawn:/sbin/agetty -I '\033(K' tty4 9600 5:2345:respawn:/sbin/agetty -I '\033(K' tty5 9600 6:2345:respawn:/sbin/agetty -I '\033(K' tty6 9600 #设置tty控制台数量,一般为tty[1-6],X窗体系统一般执行在tty7
0:0:wait:/etc/rc.d/init.d/rc 0 1:S1:wait:/etc/rc.d/init.d/rc 1 2:2:wait:/etc/rc.d/init.d/rc 2 3:3:wait:/etc/rc.d/init.d/rc 3 4:4:wait:/etc/rc.d/init.d/rc 4 5:5:wait:/etc/rc.d/init.d/rc 5 6:6:wait:/etc/rc.d/init.d/rc 6
至此, 我们以run-level为5简单看一下相应的脚本文件内容:
freeman@freeman-H55M-S2:/etc/rc5.d$ ls -l lrwxrwxrwx 1 root root 20 9月 20 18:00 S20kerneloops -> ../init.d/kerneloops lrwxrwxrwx 1 root root 15 9月 20 18:00 S20rsync -> ../init.d/rsync lrwxrwxrwx 1 root root 27 9月 20 18:00 S20speech-dispatcher -> ../init.d/speech-dispatcher lrwxrwxrwx 1 root root 15 9月 20 18:00 S50saned -> ../init.d/saned lrwxrwxrwx 1 root root 19 9月 20 18:00 S70dns-clean -> ../init.d/dns-clean lrwxrwxrwx 1 root root 18 9月 20 18:00 S70pppd-dns -> ../init.d/pppd-dns lrwxrwxrwx 1 root root 21 9月 20 18:00 S99grub-common -> ../init.d/grub-common lrwxrwxrwx 1 root root 18 9月 20 18:00 S99ondemand -> ../init.d/ondemand lrwxrwxrwx 1 root root 18 9月 20 18:00 S99rc.local -> ../init.d/rc.local简单说明一下这个文件的命名含义: S表示Start, K表示Kill, 后面的数字表示执行的顺序, 再后面的单词就是执行的程序名.
版权声明:本文博客原创文章。博客,未经同意,不得转载。
标签:
原文地址:http://www.cnblogs.com/mengfanrong/p/4603216.html