FriendlyCore overlayfs 掛載方式



友善 friendlycore 掛載 overlayfs 過程:

以下是友善 s5p4418 相關開發板的分析;

 

uboot 引導系統啟動的時候加載 ramdisk.img 。 ramdisk.img 是 initrd(虛擬文件系統) 。

  注意: ramdisk.img 是 cpio 文件的 gzip 壓縮文件。 要解壓需要添加 .gz 后綴,否則解壓軟件不認。

 

內核啟動最后運行 initrd 文件系統下的 /init 腳本。

  init 腳本調用 mountroot 方法。    (mountroot 在 /script/local 文件內。)

    mountroot 調用 local_mount_overlay 方法。

      local_mount_overlay 內執行  mount -t overlay.....   掛載 overlayfs。

      此時,emmc 的分區正式被掛載。 ramdisk 被覆蓋。 /script 目錄將不可見。 也就找不到掛載 overlayfs 相關的代碼了。

      系統啟動后是找不到掛載代碼的。

 

overlayfs 介紹

 

FriendlyCore  Emmc 被分為三個分區。 可以通過 sudo fdisk -l 進行查看。

  mmcblk0p1  /boot 分區

  mmcblk0p2  overlay low 分區 只讀

  mmcblk0p3  overlay 工作分區,可讀可寫。

uboot 啟動內核時傳入了 overlay 的工作分區路徑。

如果想查看 overlay 原始使用的分區可以手動掛載 相應分區(掛載為只讀)。

 

根據另外一個朋友折騰了解到:

RAK3399 開發板 uboot  的  bootargs 為空。

  overlayFS 的分區路徑傳入是由 dtb 文件給的。

 

一些指令操作:


起點在 /boot 目錄 的 ramdisk.img
// 掛載真正的boot到目錄下
mount /dev/mmcblk0p1 /boot

// 可以看到文件 /boot/ramdisk.img
// copy出來單獨分析:
cp ramdisk.img ~
cd ~

file ramdisk.img
// 文件格式為 gzip

// 添加.gz后綴。並解壓
mv ramdisk.img ramdisk.img.gz
gunzip ramdisk.img.gz
// 解壓得到 ramdisk.img
file ramdisk.img
// 可以看到文件的真正格式是 cpio

// 解壓
cpio -i -F ramdisk.img

// 得到ramdisk的完整內容。

分析得到:

根目錄下 init 引用 /script/local   並調用 /script/local 文件內 mountroot 方法。
    mountroot() 調用  local_mount_overlay()   mount -t overlay.....



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM