为了更好的了解Linux系统的运行原理,非常有必要了解系统启动的流程。
首先,计算机会加载BIOS,BIOS默认会从硬盘上的第0柱面,第0磁道,第一个扇区中读取被称为MBR(主引导记录)的东西。一个扇区的大小是512字节,存放的内容是一段引导程序和分区信息,其中引导程序占446字节,磁盘分区表DPT占64字节,最后2字节是MBR的结束位。由于Grub本身比较大,常见方式是在MBR中写入Grub的地址,这样系统实际会用Grub作为引导程序。
Grub的功能就是根据配置文件加载kernel镜像,并运行内核加载后的第一个程序
/sbin/init,这个程序会根据
/etc/inittab 进行初始化的工作。这里有个重要的概念就是runlevel,后面会详细讲。
第四步,Linux 将根据/etc/inittab 中定义的系统初始化配置 si::sysinit:/etc/rc.d/rc.sysinit 执行/etc/rc.sysinit 脚本,该脚本将会设置系统变量,网络配置,并启动swap,设定/proc,加载用户自定义模块,加载内核设置等。
第5步,根据之前读到的runlevel的值启动对应的服务,如果为3,就运行/etc/rc3.d/下的脚本,如果为5就运行/etc/rc5.d下的脚本
第6步,运行/etc/rc.local ,第7步,生成终端或X Window等待用户登录。
系统运行级别
Linux 默认有7个运行级别:
0:关机
1:单用户模式
2:多用户模式,没有网络
3:完全多用户模式,最常见的
4:保留未使用
5:窗口模式
6:重启
来看下/etc/rc3.d/下的内容:
有很多以K或S开头,后跟2位数字再跟服务名的文件。
K表示Kill,S表示Start,会先运行K开头的问题,在运行S开头的文件,在运行文件时会按照K/S后面的数字大小顺序执行,数字小的先执行。