ওভারভিউ

অ্যান্ড্রয়েড ডিভাইসে বেশ কয়েকটি পার্টিশন রয়েছে যা বুট প্রক্রিয়ায় বিভিন্ন ফাংশন পরিবেশন করে।

স্ট্যান্ডার্ড পার্টিশন

  • boot পার্টিশন। এই পার্টিশনটিতে একটি কার্নেল ইমেজ রয়েছে এবং এটি mkbootimg ব্যবহার করে তৈরি করা হয়েছে। একটি নতুন বুট পার্টিশন ফ্ল্যাশ না করে সরাসরি ছবি ফ্ল্যাশ করতে আপনি ভার্চুয়াল পার্টিশন ব্যবহার করতে পারেন। এই পার্টিশনে Android 13 এর আগে লঞ্চ হওয়া ডিভাইসগুলিতে জেনেরিক রামডিস্কও রয়েছে।

    • কার্নেল ভার্চুয়াল kernel পার্টিশন পুরানো কার্নেল ইমেজের উপরে নতুন কার্নেল ইমেজ লিখে কার্নেল ( zImage , zImage-dtb , Image.gz-dtb ) ওভাররাইট করে। সরবরাহকৃত ডেভেলপমেন্ট কার্নেলটি বেমানান হলে, আপনাকে সংশ্লিষ্ট কার্নেল মডিউলগুলির সাথে vendor , system বা dtb পার্টিশন (যদি উপস্থিত থাকে) আপডেট করতে হতে পারে।

    • রামডিস্ক ভার্চুয়াল ramdisk পার্টিশন পুরানো রামডিস্ক ইমেজের উপরে নতুন রামডিস্ক ইমেজ লিখে রামডিস্ককে ওভাররাইট করে।

    ওভাররাইট অপারেশন eMMC-তে বিদ্যমান চিত্রের শুরুর অবস্থান নির্ধারণ করে এবং সেই অবস্থানে নতুন চিত্রটি অনুলিপি করে। নতুন চিত্র (কার্ণেল বা রামডিস্ক) বিদ্যমান একটি থেকে বড় হতে পারে; স্থান তৈরি করতে, বুটলোডার চিত্র অনুসরণ করে ডেটা স্থানান্তর করতে পারে বা একটি ত্রুটি সহ অপারেশন পরিত্যাগ করতে পারে।

  • init_boot পার্টিশন। এই পার্টিশনে Android 13 এবং তার পরেও চালু হওয়া ডিভাইসগুলির জন্য জেনেরিক রামডিস্ক রয়েছে।

  • system পার্টিশন। এই পার্টিশনে Android ফ্রেমওয়ার্ক রয়েছে।

  • odm পার্টিশন। এই পার্টিশনে সিস্টেম-অন-চিপ (SoC) ভেন্ডর বোর্ড-সাপোর্ট প্যাকেজ (BSPs) এর জন্য অরিজিনাল ডিজাইন ম্যানুফ্যাকচারার (ODM) কাস্টমাইজেশন রয়েছে। এই ধরনের কাস্টমাইজেশনগুলি ODM-গুলিকে SoC উপাদানগুলি প্রতিস্থাপন বা কাস্টমাইজ করতে এবং বোর্ড-নির্দিষ্ট উপাদান, ডেমন, এবং হার্ডওয়্যার বিমূর্তকরণ স্তরগুলিতে (HALs) ওডিএম-নির্দিষ্ট বৈশিষ্ট্যগুলির জন্য কার্নেল মডিউলগুলি প্রয়োগ করতে সক্ষম করে। এই বিভাজন ঐচ্ছিক; সাধারণত, এটি কাস্টমাইজেশন ধারণ করতে ব্যবহৃত হয় যাতে ডিভাইসগুলি একাধিক হার্ডওয়্যার SKU-এর জন্য একটি একক বিক্রেতা চিত্র ব্যবহার করতে পারে। বিস্তারিত জানার জন্য, ODM পার্টিশন দেখুন।

  • odm_dlkm পার্টিশন। এই পার্টিশনটি ODM কার্নেল মডিউল সংরক্ষণের জন্য নিবেদিত। odm_dlkm পার্টিশনে ODM কার্নেল মডিউল সংরক্ষণ করা ( odm পার্টিশনের বিপরীতে) odm পার্টিশন আপডেট না করেও ODM কার্নেল মডিউল আপডেট করা সম্ভব করে।

  • recovery পার্টিশন। এই পার্টিশনটি পুনরুদ্ধারের চিত্র সংরক্ষণ করে, যা OTA প্রক্রিয়া চলাকালীন বুট করা হয়। নিরবিচ্ছিন্ন আপডেট সমর্থনকারী ডিভাইসগুলি পুনরুদ্ধারের চিত্রগুলিকে boot বা init_boot ইমেজে থাকা রামডিস্ক হিসাবে সংরক্ষণ করতে পারে (একটি পৃথক চিত্রের পরিবর্তে)।

  • cache পার্টিশন. এই পার্টিশনটি অস্থায়ী ডেটা সঞ্চয় করে এবং যদি কোনো ডিভাইস বিরামহীন আপডেট ব্যবহার করে তাহলে ঐচ্ছিক। ক্যাশে পার্টিশনটি বুটলোডার থেকে লেখার যোগ্য হতে হবে না, কিন্তু মুছে ফেলার যোগ্য হতে হবে। পার্টিশনের আকার ডিভাইসের ধরন এবং userdata স্থানের প্রাপ্যতার উপর নির্ভর করে; সাধারণত, 50 MB–100 MB যথেষ্ট।

  • misc বিভাজন। এই পার্টিশনটি রিকভারি পার্টিশন দ্বারা ব্যবহৃত হয় এবং এটি 4 KB বা তার চেয়ে বড়।

  • userdata পার্টিশন। এই পার্টিশনে কাস্টমাইজেশন ডেটা সহ ব্যবহারকারী-ইনস্টল করা অ্যাপ এবং ডেটা রয়েছে।

  • metadata পার্টিশন। এই পার্টিশনটি মেটাডেটা এনক্রিপশন কী সংরক্ষণ করতে ব্যবহৃত হয় যখন ডিভাইসটি মেটাডেটা এনক্রিপশন ব্যবহার করে। আকার 16 MB বা বড়। এটি এনক্রিপ্ট করা হয় না এবং এর ডেটা স্ন্যাপশট করা হয় না। ডিভাইস ফ্যাক্টরি রিসেট হলে এটি মুছে ফেলা হয়। এই পার্টিশনের ব্যবহার কঠোরভাবে সীমিত।

  • vendor পার্টিশন। এই পার্টিশনে এমন কোনো বাইনারি রয়েছে যা AOSP-এ বিতরণযোগ্য নয়। ডিভাইসটিতে মালিকানা সংক্রান্ত তথ্য না থাকলে, আপনি এই পার্টিশনটি বাদ দিতে পারেন।

  • vendor_dlkm পার্টিশন। এই পার্টিশনটি ভেন্ডর কার্নেল মডিউল সংরক্ষণের জন্য নিবেদিত। vendor_dlkm পার্টিশনে ভেন্ডর কার্নেল মডিউল সংরক্ষণ করা ( vendor পার্টিশনের বিপরীতে) vendor পার্টিশন আপডেট না করে কার্নেল মডিউল আপডেট করা সম্ভব করে।

  • radio পার্টিশন। এই পার্টিশনটিতে রেডিও ইমেজ রয়েছে এবং শুধুমাত্র সেই ডিভাইসগুলির জন্য প্রয়োজন যা একটি ডেডিকেটেড পার্টিশনে রেডিও-নির্দিষ্ট সফ্টওয়্যার সহ একটি রেডিও অন্তর্ভুক্ত করে।

  • tos পার্টিশন। এই পার্টিশনটি Trusty OS-এর বাইনারি ইমেজ সঞ্চয় করে এবং ডিভাইসটিতে Trusty অন্তর্ভুক্ত থাকলেই ব্যবহার করা হয়। বিস্তারিত জানার জন্য, TOS পার্টিশন দেখুন।

  • pvmfw পার্টিশন। এই পার্টিশনটি প্রোটেক্টেড ভার্চুয়াল মেশিন ফার্মওয়্যার (pvmfw) সঞ্চয় করে যা সুরক্ষিত VM-এ চালানো প্রথম কোড। আরও বিস্তারিত জানার জন্য সুরক্ষিত ভার্চুয়াল মেশিন ফার্মওয়্যার দেখুন।

