当前位置:
网络安全 > Linux操作系统启动过程
Linux操作系统启动过程
计算机读取内存映像,当屏幕输出“OK,启动内核”时。系统将内核放置在内存中,调用start_kernel()函数启动一系列初始化函数并初始化各种设备,完成Linux核心环境的建立。
前言
在上一章中,我们学习了与操作系统启动相关的几个概念。今天我们来讨论一下操作系统的启动过程。
注:本文是我之前学习Linux的学习笔记。部分内容引用自《曝光:Linux企业运维实战》书。感谢吴广科老师和京峰教育优质的教学。
Linux操作系统启动流程
本文以CentOS系列为例,详细讲解Linux操作系统的启动过程。
02 CentOS 6启动流程
1.加载BIOS
计算机开机时,首先进行BIOS开机自检,并根据BIOS中设置的启动设备(通常是硬盘)启动。
2.读取MBR
加载BIOS信息后,计算机将搜索BIOS指定的硬盘,读取该磁盘的MBR存储记录信息,并引导系统。
3.GRUB启动
选择引导内核/执行单用户模式密码重置
4. 加载内核
计算机读取内存映像,当屏幕输出“OK,启动内核”时。系统将内核放置在内存中,调用start_kernel()函数启动一系列初始化函数并初始化各种设备,完成Linux核心环境的建立。
5.设置系统运行级别
内核加载后,会启动第一个守护进程init,然后通过读取该进程来读取/etc/inittab文件,设置inittab运行级别。
常见的Linux运行级别如下: 1. 0:关机模式 2. 1:单用户模式 3. 2:无网络支持的多用户模式 4. 3:字符界面多用户模式 5. 4:保留,不保留6、5:图形界面多用户模式 7、6:重启系统,重启模式
6.加载rc.sysinit(系统初始化)
读取运行级别后,系统将执行第一个用户级别文件/etc/rc.d/rc.sysinit。该文件的功能包括:设置PATH运行变化、设置网络配置、启动交换分区、设置 /proc 、系统功能、配置SELinux等。
7.加载内核模块读取/etc/modules.conf文件和/etc/modules.d目录下的文件夹来加载系统内核模块。以后可以添加、修改或删除该模块文件。
8.启动运行级程序
根据步骤5中读取到的运行级别,操作系统会运行rc0.d到rc6.d中相应的脚本程序,完成相应的初始化工作并启动相应的服务。
9.读取rc.local文件
操作系统启动相应的服务后,会读取并执行/etc/rc.d/rc.local文件。您可以将启动时需要启动的任务添加到文件末尾。系统会逐行执行并启动相应的命令。如下所示:
10.执行/bin/login程序
执行/bin/login程序启动到系统登录界面,如下图所示。输入用户名和密码登录Linux操作系统。至此,操作系统完整的启动过程就完成了。
03 CentOS 7启动流程
CentOS 7和CentOS 6的启动过程类似,只不过涉及到init程序时,改为systemd。
CentOS 7 启动顺序:
UEFi 或 BIOS 初始化,运行 POST 加电自检
选择启动设备
引导加载程序,centos7是grub2
加载加载器配置文件:/etc/grub.d/、/etc/default/grub、/boot/grub2/grub.cfg
加载内核选项
加载initramfs初始化伪文件系统
内核初始化,centos7使用systemd代替init
执行www.sychzs.cn的所有单元,包括挂载/etc/fstab
从initramfs根文件系统切换到磁盘根目录
systemd执行默认的target配置,配置文件/etc/systemd/system/www.sychzs.cn
systemd 执行 www.sychzs.cn 来初始化系统,执行 www.sychzs.cn 来准备操作系统
systemd 在 www.sychzs.cn 下启动本地和服务器服务
systemd在www.sychzs.cn下执行/etc/rc.d/rc.local
Systemd在www.sychzs.cn下执行www.sychzs.cn和登录服务
systemd 执行图形化所需的服务下图是我在网上看到的。总结的很详细,分享给大家。它仅用于学习。如有版权问题,请联系我们。谢谢
本文转载自微信公众号《开源Linux》,可通过以下二维码关注。转载本文请联系开源Linux公众号。