EROFS هو نظام ملفات للقراءة فقط تم تقديمه في الإصدار 4.19 من Linux. وهو يتيح الضغط وإزالة تكرار البيانات، كما أنّه محسَّن لتحسين أداء القراءة.
يكمن الاختلاف الأساسي بين EROFS وأنظمة الملفات المضغوطة الأخرى في أنّه يتوافق مع فك الضغط في مكانه. يتم تخزين البيانات المضغوطة في نهاية الوحدات، حتى يمكن فك ضغطها في الصفحة نفسها. في صورة EROFS، أكثر من 99% من الوحدات قادرة على استخدام هذا النظام، وبالتالي القضاء على الحاجة لتخصيص صفحات إضافية أثناء عمليات القراءة.
لا يلزم ضغط صور EROFS. ومع ذلك، عند استخدام ميزة الضغط، يكون حجم الصور أصغر بنسبة %25 في المتوسّط. وعند أعلى مستويات الضغط، يمكن أن يصل حجم الصور إلى 45%
فقد تبيّن أنّ أسلوب EROFS يتفوّق على التنسيقات الأخرى، أنظمة الملفات في أوقات الوصول العشوائية والمتسلسلة.
تغييرات الإصدار
لتفعيل نظام EROFS، استخدِم نوع نظام الملفات erofs
في BoardConfig.mk
.
مثلاً:
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
. للحفاظ على
القدرة على اختبار صور GSI المستندة إلى EXT4، يمكنك استخدام إدخالين في 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، أصبح نظام EROFS متوافقًا بالكامل مع ميزة "التحديث الثنائي الافتراضي". حزمة OTA
بإمكان هذا المنشئ إنشاء دلتا عن طريق فك ضغط LZ4 بطريقة ذكية
التدفقات داخل نظام الملفات. ما دامت كلتا الإصدارتَين المصدر والوجهة تستخدمان
مكتبة LZ4 نفسها، يكون حجم حزمة OTA مشابهًا لحزمة OTA المستندة إلى EXT4. حتى إذا كانت الإصدارات src
أو dst
لا تستخدم مكتبة LZ4
المعروفة نفسها، من المفترض ألا يكون لذلك سوى تأثير بسيط في حجم التحديث عبر الهواء.