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

অ্যান্ড্রয়েড 11 জেনেরিক কার্নেল ইমেজ এবং বিক্রেতা বুট পার্টিশনের ধারণা উপস্থাপন করে। বিক্রেতা বুট পার্টিশন GKI-এর সাথে সামঞ্জস্যপূর্ণ কার্নেল মডিউল সঞ্চয় করে এবং প্রথম পর্যায়ে init দ্বারা লোড করা হয়। অ্যান্ড্রয়েড 11-এর প্রকাশের পূর্বে কার্নেল মডিউলগুলিও বিক্রেতা এবং ওডিএম পার্টিশনগুলিতে সংরক্ষণ করা হয় এবং বিক্রেতা প্রক্রিয়া দ্বারা লোড করা হয়।

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

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

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

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

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

odm_dlkm বিষয়বস্তু /odm/lib/মডিউলে

  • 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 এর জন্য নিম্নলিখিত এন্ট্রি যোগ করুন। ডিভাইস অনুযায়ী পতাকা পরিবর্তন. উদাহরণ হিসেবে CF-তে CL Add vendor_dlkm ব্যবহার করুন।

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 জন্য নিম্নলিখিত এন্ট্রি যোগ করুন। ডিভাইস অনুযায়ী পতাকা পরিবর্তন. উদাহরণ হিসেবে CF-তে CL Add odm_dlkm ব্যবহার করুন।

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 পার্টিশন ছাড়া ডিভাইসগুলি সরাসরি /vendor/lib/modulesBOARD_VENDOR_KERNEL_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 রয়েছে) তৈরি সংক্রান্ত ডকুমেন্টেশনের জন্য, Kernel Module Support দেখুন।