EROFS

EROFS হল একটি কেবল-পঠনযোগ্য ফাইল সিস্টেম যা Linux 4.19-এ চালু করা হয়েছে। এটি কম্প্রেশন ও ডুপ্লিকেট ডেটা সরানো সমর্থন করে এবং রিড পারফর্ম্যান্সের জন্য অপ্টিমাইজ করা হয়।

EROFS এবং অন্যান্য কম্প্রেস করা ফাইল সিস্টেমের মধ্যে প্রাথমিক পার্থক্য হল যে এটি ইন-প্লেস ডিকম্প্রেশন সাপোর্ট করে। কম্প্রেস করা ডেটা ব্লকের শেষে স্টোর করা হয়, যাতে একই পৃষ্ঠায় এটি আনকম্প্রেস করা যায়। EROFS ছবিতে, ৯৯%-এর বেশি ব্লক এই স্কিম ব্যবহার করতে পারে, তাই রিড অপারেশন চলাকালীন অতিরিক্ত পৃষ্ঠা অ্যালোকেট করার প্রয়োজন হয় না।

EROFS ছবি কম্প্রেস করার প্রয়োজন নেই। তবে, কম্প্রেশন ব্যবহার করলে, ছবিগুলি গড়ে ২৫% ছোট হয়। সবচেয়ে বেশি কম্প্রেশন লেভেলে, ছবি ৪৫% পর্যন্ত ছোট হতে পারে।

কম্প্রেশন ব্যবহার করা হোক বা না হোক, র‍্যান্ডম ও সিকোয়েন্সিয়াল অ্যাক্সেস টাইম, উভয় ক্ষেত্রেই EROFS অন্যান্য ফাইল সিস্টেমের চেয়ে ভাল পারফর্ম করে বলে দেখা গেছে।

পরিবর্তনগুলি তৈরি করুন

EROFS চালু করতে, BoardConfig.mk-এ erofs ফাইল সিস্টেমের ধরন ব্যবহার করুন। যেমন:

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। EXT4-ভিত্তিক GSI ইমেজ পরীক্ষা করার ক্ষমতা বজায় রাখতে, আপনি /system.-এর জন্য দুটি fstab এন্ট্রি ব্যবহার করতে পারেন

যেমন:

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 বা পরিবর্তনযোগ্য দৈর্ঘ্যের ব্লক সাইজকে ২৬২১৪৪ বাইট হিসেবে সেট করে। সংখ্যাটি অবশ্যই ৪০৯৬-এর গুণিতক হতে হবে। আরও বেশি ভ্যালুর ক্ষেত্রে রিটার্ন কমে যায় এবং ডিভাইসের হার্ডওয়্যারের উপর নির্ভর করে আরও বেশি ভ্যালু রিড পারফর্ম্যান্স কমিয়ে দিতে পারে।

কম্প্রেশন বন্ধ করুন

ডিফল্ট হিসেবে, কম্প্রেস করার স্কিম হল lz4hc। কম্প্রেসন বন্ধ করতে, এটি ব্যবহার করুন:

BOARD_EROFS_COMPRESSOR := none

এটি প্রতিটি পার্টিশনের ভিত্তিতেও পরিবর্তন করা যেতে পারে, যেমন:

BOARD_SYSTEMIMAGE_EROFS_COMPRESSOR := none

ডুপ্লিকেট ডেটা সরানো

EROFS নিম্নলিখিত ফ্ল্যাগ সহ ডুপ্লিকেট ব্লক শেয়ার করতে পারে:

BOARD_EROFS_SHARE_DUP_BLOCKS := true

Android 13 ভার্সন অনুযায়ী, এই ফ্ল্যাগ ব্যবহার করতে হলে কম্প্রেশন বন্ধ করতে হবে।

OTA-র উপর প্রভাব

Android 13 ভার্সন থেকে, ভার্চুয়াল A/B-এর সাথে EROFS সম্পূর্ণভাবে কাজ করে। OTA প্যাকেজ জেনারেটর, ফাইল সিস্টেমের মধ্যে থাকা LZ4 স্ট্রিমকে বুদ্ধিদীপ্তভাবে ডিকম্প্রেস করার মাধ্যমে ডেল্টা জেনারেট করতে পারে। সোর্স ও টার্গেট বিল্ডে একই LZ4 লাইব্রেরি ব্যবহার করা হলে, OTA প্যাকেজের সাইজ EXT4-ভিত্তিক OTA-এর সমান হবে। এমনকি src বা dst বিল্ড একই LZ4 লাইব্রেরি ব্যবহার না করলেও, OTA সাইজের উপর এর প্রভাব খুব সামান্যই হবে।