Linux內核在啟動過程中掛載根文件系統rootfs的過程

一、掛載根文件系統rootfs的過程:

1. ?初始虛擬根文件系統的掛載?

  • 內核啟動時首先會創建并掛載一個?臨時虛擬根文件系統(如initramfs或rootfs)??15。該階段主要作用:
    • 提供基礎的設備節點和目錄結構,確保內核能訪問必要的硬件驅動;
    • 加載關鍵模塊(如磁盤控制器驅動、文件系統驅動等),為后續掛載真實根文件系統做準備?67。
  • 此階段由內核自動完成,無需用戶干預,屬于內核初始化流程的一部分?58。

2. ?真實根文件系統的切換與掛載?

  • 在虛擬根文件系統初始化完成后,內核通過以下兩種方式之一掛載真實根文件系統:
    • ?直接掛載?:若內核參數(如root=)已明確指定根文件系統設備路徑(如/dev/sda1),內核會直接掛載該設備作為根文件系統?78。
    • ?通過initramfs掛載?:若系統使用initramfs(初始內存文件系統),內核會執行initramfs中的初始化腳本(如/linuxrc),動態探測硬件并加載驅動,再掛載真實根文件系統?36。
  • 掛載成功后,內核將根文件系統從虛擬文件系統切換為真實文件系統,并啟動用戶空間的第一個進程(如systemd或傳統init進程)?46。

關鍵差異與流程總結

?階段??主要任務??依賴項?
虛擬根文件系統掛載提供基礎環境,加載必要驅動內核內置或initramfs鏡像
真實根文件系統掛載通過驅動加載完成設備識別,掛載實際存儲設備Bootloader參數或initramfs腳本

此過程確保了內核從僅依賴內存的臨時環境過渡到持久化存儲的完整文件系統,從而支持后續用戶空間服務的正常運行

二、內核參數root=用于在啟動過程中指定根文件系統的設備位置,其核心功能及使用場景如下:

1. ?指定根文件系統的存儲設備路徑?

  • root=通過設備路徑(如/dev/sda1)明確告知內核根文件系統所在的物理或虛擬存儲設備,支持常見存儲類型(如SATA、NVMe、USB等)?12。
  • 示例:

    root=/dev/nvme0n1p2 # 根文件系統位于第一個NVMe硬盤的第二個分區

2. ?支持多種存儲設備類型?

  • 參數值可指向本地磁盤分區、LVM邏輯卷、網絡存儲(如NFS)或虛擬設備(如/dev/ram0)?24。
  • 配合rootfstype=參數可指定文件系統類型(如ext4、xfs),避免內核自動探測失敗?28。

3. ?與initramfs協同工作?

  • 當系統依賴?initramfs?(初始內存文件系統)時,內核先掛載虛擬根文件系統,再通過root=參數定位實際根設備并完成切換?15。
  • 示例:

    root=UUID=1234-5678 # 使用UUID避免設備名變動導致啟動失敗

4. ?啟動模式控制?

  • 結合ro(只讀)或rw(讀寫)參數,控制根文件系統掛載模式:

    root=/dev/sda1 ro # 啟動時以只讀模式掛載,避免文件損壞

    系統初始化完成后,可能通過腳本切換為讀寫模式?24。

5. ?調試與故障恢復?

  • 在修復系統時,可臨時修改root=參數指向備用根文件系統(如Live CD環境)進行修復?48。

參數格式與常見配置示例

?場景??參數示例??說明?
本地磁盤分區root=/dev/sdb3根文件系統在第二塊SATA磁盤第三分區
UUID標識root=UUID=abcd-ef01通過唯一UUID避免設備名沖突
網絡文件系統(NFS)root=/nfs/server/path需配合nfsroot=參數使用
虛擬化環境root=/dev/vda1適用于KVM/Xen等虛擬化平臺

通過root=參數,內核能夠精準定位并掛載根文件系統,確保后續用戶空間進程(如systemd)的正常運行?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910224.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【LeetCode】力扣題——輪轉數組、消失的數字、數組串聯

