LinuxCentOS 6 系统启动流程

Posted badmanwm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LinuxCentOS 6 系统启动流程相关的知识,希望对你有一定的参考价值。


一个合格的Linux运维工程师就必须知道系统启动流程,不管是在面试中还是系统故障排错或多或少都会涉及到启动流程的知识应用。


在了解系统启动流程之前先了解几个概念:

Linux的组成部分Kernel+rootfs(根文件系统)+程序

  • Kernel的功能:进程管理、内存管理、网络管理、驱动管理、文件系统管理、安全功能、系统调用
  • rootfs:根文件系统,存放包含各种库
  • 程序:各种外围程序

一个基本的操作系统仅需要:内核、库、程序就能运行,当然一个完整的发行版不可能这么简陋,所以呢Linux要想启动必须要有内核、rootfs、程序;

Kernel的组成部分

  • 核心文件:内核文件,/boot/vmlinuz-VERSION-release;
  • 模块文件:内核的特点是模块化的可动态装载和卸载的,因此有模块文件,/lib/modules/VERSION-release/;
  • ramdisk:基于内存的磁盘;


CentOS 6启动流程大致上是这样的:加电开机 –> Bios引导 –> Bootloader引导加载器  –> 装载内核到内存当中 –> 挂载rootfs –> 启动init进程 –> 系统初始化 –> 运行各种服务

                                                      技术图片

  1. POST:加电自检
  2. Boot Sequence:引导加载次序(BIOS完成)

    按次序查找引导设备,在BIOS上设置的第一个引导设备即为启动的设备。而启动设备要有MBR,MBR里边有boot loader引导加载器,主要用于将内核加载到内存当中,并将控制权转交给内核。

    3. Kernel:内核被放到内存当中启动后内核自身做初始化,初始化内容:

    (1) 探测可识别到的所有硬件设备;

    (2) 加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)

    (3) 以自读方式挂载根文件系统;

    (4) 运行用户空间的第一个应用程序:/sbin/init

ramdisk:Linux操作系统要想启动就必须先把内核放到内存当中解压缩执行,内核运行后就加载根文件系统rootfs,而根文件系统是放在硬盘上的,要想和硬盘通信就必须有硬盘驱动,而内核是没有硬盘驱动的,到这里不就无法进行了吗?此时ramdisk基于内存的磁盘就发挥作用了!ramdisk会在内存运行一个假的微型的根文件系统,而这个假的根文件系统仅仅包含能够驱动硬盘的驱动程序文件系统,而后驱动硬盘,当能够识别到真正的根文件系统后,下一步就是切换,把假的根文件系统切换为真的根文件系统并且以只读的方式挂载;

    4. init进程






以上是关于LinuxCentOS 6 系统启动流程的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 6开机启动流程实验篇

Linux启动流程详解

CentOS 6系统启动流程

CentOS 6开机启动流程理论篇

CentOS 6 系统启动流程

linux系统启动流程(CentOS5/6/7为例)