当前位置: 首页 > news >正文

linux开机流程

Linux 开机启动流程是一个复杂的过程,涉及从硬件初始化到用户登录的多个阶段。以下是详细的流程解析:

image-20260210230920249

POST(加电自检)–>加载BIOS(Basic Input/Outpu System)–>确定启动设备(Boot sequence)、加载Boot Loader–>加载内核(kernel)初始化initrd–>运行/sbin/init初始化系统–>打印用户登录提示符

1. 硬件阶段(BIOS/UEFI)

阶段 说明
BIOS/UEFI 自检 开机后首先执行固件程序,进行硬件初始化(POST)
硬件检测 检测 CPU、内存、硬盘、键盘等关键硬件
启动顺序选择 根据设置的启动顺序,选择从硬盘、光驱或网络启动

2. 引导加载阶段(Bootloader)

Legacy BIOS 模式

  • MBR(主引导记录):硬盘前 512 字节,包含引导代码和分区表
  • Bootloader:常见的有 GRUB、LILO
    • GRUB 分为 Stage 1(MBR 中)和 Stage 2(/boot 分区)
    • 加载内核(vmlinuz)和 initramfs

UEFI 模式

  • 使用 GPT 分区表
  • EFI 系统分区(ESP)存放引导文件
  • 直接加载 .efi 格式的引导程序

3. 内核启动阶段

Bootloader → 加载 vmlinuz(压缩内核)→ 解压并执行

关键步骤:

  1. 内核自解压:将压缩的内核镜像解压到内存
  2. 初始化内核:设置内存管理、进程调度等核心子系统
  3. 挂载 initramfs:作为临时根文件系统,包含必要的驱动模块
  4. 加载驱动:识别硬盘控制器、文件系统等硬件
  5. 切换根文件系统:从 initramfs 切换到真正的根分区(/

4. init 进程阶段(系统初始化)

SysVinit(传统方式)

/sbin/init → 读取 /etc/inittab → 运行 /etc/rc.d/rc.sysinit

运行级别(Runlevels):

级别 含义
0 关机
1 单用户模式(救援模式)
3 多用户模式(命令行)
5 图形界面模式
6 重启

systemd(现代主流)

/lib/systemd/systemd → 并行启动服务 → 达到 target

systemd 目标(替代 runlevels):

  • graphical.target → 对应运行级别 5
  • multi-user.target → 对应运行级别 3
  • rescue.target → 救援模式

启动流程:

  1. 执行 default.target 的依赖
  2. 并行启动服务(相比 SysVinit 的串行启动更快)
  3. 关键服务
    • 网络配置(NetworkManager/networkd)
    • 文件系统挂载(fstab 处理)
    • 系统日志(rsyslog/systemd-journald)
    • 定时任务(cron)等

5. 用户登录阶段

getty → 显示登录提示符 → 用户输入用户名密码 → 启动用户 Shell
  • 虚拟终端:tty1-tty6(命令行),tty7+(图形界面)
  • 登录验证:PAM(可插拔认证模块)验证用户凭据
  • 启动环境:执行 /etc/profile~/.bash_profile 等配置文件

总结:

  1. 从底层到高层,控制权逐步移交: 固件 → 引导程序 → 内核 → init/systemd → 用户。
  2. 两个核心难题
    • 如何找到内核? -> 由 引导加载程序 (GRUB) 解决。
    • 如何挂载真正的根? -> 由 initramfs 解决。
  3. 分水岭:PID 1: 内核初始化和用户空间初始化的界限。systemd 是现代的、主流的 PID 1。
  4. 并行化systemd 取代传统的串行 SysV init 脚本,大幅提升启动效率。
  5. 关键日志: 启动出问题时,查看:
    • journalctl -b: 本次启动的 systemd 日志。
    • journalctl -kdmesg: 内核启动日志。
    • /var/log/boot.log: 一些系统的启动日志。
http://www.jsqmd.com/news/367710/

相关文章:

  • java+vue+SpringBoot社区养老服务系统(程序+数据库+报告+部署教程+答辩指导)
  • 电脑“清灰”劝退指南:你以为的保养,可能是对主板的“酷刑”
  • 新零售商城系统-PHP商城源码-免费开源-亿坊商城系统!
  • 【通信】基于遗传算法多用户MISO系统速率分拆附Matlab代码
  • Java毕设选题推荐:基于springboot的工厂精密设备销售管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于springboot的助农农产品销售平台小程序基于springboot的小程序助农农产品销售平台【附源码、mysql、文档、调试+代码讲解+全bao等】
  • makefile中的shell变量语法总结
  • BISHI35 【模板】巴什博弈
  • 计算机Java毕设实战-基于springboot的工厂精密设备销售管理系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 带电池产品卖到欧盟:电池法规 (EU) 2023/1542 到底管你什么?先抓住这 4 件事
  • 2025 CRM 系统选型手册:六大主流CRM采购 - 供应链 - 对账全链路能力对比与深度解析
  • android compose webView js交互
  • 为什么中小厂提示工程架构师也要关注Agentic AI?这4大竞争优势太实用
  • 顶尖游资的告白:300万变4000万,靠的是这三步选股法
  • 《GraphQL 强类型架构下的错误处理体系设计指南》
  • 怎么掌握 SEO 的全部基础?
  • 【优化部署】基于粒子群算法PSO异构节点智能部署策略(延长无线传感器网络寿命)附Matlab代码
  • 《面向第三方的GraphQL开放平台设计指南》
  • 【YOLOv8多模态涨点改进】独家创新首发 | TGRS 2025 | 引入CDFIM跨模态差异特征交互模块,通过差异特征提取和融合增强机制,减少了冗余信息,显著提升了小目标的检测精度,高效涨点改进
  • P12085 [蓝桥杯 2023 省 B] 整数删除
  • 计算机毕业设计springboot基于房屋租赁系统 SpringBoot框架下在线房产租赁服务平台的设计与实现 基于Java Web的智能住房租赁管理系统构建
  • 人工智能需要学习哪些课程?
  • 大数据存储方案:社交网络图数据库选型指南
  • 请举例 AST 的更多真实例子
  • 计算机毕业设计springboot程序设计竞赛团队管理系统 基于SpringBoot的ACM程序设计竞赛战队协同平台 Java技术栈下的算法竞赛队伍全流程管理系统
  • 数据标注:推动大数据领域进步的关键力量
  • Java毕设项目推荐-基于springboot+vue的工厂精密设备销售管理系统的设计与实现【附源码+文档,调试定制服务】
  • 基于VUE+Tailwind CSS的高德地图导航功能开发实战教程
  • 大模型微调内存优化全攻略:无需昂贵显卡,打造你的AI助手
  • 如何进行 OTel : OpenTelemetry 采用蓝图