启动阶段:从硬件到内核
-
固件初始化(BIOS/UEFI)
当计算机通电时,首先由主板上的固件(BIOS 或 UEFI)执行硬件自检(POST),检测 CPU、内存、硬盘等关键组件,UEFI 作为现代标准,支持更快的启动和安全验证(如 Secure Boot)。 -
引导加载程序(Boot Loader)
固件将控制权交给引导加载程序(如 GRUB 或 systemd-boot),GRUB 会加载配置文件(/boot/grub/grub.cfg
),显示启动菜单供用户选择内核版本,其核心任务包括:- 加载 Linux 内核镜像(
vmlinuz
)到内存。 - 加载初始化内存盘(
initramfs
),包含启动初期必需的驱动和工具(如磁盘控制器驱动)。
- 加载 Linux 内核镜像(
-
内核初始化
内核解压后接管系统,执行以下操作:- 初始化硬件:检测并驱动 CPU、内存、存储设备。
- 挂载根文件系统:通过
initramfs
临时挂载根目录(),为后续操作提供基础环境。 - 启动第一个进程:内核创建 PID=1 的初始进程(传统为
init
,现代系统多为systemd
)。
系统初始化:服务管理与用户环境
-
初始化系统(systemd/SysVinit)
systemd
(主流发行版默认)或SysVinit
作为首个进程,负责协调后续启动:- 并行启动服务:
systemd
同时加载单元(Unit),如网络(network.service
)、日志(journald
)。 - 挂载文件系统:根据
/etc/fstab
配置永久挂载硬盘分区。 - 启动关键守护进程:包括 SSH 服务(
sshd
)、定时任务(cron
)等。
- 并行启动服务:
-
用户登录与 Shell
初始化完成后,系统启动登录管理器(如 GDM 或 LightDM),进入图形界面或终端登录:- 身份验证:用户输入账号密码,系统校验
/etc/passwd
和/etc/shadow
。 - 启动 Shell:加载用户配置(如
~/.bashrc
),提供命令行交互(Bash/Zsh)。 - 桌面环境:若使用 GUI(如 GNOME 或 KDE),会启动窗口管理器和图形服务。
- 身份验证:用户输入账号密码,系统校验
核心组件协同工作
Linux 运行时依赖多个核心模块的协作:
- 内核(Kernel):直接管理硬件资源(CPU调度、内存分配),提供系统调用接口。
- Shell:用户与内核的桥梁,解析命令并调用程序(如执行
ls
时通过内核读取文件系统)。 - 文件系统(如 ext4/XFS):组织磁盘数据,通过虚拟文件系统(VFS)层统一管理。
- 用户空间(User Space):所有应用程序(浏览器、文本编辑器)运行于此,通过内核接口访问硬件。
运行中的 Linux:多任务与资源管理
- 多任务处理:内核通过时间片轮转调度进程,支持数千个任务并发(如 Web 服务器处理多个请求)。
- 权限控制:基于用户/组权限(如
chmod
设置的文件权限)和 SELinux/AppArmor 增强安全。 - 网络与存储:
- 网络栈(TCP/IP)由内核处理,用户程序通过套接字(Socket)通信。
- 文件读写通过页缓存(Page Cache)优化性能,减少磁盘 I/O。
关机流程
- 用户触发关机命令(如
systemctl poweroff
)。 systemd
通知所有服务停止,保存数据。- 卸载文件系统,同步磁盘缓存。
- 内核发送 ACPI 信号关闭电源。
Linux 的运行是分层递进的:硬件 → 内核 → 系统服务 → 用户空间,其稳定性源于模块化设计——内核仅处理核心任务,其他功能由用户态程序实现,无论是个人电脑还是云服务器,Linux 都通过这一机制高效管理资源,理解此流程,有助于您更深入地掌握系统运维和故障排查。
引用说明参考 Linux 内核官方文档(kernel.org/doc)、systemd 手册(freedesktop.org/wiki/Software/systemd)及《Linux 内核设计与实现》(Robert Love 著),确保技术准确性。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6422.html