前言:
本文章转自我的个人博客 http://www.anyisalin.com 欢迎大家访问
此文章是我学习RHCE7.0时所记笔记,希望能够对大家有所帮助
1. 计算机接通电源。系统固件(现代UEFI 或更老式的BIOS) 运行开机自检(POST),并开始初始化部分硬件。
2. 系统固件会搜索可启动设备,可能是在UEFI启动固件中配置,也可能按照BIOS中配置的顺序搜索所有磁盘上的主启动记录(MBR)。
3. 系统固件会从磁盘读取启动加载器,然后将系统控制权交给启动加载器。在RHEL7中,通常是Grub2。
4. 启动加载器从磁盘加载其配置,然后向用户显示用于启动的可能配置的菜单。在用户做出选择后,启动加载器会从磁盘加载配置的内核及initramfs,并将它们置于内存中。initramfs 是经过 gzip 的cpio归档,其中包含启动时所有必要的硬件的内核模块,初始化脚本等。在RHEL7中,initramfs包含自身可用的整个系统。
5. 启动加载器将系统控制权交个内核,从而传递启动加载器的内核命令行中指定任何选项,以及initramfs在内存中的位置
6. 对于内核可在initramfs中找到驱动程序的所有硬件,内核会初始化这些硬件,然后作为PID 1
7. 从initramfs 执行 /sbin/init。在RHEL7中,initramfs 包含 systemd 的工作副本作为/sbin/init 并包含udev 守护进程。
8. initramfs中systemd实例会执行initrd.target 目标的所有单元。这包括在/sysroot 上挂载时间的root文件系统。
9. 内核root文件系统从initramfs root 文件系统切换(回转)为之前挂载于 /sysroot 上的系统root文件系统。随后,systemd会使用系统中安装的systemd 副本来自动重新执行。
10. systemd会查找从内核命令行传递或系统中配置的默认目标,然后启动(或者停止)单元,以符合该目标的配置,从而自动解决单元间的依赖关系。本质上,systemd 目标是一组应在激活后达到所需系统状态的单元。这些目标通常至少包含一个生成的基本文本的登录或图形登录屏幕。