EROFS হলো লিনাক্স ৪.১৯-এ প্রবর্তিত একটি রিড-অনলি ফাইল সিস্টেম। এটি কম্প্রেশন ও ডিডুপ্লিকেশন সমর্থন করে এবং রিড পারফরম্যান্সের জন্য অপ্টিমাইজ করা হয়েছে।
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.
উদাহরণস্বরূপ:
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
অ্যান্ড্রয়েড ১৩ থেকে এই ফ্ল্যাগটি ব্যবহার করতে হলে কম্প্রেশন নিষ্ক্রিয় করতে হবে।
ওটিএ-এর উপর প্রভাব
অ্যান্ড্রয়েড ১৩ থেকে, ভার্চুয়াল এ/বি-এর মাধ্যমে EROFS সম্পূর্ণরূপে সমর্থিত। OTA প্যাকেজ জেনারেটর ফাইল সিস্টেমের মধ্যে থাকা LZ4 স্ট্রিমগুলোকে বুদ্ধিমত্তার সাথে ডিকম্প্রেস করে ডেল্টা তৈরি করতে পারে। যতক্ষণ পর্যন্ত সোর্স এবং টার্গেট উভয় বিল্ড একই LZ4 লাইব্রেরি ব্যবহার করে, ততক্ষণ OTA প্যাকেজটির আকার একটি EXT4-ভিত্তিক OTA-এর সাথে তুলনীয় থাকে। এমনকি যদি src বা dst বিল্ডগুলো একই LZ4 লাইব্রেরি ব্যবহার না-ও করে, তবুও OTA-এর আকারের উপর এর প্রভাব সামান্যই হওয়া উচিত।