一直以来只知道,按了power键后会启动centos系统,至于究竟如何进入的系统一直都没有很明白。对于一个使用centos系统做开发的人来说,了解linux的启动过程将有助于对于系统启动问题的解决。
Centos 7启动流程1 BIOS开机自检
2 BIOS根据启动顺序找到启动程序
3 bootloader 根据配置读取 vmlinuz 电脑内核文件,解压缩initramfs镜像文件
4 内核从解压的initramfs中读取硬件驱动模块
5 内核启动systemd进程,systemd启动其他进程,操作系统开机
主要是对硬件进行检查,如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。
开机自检
2.BIOS根据启动顺序找到启动程序如果以硬盘启动,则找到硬盘的MBR并读取其中的bootloader(通过INT 13 中断功能来读取 MBR )
MBR物理位置位于硬盘的第一个扇区,其大小为512个字节。其中包含bootloader,分区表,结束标志
MBR构成
在装机时,grub2会自动安装其文件
grub2将boot.img转换后的内容安装到MBR的bootloader处
grub2将core.img转化后的内容安装到开机扇区
grub2的配置文件在/boot/grub2/grub.cfg
grub2
以grub2为例,说一下其启动过程
1 BIOS开机硬件检测
2 BIOS根据开机顺序读取MBR中的bootloader区域的boot.img
3 boot.img读取开机扇区中的core.img,core.img读取 vmlinuz 内核文件,在内存中解压缩initramfs镜像文件并挂载为根目录
4 内核从解压的initramfs中读取硬件驱动模块
5 内核启动systemd进程
6 systemd启动其他进程
电脑启动流程
这里的驱动模块,主要是与磁盘驱动相关的模块如 SCSI、virtio、RAID模块
1 systemd 读取 /etc/systemd/system/default.target
2 载入核心模块,启动网络,挂载本机的fstab,启动防火墙等
3 启动用户自定义的程序
参考: 1.https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/166.html
2.https://www.cnblogs.com/f-ck-need-u/p/7094693.html#auto_id_10
电脑