Linux 操作系统的启动过程一般分为四个阶段: BIOS 启动引导阶段, GRUB 启动引导阶段, 内核阶段以及1 号用户进程初始化阶段。 (在CentOS 7 以前1 号用户进程被称为init进程, CentOS 7 以后称之为systemed 进程。)
1.BIOS 启动引导阶段
BIOS 基本输入/输出系统, 不仅可以控制启动过程, 还可以控制BIOS 的外围设备。当系统启动时执行上电自检(Power On Self Test, 简称为POST), 当设备检测通过后, 根据在BIOS 中设置的启动顺序搜索启动驱动器(如硬盘、 光驱、 网络服务器等), 并获取第一个启动设备的代号, 读取第一个启动设备的MBR 的引导加载程序的启动信息, 从MBR中装载启动引导管理器(GRUB)并运行启动引导管理。
大多数Linux 发行版本使用的引导加载程序有三种: GRUB、 GRUB2 和LILO。GRUB2 是最新的, 也是同类程序中使用最广的。
MBR 是引导扇区的前512 字节, 由BIOS 预加载到ROM 中的, 其中446 字节用于存储Boot Loader 程序, 64 字节用于存储分区表信息, 最后2 字节用于MBR 的有效性检查。
2.GRUB2 启动引导阶段
GRUB2 是CentOS 7 默认的引导加载程序, GRUB2 的配置文件位于/boot/grub2/grub.cfg。 GRUB2 将vmlinuz 内核映像文件加载到内存中。(www.daowen.com)
3. 内核阶段
内核是操作系统的核心, 是系统启动时加载的第一个程序。 系统启动内核从initrd.img(initrd 是一种基于内存的文件系统, 启动过程中, 系统在访问真正的根文件系统时, 会先访问initrd 文件系统)将所有必需驱动模块加载到Linux 系统中并运行1 号进程systemd。
4.systemd 进程初始化
systemd 进程是在Linux 系统上运行的第一个进程(PID 为1), 它初始化系统并启动init(/etc/init.d)进程曾经启动的所有服务, 读取配置文件, 在目标runlevel.target 中加载操作系统。
注: 默认情况下, 有两个主要target, 即multi-user.target(字符界面)和graphical.target(图形界面)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。