EROFS

EROFS היא מערכת קבצים לקריאה בלבד שהוצגה ב-Linux 4.19. הוא תומך בדחיסה ובמניעת כפילות, והוא מותאם לביצועי קריאה.

ההבדל העיקרי בין 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

זה מגדיר את ה"מקבץ" המקסימלי, או גודל הבלוק באורך משתנה, ל-262144 בתים. המספר חייב להיות כפולה של 4096. יש החזרות פוחתות בערכים גבוהים יותר, וערכים גבוהים יותר יכולים להפחית את ביצועי הקריאה בהתאם לחומרת המכשיר.

השבתת דחיסה

כברירת מחדל, ערכת הדחיסה היא lz4hc . כדי לבטל את הדחיסה, השתמש ב:

BOARD_EROFS_COMPRESSOR := none

ניתן לשנות זאת גם על בסיס מחיצה, למשל:

BOARD_SYSTEMIMAGE_EROFS_COMPRESSOR := none

מניעת כפילות

EROFS יכול לשתף בלוקים כפולים עם הדגל הבא:

BOARD_EROFS_SHARE_DUP_BLOCKS := true

החל מ-Android 13, יש להשבית את הדחיסה כדי להשתמש בדגל זה.

השפעה על OTAs

החל מ-Android 13, EROFS נתמך באופן מלא עם Virtual A/B. מחולל החבילות של OTA מסוגל ליצור דלתות על ידי ביטול דחיסה מושכל של זרמי LZ4 בתוך מערכת הקבצים. כל עוד בניית המקור והיעד משתמשים באותה ספריית LZ4, חבילת OTA תהיה דומה בגודלה ל-OTA מבוסס EXT4. גם אם ה-src/dst builds לא משתמשים באותה ספריית lz4, היא אמורה להשפיע רק על גודל OTA.