গতিশীল পার্টিশন

অ্যান্ড্রয়েড 11 এবং উচ্চতর ডিভাইসগুলি গতিশীল পার্টিশনগুলিকে সমর্থন করতে পারে, যা অ্যান্ড্রয়েডের জন্য একটি ইউজারস্পেস পার্টিশনিং সিস্টেম যা ওভার-দ্য-এয়ার (OTA) আপডেটের সময় পার্টিশন তৈরি, আকার পরিবর্তন বা ধ্বংস করতে সক্ষম করে। বিস্তারিত জানার জন্য, ডায়নামিক পার্টিশন দেখুন।

সমালোচনামূলক পার্টিশন নির্ধারণ করা

যদি ডিভাইসটি চালানোর জন্য নির্দিষ্ট পার্টিশন বা ডেটার প্রয়োজন হয়, তাহলে আপনাকে অবশ্যই সেই পার্টিশন/ডেটাগুলিকে সম্পূর্ণরূপে সুরক্ষিত বা পুনরায় ফ্ল্যাশযোগ্য হিসাবে মনোনীত করতে হবে, যার অর্থ তারা একটি fastboot oem কমান্ড ব্যবহার করে পুনঃনির্মাণযোগ্য, সরবরাহ করা বা নিষ্কাশনযোগ্য। এতে প্রতি-ডিভাইস ফ্যাক্টরি-নির্দিষ্ট সেটিংস, সিরিয়াল নম্বর, ক্রমাঙ্কন ডেটা এবং আরও অনেক কিছুর মতো ডেটা অন্তর্ভুক্ত থাকে।

