🚀 嵌入式 Linux 启动机制全解析:从 Boot 到 Rootfs

在嵌入式系统中,Linux 的启动流程不仅是内核加载的过程,更是 bootloader、设备树、初始根文件系统、启动配置文件等多个组件协同工作的结果。不同的文件系统和启动方式会影响系统的启动速度、兼容性、安全性和可维护性。本文以 RK3588 为例,全面梳理 Linux 的启动流程、主流启动方式、文件系统影响以及 extlinux.conf 的高级配置技巧。


🧠 一、Linux 启动流程概览(以 ext4 + extlinux 为例)

当系统使用 ext4 格式的 /boot 分区,并采用 extlinux 启动配置时,启动流程如下:

🔹 1. 上电 → BootROM → U-Boot

  • SoC 上电后,BootROM 从 eMMC/SD/NVMe 加载 U-Boot
  • U-Boot 初始化 DRAM、串口、USB 等外设

🔹 2. U-Boot 解析 extlinux.conf

  • 读取 /boot/extlinux/extlinux.conf,加载内核、设备树、initrd

  • 示例配置如下:

    label rk-kernel.dtb linux-6.1.118kernel /Image-6.1.118fdt /rk-kernel.dtbinitrd /initrd-6.1.118append root=/dev/mmcblk0p7 rw console=ttyFIQ0 loglevel=8
    

🔹 3. 加载内核与设备树

  • 内核镜像(Image)加载到内存
  • 设备树(dtb)描述硬件结构,供内核解析

🔹 4. 加载 initrd(初始根文件系统)

  • 内核挂载 initrd,执行其中的 /init 脚本
  • 完成驱动加载、根文件系统挂载准备

🔹 5. 切换到真正的 rootfs

  • 挂载 /dev/mmcblk0p7 等真实根分区
  • 启动 PID 1(如 systemd 或 busybox init)

📦 二、/boot 分区文件作用解析

文件名作用
Image-6.1.118Linux 内核镜像
initrd-6.1.118初始根文件系统
rk-kernel.dtb设备树文件
extlinux.conf启动配置文件
System.map / config-6.1.118内核符号表与编译配置
logo.bmp启动 logo 图像

🧩 三、常见启动方式汇总

除了 extlinux + ext4,还有多种启动方式适用于不同场景:

✅ 1. FAT32 + U-Boot + extlinux

  • /boot 分区为 FAT32,兼容 Windows 工具
  • U-Boot 读取 extlinux.conf,加载内核、dtb、initrd

✅ 2. FAT32 + GRUB(x86 系统)

  • GRUB 读取 /boot/grub/grub.cfg
  • 加载 vmlinuzinitrd.img

✅ 3. U-Boot + FIT Image

  • 所有内容打包成 .itb 文件
  • 启动更简洁,适合量产和安全校验

✅ 4. U-Boot + boot.scr 脚本

  • 使用 mkimage 生成启动脚本
  • U-Boot 执行脚本加载内核和根文件系统

✅ 5. raw image 启动

  • 内核、dtb、initrd 烧录到固定偏移地址
  • 不依赖文件系统,适合极简系统

✅ 6. UEFI + systemd-boot

  • FAT32 EFI 分区 + ext4 根分区
  • 用于 ARM64 或 x86 的桌面系统

✅ 7. Android A/B 分区启动

  • 启动 boot_aboot_bboot.img
  • 实现无缝 OTA 和回滚机制

✅ 8. OP-TEE 安全启动

  • 启动 OP-TEE TEE OS → Linux
  • 常用于安全芯片和加密模块

✅ 9. PXE 网络启动 + NFS 根文件系统

  • 从网络加载内核和 initrd
  • 根文件系统挂载远程 NFS,适合无本地存储设备

✅ 10. kexec 重启内核

  • 在运行中的 Linux 中加载另一个内核
  • 用于 crash dump、快速重启等场景

✅ 11. Barebox 启动

  • 替代 U-Boot 的 bootloader
  • 更模块化,适合工业设备

📚 四、文件系统对启动方式的影响

文件系统支持启动方式特点
ext4extlinux, FIT, boot.scr支持大文件、权限、日志
FAT32GRUB, extlinux, UEFI兼容性好,功能弱
UBIFSraw flash 启动用于 NAND flash
ISO9660GRUB2(Live CD)只读,用于光盘或镜像
SquashFSinitrd/initramfs压缩只读,适合嵌入式

