linux的启动过程,是一个Linuxer必须要熟练掌握的。通过系统的启动过程,可以更深入的理解Linux,假如linux系统出问题的话,可以通过启动过程来分析原因,解决问题。而且,在掌握了linux的启动流程后,还可以借助宿主机来打造自己的Linux
。
下面是我画的一张简单的Linux启动流程图
在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为:
1. /sbin/init
2. /etc/inittab
3. /etc/rc.d/rc.sysinit
4. /etc/rc.d/rcN.d //这是几个文件夹N代表数字1,2,3,4..
5. /etc/fstab
1.关于/sbin/init与/etc/inittab
关于/sbin/init ,它是一个二进制可执行文件,为系统的初始化程序,而/etc/inittab是它的配置文件,我们可以通过/etc/inittab来一睹 它的功能, 里面的内容是一种固定的文本格式,id:runlevels:action:process
我们来通过它的内容来学习它之前,先了解写运行级别的分类(0-6):
0: 关机 half
1: 单用户模式 singel user
2: 多用户模式 multi user , 不提供nfs服务 without nfs
3: 完全多用户字符模式 full multiuser text mod
4: 系统预留 officially undefined
5: 图形登录界面 graphical login
6: 重启 reboot
id:3:initdefault: //这里定义linux的启动时的运行级别,可以看到我的主机的启动级别是3 # System initialization. si::sysinit:/etc/rc.d/rc.sysinit //紧接着,运行系统第一个脚本/etc/rc.d/rc/sysinit //它的action:sysyinit指的是定义系统初始化过程 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 //然后就是加载服务了,他们被定义在/etc/rc.d/rcN.d l3:3:wait:/etc/rc.d/rc 3 //action:waite 这个进程在在对应级别启动一次,知道它结束为止,我的系统启动级别为3,所有执行rc 3对应的服务 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 ca::ctrlaltdel:/sbin/shutdown -t3 -r now //这里定义了一个组合快捷键,熟悉吧,没错就是重启,你可以把它注释掉不用 pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" //这里定义了ups电源,powerfail 指的是如果突然断电,它对应的process命令是,提 示用户系统电源失效,将要关机,提醒用户把数据都存储好 pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" //这里的action,powerokwaite,指的是系统恢复供电,关机取消...
2:2345:respawn:/sbin/mingetty tty2 //可以看到他们对应的级别是2345,你也可以注释掉几个,这样启动后,就会开启你指定个数的终端... 3:2345:respawn:/sbin/mingetty tty3 //这里的动作respawn意思是如果用户关闭,那么这个进程会立刻再次执行1:2345:respawn:/sbin/mingetty tty1 //开启终端,在系统准备工作做好后,就会启动出6个终端,tty1~6 mingetyy就是终端的执行命令
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon //当一切准备完毕,就会运行守护进程,它是不分运行级别的,同样也是respawn