系统的启动流程
初始化系统
在rhel7之前使用init初始化系统,在rhel7之后使用systemd初始化系统
init和systemd的区别
- init是从上到下依次启动,如果一个点出现问题,那么它后面的点都不会启动
- systemd是并行启动,按需启动,可以一次性同步启动多个服务
- systemd会自动解决依赖问题(例如,启动hfs就会先启动rpc-bind和mountd
系统的启动目标
指的是启动时的操作页面
启动流程
- 开机
- bios开启自检并加载硬件
- bios根据启动顺序选择对应的启动设备(硬盘,cdrom,网络等等)
- 从硬盘去加载引导代码(引导程序)
- 引导代码 > 引导程序 > grub2
- 存放在硬盘的前446字节的位置(mbr分区的最前面)
- 引导程序加载启动引导分区中的配置文件(引导配置文件
/boot/grub2/grub2.cfg
) - grub2会加载内核 > 要挂载的根文件系统,然后执行systemd来初始化(启动服务,根据启动目标获得操作页面)
grub2会加载initramfs,目的是为了帮助内核挂载根文件系统,提供文件系统的驱动以及硬件驱动
内核不能够挂载根文件系统,想挂载根文件系统是需要对应的文件系统驱动(xfs,ext4等等) - initramfs会执行自己的sysytemd并且将磁盘上的根文件系统挂载到/sysroot(简单来说就是,将自己的根文件系统挂载到/sysroot)
- 内核会将initramfs的假根切换为/sysroot(真正的根),然后执行systemd,进行初始化系统。
- systemd通过启动目标来获得操作页面(字符页面,图形化页面)