- 开机自检
按下电源键计算机加载BIOS(计算机上最接近硬件的软件,各家主板制造厂商都会开发适合自己主板的BIOS,其中很重要的一项功能就是开机对自身硬件做一次健康检查,只有硬件没问题,才能运行软件,操作系统本身也是一种软件,这种通电后开始自检的过程叫做加电自检
。Power On Self Test,简称是POST) - 引导系统
这个动作是BIOS设定的,BIOS默认会从硬盘上的第0柱面,第0磁道,第1个扇区中读取MBR(主引导记录),一个扇区的大小时512字节,存放的一段引导程序的分区信息,其中引导程序部分占用446字节,另外的64字节是磁盘分表区DPT,最后的两个字节是MBR的结束位置。这512字节的空间内容是有专门的分区程序产生的, windows底下的 fdisk.exe。linux底下的fdisk命令,不依赖于任何操作系统,而且MBR中的引导程序是可以修改的。所以可以利用这个特性实现多操作系统共存,由于Redhat,centos 默认使用grub作为其引导系统的程序,而grub本身比较大,所以常见的方式就是在MBR中写入grub地址。这样系统实际会载入grub作为操作系统的引导程序 - 运行grub
根据其配置文件加载kernal镜像,并运行内核加载后的第一个进程/sbin/init,这个进程会根据/etc/inittab表来初始化工作。在这里最重要的就是根据文件中设定的值来确认系统运行的runlevel,默认的runlevel定义在id:3:initdefault:
中,数字3的含义是目前运行级别为3. - 配置系统变量....
根据/etc/inittab中定义的系统初始化配置 si::sysinit:/etc/rc.d/rc.sysinit执行/etc/rc.sysinit脚本,会配置系统变量,网络配置,启动swap,设定/proc、加载用户自定义模块,加载内核设置 - 运行runlevel下的所有脚本
根据第三部定义的runlevel。会启动对应的服务。例如,为3,会运行/etc/rc3.d/
下所有的脚本。 - 运行/etc/rc.local
- 生成终端