EROFS

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

EROFS এবং অন্যান্য সংকুচিত ফাইল সিস্টেমের মধ্যে প্রাথমিক পার্থক্য হল এটি ইন-প্লেস ডিকম্প্রেশন সমর্থন করে। সংকুচিত ডেটা ব্লকের শেষে সংরক্ষণ করা হয়, যাতে এটি একই পৃষ্ঠায় ডিকম্প্রেস করা যায়। একটি EROFS ছবিতে, 99% এরও বেশি ব্লক এই স্কিমটি ব্যবহার করতে সক্ষম, এইভাবে পঠিত ক্রিয়াকলাপের সময় অতিরিক্ত পৃষ্ঠাগুলি বরাদ্দ করার প্রয়োজনীয়তা দূর করে৷

EROFS ছবিগুলিকে সংকুচিত করতে হবে না। কম্প্রেশন ব্যবহার করার সময়, যাইহোক, ছবিগুলি গড়ে প্রায় 25% ছোট হয়। কম্প্রেশনের সর্বোচ্চ স্তরে, ছবিগুলি 45% পর্যন্ত ছোট হতে পারে।

কম্প্রেশন ব্যবহার করুক বা না করুক, 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.

উদাহরণ স্বরূপ:

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 অনুযায়ী, এই পতাকা ব্যবহার করার জন্য কম্প্রেশন অক্ষম করতে হবে।

OTAs এর উপর প্রভাব

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