EROFS হল একটি শুধুমাত্র পঠনযোগ্য ফাইল সিস্টেম যা Linux 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 এর একাধিক হতে হবে There উচ্চতর মানগুলিতে হ্রাসকারী রিটার্ন রয়েছে এবং উচ্চতর মানগুলি ডিভাইসের হার্ডওয়্যারের উপর নির্ভর করে পড়ার পারফরম্যান্স হ্রাস করতে পারে।
কম্প্রেশন অক্ষম করুন
ডিফল্টরূপে, কম্প্রেশন স্কিম হল 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 আকারের উপর সামান্য প্রভাব ফেলবে।