বিক্রেতা এবং ODM DLKM পার্টিশন

অ্যান্ড্রয়েড ১১ জেনেরিক কার্নেল ইমেজ (GKI) এবং ভেন্ডর বুট পার্টিশনের ধারণা প্রবর্তন করেছে। ভেন্ডর বুট পার্টিশনে GKI-এর সাথে সামঞ্জস্যপূর্ণ কার্নেল মডিউলগুলো সংরক্ষিত থাকে এবং এটি ফার্স্ট স্টেজ ইনিট (first stage init) দ্বারা লোড হয়। অ্যান্ড্রয়েড ১১ প্রকাশের আগের কার্নেল মডিউলগুলোও ভেন্ডর এবং ODM পার্টিশনে সংরক্ষিত থাকত এবং সেগুলো ভেন্ডর প্রসেস দ্বারা লোড হতো।

অ্যান্ড্রয়েড ১১ বা তার উচ্চতর সংস্করণের জন্য, কার্নেল এবং সমস্ত কার্নেল মডিউল বাকি পার্টিশনগুলো থেকে স্বাধীনভাবে আপডেট করা যায়। ভেন্ডর পার্টিশনে সংরক্ষিত কার্নেল মডিউলগুলোর আপডেট চালু করতে (ভেন্ডর পার্টিশন আপডেট ছাড়াই), ভেন্ডর পার্টিশনের সমস্ত মডিউলকে Vendor DLKM (ডাইনামিক্যালি লোডেবল কার্নেল মডিউল) নামের একটি নতুন পার্টিশনে সরিয়ে নিন। এরপর আপনি এই পার্টিশনটি স্বাধীনভাবে আপডেট করতে পারবেন। একইভাবে, আপনি ODM পার্টিশনে সংরক্ষিত সমস্ত কার্নেল মডিউলকে ODM DLKM নামের একটি নতুন পার্টিশনে সরিয়ে নিতে পারেন। এই পার্টিশনটিও স্বাধীনভাবে আপডেট করা যায়।

পার্টিশন অবস্থান

vendor_dlkm এবং odm_dlkm পার্টিশনগুলো সুপার পার্টিশনে আরেকটি ডাইনামিক পার্টিশন হিসেবে অবস্থিত।

/vendor/lib/modules-এ vendor_dlkm-এর বিষয়বস্তু

  • ভেন্ডর কার্নেল মডিউল
  • modprobe কনফিগারেশন ফাইল
  • একটি modules.load ফাইল

/odm/lib/modules-এ odm_dlkm-এর বিষয়বস্তু

  • ওডিএম কার্নেল মডিউল
  • modprobe কনফিগারেশন ফাইল
  • একটি modules.load ফাইল

কার্নেল মডিউল কনফিগারেশন ফাইল সম্পর্কে আরও বিস্তারিত জানতে কার্নেল মডিউল সাপোর্ট দেখুন।

সমর্থন গড়ে তুলুন

vendor_dlkm এবং odm_dlkm তৈরি করার প্রক্রিয়াটি অন্যান্য ডাইনামিক পার্টিশন তৈরির মতোই।

vendor_dlkm বিল্ড উদাহরণ

নিম্নলিখিত উদাহরণগুলিতে দেখানো অনুসারে vendor_dlkm তৈরি করুন।

BoardConfig.mk

BOARD_USES_VENDOR_DLKMIMAGE := true
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
BOARD_<GROUP_NAME>_PARTITION_LIST += vendor_dlkm

<GROUP_NAME> জায়গায় আপডেট গ্রুপের উপযুক্ত নামটি বসান। আপডেট গ্রুপটি সেই গ্রুপ হওয়া উচিত, যেটিতে ভেন্ডর পার্টিশনটি অবস্থিত।

A/B এবং ভার্চুয়াল A/B ডিভাইসগুলির জন্য, device.mk

AB_OTA_PARTITIONS += vendor_dlkm

এফস্ট্যাব

fstab-এ vendor_dlkm এর জন্য নিম্নলিখিত এন্ট্রিটি যোগ করুন। ডিভাইস অনুযায়ী ফ্ল্যাগ পরিবর্তন করুন। উদাহরণ হিসেবে CL Add vendor_dlkm to CF ব্যবহার করুন।

vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb

odm_dlkm বিল্ড উদাহরণ

নিম্নলিখিত উদাহরণগুলিতে দেখানো অনুসারে odm_dlkm তৈরি করুন।

BoardConfig.mk

BOARD_USES_ODM_DLKIMAGE := true
BOARD_ODM_DLKIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_ODM_DLKM := odm_dlkm
BOARD_<group_name>_PARTITION_LIST += odm_dlkm

A/B এবং ভার্চুয়াল A/B ডিভাইসগুলির জন্য, device.mk

AB_OTA_PARTITIONS += odm_dlkm

