Linux学习笔记_5_Linux引导流程解析_2_inittab文件剖析及系统启动流程分析


inittab文件剖析

【inittab文件格式】: id:runlevels:action:process

【过滤掉以#开头的行 :grep -v “^#” /etc/inittab | more】

id: 标识符,一般为两位数字或字母,是独一无二的

runlevels: 运行级别,可以指定多个,如果此处为空,则表示从0~6各个运行级别都执行

action: 指定运行状态

process: 制定运行的脚本或命令,最重要

正文分析:

语句1: id:5:initdefault:

initdefault: 系统指定缺省启动的运行级别,系统默认启动的指令

5: 可以将其改为3默认启动字符界面,而不用启动图形界面

语句2: si::sysinit:/etc/rc.d/rc.sysinit

/etc/rc.d/rc.sysinit作用:完成系统服务程序的启动,如:系统环境变量设置系统时钟设置,加载字体,检查加载文件系统,生成系统启动信息日志。。。 【Shell脚本,run at once boot time】

sysinit:系统启动执行process中的指令,无论哪个运行级别,只要系统启动, 这个服务就会启动

语句3: /etc/rc.d/rc

作用: 根据前文,判断默认运行级别调用/etc/rc.d/rc脚本,执行下面相应运行级别的目录中的服务程序,完成相应运行级别的初始化设置。

语句4: /etc/rc.d/rc[0123456].d //【Ubuntu中为/etc/rcN.d】

分别存放对应于运行级别的服务程序脚本的符号软链接,

链接到init.d目录中的相应脚本

S-start: 系统启动时依次加载这些服务

K-kill : 系统关机时依次关闭这些服务【如果将文件名更改,则不会启动】

数字: 表示启动顺序,数字越小,越优先启动

脚本名称: 如:vmware

如果不想启动此服务只需将其改名即可,如:

rm S03-vmware-tools s03-vmware-tools //其不会自动启动

action常用取值:

1、 initdefault,sysinit

2、 wait:执行process中指定的命令,并等其结束再运行其他命令

once:执行process中指定的命令,不等待其结束

3、 ctrlaltdel:按下Ctrl+Alt+Del时执行process指定

4、 respawn:一但process指定的命令运行终止,则重新运行该命令

5、 powerfail:当出现电源错误时执行process指定的命令,不等待其结束

powerokwait:当电源恢复时执行process指定的 命令的命令

/etc/rc.d/init.d 【Ubuntu中为:/etc/init.d】

该目录保存了各运行级别的启动脚本。这样我们就可以手工启动/关闭系统中任何一个服务

如:手动启动ssh /etc/rc.d/init.d/sshd #提示选项信息

#另:Ubuntu中 : /etc/init.d/ssh

设置自启动程序:

法1、生成软链接 ln -s

如: 写一个脚本程序 vim /etc/rc.d/init.d/msg.sh

data >> /root/msg.today

who >> /root/msg.today

free >> /root/msg.today

chmod u+x /etc/rc.d/init.d/msg.sh

ln -s /etc/rc.d/init.d/msg.sh /etc/rc.d/rc4.d/S100msg.sh //生成软链接

法2、chkconfig: 只能更改系统默认安装的服务

直接敲击chkconfig会列出其用法,用法非常直观简单 ,需要安装!

chkconfig --list 会列出在各个运行级别下缺省状态下所有的服务程序

chkconfig --list sshd 只是显示sshd的启动情况

。。。

法3、ntsysv

如果敲击ntsysv则是更改当前运行级别的启动设置

其他运行级别:ntsysv -- levels 3

比较简单直观,需要安装!【很多UNIX系统并没有这个服务】

命令相关应用:

1、dmesg:查看启动所有信息,查看硬件是否被内核所识别

dmesg | grep eth0 // 查看加载信息

dmesg | grep sda // 查看第一块硬盘加载信息

2、系统所有的目录文件都保存在/var/log文件目录下

Linux启动流程总图:

firmware 【CMOS/BIOS】 --POST家电自检【软/硬件时钟同步,NTP】

|

BootLoader 【GRUB】【Windows中:NTLDR】:载入内核

| root--/boot

| kernel

| initrd

|

Kernel ? Hardware

| init PID=1 【父子进程关系】

|

/etc/inittab 文件格式 id:runlevels:action:process

|

initdefault 系统的默认运行级别:1、单用户模式【安全模式】...

|

/etc/rc.d/rc.sysinit sysinit:系统初始化,无论哪种运行级别,都会运行这个文件

|

/etc/rc.d/rc

|

/etc/rc.d/rcN.d N = 0~6 S-start K-kill

|

username:

passwd:

【另:一定要养成使用帮助的习惯!】

相关内容