🔥個人主頁:艾莉絲努力練劍 ?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓 🍉學習方向:C/C方向 ??人生格言:為天地立心,為生民立命,為往圣繼絕學,…

Java Stream詳解

Java Stream詳解 Stream 是 Java 8 引入的流式數據處理工具,可以像流水線一樣對集合數據進行高效操作(過濾、轉換、統計等)。核心特點: 鏈式操作:支持多個操作串聯不修改原始數據:生成新結果支持并行處理…

Java回歸循環理解

一、Java循環的四種 1. 傳統for循環 - 精確控制的首選 // 遍歷數組 int[] numbers {1, 2, 3, 4, 5}; for (int i 0; i < numbers.length; i) {System.out.println(numbers[i]); }// 嵌套示例&#xff1a;矩陣遍歷 int[][] matrix {{1, 2}, {3, 4}}; for (int row 0; r…

飛騰D2000金融工控主板,點亮經濟高質量發展

近年來&#xff0c;國家不斷推出金融行業的政策和法規&#xff0c;推動金融業高質量發展。在國家大力推進金融行業改革和創新的大環境下&#xff0c;金融工控主板市場也迎來了新的發展機遇。隨著國產CPU技術的不斷突破&#xff0c;以及我國對金融安全重視程度的提高&#xff0c…

SimpleITK——創建nrrd體素模型

在介紹如何生成nrrd前&#xff0c;了解一下為什么醫學影像上一般使用nrrd的體素模型&#xff1f; 為什么醫學影像上一般使用nrrd的體素模型&#xff1f; 在醫學影像領域&#xff0c;?NRRD&#xff08;Nearly Raw Raster Data&#xff09;格式?被廣泛用于存儲體素模型&#x…

Docker容器部署KES

一、安裝部署 1&#xff0c;導入鏡像 #導入鏡像&#xff08;root用戶&#xff09; [rootnode docker ]# mv kdb_x86_64_V008R006C009B0014.tar kingbase.tar [rootnode docker]# docker load -i kingbase.tar#查看鏡像&#xff08;root用戶&#xff09; [rootnode docker]# d…

C++基礎練習 sort函數,用于排序函數

題目&#xff1a; https://acm.hdu.edu.cn/showproblem.php?pid2039 解答&#xff1a; #include <iostream> #include <cmath> #include <algorithm> using namespace std;double a[3]; int main(){int n;cin>>n;while(n--){cin>>a[0]>>…

棱鏡觀察|EMB“重構”卡鉗,車企降本壓力與Brembo困局

傳統制動卡鉗市場&#xff0c;正在迎來變革時刻。 一直以來&#xff0c;采埃孚、大陸集團、日立安斯泰莫等外資供應商占據中國乘用車卡鉗前裝市場&#xff08;包括前制動卡鉗和后集成EPB卡鉗&#xff09;的半壁江山。同時&#xff0c;伯特利、亞太股份、萬向、弗迪等中國供應商…

《顛覆傳統:CSS遮罩的圖像創意設計指南》

想象有一塊神奇的模板&#xff0c;上面有各種形狀的鏤空區域&#xff0c;當我們將這塊模板覆蓋在圖像上時&#xff0c;只有透過鏤空區域才能看到圖像的部分&#xff0c;而模板遮擋的地方則被隱藏起來&#xff0c;這便是CSS遮罩的核心概念。遮罩&#xff0c;簡單來說&#xff0c…

5.基于神經網絡的時間序列預測

近年來&#xff0c;已經開發了一些深度學習方法并將其應用于單變量時間預測場景&#xff0c;其中時間序列由在等時間增量上按順序記錄的單個觀測數據組成。 5.1 將深度學習用于時間序列預測的原因 機器學習的目標是提取特征來訓練模型。模型將輸入數據&#xff08;例如圖片&am…

【軟考高級系統架構論文】論軟件設計方法及其應用

