Linux启动之inittab文件

从接触Linux到现在,期间用过Redhat,Slackware,Kali。不同的发行版本启动文件略有差异,但大体流程都是相同的。按下电源键后首先进行开机自检,然后进入bootloader引导系统。bootloader一般都是Lilo或是Grub,Grub2。选择好系统后便是载入内核文件以及initrd文件。

首先启动的第一个进程是init,init读取/etc/inittab文件,从而产生其他进程。


inittab文件描述了需要在启动是执行的进程。其中的条目的格式如下:

id:runlevels:action:process


id:是独特的标识符,用来表示条目

runlevels:运行级别。0:关机;1:单用户;2-5:多用户;6:重启(此处以Kali为例,其他发行版本略有不同,具体查看文件)

action:描述会被执行的动作

process:执行的进程(命令)

注:runlevels字段可能含有多个运行级别。但如果action字段为sysinit,boot,bootwait则runlevels区域被忽略。


action字段包括:

1、respawn:当进程被结束时会重启

2、wait:当进入指定的运行级别时会执行相关的进程(命令),同时init进程会等待

3、once:当进入指定的运行级别时会执行相关进程

4、boot:在系统启动时会执行

5、bootwait:在系统启动时会执行,同时init进程会等待

6、off:什么都不做

7、initdefault:在系统启动后指定相关运行级别进入

8、sysinit:在系统启动时会执行,它会在boot和bootwait之前执行。

9、powerwait:当关闭电源时会执行,同时init会等待

10、ctrlaltdel:当按下这三个键时执行


init会在/etc/inittab文件中寻找action字段为initdefault的条目,然后执行对应的命令,不过在此之前会先执行action字段为sysinit的命令,因为这是在系统启动时就先执行的。当准备进入的是多用户级别时,action字段为boot和bootwait的命令会先执行。


注:man手册上说如果从多用户进入单用户,在从单用户直接进入多用户并不安全,因为进入单用户时会kill很多在runlevel S启动的进程,最好的办法是重启。

你可能感兴趣的:(linux,inittab)