CentOS7的启动过程
Devin hao Architect

centos7的启动过程

一、终端态启动顺序:

开机启过程
POST–>BOOT
SEQUENCE–>BOOTLOADER–>KERNEL+INITRAMFS(INITRD)–>ROOTFS–>/sbin/init

POST:加电自检

检查内存,CPU等

Boot sequence:选择引导顺序

光盘启动,硬盘启动,网络启动,还是U盘启动(同windows)

Bootloader:引导加载器

MBR引导记录大小为512字节,其中前446个字节就是Bootloader,主要用来引导用户选择要启动的系统或不同的内核版本,把用户选定的内核装载到RAM中的特定空间中,解压,展开,而后把系统控制权移交给内核。

grub2分两部分:
1.在MBR引导记录中,大小为446字节,主要功能是引导启动介质的grub主体文件
2.partition,/boot/grub[2],此为grub的主体。

KERNEL+INITRAMFS(INITRD)–>ROOTFS:加载内核

内核初始化,生成一个ramdisk文件,用来模拟系统环境。退出ramdisk,下一步加载到真正的根文件系统。

ramdisk:内存上临时虚拟的系统
ramdisk(虚拟磁盘,双缓冲,双缓存)—-> ramfs(虚拟文件系统)
centos5:initrd

工具程序:mkinitrd

centos6,7:initramfs

工具程序:dracut,mkinitrd

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

init:

Centos 5: SysV init 配置文件:/etc/inittab
Centos 6: Upstart 配置文件:/etc/inittab;/etc/init/*.conf(主要)
Centos 7: systemd 配置文件:/etc/systemd/system;/usr/lib/systemd/system

至此,内核空间就已经启动完毕,内核启动完成接着开始启动用户态启动过程。
systemd是个守护进程,pid号为1,
后面所有启动的服务或进程都是systemd的子进程及子进程的子进程。

二、用户态的启动顺序

设置默认允许级别—>初始化脚本,
完成系统初始化—>关闭及启动对应级别下的服务—–>设置登录终端—–>[启动图形终端]

参考:https://blog.51cto.com/m51cto/1958856