嵌入式 Linux 啟動機制全解析:從 Boot 到 Rootfs

🚀 嵌入式 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;確保業務穩定運…