ODM পার্টিশন

Android 10-এ Android বিল্ড সিস্টেম ব্যবহার করে odm পার্টিশন তৈরি করার সুবিধা অন্তর্ভুক্ত রয়েছে।

ODM পার্টিশন সম্পর্কে

অরিজিনাল ডিজাইন ম্যানুফ্যাকচারার (ODM) তাদের নির্দিষ্ট ডিভাইসের (তাদের বোর্ড) জন্য সিস্টেম-অন-চিপ (SoC) ভেন্ডর বোর্ড-সাপোর্ট প্যাকেজ (BSP) কাস্টমাইজ করে। এর ফলে বোর্ড-নির্দিষ্ট কম্পোনেন্ট, বোর্ড-নির্দিষ্ট ডেমোন বা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ারে (HAL) নিজস্ব ফিচার প্রয়োগ করতে পারবেন। এছাড়াও, তারা SoC কম্পোনেন্ট রিপ্লেস বা কাস্টমাইজ করতে চাইতে পারেন।

Android-এর আগের ভার্সনে, এই ধরনের কাস্টমাইজেশনের ফলে একই SoC (বা আলাদা SoC থাকলেও একই ফ্যামিলি) সহ ডিভাইসের জন্য একটি ভেন্ডর ইমেজ ব্যবহার করা যেত না। Android 10 ও তার পরবর্তী যেকোনও ভার্সনে, কাস্টমাইজেশনের জন্য আপনি আলাদা odm পার্টিশন ব্যবহার করতে পারবেন, যা আপনাকে একাধিক হার্ডওয়্যার SKU-এর জন্য একটি ভেন্ডর ইমেজ ব্যবহার করতে দেয়।

প্রোডাক্ট ও ODM পার্টিশন ব্যবহার করুন

Android 9-এ product পার্টিশন তৈরি করার সুবিধা যোগ করা হয়েছে, যার ফলে বিভিন্ন product.img ইমেজের মাধ্যমে সরবরাহ করা একাধিক সফ্টওয়্যার SKU-এর জন্য একটি সিস্টেম ইমেজ ব্যবহার করা যায়। product পার্টিশন সফ্টওয়্যার SKU-এর জন্য তৈরি করা হলেও, odm পার্টিশন হার্ডওয়্যার SKU-এর জন্য তৈরি করা হয়েছে।

ডেডিকেটেড প্রোডাক্ট ও ODM পার্টিশনের মাধ্যমে, আপনি system পার্টিশন ব্যবহার করে একাধিক সফ্টওয়্যার SKU-এর মধ্যে শেয়ার করার জন্য জেনেরিক কোড হোস্ট করতে এবং vendor পার্টিশন ব্যবহার করে প্রদত্ত SoC-এর উপর ভিত্তি করে একাধিক ডিভাইসের মধ্যে শেয়ার করার জন্য SoC-নির্দিষ্ট BSP কোড হোস্ট করতে পারবেন।

আলাদা পার্টিশন ব্যবহার করার কিছু অসুবিধা আছে, যেমন ডিস্ক স্পেস ম্যানেজ করা কঠিন (যেমন, আপনাকে ভবিষ্যতের বৃদ্ধির জন্য সীমিত পরিমাণ স্পেস রিজার্ভ করতে হবে)। তবে, Android 10-এ ডায়নামিক পার্টিশন এর সুবিধা থাকার ফলে ডিস্ক সংক্রান্ত সমস্যা দূর হয় এবং ওভার-দ্য-এয়ার (OTA) আপডেটের সময় ডিভাইস আবার পার্টিশন করা সম্ভব হয়।

ODM কম্পোনেন্ট

odm পার্টিশনে নিম্নলিখিত ODM-নির্দিষ্ট কম্পোনেন্ট থাকে (vendor পার্টিশনের মতো), যা নিম্নলিখিত টেবিলে তালিকাভুক্ত করা আছে।