Android 11 এ পরিবর্তন

অ্যান্ড্রয়েড 11 লাইব্রেরির সাথে লিঙ্ক করার বিধিনিষেধ এবং নতুন Soong ইমেজ ভেরিয়েন্ট সহ পার্টিশনে অনেক পরিবর্তন অন্তর্ভুক্ত করে।

অ্যান্ড্রয়েড পার্টিশন লেআউট

চিত্র 1. Android 11-এ পার্টিশন লেআউট

  • একক সিস্টেম ইমেজ (SSI)। একটি নতুন, ধারণাগত চিত্র যা system এবং system_ext চিত্রগুলি ধারণ করে। যখন এই পার্টিশনগুলি লক্ষ্য ডিভাইসের একটি সেটের জন্য সাধারণ, সেই ডিভাইসগুলি SSI শেয়ার করতে পারে এবং system এবং system_ext ইমেজ তৈরি করা এড়িয়ে যেতে পারে।

  • system_ext পার্টিশন। একটি নতুন পার্টিশন যা system সংস্থানগুলি ব্যবহার করতে পারে এবং সিস্টেম মডিউলগুলি অন্তর্ভুক্ত করতে পারে যা:

    • system পার্টিশনে AOSP সিস্টেম মডিউল প্রসারিত করুন। আমরা এই ধরনের মডিউলগুলিকে AOSP-তে আপস্ট্রিম করার পরামর্শ দিই যাতে সেগুলি পরে system পার্টিশনে ইনস্টল করা যায়।

    • বান্ডিল OEM বা SoC-নির্দিষ্ট মডিউল। আমরা এই জাতীয় মডিউলগুলিকে আনবান্ড করার পরামর্শ দিই যাতে সেগুলি product বা vendor পার্টিশনে ইনস্টল করা যায়।

  • system পার্টিশন। OEM পণ্যের জন্য ব্যবহৃত সাধারণ সিস্টেম চিত্র। আমরা system পার্টিশন থেকে মালিকানাধীন মডিউলগুলিকে AOSP-এ আপস্ট্রিম করে অথবা system_ext পার্টিশনে সরানোর পরামর্শ দিই।

  • product বিভাজন। এই পার্টিশনটি এখন পণ্য-নির্দিষ্ট মডিউল ইনস্টল করার জন্য অনুমোদিত ইন্টারফেস ব্যবহার করতে পারে যা অন্য কোনো পার্টিশনের সাথে বান্ডিল করা হয় না।

