centos6启动流程

centos6启动流程图:

1585633669(1).jpg

1、POST加电自检

加载BIOS的硬件信息,获取第一个启动设备。自检主要是检测一下硬件设备是否存在并且能正常运行。

例如BIOS会检测CPU、内存以及I/O设备是否能够正常运行,如果是个人计算机的话可能还会检测一下显示器。只要一通电,CPU就会自动去加载ROM芯片上的BIOS程序,是这样来实现的。而检测完成之后进行硬件设备的初始化。

2、MBR引导加载

当第一步自检硬件没有问题时候,这里以BIOS为例,BIOS将会直接去找硬盘的第一个扇区,找到前446字节,将MBR加载到内存中,MBR将告诉程序下一阶段去哪里找系统grub引导。

这个阶段属于grub的第一阶段。前面的BIOS通过读取并执行启动设备的MBR中的bootloader,而bootloader要实现的功能就是提供一个菜单给用户,让用户去选择要启动的系统或不同的内核版本,因为一块硬盘上可能不止一个操作系统。然后把用户选择的内核版本加载到RAM中的特定空间,接着在RAM中解压、展开,而后把系统控制权移交给内核。

(推荐教程:centos教程)

3、加载系统内核kernel,执行系统初始化信息

在Bootloader开始读取操作系统内核文件时,接下来会将内核文件解压缩后装在到内存当中,然后根据内核提供的功能开始加载各个设备。这里的各个操作都是由内核来完成的,而我们的内核文件通常都存放在/boot目录当中,并且是一个vmlinux开头的文件。如下图所示:

[root@centos6 ~]# cd /boot
[root@centos6 boot]# pwd
/boot
[root@centos6 boot]# ls
config-2.6.32-696.el6.x86_64           lost+found
efi                                    symvers-2.6.32-696.el6.x86_64.gz
grub                                   System.map-2.6.32-696.el6.x86_64
initramfs-2.6.32-696.el6.x86_64.img    vmlinuz-2.6.32-696.el6.x86_64
initrd-2.6.32-696.el6.x86_64kdump.img

但是,此时内核程序还没有加载到磁盘,如何读取内核文件呢?如果要先加载磁盘,就要有磁盘驱动程序,而驱动程序又在硬盘上,这样就陷入了一个无限循环。所以我们要采用一种叫做虚拟文件系统的东西来解决这个问题。同样的,这个文件系统也放在了/boot下,是一个initrd开头的文件,如上图所示。

Boot Loader可以加载kernel和initrd,然后把initrd解压成根目录,然后内核就可以在这个虚拟的根文件系统上加载驱动程序,之后释放根文件系统,最后开始正常的启动过程。

4、启动init

对于CentOS6来说,init配置文件为:/etc/inittab, /etc/init/*.conf,也就是upstart将配置文件拆分成多个,在/etc/init/目录下以conf结尾的都是upstart风格的配置文件,而/etc/inittab仅用于设置默认运行级别。运行级别是为了系统运行或维护等目的而设定,分为0-6,共七个级别:

     0:关机(shutdown);
     1:单用户模式(single user):不需要通过认证,登录进去之后为root用户身份;
     2:多用户模式(multi user):会启动网络功能,但不会启动NFS;
     3:多用户模式(multi user):为完全功能模式,提供文本界面;
     4:预留级别,目前无特别使用目的;
     5:多用户模式(multi user):为完全功能模式,提供图形化界面;
     6:重启(reboot),reboot;

通常我们使用默认级别3或5,不同级别的页面是可以切换的,切换方式为:init[0-6],使用runlevel命令来查看当前运行的级别。

5、用户登录

相关视频教程推荐:linux视频教程