后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载几乎每一位软件工程师都用过 Linux但只有少数人真正理解它的启动流程是如何运转的。本文以 system-design-101 仓库中的 linux-boot-process-explained.md 为核心骨架将开机过程中的固件、引导加载器、内核、systemd 与用户态初始化拆解为 8 个阶段并结合仓库内相关的 Linux 知识文档帮助读者建立从硬件加电到登录界面出现的完整心智模型——无论是排查启动故障、阅读内核日志还是备战系统设计面试这套流程都是必须掌握的基础功。整体脉络一次启动就是一次接力赛Linux 启动流程本质上是一条接力链固件 → 引导加载器 → 内核 → 用户空间。每一环只负责把控制权交给下一环自己并不完成全部工作。原文档用 8 个 Step 概括了这一过程阶段责任主体核心动作Step 1BIOS/UEFI 固件从非易失性存储器加载并执行 POST 自检Step 2BIOS/UEFI探测 CPU、内存、存储等连接设备Step 3BIOS/UEFI选择启动设备硬盘 / 网络 / CD ROMStep 4引导加载器GRUB弹出菜单选择操作系统或内核Step 5Linux 内核初始化完成切换到用户空间启动 systemdStep 6systemd激活默认 target 及相关单元Step 7启动脚本执行启动脚本并配置运行环境Step 8系统呈现登录窗口系统就绪下面逐阶段展开并补充每一步背后为什么这样做的原理。Step 1加电与 POST 自检——固件从非易失性存储器中醒来按下电源键后**BIOSBasic Input/Output System基本输入输出系统或UEFIUnified Extensible Firmware Interface统一可扩展固件接口**固件会从非易失性存储器如主板上的 NOR Flash / SPI Flash中被加载并立即执行POSTPower On Self Test加电自检。POST 的作用是快速验证 CPU、内存控制器、总线、显卡等核心硬件是否处于可工作状态。如果检测到致命故障例如内存条未插好系统通常会以蜂鸣声编码或屏幕错误信息的形式停机halt而不是继续引导。传统 BIOS 运行在 16 位实模式下而现代 UEFI 运行在 32/64 位保护模式下能访问更大的固件存储如 FAT 分区中的 .efi 文件这也是 UEFI 逐渐取代 BIOS 的原因之一。Step 2设备探测——盘点这台机器有什么POST 通过之后固件开始检测连接到系统的设备包括CPU读取型号、缓存与特性位用于后续初始化RAM探测内存容量、通道与 ECC 状态存储识别 SATA/NVMe 硬盘、SSD、U 盘外设键盘、鼠标、显卡、网卡等。UEFI 在此阶段还会初始化其驱动栈UEFI Driver并可能通过 ACPI 表高级配置与电源接口表向操作系统描述硬件拓扑。这一步的结果会被记录在固件维护的设备列表中供后续选择启动设备使用。Step 3选择启动设备——决定从哪儿开始固件按照可配置的**启动顺序Boot Order**选择一个启动设备。原文档明确指出这个设备可以是硬盘Hard Drive最常见从引导扇区或 EFI 系统分区启动网络服务器Network Server即 PXEPreboot eXecution Environment网络引导常用于无盘工作站、数据中心批量装机CD ROM传统安装介质现在也常被 U 盘取代。在传统 BIOS 机器上固件读取硬盘第一个扇区MBR主引导记录或卷引导记录在 UEFI 机器上固件则直接扫描 EFI 系统分区ESP通常是 FAT32中的启动项。进入启动顺序设置的常见方式是按 Del / F2 / F12 等按键——不同主板厂商的按键不同。Step 4引导加载器接管——GRUB 的菜单与多内核支持选定启动设备后BIOS/UEFI 运行引导加载器Boot Loader。原文档点名的GRUBGRand Unified Bootloader是最主流的实现当前广泛使用 GRUB 2。GRUB 提供了一份菜单让用户选择启动哪个操作系统多系统共存场景如 Linux 与 Windows 双启动启动哪个内核同一发行版可安装多个版本内核回退到旧内核是排障的常用手段给内核传递什么启动参数如single进入单用户维护模式、nomodeset禁用显卡驱动等。GRUB 加载内核映像vmlinuz-*与初始内存盘initrd/initramfs到内存后把控制权交给内核。initramfs 中包含了挂载真实根文件系统rootfs所需的驱动程序与工具是内核能够找到根分区的关键。Step 5内核就绪切换到用户空间——systemd 成为 1 号进程内核Kernel完成初始化内存管理、调度器、驱动、挂载 initramfs 并切换到真正的根文件系统之后系统进入用户空间User Space。原文档明确指出内核将systemd启动为第一个用户空间进程由它来管理进程与服务、探测剩余硬件、挂载文件系统并运行桌面环境。这里有两个关键机制值得展开第一进程编号PID的约定。systemd 作为第一个用户空间进程获得PID 1。PID 1 是所有用户态进程的祖先承担收养孤儿进程和接收内核转交的信号的职责——这正是 Linux 上 PID 1 进程被杀死会导致系统崩溃内核 panic的原因。第二systemd 的职责分工。相比传统 SysVinit 顺序执行脚本的方式systemd 采用并行启动与按需激活显著缩短启动时间。它负责探测并初始化剩余硬件配合 udev 设备管理按/etc/fstab挂载文件系统如/、/home、/tmp启动各种守护进程daemon网络NetworkManager/systemd-networkd、日志journald、cron、SSH 等运行显示管理器Display Manager进而启动桌面环境。与本文配套仓库中的 5-important-components-of-linux.md 介绍了 Linux 的系统、内存、进程、网络、存储五大核心组件可作为理解内核职责的背景知识linux-file-system-explained.md 则讲解了 Filesystem Hierarchy StandardFHS可帮助你理解 Step 5 中挂载文件系统的对象与布局。Step 6systemd 激活默认 target——启动的终点状态原文档指出systemd 默认激活default.target单元同时也会执行其他分析依赖单元。这是理解 systemd 引导模型的核心概念。systemd 不再使用 SysVinit 的运行级别runlevel 0–6而是用target 单元表示一组状态的集合并通过**单元依赖图dependency graph**组织default.target通常符号链接到graphical.target图形多用户或multi-user.target命令行多用户multi-user.target非图形化的多用户运行环境服务器场景最常见rescue.target与emergency.target维护与紧急模式用于系统修复reboot.target、poweroff.target对应重启与关机。systemd 会递归解析default.target依赖的所有单元服务*.service、挂载*.mount、设备*.device、套接字*.socket等在满足依赖顺序的同时最大化并行度。启动过程中可以随时用systemctl list-units、systemctl status、journalctl -b查看各单元的状态与日志这也是排障卡在启动哪一步的核心手段。Step 7启动脚本与环境配置——把系统调校到可用状态在 target 激活过程中systemd 会执行一组启动脚本startup scripts并配置运行环境包括但不限于设置主机名、时区、locale 等基础系统属性应用/etc/sysctl.conf中的内核参数初始化安全策略如 SELinux/AppArmor 标签加载配置网络接口、防火墙规则与路由启动用户会话管理相关的服务如 dbus、logind。习惯上管理员自定义的启动逻辑可以放在/etc/rc.local传统方式需显式启用或者更推荐写成独立的 systemd service 单元并声明依赖关系。这一阶段完成后系统服务已就绪但还缺少人的接入。Step 8登录窗口——系统就绪的信号最后一步系统向用户呈现登录窗口Login Window图形环境显示管理器GDM / SDDM / LightDM 等呈现图形登录界面验证通过后启动桌面会话纯命令行终端上呈现login:提示符由 getty / agetty 提供通过 TTY 登录远程登录等待 SSH 服务接受连接。用户认证通过后PAM可插拔认证模块完成身份验证与会话初始化用户得到 shell。至此系统完全就绪——从按下电源键到可以交互整条链路闭环。总结一条链路三类故障排查入口Linux 启动流程的 8 个阶段可以归结为三句核心结论硬件层Step 1–3固件负责自检、探测与选择启动设备故障多表现为无显示/蜂鸣/找不到启动介质内核层Step 4–5GRUB 加载内核与 initramfs内核初始化后交出控制权故障多表现为内核 panic 或挂载根文件系统失败用户空间层Step 6–8systemd 按依赖图激活 target、执行脚本、呈现登录界面故障排查入口是systemctl与journalctl。结合本仓库的 linux-boot-process-explained.md、5-important-components-of-linux.md 与 linux-file-system-explained.md你可以把启动流程与内核五大组件文件系统标准这三块知识串成完整的 Linux 基础体系——这也是系统设计面试中考察操作系统基本功时最常见的话题组合。赞分享后端文档教程【免费下载链接】system-design-101Explain complex systems using visuals and simple terms. Help you prepare for system design interviews.项目地址https://gitcode.com/GitHub_Trending/sy/system-design-101点击查看免费下载相关推荐system-design-101 图解URL 的完整结构拆解——从 Scheme 到 Fragment 的每一段都有何用system design 101 图解URL 的完整结构拆解——从 Scheme 到 Fragment 的每一段都有何用 当你把一串字符敲进浏览器地址栏并按后端文档教程System Design 101 系列改变世界的 15 个开源项目——从 Linux 到 Kubernetes 的开源版图System Design 101 系列改变世界的 15 个开源项目——从 Linux 到 Kubernetes 的开源版图 开源软件是当代软件工程的地基从后端文档教程深入掌握 MCP Python SDK 的 Resolve 依赖注入让工具参数只来自可信来源深入掌握 MCP Python SDK 的 Resolve 依赖注入让工具参数只来自可信来源 导读 本文围绕官方 Python SDK for Model C后端文档教程上一篇BabelDOC 快速上手如何把英文 PDF 翻成中文并保留原版式下一篇音乐解锁终极指南如何用Unlock Music Electron轻松解密所有加密音乐创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考