🧠 五、extlinux.conf 高级配置详解

除了基本的 kernelfdtinitrdappend,extlinux.conf 还支持以下高级配置项:

配置项说明示例
LABEL启动项名称LABEL linux-debug
MENU LABEL菜单显示名称MENU LABEL Debug Kernel
MENU DEFAULT设置为默认启动项MENU DEFAULT
MENU TIMEOUT菜单等待时间(秒)MENU TIMEOUT 5
MENU BACKGROUND菜单背景图像MENU BACKGROUND logo.bmp
MENU TITLE菜单标题MENU TITLE Firefly Boot Menu
MENU HIDDEN隐藏菜单(自动启动)MENU HIDDEN
MENU COLOR菜单颜色设置MENU COLOR screen 37;40 #00000000 #00000000 none

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/96640.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/96640.shtml
英文地址,请注明出处:http://en.pswp.cn/web/96640.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 操作Office的PPT、Word、Excel,同时兼容WPS

文章目录概要一、环境准备1. 安装必要的Python库2. 系统要求二、核心实现原理1. 检测已安装的Office类型2. 初始化对应的应用程序三、完整代码实现四、使用示例五、WPS兼容处理详解1. 形状和文本框访问兼容处理2. PPT图片粘贴兼容处理3. 资源释放的重要性六、图片操作实现详解1…

ISP之DHCPv6-PD(前缀代理)为用户下发前缀

一、组网需求家庭用户要使用IPv6地址接入互联网。为方便用户接入,运营商使用DHCPv6-PD的方式给家用路由器下发IPv6地址前缀,用户路由器LAN侧不需要手工指定链路的IPv6地址前缀,家用路由器可以给用户终端自动配置IPv6地址和其它网络参数。本例…

Django全栈班v1.04 Python基础语法 20250912 上午

rm 删除命令 注意:删除操作是不可逆的,一旦删除就无法撤销,请谨慎使用。删除文件: rm file.py递归删除目录: rm -r demo/强制删除: rm -f file.py交互式删除: rm -i *.txt课程定位 “学习Python…

Java 21 虚拟线程高并发落地:中间件适配、场景匹配与细节优化的技术实践

作为 Java 21 的核心特性,虚拟线程(Virtual Thread)凭借 “用户态调度”“轻量级资源占用” 的优势,成为高并发场景下线程模型优化的重要方向。但在实际落地中,不少团队会陷入 “技术用了却没效果” 的困境 ——QPS 提升有限、中间件调用阻塞、CPU 使用率异常升高。 本文…

数据库在并发访问时,不同隔离级别下脏读幻读问题

