এই পৃষ্ঠাটি কভার করে কিভাবে একটি নতুন কার্নেল বৈশিষ্ট্য একটি GKI মডিউল হিসাবে কনফিগার করা যায় বা একটি বিদ্যমান অন্তর্নির্মিত কার্নেল বৈশিষ্ট্য একটি GKI মডিউল হিসাবে কনফিগার করা যায়৷
একটি GKI মডিউল হিসাবে একটি নতুন বৈশিষ্ট্য কনফিগার করুন
নতুন বৈশিষ্ট্যের জন্য,
gki_defconfig
সম্পাদনা করুন এবং প্রয়োজনীয় কার্নেল বৈশিষ্ট্যের কনফিগার আইটেমটিn
থেকেm
(=m
) এ সেট করুন।arch/arm64/configs/gki_defconfig
এবংarch/x86/configs/gki_defconfig
উভয় ক্ষেত্রেই এই সেটিং সেট করুন।common/modules.bzl
এরCOMMON_GKI_MODULES_LIST
বিভাগে বৈশিষ্ট্যটির জন্য তৈরি করা KO (.ko
) ফাইলগুলি যুক্ত করুন। একটি সাজানো ক্রমে ফাইল যোগ করুন. আপনি যদি তৈরি করা সমস্ত ফাইল সম্পর্কে অনিশ্চিত হন তবে বিল্ড ব্যর্থ হয় এবং তালিকায় যোগ করার জন্য প্রয়োজনীয় KO ফাইলগুলিকে তালিকাভুক্ত করে।Android 14-এর জন্য, মডিউলটিকে সুরক্ষিত GKI মডিউল হিসাবে মনোনীত করতে
common/android/gki_{ARCH}_protected_modules
এ রানটাইমে বাইনারি অনুসন্ধানের জন্য ক্রমবর্ধমান ক্রমে সাজানো, ধাপ 2 থেকে KO ফাইলগুলির একই সেট যোগ করুন।Android 14 থেকে 16 এর জন্য, রপ্তানির তালিকা আপডেট করুন যাতে এতে
common/android/abi_gki_protected_exports_ ARCHITECTURE
এ নতুন যোগ করা রপ্তানি অন্তর্ভুক্ত থাকে। উদাহরণস্বরূপ, তালিকা আপডেট করতে,aarch64
এর জন্যtools/bazel run //common:kernel_aarch64_abi_update_protected_exports
চালান।নিশ্চিত করুন যে ধাপ 2 থেকে নতুন যোগ করা KO ফাইলগুলি কার্নেলের
out/<androidX-YZ>/dist/system_dlkm.img
এবংout/ androidX-YZ /dist/system_dlkm_staging_archive.tar.gz
এ কপি করা হয়েছে।system_dlkm_staging_archive.tar.gz
আর্কাইভের মডিউলগুলি প্ল্যাটফর্ম বিল্ডেsystem_dlkm.img
তৈরি করতে ইনপুট হিসাবে ব্যবহার করা যেতে পারে।পর্যালোচনার জন্য আপনার পরিবর্তন জমা দিন. GKI মডিউলগুলি একটি Android-শুধু কার্নেল বৈশিষ্ট্য, তাই মডিউল রূপান্তর প্যাচগুলি আপস্ট্রিম জমা দেওয়ার প্রয়োজন নেই৷ যাইহোক, Android কমন কার্নেল (ACK) প্যাচ জমা দিতে আপনাকে অবশ্যই অন্যান্য নির্দেশিকা অনুসরণ করতে হবে।
একটি কার্নেল অন্তর্নির্মিত বৈশিষ্ট্য একটি GKI মডিউল হিসাবে কনফিগার করুন
একটি বিদ্যমান অন্তর্নির্মিত কার্নেল বৈশিষ্ট্যের জন্য,
gki_defconfig
সম্পাদনা করুন এবং প্রয়োজনীয় কার্নেল বৈশিষ্ট্যের কনফিগার আইটেমটিy
থেকেm
(=m
) তে সেট করুন।arch/arm64/configs/gki_defconfig
এবংarch/x86/configs/gki_defconfig
উভয় ক্ষেত্রেই এই সেটিং সেট করুন।common/modules.bzl
এরCOMMON_GKI_MODULES_LIST
বিভাগে বৈশিষ্ট্যটির জন্য তৈরি করা KO (.ko
) ফাইলগুলি যুক্ত করুন। একটি সাজানো ক্রমে ফাইল যোগ করুন. আপনি যদি তৈরি করা সমস্ত ফাইল সম্পর্কে অনিশ্চিত হন তবে বিল্ড ব্যর্থ হয় এবং তালিকায় যোগ করার জন্য প্রয়োজনীয় KO ফাইলগুলিকে তালিকাভুক্ত করে।Android 14-এর জন্য, মডিউলটিকে সুরক্ষিত GKI মডিউল হিসাবে মনোনীত করতে
common/android/gki_{ARCH}_protected_modules
এ রানটাইমে বাইনারি অনুসন্ধানের জন্য ক্রমবর্ধমান ক্রমে সাজানো, ধাপ 2 থেকে KO ফাইলগুলির একই সেট যোগ করুন।Android 14 থেকে 16 এর জন্য,
tools/bazel run //common:kernel_aarch64_abi_update_protected_exports
ব্যবহার করেcommon/android/abi_gki_protected_exports_{ARCH}
(অথবাcommon/gki/{ARCH}/protected_exports
for Android 16) এ নতুন যোগ করা মডিউল থেকে অন্তর্ভুক্ত করার জন্য সুরক্ষিত রপ্তানির তালিকা আপডেট করুনtools/bazel run //common:kernel_aarch64_abi_update_protected_exports
aarch64
এর জন্য।নিশ্চিত করুন যে ধাপ 2 থেকে নতুন রূপান্তরিত মডিউল KO ফাইলগুলি কার্নেলের
out/<androidX-YZ>/dist/system_dlkm.img
এবংout/ androidX-YZ /dist/system_dlkm_staging_archive.tar.gz
এ কপি করা হয়েছে।system_dlkm_staging_archive.tar.gz
আর্কাইভের মডিউলগুলি প্ল্যাটফর্ম বিল্ডেsystem_dlkm.img
তৈরি করতে ইনপুট হিসাবে ব্যবহার করা যেতে পারে।পর্যালোচনার জন্য আপনার পরিবর্তন জমা দিন. GKI মডিউলগুলি একটি Android-শুধু কার্নেল বৈশিষ্ট্য, তাই মডিউল রূপান্তর প্যাচগুলি আপস্ট্রিম জমা দেওয়ার প্রয়োজন নেই৷ যাইহোক, অ্যান্ড্রয়েড কমন কার্নেল (ACK) প্যাচ জমা দেওয়ার জন্য আপনাকে অবশ্যই অন্যান্য নির্দেশিকা অনুসরণ করতে হবে।
একটি সুরক্ষিত GKI মডিউলকে অরক্ষিতে রূপান্তর করুন
Android 15 এবং উচ্চতর সংস্করণের জন্য,
common/modules.bzl
ফাইলেCOMMON_UNPROTECTED_MODULES_LIST
তালিকায় সুরক্ষিত থেকে অরক্ষিতে রূপান্তরিত মডিউল যোগ করুন।Android 14-এর জন্য,
common/android/gki_protected_modules
এ সুরক্ষিত মডিউলের তালিকা থেকে সুরক্ষিত থেকে অরক্ষিতে রূপান্তরিত মডিউলটি সরিয়ে দিন।Android 14 থেকে 16-এর জন্য, রন টুলস/bazel ব্যবহার করে
common/android/abi_gki_protected_exports_{ARCH}
(বা Android 16-এর জন্যcommon/gki/{ARCH}/protected_exports
) নতুন রূপান্তরিত অরক্ষিত মডিউল থেকে বাদ দেওয়ার জন্য সুরক্ষিত রপ্তানির তালিকাtools/bazel run //common:kernel_aarch64_abi_update_protected_exports
aarch64
এর জন্য।পর্যালোচনার জন্য আপনার পরিবর্তন জমা দিন. GKI মডিউলগুলি একটি Android-শুধু কার্নেল বৈশিষ্ট্য, তাই মডিউল রূপান্তর প্যাচগুলি আপস্ট্রিম জমা দেওয়ার প্রয়োজন নেই৷ যাইহোক, অ্যান্ড্রয়েড কমন কার্নেল (ACK) প্যাচ জমা দেওয়ার জন্য আপনাকে অবশ্যই অন্যান্য নির্দেশিকা অনুসরণ করতে হবে।
GKI মডিউল প্রতীক লঙ্ঘন রেজোলিউশন দ্রুত নির্দেশিকা
যখন স্বাক্ষরবিহীন মডিউলগুলি GKI মডিউলগুলির জন্য প্রতীক সুরক্ষা লঙ্ঘন করে, তখন মডিউল লোড করার সময় দুটি ধরণের ত্রুটির সম্মুখীন হতে পারে, যার ফলে ব্যর্থ হয়৷
1. সংরক্ষিত প্রতীক ব্যবহার করে স্বাক্ষরবিহীন মডিউল
ত্রুটি:
module: Protected symbol: some_kernel_function (err -13)
কারণ:
module.ko
ফাইলটি একটি স্বাক্ষরবিহীন বিক্রেতা মডিউল এবং লোড করার সময় GKI মডিউল রপ্তানিকৃত প্রতীক some_kernel_function
সমাধান করার চেষ্টা করে, বিক্রেতা প্রতীক তালিকায় তালিকাভুক্ত না করে।
রেজোলিউশন:
module.ko
একটি সুরক্ষিত GKI মডিউল না হলে, প্রতীক তালিকা আপডেট করলে বিক্রেতা প্রতীক তালিকায় some_kernel_function
অন্তর্ভুক্ত করে ত্রুটির সমাধান হবে। বিকল্পভাবে, module.ko
এর GKI সংস্করণ ব্যবহার করুন।
2. স্বাক্ষরবিহীন মডিউল সুরক্ষিত প্রতীক রপ্তানি করে
ত্রুটি:
module: exports protected symbol some_kernel_function
কারণ:
some_kernel_function
রপ্তানি করা মডিউলটি একটি সুরক্ষিত GKI মডিউল, এবং module.ko
সম্ভবত সেই মডিউলের একটি স্বাক্ষরবিহীন কাস্টম সংস্করণ। যখন module.ko
some_kernel_function
রপ্তানি করার চেষ্টা করে, যা শুধুমাত্র একটি স্বাক্ষরিত GKI মডিউল দ্বারা রপ্তানি করা যেতে পারে, এই বার্তার সাথে লোডিং ব্যর্থ হয়।
রেজোলিউশন:
some_kernel_function
রপ্তানি করে এমন মডিউলের GKI সংস্করণ ব্যবহার করে এটি সংশোধন করা যেতে পারে, যদি স্বাক্ষরবিহীন মডিউলটি একটি কাস্টম সংস্করণ হয়।