Linux 系统的启动过程

Linux 系统的启动过程是一个精密且环环相扣的链式流程,从按下电源键到最终进入用户登录界面,主要经历了以下五个核心阶段。

🚀 阶段一:BIOS/UEFI 固件初始化

这是启动流程的物理起点,由主板上的固件负责,与操作系统无关。

  1. 加电自检 (POST):计算机通电后,固件(BIOS 或其继任者 UEFI)首先执行 POST,检测 CPU、内存、显卡等核心硬件是否正常。
  2. 初始化硬件:设置系统时钟、中断,并初始化键盘、鼠标等基本外设。
  3. 选择启动设备:固件根据预设的启动顺序(如硬盘、U盘、网络),查找并锁定第一个可用的启动设备。

BIOS vs UEFI

  • BIOS:传统固件,使用 MBR 分区表,支持硬盘最大 2TB,启动过程为串行,速度较慢。
  • UEFI:现代固件,使用 GPT 分区表,支持超大硬盘,启动更快,并提供安全启动(Secure Boot)等高级功能。

🎛️ 阶段二:引导加载程序 (Bootloader)

固件将控制权交给引导加载程序,它充当了固件与操作系统内核之间的桥梁。Linux 系统中最主流的引导加载程序是 GRUB (GRand Unified Bootloader)。

  • 加载位置 :
    • BIOS 模式:从硬盘的第一个扇区(主引导记录 MBR)加载 GRUB。
    • UEFI 模式:从专门的 EFI 系统分区(ESP)中加载 GRUB。
  • 核心任务 :
    1. 显示启动菜单:提供一个界面,允许用户选择要启动的内核版本或操作系统(在双系统环境中非常有用)。
    2. 加载内核与 initramfs :根据用户选择,将 Linux 内核镜像(vmlinuz)和一个临时的根文件系统镜像(initramfs 或 initrd)加载到内存中。
    3. 移交控制权:将 CPU 的控制权正式移交给 Linux 内核。

🐧 阶段三:Linux 内核初始化

内核被加载到内存后,开始接管系统,并进行全面的初始化。

  1. 硬件探测与驱动加载:内核识别 CPU、内存、硬盘、网络设备等所有硬件,并加载相应的驱动程序。
  2. 挂载 initramfs :内核首先挂载 initramfs。这是一个临时的根文件系统,其中包含了挂载真实根文件系统所必需的驱动和工具(例如 LVM、RAID 或特定文件系统的驱动)。
  3. 挂载真实根文件系统 :利用 initramfs 中的工具,内核根据启动参数找到并挂载硬盘上真正的根文件系统(/)。
  4. 启动 init 进程 :完成根文件系统的挂载后,内核启动用户空间的第一个进程------init 进程(其进程 ID 恒为 1)。

⚙️ 阶段四:init 系统与服务管理

init 进程是所有其他用户空间进程的"鼻祖",负责启动和管理系统服务。现代 Linux 发行版(如 CentOS 7+, Ubuntu 16.04+)普遍采用 systemd 作为默认的 init 系统,它取代了传统的 SysVinit。

  • systemd 的核心概念 :
    • 目标 (Target) :systemd 使用"目标"来替代传统 SysVinit 的"运行级别 (Runlevel)"。例如:
      • multi-user.target:对应运行级别 3,即多用户命令行模式,是服务器的常用模式。
      • graphical.target:对应运行级别 5,即多用户图形界面模式。
    • 并行启动 :systemd 能够并行启动多个服务,显著加快了系统的启动速度。
  • 核心任务 :systemd 根据默认的目标(可通过 systemctl set-default 命令设置),依次启动网络、SSH、防火墙、定时任务等一系列系统服务和守护进程。

🖥️ 阶段五:用户登录

当所有必要的系统服务都已启动,系统便进入了等待用户交互的状态。

  • 启动登录程序 :
    • 命令行模式 :启动 getty 进程,在终端上显示登录提示符。
    • 图形界面模式 :启动显示管理器(如 gdm 或 lightdm),呈现图形化的登录界面。
  • 用户认证 :用户输入用户名和密码后,系统通过 /etc/passwd 和 /etc/shadow 文件进行验证。
  • 进入系统:验证通过后,系统加载用户的 shell 环境或桌面环境,用户便可开始使用系统。



相关推荐
EasyGBS8 小时前
摄像头还在线,画面已经不能用了?国标GB28181视频平台EasyGBS视频质量诊断怎么用
服务器·安全·音视频
程序员-Benothing8 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
m0_646429978 小时前
Docker 完整核心知识点总结(超通俗易懂版)
运维·docker·容器
wdfk_prog8 小时前
LWIP教程 09:从 `tcp_slowtmr()` 到 Fast Retransmit——TCP 超时重传与重复 ACK
服务器·网络·数据库·网络协议·tcp/ip
‎ദ്ദിᵔ.˛.ᵔ₎8 小时前
linux 进程信号 (上)
linux·服务器
亚川楼宇自控系统数据中心厂家9 小时前
IBMS 集成管理系统:如何打通楼宇自控实现建筑一体化管控
运维
15Moonlight9 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
迪康Defender9 小时前
终端安全审批体系设计:如何平衡安全管控与业务连续性
运维·服务器·安全·运维开发·学习方法·业界资讯·远程工作