数据库隔离级别并非安装后就固定,绝大多数主流数据库(如MySQL、PostgreSQL、SQL Server)都支持动态调整和运行中自定义,具体调整范围可分为全局、会话和语句三个层级。 全局级别调整:修改数据库配置文件(如…

JVM从入门到实战:从字节码组成、类生命周期到双亲委派及打破双亲委派机制

摘要:本文围绕 Java 字节码与类加载机制展开,详解字节码文件组成、类的生命周期,介绍类加载器分类、双亲委派机制及打破该机制的方式,还阐述了线程上下文类加载器与 SPI 机制在 JDBC 驱动加载中的应用,帮助深入理解 Ja…

多源最短路(Floyd算法

多源最短路简介 多源最短路算法用于解决图中任意两节点间最短路径的问题,广泛应用于交通网络、社交关系分析、路由优化等场景。与单源最短路(如Dijkstra)不同,它一次性计算所有节点对的最短距离,适合需要全局路径规划的…

【攻防实战】记一次攻防实战全流程

那天我向众神祈祷,最后回答我的却只有挣扎十年依旧不甘的自己!成功究竟是馈赠还是偿还。 前言 网络安全技术学习,承认⾃⼰的弱点不是丑事,只有对原理了然于⼼,才能突破更多的限制。 拥有快速学习能力的安全研究员&…

Anaconda配置环境变量和镜像

Anaconda配置环境变量和镜像 下载失败就是开了梯子 Anaconda 作用:包管理(集中,有序)和环境管理(版本切换)使用conda命令对虚拟环境创建、删除自带python解释器pip(python自带的包管理工具&…

给定单词倒排

实现代码&#xff1a;public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 输入的字符串String input scanner.nextLine();// 存储单词List<String> words new ArrayList<>();// 存储当前单词StringBuilder currentWord new S…

IO进程——进程引入、进程函数接口

一、引入1、进程&程序1.1 程序编译好的可执行的文件存放在磁盘上的指令和数据的有序集合&#xff08;文件&#xff09;程序是静态的&#xff0c;没有任何执行的概念1.2 进程一个独立的可调度的任务执行一个程序所分配的资源的总称进程是程序执行的一次过程进程是动态的&…

周末游戏推荐:安卓端俄罗斯方块,经典与创新的结合

前段时间&#xff0c;每到周末我都会给大家推荐一些离线的经典游戏&#xff0c;原本打算将这个传统一直延续下去。然而&#xff0c;我实在找不到足够好用且无广告的游戏了。有些游戏刚开始用的时候还不错&#xff0c;但用着用着就开始频繁弹出广告&#xff0c;这让我实在不敢向…

《用 Scikit-learn 构建 SVM 分类模型:从原理到实战的全流程解析》

《用 Scikit-learn 构建 SVM 分类模型:从原理到实战的全流程解析》 一、引言:为什么选择 SVM? 在机器学习的众多算法中,支持向量机(SVM)以其强大的分类能力和良好的泛化性能,在文本分类、人脸识别、医学诊断等领域广泛应用。尤其在中小规模数据集上,SVM 往往能提供比…

一文学会CMakeLists.txt: CMake现代C++跨平台工程化实战

你能学到什么&#xff1f;朋友们好久不见&#xff0c;我是alibli&#xff0c;好久没有更新博客了。今天本人将通过构造一个实际的虚拟小项目&#xff0c;来让你彻底掌握CMake跨平台工程构建&#xff0c;学会CMakeLists.txt语法。该项目实现了一个简单的平方、立方的计算程序&am…

高并发场景下限流算法实践与性能优化指南

高并发场景下限流算法实践与性能优化指南 在大规模并发访问环境中&#xff0c;合理的限流策略能保护后端服务稳定运行&#xff0c;避免系统因瞬时高并发导致资源耗尽或崩溃。本文将从原理出发&#xff0c;深入解析几种主流限流算法&#xff0c;并结合Java和Redis给出完整可运行…

Vue3应用执行流程详解

精确化的完整执行流程 (以 Vite Vue3 SPA 为例)整个过程可以分为两部分&#xff1a;首次访问的“冷启动”和后续的Vue应用接管。第一部分&#xff1a;首次访问与页面加载客户端&#xff1a;发送请求用户打开浏览器&#xff0c;输入 URL&#xff08;如 http://localhost:5173&a…

Redis 持久化与高可用实践(RDB / AOF / Sentinel / Cluster 全解析)

这篇是我把几套生产环境踩坑与复盘整理成的一份“从 0 到 1 长期可维护”的实践文。目标是&#xff1a;明确策略、给出默认可用的配置模板、把常见坑一次讲透。 适用场景&#xff1a;新项目选型、老项目稳定性加固、从单机迁移到 HA/Cluster、应对数据安全与故障切换要求。目录…

Linux内核的PER_CPU机制

参考书《Linux内核模块开发技术指南》 1.原理 在多核CPU的情况下&#xff0c;为了提高CPU并发执行的效率&#xff0c;对于某些不是必须要在核间进行同步访问的资源&#xff0c;可以为每一个CPU创建一个副本&#xff0c;让每个CPU都访问自身的数据副本&#xff0c;而不是通过加锁…

VSCode 的百度 AI编程插件

VSCode 的百度 AI编程插件主要是 Baidu Comate&#xff08;文心快码&#xff09;&#xff0c;这是一款基于文心大模型的新一代编码辅助工具&#xff0c;旨在提升开发者的编码效率&#xff0c;让写代码变得更简单。以下是关于 Baidu Comate 的详细介绍&#xff1a; 一、功能特点…

阿里云监控使用

阿里云的云监控服务&#xff08;CloudMonitor&#xff09;是一款简单易用、功能强大的监控工具&#xff0c;主要用来帮助用户实时监控阿里云上的各种资源&#xff08;比如服务器、数据库、网络等&#xff09;&#xff0c;并在出现问题时及时发出警报&#xff0c;确保业务稳定运…