এফস্ট্যাব

fstab-এ odm_dlkm এর জন্য নিম্নলিখিত এন্ট্রিটি যোগ করুন। ডিভাইস অনুযায়ী ফ্ল্যাগ পরিবর্তন করুন। উদাহরণ হিসেবে ' Add odm_dlkm to CF' CL-টি ব্যবহার করুন।

odm_dlkm /odm_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb

কার্নেল মডিউলগুলো একটি পার্টিশনে কপি করুন

vendor_dlkm পার্টিশনে যে কার্নেল মডিউলগুলো কপি করতে চান, সেগুলো নির্বাচন করতে BOARD_VENDOR_KERNEL_MODULES এ তালিকাভুক্ত করুন।

আপনি যদি modules.load এর বিষয়বস্তু পরিবর্তন করতে চান, তাহলে BOARD_VENDOR_KERNEL_MODULES_LOAD এ তা নির্দিষ্ট করে দিতে পারেন।

বিল্ড করার সময়, BOARD_VENDOR_KERNEL_MODULES এ তালিকাভুক্ত মডিউলগুলি $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules এ ইনস্টল করা হয়। /vendor/lib/modules এ একটি সিম্বলিক লিঙ্ক তৈরি করা হয় যা /vendor_dlkm/lib/modules এ নিয়ে যায়।

একইভাবে, odm_dlkm পার্টিশনে যে কার্নেল মডিউলগুলো কপি করতে চান, সেগুলো নির্বাচন করার জন্য BOARD_ODM_KERNEL_MODULES এ তালিকাভুক্ত করুন। প্ল্যাটফর্ম বিল্ড মডিউলগুলোর উপর depmod চালায় এবং depmod এর আউটপুট ফাইলগুলো ইমেজে কপি করে। বিল্ডটি একটি modules.load ফাইল তৈরি করে এবং এটিকে ইমেজে সংরক্ষণ করে। এই ফাইলটিতে BOARD_ODM_KERNEL_MODULES এ তালিকাভুক্ত সমস্ত মডিউল থাকে।

আপনি যদি modules.load এর বিষয়বস্তু পরিবর্তন করতে চান, তাহলে BOARD_ODM_KERNEL_MODULES_LOAD এ তা নির্দিষ্ট করে দিতে পারেন।

বিল্ড করার সময়, BOARD_ODM_KERNEL_MODULES এ তালিকাভুক্ত মডিউলগুলি $ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules এ ইনস্টল করা হয়। /odm/lib/modules এ একটি সিম্বলিক লিঙ্ক তৈরি করা হয় যা /odm_dlkm/lib/modules এ নিয়ে যায়।

ভেন্ডর এবং ওডিএম কার্নেল মডিউলগুলোর জন্য সর্বদা /vendor/lib/modules এবং /odm/lib/modules ব্যবহার করুন।

কখনো /vendor_dlkm/lib/modules ব্যবহার করবেন না। যে ডিভাইসগুলোতে vendor_dlkm পার্টিশন নেই, সেগুলোতে BOARD_VENDOR_KERNEL_MODULES সরাসরি /vendor/lib/modules এ ইনস্টল করা হয়। এটি একটি সমস্যা, কারণ /vendor_dlkm/lib/modules কোনো অস্তিত্ব নেই।

কখনও /odm_dlkm/lib/modules ব্যবহার করবেন না। যেসব ডিভাইসে odm_dlkm পার্টিশন নেই, সেগুলোতে BOARD_ODM_KERNEL_MODULES সরাসরি /odm/lib/modules এ ইনস্টল করা হয়। এটি একটি সমস্যা, কারণ /odm_dlkm/lib/modules কোনো অস্তিত্ব নেই।

পার্টিশন মাউন্টিং এবং মডিউল লোডিং

first_stage_init চলাকালীন, vendor_dlkm এবং odm_dlkm পার্টিশনগুলো যথাক্রমে /vendor_dlkm এবং /odm_dlkm ডিরেক্টরিতে মাউন্ট করা হয়। যখন এটি ঘটে, তখন /vendor/lib/modules এবং /odm/lib/modules এ থাকা সিমলিঙ্কগুলো উপলব্ধ হয়।

এরপর একটি ভেন্ডর প্রসেস (যেমন একটি .rc স্ক্রিপ্ট) modules.load এ নির্দিষ্ট করা ক্রম অনুসারে কার্নেল মডিউলগুলো লোড করতে পারে। প্রয়োজনে, ভেন্ডর প্রসেসটি পরবর্তী সময়েও মডিউলগুলো লোড করতে পারে।

ভেন্ডর-বুট পার্টিশন (যেটিতে ভেন্ডর র‍্যামডিস্ক থাকে) তৈরি সংক্রান্ত ডকুমেন্টেশনের জন্য, কার্নেল মডিউল সাপোর্ট দেখুন।