ODM-নির্দিষ্ট কম্পোনেন্ট লোকেশন
লোড করা যায় এমন কার্নেল মডিউল (LKM) /odm/lib/modules/*.ko
নেটিভ লাইব্রেরি /odm/lib[64]
HAL /odm/lib[64]/hw
SEPolicy /odm/etc/selinux
VINTF object data /odm/etc/vintf
init.rc ফাইল /odm/etc/init
সিস্টেম প্রপার্টি /odm/build.prop
রানটাইম রিসোর্স ওভারলে (RRO) /odm/overlay/*.apk
অ্যাপ /odm/app/*.apk
Priv-apps /odm/priv-app/*.apk
জাভা লাইব্রেরি /odm/framework/*.jar
Android ফ্রেমওয়ার্ক সিস্টেম কনফিগারেশন /odm/etc/sysconfig/* ও /odm/etc/permissions/*

কোনও কাস্টম ছবি নেই

কাস্টম ইমেজ ব্যবহার করবেন না, কারণ এতে নিম্নলিখিত বিষয়গুলি কাজ করে না:

  • নির্দিষ্ট টার্গেটে মডিউল ইনস্টল করা। কাস্টম ছবি, ছবিতে আর্টিফ্যাক্ট কপি করার সুবিধা দেয়, কিন্তু বিল্ড রুলের অংশ হিসেবে টার্গেট পার্টিশন উল্লেখ করে নির্দিষ্ট পার্টিশনে মডিউল ইনস্টল করতে পারে না।
  • Soong. custom_images Soong বিল্ড সিস্টেম ব্যবহার করে তৈরি করা যায় না।
  • OTA আপডেট। কাস্টম ছবিগুলি ফ্যাক্টরি ROM ছবি হিসেবে ব্যবহার করা হয়, যা OTA-এর মাধ্যমে আপডেট করা যায় না।

পার্টিশনের মধ্যে ABI বজায় রাখা

odm পার্টিশন হল vendor পার্টিশনের এক্সটেনশন। অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) স্থিতিশীলতা বিবেচনা করার সময়, নিচে উল্লেখ করা আর্কিটেকচার মাথায় রাখুন।

পার্টিশনের মধ্যে ABI বজায় রাখা

ছবি ১. পার্টিশনের মধ্যে ABI বজায় রাখা।

  • odm এবং vendor পার্টিশনের মধ্যে কোনও ABI স্টেবিলিটি নেই। দুটি পার্টিশনকেই একই সময়ে আপগ্রেড করতে হবে।
  • odm এবং vendor পার্টিশন একে অপরের উপর নির্ভর করতে পারে, তবে vendor পার্টিশনকে অবশ্যই odm পার্টিশন ছাড়াই কাজ করতে হবে।
  • odm ও system-এর মধ্যে ABI এবং vendor ও system-এর মধ্যে ABI একই।

product পার্টিশন ও vendor বা odm পার্টিশনের মধ্যে সরাসরি ইন্টার‍্যাকশন অনুমোদিত নয়। (এটি SEpolicy দ্বারা এনফোর্স করা হয়।)

ODM পার্টিশন প্রয়োগ করা

নতুন পার্টিশন প্রয়োগ করার আগে, সম্পর্কিত AOSP পরিবর্তন পর্যালোচনা করুন।

ODM পার্টিশন সেট-আপ করা

odm পার্টিশন সেট-আপ করতে, এইসব বিল্ড ফ্ল্যাগ যোগ করুন:

  • নির্দিষ্ট পার্টিশন সাইজের জন্য BOARD_ODMIMAGE_PARTITION_SIZE
  • PRODUCT_USE_DYNAMIC_PARTITIONS এবং BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE ডায়নামিক পার্টিশন সাইজের জন্য
  • BOARD_ODMIMAGE_FILE_SYSTEM_TYPE ODM ইমেজের জন্য ব্যবহৃত ফাইল সিস্টেমের ধরন
  • /odm/build.prop-এর জন্য PRODUCT_ODM_PROPERTIES, $(call inherit-product path/to/device.mk)-এর মধ্যে ব্যবহার করার জন্য, যেমন PRODUCT_ODM_PROPERTIES += product.abc=ok

ODM পার্টিশনে মডিউল ইনস্টল করা

odm পার্টিশনে মডিউল ইনস্টল করতে এই বিল্ড ফ্ল্যাগ ব্যবহার করুন:

  • Android.bp-এ device_specific: true
  • Android.mk-এ LOCAL_ODM_MODULE := true

'যাচাই করা বুট' চালু করা

ক্ষতিকর সফ্টওয়্যারকে odm পার্টিশন পরিবর্তন করা থেকে আটকাতে, সেইসব পার্টিশনের জন্য Android Verified Boot (AVB) চালু করুন (ঠিক যেভাবে আপনি vendor এবং system পার্টিশনের জন্য করেন)।

AVB চালু করতে, বিল্ড ফ্ল্যাগ BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS যোগ করুন। ডায়নামিক পার্টিশনে AVB কনফিগার করার ব্যাপারে বিস্তারিত জানতে, AVB কনফিগারেশনে পরিবর্তন দেখুন।

/odm-কে অন্য /vendor পার্টিশন হিসেবে গণ্য করা

সিস্টেম যাতে odm পার্টিশনকে vendor পার্টিশন হিসেবে হ্যান্ডেল করে তা নিশ্চিত করতে, হার্ডওয়্যার-ভিত্তিক পার্টিশনের সেট (বর্তমানে odm ও vendor) দিয়ে যেকোনও হার্ড-কোডেড vendor রেফারেন্স পাল্টে দিন। প্ল্যাটফর্মে উল্লেখযোগ্য vendor রেফারেন্স লোকেশনের মধ্যে ডায়নামিক লিঙ্কার, প্যাকেজ ম্যানেজার ও shell/libc অন্তর্ভুক্ত।