EROFS, Linux 4.19'da kullanıma sunulan salt okunur bir dosya sistemidir. Sıkıştırmayı ve 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 sıkıştırma işlemini desteklemesidir. Sıkıştırılmış veriler, aynı sayfada sıkıştırılmadan kullanılabilmesi için blokların sonunda depolanır. EROFS görüntüsünde blokların% 99'undan fazlası bu şemayı kullanabilir. Bu sayede, okuma işlemleri sırasında ek sayfa ayırma ihtiyacı ortadan kalkar.
EROFS resimlerinin sıkıştırılması gerekmez. Ancak sıkıştırma kullanıldığında resimler ortalama% 25 daha küçük olur. En yüksek sıkıştırma seviyelerinde resimler% 45'e varan oranda küçültülebilir.
Sıkıştırma kullanılsa da kullanılmasa da EROFS'un hem rastgele hem de sıralı erişim sürelerinde diğer dosya sistemlerinden daha iyi performans gösterdiği gösterilmiştir.
Derleme değişiklikleri
EROFS'yi etkinleştirmek için BoardConfig.mk
içinde erofs
dosya sistemi türünü kullanın.
Örnek:
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
, gereken tek ekleme seçeneği ise ro
. EXT4 tabanlı GSI görüntülerini test etmeyi sürdürmek amacıyla /system.
için iki fstab girişi kullanabilirsiniz
Örnek:
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ı
EROFS, varsayılan olarak sabit boyutlu bloklar halinde sıkıştırılır. Değişken uzunluktaki bloklar etkinleştirilerek sıkıştırma verimliliği önemli ölçüde artırılabilir. Bu, aşağıdaki işaretle yapılandırılabilir:
BOARD_EROFS_PCLUSTER_SIZE := 262144
Bu, maksimum PCLUSTER
veya değişken uzunluktaki blok boyutunu 262144 bayt olarak ayarlar. Sayı 4096'nın katı olmalıdır. Daha yüksek değerlerde verim azalır ve daha yüksek değerler, cihaz donanımına bağlı olarak okuma performansını düşürebilir.
Sıkıştırmayı devre dışı bırak
Varsayılan sıkıştırma şeması lz4hc
'tür. Sıkıştırmayı devre dışı bırakmak için:
BOARD_EROFS_COMPRESSOR := none
Bu ayar, bölüm bazında da değiştirilebilir. Örneğin:
BOARD_SYSTEMIMAGE_EROFS_COMPRESSOR := none
Tekilleştirme
EROFS, yinelenen blokları aşağıdaki işaretle paylaşabilir:
BOARD_EROFS_SHARE_DUP_BLOCKS := true
Android 13'ten itibaren, bu işareti kullanmak için sıkıştırma devre dışı bırakılmalıdır.
OTA'lar üzerindeki etkisi
Android 13'ten itibaren EROFS, sanal A/B ile tam olarak desteklenir. OTA paketi oluşturucu, dosya sistemindeki LZ4 akışlarını akıllıca sıkıştırarak delta oluşturabilir. Hem kaynak hem de hedef derlemeler aynı LZ4 kitaplığını kullandığı sürece OTA paketinin boyutu EXT4 tabanlı bir OTA ile karşılaştırılabilir. src
veya dst
derlemeleri aynı LZ4 kitaplığını kullanmasa bile bu durum OTA boyutu üzerinde yalnızca küçük bir etkiye sahip olacaktır.