EROFS

EROFS, Linux 4.19'da tanıtılan salt okunur bir dosya sistemidir. Sıkıştırmayı ve veri tekilleştirmeyi destekler ve okuma performansı için optimize edilmiştir.

EROFS ile diğer sıkıştırılmış dosya sistemleri arasındaki temel fark, yerinde açmayı desteklemesidir. Sıkıştırılmış veriler blokların sonunda saklanır, böylece aynı sayfaya sıkıştırılabilir. Bir EROFS görüntüsünde blokların %99'undan fazlası bu düzeni kullanabilir, böylece okuma işlemleri sırasında fazladan sayfa ayırma ihtiyacını ortadan kaldırır.

EROFS görüntülerinin sıkıştırılması gerekmez. Ancak sıkıştırma kullanıldığında görüntüler ortalama %25 civarında daha küçüktür. En yüksek sıkıştırma düzeylerinde görüntüler %45'e kadar daha küçük olabilir.

Sıkıştırma kullanılsa da kullanılmasa da, EROFS'nin hem rastgele hem de sıralı erişim sürelerinde diğer dosya sistemlerinden daha iyi performans gösterdiği gösterilmiştir.

Değişiklikleri Oluştur

EROFS'yi etkinleştirmek için BoardConfig.mk dosyasındaki "erofs" dosya sistemi türünü kullanın. Örneğin:

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 Değişiklikleri

fstab türü "erofs"tur ve gereken tek bağlama seçeneği "ro"dur. EXT4 tabanlı GSI görüntülerini test etme yeteneğini korumak için /system.

Örneğin:

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

Sıkıştırma Ayarı

Varsayılan olarak EROFS sabit boyutlu bloklar halinde sıkıştırılır. Değişken uzunlukta bloklar etkinleştirilerek sıkıştırma etkinliği önemli ölçüde artırılabilir. Bu, aşağıdaki bayrakla yapılandırılabilir:

BOARD_EROFS_PCLUSTER_SIZE := 262144

Bu, maksimum "pcluster"ı veya değişken uzunluklu blok boyutunu 262144 bayta ayarlar. Sayı 4096'nın katı olmalıdır. Daha yüksek değerlerde azalan getiriler vardır ve daha yüksek değerler, cihazın donanımına bağlı olarak okuma performansını düşürebilir.

Sıkıştırmayı Devre Dışı Bırakma

Varsayılan olarak sıkıştırma şeması lz4hc . Sıkıştırmayı devre dışı bırakmak için şunu kullanın:

BOARD_EROFS_COMPRESSOR := none

Bu, bölüm bazında da değiştirilebilir, örneğin:

BOARD_SYSTEMIMAGE_EROFS_COMPRESSOR := none

Tekilleştirme

EROFS, yinelenen blokları aşağıdaki bayrakla paylaşabilir:

BOARD_EROFS_SHARE_DUP_BLOCKS := true

Android 13'ten itibaren bu bayrağın kullanılabilmesi için sıkıştırmanın devre dışı bırakılması gerekir.

OTA'lar üzerindeki etkisi

Android 13'ten itibaren EROFS, Virtual A/B ile tamamen desteklenmektedir. OTA paket oluşturucu, dosya sistemi içindeki LZ4 akışlarının sıkıştırmasını akıllıca açarak deltalar oluşturabilir. Hem kaynak hem de hedef yapılar aynı LZ4 kitaplığını kullandığı sürece, OTA paketinin boyutu EXT4 tabanlı bir OTA ile karşılaştırılabilir olacaktır. Src/dst yapıları aynı lz4 kitaplığını kullanmasa bile, bunun OTA boyutu üzerinde yalnızca küçük bir etkisi olacaktır.