অ্যান্ড্রয়েড 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/modules
এ BOARD_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 দেখুন।