論文真題 軟件設計 (Software Design,SD) 根據軟件需求規格說明書設計軟件系統的整體結構、劃分功能模塊、確定每個模塊的實現算法以及程序流程等,形成軟件的具體設計方案。軟件設計把許多事物和問題按不同的層次和角度進行抽象,將問題或事物進行模塊化分解,以便更容易解決…

什么是水平擴展

什么是水平擴展 在現代系統架構設計中&#xff0c;可擴展性&#xff08;Scalability&#xff09;是衡量系統面對業務增長時應對能力的重要指標。而“水平擴展”&#xff08;Horizontal Scaling&#xff09;&#xff0c;又稱為“橫向擴展”或“擴容節點”&#xff0c;正是應對高…

掌握openpyxl:Excel自動化處理全指南

openpyxl基礎用法 openpyxl 是一個用于處理 Excel 文件&#xff08;.xlsx/.xlsm&#xff09;的 Python 庫&#xff0c;支持讀取、修改和創建 Excel 文檔。以下是其常見用法的詳細介紹&#xff1a; 一、基礎操作&#xff1a;打開與保存文件 from openpyxl import load_workbo…

FastGPT:開啟大模型應用新時代(4/6)

摘要&#xff1a;FastGPT是一種基于大語言模型&#xff08;LLM&#xff09;的知識庫問答系統&#xff0c;致力于提供高效、精準的自然語言處理服務。它允許用戶構建本地知識庫以增強AI的理解能力&#xff0c;通過將用戶的問題與知識庫信息匹配推理&#xff0c;生成有針對性的回…

在MyBatis中$和#有什么區別

在 MyBatis 中&#xff0c;${} 和 #{} 是兩種處理 SQL 參數的占位符&#xff0c;它們在實現機制、安全性、使用場景上存在顯著差異。以下是詳細對比&#xff1a; 核心區別對比 特性#{}${}底層機制預編譯占位符&#xff08;PreparedStatement&#xff09;字符串直接替換安全性…

湖北理元理律師事務所債務優化方案:平衡還款與生活的法律實踐

在個人債務問題日益突出的當下&#xff0c;如何科學規劃還款路徑成為社會性難題。湖北理元理律師事務所基于多年實務經驗&#xff0c;提出“可持續債務優化”模型&#xff0c;其核心在于通過法律工具實現三重平衡&#xff1a; 債權債務的法律平衡&#xff1a;嚴格依據《民法典…

使用 Isaac Sim 模擬機器人

前言 將 2D 激光雷達數據從 Isaac Sim 流式傳輸至 ROS 2&#xff0c;并通過 RViz 進行可視化。通過激光雷達數據監控機器人與環境的交互&#xff0c;從而在仿真環境中提升機器人的感知能力。 概覽 歡迎來到 入門指南&#xff1a;在 Isaac Sim 中模擬您的第一個機器人 課程。我…

quartz 表達式最近10次執行時間接口編寫

Nuget安裝 <PackageReference Include"CronExpressionDescriptor" Version"2.41.0" /> <PackageReference Include"CronExpressionDescriptor-zh-CN" Version"2.32.0" /> <PackageReference Include"Quartz"…

解鎖數據寶藏:數據挖掘之數據預處理全解析

目錄 一、引言&#xff1a;數據預處理 —— 數據挖掘的基石二、數據預處理的重要性2.1 現實數據的問題剖析2.2 數據預處理的關鍵作用 三、數據預處理的核心方法3.1 數據清洗3.1.1 缺失值處理3.1.2 離群點處理3.1.3 噪聲處理 3.2 數據集成3.2.1 實體識別3.2.2 冗余處理3.2.3 數據…

React+Taro創建小程序

第一步&#xff1a;首先確認是否安裝Node.js和npm 如果已安裝Node.js和npm,以下可以查詢 node -v npm -v 第二步&#xff1a;安裝Taro CLI npm install -g tarojs/cli 第三步&#xff1a;創建項目 taro init my-react-taro-app 然后可以看到&#xff0c;下圖 第四步&…