十一、Linux开机流程

1、加载 BIOS

    系统固件加载 BIOS(基本输入输出系统),然后进行开机自检(POST),并开始初始化部分硬件

    BIOS:basic input output system,它是一套程序,写死到主 板上的一个内存芯片中,这个内存芯片在没有通电的情况下也能将数 据记录下来(ROM,非挥发性)

2、读取 MBR

    系统固件搜索磁盘上的主启动记录(MBR)

    由于我们的系统软件大多放置在硬盘中,所以 BIOS 会指定启动 的设备,好让我们可以读取磁盘中的操作系统内核文件,这时候就需要 一个引导装载程序来处理内核文件加载(LOAD)的问题,这个引导装 载程序就被称为 BootLoader

    BootLoader 在系统上第一个硬盘上的第一个扇区中,也称为:MBR(master boot record)。

3、启动加载器(grub2)

    系统固件从磁盘中读取启动加载器(Boot Loader),然后将系统控制权交给启动加载器。在Centos 7 中BootLoader 是通过一个 grub 程序来实现的。

    grub2 的主要功能:

        1、提供菜单:选择不同的启动选项;

        2、加载内核文件:直接指向可启动的程序区段来开始 OS;

        3、转交其他 Loader(多系统时)

        4、显示菜单

    启动加载器从磁盘中加载其配置,然后向用户显示用于启动的可能配置的菜单,这就是开机时上下选择菜单界面。

    我们可通过以下方式进行配置:

        /etc/grub.d/

        /etc/default/grub

        /boot/grub2/grub.cfg(非手动)

5、加载内核

    在用户做出选择(超时)后,启动加载器会从磁盘中加载配置的内核及 initramfs,并将其置于内存中;

    initramfs 是一个归档文件,里面包含了启动时所需要的必要硬 件的内核模块、初始化脚本等等。在 RHEL7 中,initramfs 得到了加强,包含自身可用的整个系统。

6、系统内部传递信息

    这时启动加载器又将系统控制权交给内核,从而传递启动加载器的内核命令行中指定的任何选项,以及 initramfs 在内核中 的位置。

7、初始化

    内核这时候会在 initramfs 中找到驱动程序的所有硬件,并且初始化它,然后作为 PID1 从 initramfs 中执行/sbin/init。

    PID1 就是systemd,代表的是系统启动的第一个用户级进程,是所有其他进程的父进程。

8、执行单元

    初始化完成后systemd 会执行 initrd.target 目标的所有文件

9、系统回归

    内核 root 文件系统会回到之前挂载于/sysroot 上的系统 root 文件系统,systemd使用系统中安装的 systemd 副本来自行重新执行。

10、开机界面

    成功开机

发布了50 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_25884515/article/details/96622687
今日推荐