linux启动流程的小总结
一. 加载BIOS(basic input/output system)信息,加载BIOS,取得硬件的配置信息,进行自检(检查的是存储设备、cpu、网卡声卡等设备)。并依据BIOS的设置取得第一个可启动的设备。
BIOS是计算机开机执行的第一个程序,写入在主板上。
CMOS是嵌在主板上的存储器,记录硬件参数信息。
第一个可启动的设备,是在bios设置,一般有从光驱启动、USB、硬盘启动等。
二.读取并执行第一个启动设备中第一个分区--主引导分区MBR(master boot record)的引导加载程序bootloader。
MBR主引导分区 bootloader引导加载程序
第一个扇区512B,其中MBR占了446B的大小,还有2个字节的有效标示符和64字节的MBT分区表。
MBR的功能:1.提供菜单选项,用户在多系统情形下可以选择启动不同系统。2.如果选择启动LINUX系统后,加载linux系统内核文件。3.转交个其他bootloader,比如双系统下,转交给windows的bootloader。
三.依据bootloader的设置加载kernel,此时kernel会开始检测硬件信息,同时加载驱动程序。
与开机检测的硬件类似,但此步骤表示内核kernel开始接管BIOS的工作。
另外补充的是:内核启动时所挂载(mount)的第一个文件系统是根文件系统,“根”之所以叫“根”,是加载其他文件系统的“根”
四.硬件驱动成功后,kernel会主动调用init进程,init会取得run-level运行级别信息,并执行/etc/rc.d/下的文件,作为系统的初始化流程和用户自定义开机启动执行脚本。
/etc/rc.d/rc.sysinit 这个shell脚本文件(1)基本的系统初始化命令:(2)检查文件系统:(3)初始化接口电路:
/etc/rc.d/rc.local是用户自定义开机的启动脚本,开机会自动加载此文件,任何想在登陆前完成的任务都可以以脚本形式写进去。
五.init执行run-level,根据服务运行级别启动服务。
六.启动login进程,执行/sbin/mingetty脚本,等待用户登录。