এই পৃষ্ঠাটি কভার করে কিভাবে একটি নতুন কার্নেল বৈশিষ্ট্য একটি 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 এবং 15-এর জন্য, রপ্তানির তালিকা আপডেট করুন যাতে এতে
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 এবং 15-এর জন্য,
aarch64জন্যtools/bazel run //common:kernel_aarch64_abi_update_protected_exportsব্যবহার করেcommon/android/abi_gki_protected_exports_{ARCH}এ নতুন যোগ করা মডিউল থেকে অন্তর্ভুক্ত করতে সুরক্ষিত রপ্তানির তালিকা আপডেট করুন।নিশ্চিত করুন যে ধাপ 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 এবং 15-এর জন্য,
tools/bazel run //common:kernel_aarch64_abi_update_protected_exportsব্যবহার করেcommon/android/abi_gki_protected_exports_{ARCH}এ নতুন রূপান্তরিত অরক্ষিত মডিউল থেকে বাদ দেওয়ার জন্য সুরক্ষিত রপ্তানির তালিকা আপডেট করুন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 সংস্করণ ব্যবহার করে এটি সংশোধন করা যেতে পারে, যদি স্বাক্ষরবিহীন মডিউলটি একটি কাস্টম সংস্করণ হয়।