centos6系统启动流程ios
启动概要centos
关于centos6的系统启动流程,咱们从通电开始大体探讨网络
首先咱们按下电源键,而后计算机硬件会读取bios来加载硬件设备信息进行对计算机硬件的检测这一过程就是计算机启动的第一步,称为计算机的加电自检(post),而后bios列出全部能够启动的装置供用户进行选择,通常状况下默认是硬盘启动,选择硬盘启动后第一步加载mbr并启动boot loader来识别并加载系统的核心文件,咱们系统的内核就是在这一步加载完成的,最后启动init来准备软件运行环境,其中包括网络配置,文件系统格式等其余服务,至此,咱们的系统基本启动完毕。接下来咱们来按照顺序分为四大步来更深刻一步的探讨centos6系统post
按下电源键后计算机的CMOS芯片开始通电,而后其上的BIOS程序根据CMOS上的配置信息读取其余硬件设备的信息并检测是否能正常运行,检测完毕后将这些硬件初始化ui
二.选择启动装置,加载MBRthis
在硬件初始化后BIOS会根据启动顺序的设定,依次扫描各引导设备(多是光盘,硬盘,网络等等),而后默认选则第一个具备引导程序的设备进行启动不过咱们能够在开机的加载界面(以下图所示)按F2来进入BIOS选则咱们想要启动的引导设备spa
这也是BIOS除了检测硬件外的第二个功能,选则咱们要启动的设备。在咱们选则设备后BIOS会读取该设备上的MBR(存储设备的前512字节,其中446位启动信息,64位分区表和2位结束字符),为下一步加载Boot Loader作准备操作系统
Boot Loader的主要功能就是去识别加载操做系统中的核心文件并提交到内存中运行,进而启动操做系统。Boot Loader有不少种,而咱们的centos6中使用的是grub。grub分为三个阶段,其中第1阶段的数据存在MBR的前446字节中,第1.5阶段的数据位于/boot的磁盘分区中,第2阶段的数据位于/boot/grub/grub.conf.code
如下是/boot/grub/grub.conf文件的内容blog
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-696.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=20d4ab9c-8374-4862-a3c3-ed650a224307 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-696.el6.x86_64.img
第1阶段BIOS读取MBR,获取grub的第一部分数据,这一阶段用来引导后续的grub,并在这一阶段依据当前磁盘的文件系统来判断后续启动过程当中应为何文件系统。
第1.5阶段根据第1阶段判断的文件系统类型来加载对应文件系统的驱动,为第2阶段加载核心文件作铺垫。其中第1.5阶段的驱动文件存与/boot/grub目录下,每一个以“1_5”结尾的都是各种型文件系统对应的驱动,也所以称为1.5阶段
因为在这个阶段为止,计算机仅有文件系统的驱动程序,没有磁盘的驱动,因此没有办法挂载,也就没有办法进一步的读取磁盘中的数据,而咱们的许多配置文件,驱动都在磁盘上,所以计算机没法启动。而计算机的解决方法是经过int 13 中断来启用一个临时的根文件系统。因此第2阶段的第一步就是读取配置文件/boot/grub/grub.conf,并依据该文件加载内核文件以及一个临时的根文件系统。在这个阶段计算机首先将内核文件解压并读入内存,再将一个临时的根文件系统解压并读入内存这样咱们在内存中就有了一个临时的根文件系统,这样咱们就能够继而加载磁盘等驱动程序。在加载完这些必要的文件后,内存释放这个临时的根文件系统,并以只读的方式挂载咱们真正的根。到此为止,grub的工做结束。
在挂载完根后执行/sbin/init文件,这个文件是全部进程的父进程,它会从grub接管系统的控制权,而后读取/etc/inittab,/etc/init/*.conf,这些是它的配置文件,其中/etc/inittab告诉计算机要以哪个级别启动系统(如下是系统运行的七个级别)
0-halt 关机
1-single user mode 单用户维护模式
2-multi-user,without NFS 无网络功能的文本模式
3-full-muliti-user mode 完整的文本模式
4-unused 系统保留,未使用
5-X11 启动图形界面
6-reboot 重启
装有图形界面时通常默认级别为5,未装图形界面默认为3
以后读取并执行/etc/rc.d/rc.sysinit来将系统初始化其中包括主机名,网络配置,文件系统等,当/etc/rc.d/rc.sysinit执行完后计算机系统基本启动完毕。