ubi 文件系統加載失敗原因記錄


  • 嘗試升級 kernel 到 4.4.12版本,然后出現 kernel 加載 ubi 文件系統失敗的現象,現象如下

    [    3.152220] ubi0 error: vtbl_check: too large reserved_pebs 1908, good PEBs 1860
    [    3.160054] ubi0 error: vtbl_check: volume table check failed: record 0, error 9
  • 經過查找,是因為 ubi 文件系統制作過大的原因。

    // 修改制作文件系統的腳本
    //  mkubiimg.sh
    #sudo ./mkfs.ubifs  -q -r rootfs -m 2048 -e 126976 -c 2047 -o  ubifs.img -F
    sudo mkfs.ubifs  -q -r rootfs_release -m 2048 -e 126976 -c 1600 -o  ubifs.img -F

    echo mkfs.ubifs over!
    sudo ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg
    echo ubinize over!

    sync

    sudo cp ubi.img ~/image -rf 

    sudo rm ubifs.img  ubi.img  -rf 
    sync
    echo make file system ok !

    // vim  ubinize.cfg
    [ubifs]
    mode=ubi
    image=ubifs.img
    vol_id=0
    vol_size=200MiB
    vol_type=dynamic
    vol_name=rootfs
    vol_flags=autoresize
    mkfs.ubifs 參數:
     -F:file-system free space has to be fixed up on first mount
     -q:未知
     -r:build file system from directory DIR
     -m:最小輸入輸出大小為2KiB(2048bytes),一般為頁大小
     -e:邏輯可擦除塊大小為124KiB=(每塊的頁數-2)*頁大小=(64-2)*2KiB=124KiB=126976bytes
     -c:最多邏輯可擦除塊數目為1600, 這個值是通過 ubinize.cfg 里面的 vol_size=200MiB算出來的, 200M * 1024 / 128K 算出來的。

    ubinize 參數:
    -o:輸出文件名
    -m:最小輸入輸出大小為2KiB(2048bytes),一般為頁大小 
    -p:物理可擦出塊大小為128KiB=每塊的頁數*頁大小=64*2KiB=128KiB 
    -s:用於UBI頭部信息的最小輸入輸出單元,一般與最小輸入輸出單元(-m參數)大小一樣。


免責聲明!

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



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