ভেন্ডর ও ODM DLKM পার্টিশন

Android 11-এ জেনেরিক কার্নেল ইমেজ ও ভেন্ডর বুট পার্টিশনের ধারণা দেওয়া হয়েছে। ভেন্ডর বুট পার্টিশন GKI-এর সাথে মানানসই কার্নেল মডিউল স্টোর করে এবং ফার্স্ট স্টেজ ইনিট দ্বারা লোড করা হয়। Android 11 রিলিজ হওয়ার আগে কার্নেল মডিউলও ভেন্ডর ও ODM পার্টিশনে স্টোর করা হয় এবং ভেন্ডর প্রসেসের মাধ্যমে লোড করা হয়।

Android 11 বা তার পরবর্তী যেকোনও ভার্সনের ক্ষেত্রে, বাকি পার্টিশন থেকে আলাদাভাবে কার্নেল ও সব কার্নেল মডিউল আপডেট করা যেতে পারে। ভেন্ডর পার্টিশনে (ভেন্ডর পার্টিশন আপডেট না করে) স্টোর করা কার্নেল মডিউলের জন্য আপডেট চালু করতে, সব ভেন্ডর পার্টিশন মডিউলকে ভেন্ডর DLKM (ডায়নামিক্যালি লোড করা যায় এমন কার্নেল মডিউল) নামক নতুন পার্টিশনে সরান। তারপরে আপনি এই পার্টিশনটি আলাদাভাবে আপডেট করতে পারবেন। একইভাবে, আপনি ODM পার্টিশনে সেভ করা সমস্ত কার্নেল মডিউলকে ODM DLKM নামের নতুন পার্টিশনে সরাতে পারবেন। এই পার্টিশনটি স্বতন্ত্রভাবেও আপডেট করা যেতে পারে।

পার্টিশন লোকেশন

vendor_dlkm ও odm_dlkm পার্টিশন সুপার পার্টিশনে অন্য ডায়নামিক পার্টিশন হিসেবে থাকে।

/vendor/lib/modules-এ vendor_dlkm কন্টেন্ট

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

/odm/lib/modules-এ odm_dlkm কন্টেন্ট

  • ODM কার্নেল মডিউল
  • 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

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

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

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-এর দিকে নিয়ে যাওয়া একটি সিম্বলিক লিঙ্ক তৈরি করা হয়।

ভেন্ডর ও ODM কার্নেল মডিউলের জন্য সবসময় /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-এ নির্দিষ্ট করা অর্ডার অনুযায়ী কার্নেল মডিউল লোড করতে পারে। প্রয়োজন হলে, ভেন্ডর প্রসেস পরে মডিউল লোড করতে পারে।

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