centos6启动流程图:
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视频教程