CentOS 的启动流程
1 Linux 的简单介绍
1.1 Linux 的组成
Linux 是由 kernel 和 rootfs 组成。
Linux 运行中的系统环境可分为两层:内核空间(内核代码,主要用在系统调用)和用户空间(应用程序,包括各个进程和线程)。
组成部分如下:
- kernel
- rootfs:程序 和 glibc
- 库:函数集合, function, 调用接口(头文件负责描述)
过程调用:procedure,无返回值
函数调用:function - 程序:二进制执行文件
1.1.1内核介绍
1.1.1.1 内核设计流派
- 单内核设计:把所有功能集成于同一个程序(Linux)
- 微内核设计:每种功能使用一个单独的子系统实现(Windows、Solaris)
1.1.1.2 内核功能
内核的主要功能包括进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能。
1.1.2 内核特点
- 支持模块化 (.ko:kernel object,内核对象)
例如:文件系统、硬件驱动、网络协议等。 - 支持模块运行时动态装载或卸载
1.1.3 内核组成部分
-
核心文件:/boot/vmlinuz-VERSION-release
ramdisk:辅助的伪根系统(ramfs 替换 rd,避免双缓存双缓冲,提高性能)
CentOS 5: /boot/initrd-VERSION-release.img
CentOS 6,7: /boot/initramfs-VERSION-release.img -
模块文件:/lib/modules/VERSION-release
示例:
[root@LeeMumu ~]# uname -r
3.10.0-957.el7.x86_64
[root@LeeMumu ~]# ll /boot/vmlinuz-3.10.0-957.el7.x86_64
-rwxr-xr-x. 1 root root 6639904 Nov 8 2018 /boot/vmlinuz-3.10.0-957.el7.x86_64
示例:如果有多个内核版本的话,会有多个目录文件。
[root@LeeMumu ~]# ls /lib/modules
3.10.0-957.el7.x86_64
1.1.4 其它
www.kernel.org 是内核的官方站点,可以从上面获取内核版本的源代码。具体版本情况说明如下:
- mainLime 主线版本,未经测试的最新版本
- stable 稳定版,只解决bug,不增加新功能,稳定是一切
- longterm 长线版本,持续解决bug
备注:关于 “Linux 用户空间与内核空间、内核的功能与作用”,可参照如下链接:https://blog.csdn.net/weixin_44983653/article/details/94328181
2 CentOS 系统的启动流程
先以一张CentOS 系统的启动流程来开启此章节。
2.1 POST
加电自检(Power-On-Self-Test),是 BIOS 功能的一个主要部分。负责完成对
CPU、主板、内存、硬盘子系统、显示子系统、 串并行接口、键盘等硬件情况的检测。
- ROM:BIOS,Basic Input and Output System,保存着有关计算机系统最重要
的基本输入输出程序,系统信息设置、 开机加电自检程序和系统启动自举程序等。 - RAM:CMOS互补金属氧化物半导体,保存各项参数的设定。
2.2 Boot Sequence
当计算机加电自检后,按次序查找引导设备,第一个有引导程序的设备为本次启动设备。ROM BIOS加载MBR(主引导扇区)中的代码到内存中,当BIOS把引导程序加载到内存后就把控制权交给 grub,而后 grub 的剩余代码将完成其它代