简述linux操作系统启动流程

1、POST : 加电自检

        当给计算机上电,主板上的CMOS芯片获得电源,会执行其上的BIOS(基本输入输出系统Basic I/O System)程序 。BIOS程序会根据CMOS上的硬件配置信息,去检查硬件是否存在及是否能正常工作,最后进行硬件初始化。

2、加载bootloader

        根据启动顺序找到第一个可以启动的磁盘,加载其MBR中的BootLoader ; BootLoader就是将内核加载至内存中、解压展开。

        由于MBR只有512byte,Bootloader占用前446bytes,这么小的空间不可能放置很多的程序,所以Bootloader(grub)就分为3个阶段(stage)完成:

        stage1: 加载Bootloader的主程序(位于MBR中)用于加载stage 1.5的代码;

        stage1.5: 位于MBR之后的扇区,让statge1中的bootloader能够识别stage2所在的分区文件系统;

        stage2:通过Bootloader加载所有的配置文件及相关参数,这些参数都位于磁盘/boot/grub中;

3、内核初始化

       此时BootLoader需要将内核程序加载至内存,并进行解压,展开,控制权也移交给内核;内核需要检测硬件设备,并加载硬件驱动;但是内核程序本身也是放在硬盘的/boot分区上,这就需要先加载硬盘驱动;

       此时就需要一个临时根文件系统代替一个真正的文件系统行使权力,即initrd.   Bootloader会将initrd程序加载至内存,initrd会模拟出一个虚拟的根文件系统,这样就可以加载硬件驱动等启动过程中需要的程序,加载完成后,并完成根切换;然后内核运行用户空间第一个程序/sbin/init ,至此,系统将交由init进行管理;

4、init 初始化

        init 主要是进行软件环境初始化,它会读取配置文件/init/inittab(cent5/6)或systemd(centos7),读取默认运行级别;运行 /etc/rc.d/rc.sysinit 进行系统初始化;关闭相应级别的需要停止的服务,启动对应级别下需要开启的服务--->设置登录终端;至此,系统启动完毕。。。

你可能感兴趣的:(简述linux操作系统启动流程)