VNDK পরিবর্তন

ভেন্ডর নেটিভ ডেভেলপমেন্ট কিট (VNDK) হল system পার্টিশনে ইনস্টল করা লাইব্রেরির একটি সেট এবং বিক্রেতাদের জন্য তাদের HALs বাস্তবায়নের জন্য একচেটিয়াভাবে ডিজাইন করা হয়েছে।

  • অ্যান্ড্রয়েড 10 এবং তার চেয়ে কম সময়ে, vendor পার্টিশন system পার্টিশনে ভিএনডিকে লাইব্রেরির সাথে লিঙ্ক করতে পারে, কিন্তু system পার্টিশনের অন্যান্য লাইব্রেরির সাথে লিঙ্ক করতে পারে না। product পার্টিশনের নেটিভ মডিউলগুলি system পার্টিশনের যেকোনো লাইব্রেরির সাথে লিঙ্ক করতে পারে।

  • অ্যান্ড্রয়েড 11 এবং উচ্চতর, product এবং vendor পার্টিশনগুলি system পার্টিশনে VNDK লাইব্রেরির সাথে লিঙ্ক করতে পারে, কিন্তু system পার্টিশনের অন্যান্য লাইব্রেরির সাথে লিঙ্ক করতে পারে না।

Soong পণ্য বৈকল্পিক

Soong বিল্ড সিস্টেম বিল্ড নির্ভরতা বিভক্ত করতে ইমেজ ভেরিয়েন্ট ব্যবহার করে। নেটিভ মডিউল ( /build/soong/cc ) সিস্টেম প্রসেস মডিউলগুলিকে মূল ভেরিয়েন্টে এবং ভেন্ডর প্রসেস মডিউলগুলিকে ভেন্ডর ভেরিয়েন্টে পরিবর্তন করতে পারে; একটি ইমেজ ভেরিয়েন্টের একটি মডিউল অন্য ইমেজ ভেরিয়েন্টের অন্য মডিউলের সাথে লিঙ্ক করতে পারে না।

  • Android 10 বা তার নিচের সংস্করণে, একটি সিস্টেম মডিউল স্বয়ংক্রিয়ভাবে মূল ভেরিয়েন্ট তৈরি করে। এটি vendor_available সংজ্ঞায়িত করে ভেন্ডর ভেরিয়েন্টও তৈরি করতে পারে: এর Android.bp ফাইলগুলিতে vendor_available: true ; এটি বিক্রেতা মডিউলগুলিকে সিস্টেম মডিউলগুলির সাথে লিঙ্ক করতে সক্ষম করে। VNDK লাইব্রেরি, যা system লাইব্রেরির ভেন্ডর ভেরিয়েন্ট, এছাড়াও vendor_available সংজ্ঞায়িত করে ভেন্ডর মডিউলের জন্য ভেন্ডর ভেরিয়েন্ট তৈরি করতে পারে: এর Android.bp ফাইলে vendor_available: true ( উদাহরণ দেখুন)।

  • অ্যান্ড্রয়েড 11-এ, একটি সিস্টেম মডিউল vendor_available: true সংজ্ঞায়িত করে একটি পণ্য ভেরিয়েন্ট (কোর এবং বিক্রেতা ভেরিয়েন্ট ছাড়াও) তৈরি করতে পারে।

  • Android 12 বা উচ্চতর সংস্করণে, vendor_available: true মূল ভেরিয়েন্ট ছাড়াও একটি ভেন্ডর ভেরিয়েন্ট তৈরি করে। একটি পণ্য বৈকল্পিক তৈরি করতে, product_available: true সংজ্ঞায়িত করা আবশ্যক। কিছু VNDK লাইব্রেরি product_available: true পণ্য মডিউলগুলিতে উপলব্ধ নয়।