UBIFS(Unsorted Block Image File System)基於UBI子系统的文件系统,實現文件系统所有基本功能。UBI子系统為基于MTD子系统,在MTD上实现NAND特性的管理逻辑,向上屏蔽NAND的特性。MTD子系統為flash驅動直接操作設備,而MTD在flash驅動之上,呈现统一的操作接口。UBIFS用於大容量固態儲存設備,視為下一代的Jffs2檔案系統。UBIFS結構如下所示
二. UBIFORMAT
ubiformat依照UBI規則對MTD設備進行格式化,也可以根據UBI鏡像內容進行格式化。此應用程序可以在mtd-utils套件中獲得,常用參數如下:
-s, --sub-page-size=<bytes> 指定subpage大小。
-O, --vid-hdr-offset=<offs> 指定VID頭的偏移。不指定情況下,UBI根據是否存在subpage選擇。 如果沒有subpage,則offset為一個page;如果存在subpage,則offset為一個subpage。
-f, --flash-image=<file> 指定輸入的UBI鏡像檔。
-S, --image-size=<bytes> 指定輸入大小。
-e, --erase-counter=<value> 指定UBI EC頭中擦除計數。
-Q, --image-seq=<num> 指定UBI EC頭中image sequence number。
三. mtd-utils編譯流程
- 設置mtd-utils交叉編譯環境。配置方式如下圖,相關環境變數請參考SDK配置。
2. 編譯mtd-utils
3. 取得ubiformat
四. 更新UBI
1. 關閉應用程序
2. 卸載目錄,請先使用mount指令得到相關資訊
3. 更新ubi
Note: 此流程在NT98560 EVB實現,相關流程須根據實際環境進行修改。
Q1. mtd-utils如何更新?
A:可直接去官網下載新版程式碼後進行交叉編譯,目前最新版本為2.2.0。
Q2. ubifs內檔案是否會因為斷電導致檔案消失?
A:不會,但需要確認斷電前將檔案正確關閉避免資料不完整導致開機後無法使用。
Q3. mtd-utils編譯失敗時如何處理?
A:請先根據錯誤訊息確認相依的函示庫皆有編譯並給予對應路徑。
Q4. ubifs如何掛載對應分區表?
A : 先執行ubiattach連結mtd並創建對應ubi設備,再使用mount掛載ubifs。
Q5. 系統如何支援UBI?
A : Linux核心選單切換"Device Drivers" -> "Memory Technology Devices (MTD)" -> "UBI - Unsorted block images"將"Enable UBI"開啟。