POST –> 开机加电BIOS自检 –> MBR引导–>GRUB引导菜单–> 加载内核 –> rootfs –> switchroot –> 启动/sbin/init进程–>读取(/etc/inittab, /etc/init/*.conf) 文件 –> 设定默认运行级别 –> 系统初始化脚本 –> 关闭或启动对应级别下的服务 –> 登录系统
第一步:POST (加电自检)
加电后,首先会对硬件进行自检,主板会自动读取ROM中的程序,然后加载。检查各硬件是否正常存在,正常运行。如果硬件有故障分为两种:第一,非严重的故障做出画面提示或者报警声音,让用户手动去处理;第二,严重故障则会出现停机或者频繁机器重启。如果没有故障,POST完成自己的任
第二步:BIOS(系统引导过程Boot Sequence)
BIOS 程序是嵌在主板的 ROM 芯片上的。
接过POST 后,BIOS启动初始化硬件的工作,包括键盘、屏幕、内存检测,通然后过ROM加载自检程序,然后按照 CMOS RAM 中设置的启动设备查找顺序,来寻找可启动设备 。
第三步:MBR引导
在硬盘上第0磁道第一个扇区被称为MBR,即主引导记录,决定启动介质按照BIOS所设定的系统启动流程,根据引导次序(Boot Sequence)自上而下的寻找对应存储设备上操作系统的MBR。
第四步:GRUB引导菜单
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。
第五步:加载内核 Kernel
内核一般都是压缩的,所以它的首要要进 行解压缩,然后检查和分析系统的硬件并初始化内核里的硬件驱动程序。内核刚加载到内存的时候,文件系统还不能使用,它使用的是 Boot Loader 加载进内存的 initramfs。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立,基于Linux的程序应该可以正常运行了。
第六步: rootfs –> switchroot
内核加载完成,则加载根文件系统
第七步:启动/sbin/init进程
在加载完核心后,进行完硬件侦测与驱动程序加载后,内核会启动第一个进程/sbin/init, init进程将会读取/etc/inittab,init进程是系统所有进程的起点,只有启动这个进程 ,后面需要的进程才会启动
/etc/inittab最的主要任务就是准备软件所需的运行环境,包括系统的主机名称、网络配置、语系处理、文件系统格式及其他服务的启动等等,而所有的配置运行都会在/etc/inittab中的配置.
/etc/inittab来设定系统启动的运行的默认级别
第八步:读取(/etc/inittab, /etc/init/*.conf) ,进行系统初始化,设定默认运行级别
/sbin/init 最主要的功能就是准备软件运行的环境,包括系统的主机名称、网络配置、语系处理、文件系统格式及其他服务的启动等,而所有的动作都根据在/etc/inittab中的配置而进行的.init首先运行/etc/init/rcs.conf的脚本
第九步:系统初始化脚本
设定完系统默认运行级别后,接下来就是调用/etc/rc.d/rc的脚本
第十步: 关闭或启动对应级别下的服务
用户自定义开机启动程序 (/etc/rc.d/rc.local),这里设定用户需要在开机自动后启动哪些程序。
第十一步: 登录系统
系统初始化完毕,init会给出用户登录提示符或者图形化登录的界面。