linux 系统启动过程可拆解为 5 个核心阶段,每个阶段均有明确的执行逻辑、配置文件及工具命令。
以下结合教程内容,分阶段解析启动流程,并总结关键命令与方法。
一、linux 启动的 5 个核心阶段
阶段 1:内核引导(kernel boot)
这是系统启动的 “硬件初始化→内核加载” 环节,是操作系统接管硬件的第一步。
- bios 自检:计算机通电后,首先执行 bios(基本输入输出系统) 开机自检,检查 cpu、内存、硬盘等硬件是否正常。
- 选择启动设备:bios 根据预设的启动顺序(如硬盘、u 盘)定位启动设备,由该设备加载操作系统。
- 加载内核文件:操作系统接管硬件后,优先读取
/boot目录下的内核文件(如vmlinuz,linux 内核镜像),完成内核初始化
- 关键文件 / 路径:
/boot(内核文件存放目录) - 无直接命令:此阶段为硬件级自动执行,无需用户干预。
阶段 2:运行 init 进程(初始化进程启动)
1.init 是 linux 系统所有进程的 “祖先”(pid=1),负责启动后续所有守护进程,其类型随系统版本差异而不同。
| init 类型 | 适用系统版本 | 核心配置文件 |
| sysv init | centos 5 及之前 | /etc/inittab |
| upstart | centos 6 | /etc/inittab、/etc/init/*.conf |
| systemd | centos 7 及之后 | /usr/lib/systemd/system、/etc/systemd/system |
2.核心任务:管理运行级别:
init通过 “运行级别(runlevel)” 区分启动场景(如服务器 / 桌面),不同级别启动不同 “守护进程(daemon,类似 windows 服务)”。- linux 共 7 个运行级别,含义如下:
| 运行级别 | 含义 | 注意事项 |
| 0 | 系统停机状态 | 不可设为默认级别,否则无法启动 |
| 1 | 单用户模式(root 权限) | 用于系统维护,禁止远程登录 |
| 2 | 多用户模式(无 nfs 服务) | 无网络文件系统支持 |
| 3 | 完全多用户模式(有 nfs) | 登录后进入 命令行模式(服务器常用) |
| 4 | 保留级别 | 系统未使用 |
| 5 | x11 图形模式 | 登录后进入 图形 gui 界面(桌面常用) |
| 6 | 系统重启状态 | 不可设为默认级别,否则无限重启 |
- 关键文件:
/etc/inittab(sysv/upstart 核心配置)、/usr/lib/systemd/system(systemd 配置) - 无直接命令:
init进程由内核自动启动,用户无需手动执行。
阶段 3:系统初始化(初始化系统环境)
此阶段通过脚本完成系统基础配置,确保硬件、网络等环境就绪,核心是执行 rc.sysinit 和对应运行级别的启动脚本。
执行 /etc/rc.d/rc.sysinit 脚本:
- 由
init配置文件中si::sysinit:/etc/rc.d/rc.sysinit触发,是所有运行级别都优先执行的脚本。 - 核心功能:激活交换分区(swap)、检查硬盘健康、加载硬件驱动模块、初始化系统环境变量等。
执行对应运行级别的启动脚本:
以运行级别 5(图形模式)为例,init 执行 l5:5:wait:/etc/rc.d/rc 5,即调用 /etc/rc.d/rc 脚本并传入参数 5。
/etc/rc.d/rc 会扫描 /etc/rc.d/rc5.d/ 目录下的 “链接文件”(实际指向 /etc/rc.d/init.d/ 中的真实脚本):
- 以
s开头的链接:执行对应脚本的start命令(启动守护进程)。 - 以
k开头的链接:若对应进程已运行(通过/var/lock/subsys/下的标志文件判断),先执行stop命令停止,再重启(确保运行级别切换时进程同步)。
管理守护进程的工具:用户可通过以下命令自定义启动的守护进程:
chkconfig:命令行工具,用于配置守护进程在不同运行级别的启动状态(如chkconfig --list查看所有守护进程状态)。setup:图形化工具(需终端支持),通过 “system services” 选项勾选需启动的守护进程。
- 关键文件 / 路径:
/etc/rc.d/rc.sysinit、/etc/rc.d/rc、/etc/rc.d/rcx.d/(x 为运行级别,如 3、5)、/etc/rc.d/init.d/(真实守护进程脚本目录) - 关键命令:
chkconfig(管理守护进程启动状态)、setup(图形化配置系统服务)
阶段 4:建立终端(创建用户登录终端)
系统环境初始化完成后,init 会创建 6 个虚拟终端,供用户登录使用。
终端配置来源:/etc/inittab 中定义 6 个终端的配置,示例如下:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
...
6:2345:respawn:/sbin/mingetty tty6
2345:表示在运行级别 2、3、4、5 中启动该终端。respawn:若终端进程意外退出,自动重启。/sbin/mingetty:终端启动程序,负责打开终端、设置模式,并显示文本登录界面。
阶段 5:用户登录系统
终端就绪后,用户通过身份验证登录系统,支持 3 种登录方式:
命令行登录(最基础):流程:mingetty 显示登录界面 → 用户输入用户名 → login 程序验证身份:
- 额外限制:
/etc/usertty文件可对特定用户设置登录终端限制(无此文件则无限制)。 - 若用户为
root:检查/etc/securetty文件,仅该文件中登记的终端允许root登录(无此文件则允许所有终端)。 - 若用户名非
root:检查/etc/nologin文件,若存在则输出文件内容并拒绝登录(用于系统维护)。
ssh 登录(远程登录):通过 ssh 服务(如 sshd 守护进程)实现远程命令行登录,需提前启动 sshd 服务(可通过 chkconfig sshd on 设置开机启动)。
图形界面登录(可视化):运行级别为 5 时自动启动,登录界面由图形服务(如 gdm、kdm)提供,登录成功后直接进入 kde、gnome 等桌面环境。
- 关键文件:
/etc/nologin(非 root 登录限制)、/etc/securetty(root 终端限制)、/etc/usertty(用户终端限制) - 关键命令:
login(身份验证程序,自动触发,无需手动执行)、sshd(ssh 服务守护进程,启动命令service sshd start)
二、关键命令与方法总结
1. 运行级别与守护进程管理
| 命令 | 功能 | 示例 |
| chkconfig | 配置守护进程在不同运行级别的启动状态 | chkconfig --list(查看所有守护进程状态)、chkconfig sshd on(设置 sshd 开机启动) |
| setup | 图形化配置系统服务(含守护进程) | 终端输入 setup → 选择 “system services” → 勾选需启动的服务 |
| init [0-6] | 切换运行级别 | init 3(切换到命令行模式)、init 5(切换到图形模式) |
2. 关机与重启命令
linux 关机需先同步内存数据到硬盘(避免数据丢失),正确流程:sync → 关机 / 重启命令。
| 命令 | 功能 | 示例 |
| sync | 将内存数据同步到硬盘 | 终端输入 sync(建议关机前执行 2-3 次) |
| shutdown | 关机 / 重启(支持定时) | shutdown -h now(立即关机)、shutdown -r +10(10 分钟后重启)、shutdown -h 20:25(20:25 关机) |
| reboot | 立即重启 | 等同于 shutdown -r now |
| halt | 立即关机 | 等同于 shutdown -h now、poweroff |
| poweroff | 立即关机 | 同 halt |
| init 0 | 切换到运行级别 0(关机) | 终端输入 init 0 |
| init 6 | 切换到运行级别 6(重启) | 终端输入 init 6 |
3. systemd 服务控制(centos 7 及之后)
| 命令 | 功能 | 示例 |
| systemctl start [服务名] | 启动服务 | systemctl start sshd |
| systemctl stop [服务名] | 停止服务 | systemctl stop firewalld |
| systemctl restart [服务名] | 重启服务 | systemctl restart nginx |
| systemctl enable [服务名] | 设置服务开机启动 | systemctl enable mariadb |
| systemctl status [服务名] | 查看服务状态 | systemctl status docker |
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论