অ্যান্ড্রয়েড ডিভাইসগুলিতে বেশ কয়েকটি পার্টিশন বা স্টোরেজ স্পেসের নির্দিষ্ট অংশ থাকে, যা ডিভাইসের সফ্টওয়্যারের নির্দিষ্ট অংশ ধারণ করতে ব্যবহৃত হয়। প্রতিটি পার্টিশনে একটি পার্টিশন ইমেজ (একটি IMG ফাইল) বা সেই পার্টিশনের সমস্ত সফ্টওয়্যারের একটি স্ন্যাপশট থাকে। চিত্র ১-এ একটি ডিভাইসে কোর পার্টিশনগুলির বিন্যাস দেখানো হয়েছে:

চিত্র ১. কোর পার্টিশনগুলোর বিন্যাস।
বিভাজনকে তিনটি শ্রেণীতে ভাগ করা হয়:
সিস্টেম পার্টিশন হলো সেইসব পার্টিশন যা অপারেটিং সিস্টেম এবং অন্যান্য ফিচার আপডেট করার সময় আপডেট হয়।
system,bootএবংinit_bootহলো কোর সিস্টেম পার্টিশন।ভেন্ডর পার্টিশনগুলিতে ডিভাইস এবং হার্ডওয়্যার-নির্দিষ্ট কোড থাকে যা প্রাথমিক প্রকাশের পরে আর কখনও আপডেট নাও করা হতে পারে।
vendor,vendor_bootএবংodmপার্টিশনগুলি হলো কোর ভেন্ডর পার্টিশন।নন-আপডেটেবল পার্টিশন হলো সেইসব পার্টিশন, যেগুলোর বিষয়বস্তু হয় আপডেট করা হয় না অথবা ব্যবহারকারীর ডেটা দিয়ে আপডেট করা হয়।
সিস্টেম এবং ভেন্ডর পার্টিশনের কোডগুলো ভেন্ডর ইন্টারফেস (VINTF) নামক একটি স্থিতিশীল ইন্টারফেস ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে পারে।
সিস্টেম পার্টিশন
নিচে সকল সিস্টেম পার্টিশন এবং সেগুলোর ব্যবহারের একটি তালিকা দেওয়া হলো:
bootপার্টিশন। এই পার্টিশনে একটি জেনেরিক কার্নেল ইমেজ (GKI) থাকে। অ্যান্ড্রয়েড ১২ এবং এর নিচের সংস্করণে চালু হওয়া ডিভাইসগুলিতে এই পার্টিশনে জেনেরিক র্যামডিস্কও থাকে। জেনেরিক র্যামডিস্ক সম্পর্কে আরও তথ্যের জন্য, জেনেরিক র্যামডিস্ক ইমেজের বিষয়বস্তু দেখুন।init_bootপার্টিশন (অ্যান্ড্রয়েড ১৩ এবং তার পরবর্তী সংস্করণ)। এই পার্টিশনে একটি জেনেরিক র্যামডিস্ক থাকে। অ্যান্ড্রয়েড ১১ এবং ১২-এ জেনেরিক র্যামডিস্কটিbootপার্টিশনে থাকে।systemপার্টিশন। এই পার্টিশনে OEM প্রোডাক্টের জন্য ব্যবহৃত সিস্টেম ইমেজ থাকে।system_extপার্টিশন। এই পার্টিশনে সিস্টেম রিসোর্স এবং মালিকানাধীন সিস্টেম মডিউল থাকে, যাsystemপার্টিশনে থাকা সাধারণ সিস্টেম ইমেজকে সম্প্রসারিত করে।system_dlkmপার্টিশন। এই পার্টিশনে GKI মডিউলগুলো থাকে। এই পার্টিশন সম্পর্কে আরও তথ্যের জন্য, “একটি GKI মডিউল পার্টিশন বাস্তবায়ন করুন” দেখুন।productপার্টিশন। এই পার্টিশনে প্রোডাক্ট-নির্দিষ্ট মডিউল থাকতে পারে, যেগুলো অন্য কোনো পার্টিশনের সাথে বান্ডল করা থাকে না।pvmfwপার্টিশন। এই পার্টিশনে সুরক্ষিত ভার্চুয়াল মেশিন ফার্মওয়্যার (pvmfw) সংরক্ষিত থাকে, যা সুরক্ষিত ভিএম-গুলোতে চালিত হওয়া প্রথম কোড। আরও তথ্যের জন্য, সুরক্ষিত ভার্চুয়াল মেশিন ফার্মওয়্যার দেখুন।generic_bootloaderপার্টিশন। এই পার্টিশনে জেনেরিক বুটলোডার থাকে।
বিক্রেতা বিভাজন
নিচে সকল ভেন্ডর পার্টিশন এবং তাদের ব্যবহারের একটি তালিকা দেওয়া হলো:
vendor_bootপার্টিশন। এই পার্টিশনে ভেন্ডর-নির্দিষ্ট বুট কোড থাকে। আরও তথ্যের জন্য, ভেন্ডর বুট পার্টিশনসমূহ দেখুন।recoveryপার্টিশন। এই পার্টিশনে রিকভারি ইমেজ সংরক্ষিত থাকে, যা ওভার-দ্য-এয়ার (OTA) আপডেট প্রক্রিয়ার সময় বুট করা হয়। যেসব ডিভাইস সিমলেস আপডেট সমর্থন করে, তারাbootবাinit_bootইমেজের অন্তর্ভুক্ত একটি র্যামডিস্ক হিসেবে রিকভারি ইমেজ সংরক্ষণ করতে পারে। সিমলেস আপডেট সম্পর্কে আরও তথ্যের জন্য, এ/বি (সিমলেস) আপডেট দেখুন।miscপার্টিশন। এই পার্টিশনটি রিকভারি পার্টিশন দ্বারা ব্যবহৃত হয় এবং এর আকার ৪ কিলোবাইট বা তার চেয়ে বড়।vbmetaপার্টিশন। এই পার্টিশনে সমস্ত পার্টিশনের জন্য ভেরিফাইড বুট তথ্য থাকে। এই তথ্য যাচাই করে যে প্রতিটি পার্টিশনে ইনস্টল করা ইমেজগুলো বিশ্বস্ত। ভেরিফাইড বুট সম্পর্কে আরও তথ্যের জন্য, ভেরিফাইড বুট দেখুন।vendorপার্টিশন। এই পার্টিশনে এমন সব বাইনারি থাকে যা কোনো নির্দিষ্ট ভেন্ডরের জন্য তৈরি এবং AOSP-তে বিতরণের জন্য যথেষ্ট জেনেরিক নয়।vendor_dlkmপার্টিশন। এই পার্টিশনে ভেন্ডর কার্নেল মডিউলগুলো থাকে।vendorপার্টিশনের পরিবর্তে এই পার্টিশনে ভেন্ডর কার্নেল মডিউলগুলো সংরক্ষণ করার মাধ্যমে, আপনিvendorপার্টিশন আপডেট না করেই কার্নেল মডিউলগুলো আপডেট করতে পারেন। আরও তথ্যের জন্য, ভেন্ডর এবং ওডিএম ডিকেএলএম পার্টিশনসমূহ দেখুন।odmপার্টিশন। এই পার্টিশনে সিস্টেম-অন-চিপ (SoC) ভেন্ডরের বোর্ড-সাপোর্ট প্যাকেজ (BSP)-এর উপর অরিজিনাল ডিজাইন ম্যানুফ্যাকচারার (ODM) কর্তৃক করা কাস্টমাইজেশনগুলো থাকে। এই ধরনের কাস্টমাইজেশনগুলো ODM-দেরকে SoC কম্পোনেন্ট প্রতিস্থাপন বা কাস্টমাইজ করতে এবং হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ারে (HAL) বোর্ড-নির্দিষ্ট কম্পোনেন্ট, ডেমন ও ODM-নির্দিষ্ট ফিচারের জন্য কার্নেল মডিউল ইমপ্লিমেন্ট করতে সক্ষম করে। এই পার্টিশনটি ঐচ্ছিক। সাধারণত এই পার্টিশনটি কাস্টমাইজেশন ধারণ করার জন্য ব্যবহৃত হয়, যাতে ডিভাইসগুলো একাধিক হার্ডওয়্যার SKU-এর জন্য একটিমাত্র ভেন্ডর ইমেজ ব্যবহার করতে পারে। আরও তথ্যের জন্য, ODM পার্টিশনসমূহ দেখুন।odm_dlkmপার্টিশন। এই পার্টিশনটি ODM কার্নেল মডিউল সংরক্ষণের জন্য ব্যবহৃত হয়।odmপার্টিশনের পরিবর্তে এই পার্টিশনে ODM কার্নেল মডিউল সংরক্ষণ করলে, আপনিodmপার্টিশন আপডেট না করেই ODM কার্নেল মডিউল আপডেট করতে পারবেন। আরও তথ্যের জন্য, ভেন্ডর এবং ODM DKLM পার্টিশনসমূহ দেখুন।radioপার্টিশন। এই পার্টিশনে রেডিও ইমেজ থাকে এবং এটি শুধুমাত্র সেইসব ডিভাইসের জন্য প্রয়োজন, যেগুলিতে একটি ডেডিকেটেড পার্টিশনে রেডিও-নির্দিষ্ট সফ্টওয়্যার সহ একটি রেডিও অন্তর্ভুক্ত থাকে।
অ-আপডেটযোগ্য পার্টিশন
নিচে সমস্ত অ-আপডেটযোগ্য পার্টিশন এবং তাদের ব্যবহারের একটি তালিকা দেওয়া হলো:
cacheপার্টিশন। এই পার্টিশনে অস্থায়ী ডেটা থাকে এবং আপনার ডিভাইস যদি সিমলেস আপডেট ব্যবহার করে, তবে এটি ঐচ্ছিক। এই পার্টিশনটি বুটলোডার থেকে রাইটেবল হওয়ার প্রয়োজন নেই, তবে এটি ইরেজেবল হতে হবে। পার্টিশনের আকার ডিভাইসের ধরন এবংuserdataউপলব্ধ জায়গার উপর নির্ভর করে; সাধারণত, ৫০ থেকে ১০০ মেগাবাইটই যথেষ্ট।userdataপার্টিশন। এই পার্টিশনে ব্যবহারকারীর ইনস্টল করা অ্যাপ এবং ডেটা থাকে, যার মধ্যে কাস্টমাইজেশন ডেটাও অন্তর্ভুক্ত।metadataপার্টিশন। আপনার ডিভাইস যদি মেটাডেটা এনক্রিপশন ব্যবহার করে, তবে এই পার্টিশনে মেটাডেটা এনক্রিপশন কী থাকে। এই পার্টিশনের আকার ১৬ মেগাবাইট বা তার বেশি, এটি এনক্রিপ্ট করা থাকে না এবং এর ডেটার কোনো স্ন্যাপশট নেওয়া হয় না। ডিভাইসটি ফ্যাক্টরি রিসেট করা হলে এই পার্টিশনটি মুছে যায়।
পার্টিশন আপডেটের নিয়ম ও সুপারিশ
আমরা সমস্ত সিস্টেম পার্টিশন একসাথে এবং সমস্ত ভেন্ডর পার্টিশনও একসাথে আপডেট করার পরামর্শ দিই। পার্টিশনগুলোর পুরো সেটটি একসাথে আপডেট করার মাধ্যমে, আপনি পরীক্ষা করে যাচাই করতে পারবেন যে প্রতিটি পার্টিশনের ইমেজগুলোর মধ্যকার ইন্টারফেসগুলো স্থিতিশীল থাকে।
আপনি আপনার পার্টিশনগুলো যেভাবে আপডেট করুন না কেন, নিবিড়ভাবে সংযুক্ত নির্ভরতা এবং স্থিতিশীল API-এর অভাবের কারণে নিম্নলিখিত পার্টিশনগুলো অবশ্যই আপডেট করতে হবে:
-
bootএবংsystem_dlkmপার্টিশন -
init_boot,system,system_extএবংproductপার্টিশনগুলি
ডাইনামিক পার্টিশন
অ্যান্ড্রয়েড ১১ এবং এর পরবর্তী সংস্করণ চালিত ডিভাইসগুলো ডাইনামিক পার্টিশন সমর্থন করতে পারে। এটি অ্যান্ড্রয়েডের একটি ইউজারস্পেস পার্টিশনিং সিস্টেম, যা আপনাকে ওভার-দ্য-এয়ার (OTA) আপডেটের সময় পার্টিশন তৈরি, আকার পরিবর্তন বা ধ্বংস করার সুবিধা দেয়। আরও তথ্যের জন্য, ডাইনামিক পার্টিশন দেখুন।
সুং পণ্যের বিভিন্ন সংস্করণ
সুং বিল্ড সিস্টেম বিল্ড ডিপেন্ডেন্সি ভাগ করার জন্য ইমেজ ভ্যারিয়েন্ট ব্যবহার করে। নেটিভ মডিউল ( /build/soong/cc ) সিস্টেম প্রসেস মডিউলগুলোকে কোর ভ্যারিয়েন্টে এবং ভেন্ডর প্রসেস মডিউলগুলোকে ভেন্ডর ভ্যারিয়েন্টে মিউটেট করতে পারে; একটি ইমেজ ভ্যারিয়েন্টের কোনো মডিউল ভিন্ন ইমেজ ভ্যারিয়েন্টের অন্য মডিউলের সাথে লিঙ্ক করতে পারে না।
অ্যান্ড্রয়েড ১২ বা তার পরবর্তী সংস্করণে, vendor_available: true সহ একটি সিস্টেম মডিউল কোর ভ্যারিয়েন্টের পাশাপাশি একটি ভেন্ডর ভ্যারিয়েন্টও তৈরি করে। একটি প্রোডাক্ট ভ্যারিয়েন্ট তৈরি করতে হলে, product_available: true অবশ্যই সংজ্ঞায়িত থাকতে হবে। product_available: true ছাড়া কিছু VNDK লাইব্রেরি প্রোডাক্ট মডিউলের জন্য উপলব্ধ থাকে না।