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
اعتبارًا من الإصدار 13 من Android، يجب إيقاف ميزة الضغط لاستخدام هذا الخيار.
التأثير على المواقع الإلكترونية لحجز الفنادق
اعتبارًا من الإصدار 13 من Android، أصبح نظام EROFS متوافقًا بالكامل مع ميزة "التحديث الثنائي الافتراضي". يمكن لأداة إنشاء حزم OTA
إنشاء بيانات دلالية من خلال فك ضغط مجموعات LZ4
بذكاء داخل نظام الملفات. ما دامت كلتا الإصدارتَين المصدر والوجهة تستخدمان
مكتبة LZ4 نفسها، يكون حجم حزمة OTA مشابهًا لحجم
حزمة OTA المستندة إلى EXT4. حتى إذا كانت الإصدارات src
أو dst
لا تستخدم مكتبة LZ4
المعروفة نفسها، من المفترض ألا يكون لذلك سوى تأثير بسيط في حجم التحديث عبر الهواء.