EROFS

EROFS 是在 Linux 4.19 中導入的唯讀檔案系統。包括 ,且已針對讀取效能進行最佳化。

EROFS 和其他壓縮檔案系統 的主要差異在於 支援就地解壓縮壓縮後的資料會儲存在最後 ,以使其無法壓縮成同一個網頁。在 EROFS 圖片中 超過 99% 的區塊可使用這項配置,因此 以便在讀取作業期間分配額外的頁面

EROFS 映像檔不必經過壓縮。使用壓縮功能時 圖片平均減少了 25% 左右在最高壓縮層級中 最大可減少 45% 的圖片

不論是否使用壓縮,EROFS 均獲得超過其他 來探索檔案系統的

版本變更

如要啟用 EROFS,請在 BoardConfig.mk 中使用檔案系統類型 erofs。 例如:

BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := erofs
BOARD_SYSTEM_DLKMIMAGE_FILE_SYSTEM_TYPE := erofs

Fstab 變更

fstab 類型為 erofs,所需的唯一掛接選項為 ro。為了保留 測試以 EXT4 為基礎的 GSI 映像檔,您可以使用兩個 fstab 項目 /system.

例如:

system    /system    erofs   ro              wait,slotselect,avb=vbmeta_system,logical,first_stage_mount
system    /system    ext4    ro,barrier=1    wait,slotselect,avb=vbmeta_system,logical,first_stage_mount

壓縮調整

根據預設,EROFS 會壓縮成固定大小的區塊。壓縮效果可能 可變長度區塊大幅提高可用的值包括 已由下列標記設定:

BOARD_EROFS_PCLUSTER_SIZE := 262144

這會將 PCLUSTER 上限 (或可變長度區塊大小) 設為 262144 一個位元組這個數字必須是 4096 的倍數。退貨率會減少 值則較高,而值越高,讀取效能就會因為 裝置硬體

停用壓縮功能

根據預設,壓縮配置為 lz4hc。如要停用壓縮功能,請使用:

BOARD_EROFS_COMPRESSOR := none

您也可以透過個別分區變更此值,例如:

BOARD_SYSTEMIMAGE_EROFS_COMPRESSOR := none

剔除重複資料

EROFS 可以使用下列標記共用重複的區塊:

BOARD_EROFS_SHARE_DUP_BLOCKS := true

自 Android 13 起,必須停用壓縮功能才能使用這個標記。

對網路旅行社的影響

自 Android 13 起,虛擬 A/B 已全面支援 EROFS。OTA 套件 產生器可以巧妙地解壓縮 LZ4 大型串流只要來源和目標版本都使用 與相同的 LZ4 程式庫相比,OTA 套件在大小上與 以 EXT4 為基礎的 OTA。即使 srcdst 版本並未使用相同的 LZ4 但這對 OTA 大小的影響微乎其微。