কার্নেল বৈশিষ্ট্যগুলিকে GKI মডিউল হিসাবে কনফিগার করুন

এই পৃষ্ঠাটি কভার করে কিভাবে একটি নতুন কার্নেল বৈশিষ্ট্য একটি GKI মডিউল হিসাবে কনফিগার করা যায় বা একটি বিদ্যমান অন্তর্নির্মিত কার্নেল বৈশিষ্ট্য একটি GKI মডিউল হিসাবে কনফিগার করা যায়৷

একটি GKI মডিউল হিসাবে একটি নতুন বৈশিষ্ট্য কনফিগার করুন

  1. নতুন বৈশিষ্ট্যের জন্য, gki_defconfig সম্পাদনা করুন এবং প্রয়োজনীয় কার্নেল বৈশিষ্ট্যের কনফিগার আইটেমটি n থেকে m ( =m ) এ সেট করুন। arch/arm64/configs/gki_defconfig এবং arch/x86/configs/gki_defconfig উভয় ক্ষেত্রেই এই সেটিং সেট করুন।

  2. common/modules.bzl এর COMMON_GKI_MODULES_LIST বিভাগে বৈশিষ্ট্যটির জন্য তৈরি করা KO ( .ko ) ফাইলগুলি যোগ করুন। একটি সাজানো ক্রমে ফাইল যোগ করুন. আপনি যদি তৈরি করা সমস্ত ফাইল সম্পর্কে অনিশ্চিত হন তবে বিল্ড ব্যর্থ হয় এবং তালিকায় যোগ করার জন্য প্রয়োজনীয় KO ফাইলগুলিকে তালিকাভুক্ত করে।

  3. মডিউলটিকে সুরক্ষিত GKI মডিউল হিসাবে মনোনীত করতে common/android/gki_{ARCH}_protected_modules এ রানটাইমে বাইনারি অনুসন্ধানের জন্য ক্রমবর্ধমান ক্রমে সাজানো, ধাপ 2 থেকে KO ফাইলগুলির একই সেট যোগ করুন। aarch64 এর জন্য tools/bazel run //common:kernel_aarch64_abi_update_protected_exports ব্যবহার করে common/android/abi_gki_protected_exports_{ARCH} এ নতুন যোগ করা মডিউল থেকে অন্তর্ভুক্ত করতে সুরক্ষিত রপ্তানির তালিকা আপডেট করুন। সুরক্ষিত GKI মডিউল হিসাবে মনোনীত মডিউলগুলিকে এখনও অফিসিয়াল সুরক্ষিত মডিউল হতে Google দ্বারা অনুমোদিত হতে হবে।

  4. নিশ্চিত করুন যে ধাপ 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 তৈরি করতে ইনপুট হিসাবে ব্যবহার করা যেতে পারে।

  5. পর্যালোচনার জন্য আপনার পরিবর্তন জমা দিন. GKI মডিউলগুলি একটি Android-শুধু কার্নেল বৈশিষ্ট্য, তাই মডিউল রূপান্তর প্যাচগুলি আপস্ট্রিম জমা দেওয়ার প্রয়োজন নেই৷ যাইহোক, Android কমন কার্নেল (ACK) প্যাচ জমা দিতে আপনাকে অবশ্যই অন্যান্য নির্দেশিকা অনুসরণ করতে হবে।

একটি কার্নেল অন্তর্নির্মিত বৈশিষ্ট্য একটি GKI মডিউল হিসাবে কনফিগার করুন

  1. একটি বিদ্যমান অন্তর্নির্মিত কার্নেল বৈশিষ্ট্যের জন্য, gki_defconfig সম্পাদনা করুন এবং প্রয়োজনীয় কার্নেল বৈশিষ্ট্যের কনফিগার আইটেমটি y থেকে m ( =m ) তে সেট করুন। arch/arm64/configs/gki_defconfig এবং arch/x86/configs/gki_defconfig উভয় ক্ষেত্রেই এই সেটিং সেট করুন।

  2. common/modules.bzl এর COMMON_GKI_MODULES_LIST বিভাগে বৈশিষ্ট্যটির জন্য তৈরি করা KO ( .ko ) ফাইলগুলি যোগ করুন। একটি সাজানো ক্রমে ফাইল যোগ করুন. আপনি যদি তৈরি করা সমস্ত ফাইল সম্পর্কে অনিশ্চিত হন তবে বিল্ড ব্যর্থ হয় এবং তালিকায় যোগ করার জন্য প্রয়োজনীয় KO ফাইলগুলিকে তালিকাভুক্ত করে।

  3. মডিউলটিকে সুরক্ষিত GKI মডিউল হিসাবে মনোনীত করতে common/android/gki_{ARCH}_protected_modules এ রানটাইমে বাইনারি অনুসন্ধানের জন্য ক্রমবর্ধমান ক্রমে সাজানো, ধাপ 2 থেকে KO ফাইলগুলির একই সেট যোগ করুন। aarch64 এর জন্য tools/bazel run //common:kernel_aarch64_abi_update_protected_exports ব্যবহার করে common/android/abi_gki_protected_exports_{ARCH} এ নতুন যোগ করা মডিউল থেকে অন্তর্ভুক্ত করতে সুরক্ষিত রপ্তানির তালিকা আপডেট করুন। সুরক্ষিত GKI মডিউল হিসাবে মনোনীত মডিউলগুলিকে এখনও অফিসিয়াল সুরক্ষিত মডিউল হতে Google দ্বারা অনুমোদিত হতে হবে।

  4. নিশ্চিত করুন যে ধাপ 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 তৈরি করতে ইনপুট হিসাবে ব্যবহার করা যেতে পারে।

  5. পর্যালোচনার জন্য আপনার পরিবর্তন জমা দিন. GKI মডিউলগুলি একটি Android-শুধু কার্নেল বৈশিষ্ট্য, তাই মডিউল রূপান্তর প্যাচগুলি আপস্ট্রিম জমা দেওয়ার প্রয়োজন নেই৷ যাইহোক, অ্যান্ড্রয়েড কমন কার্নেল (ACK) প্যাচ জমা দেওয়ার জন্য আপনাকে অবশ্যই অন্যান্য নির্দেশিকা অনুসরণ করতে হবে।

একটি সুরক্ষিত GKI মডিউলকে অরক্ষিতে রূপান্তর করুন

  1. common/android/gki_protected_modules এ সুরক্ষিত মডিউলের তালিকা থেকে সুরক্ষিত থেকে অরক্ষিতে রূপান্তরিত মডিউলটি সরান।

  2. common/android/abi_gki_protected_exports_{ARCH} -এ tools/bazel run //common:kernel_aarch64_abi_update_protected_exports aarch64 করে নতুন রূপান্তরিত অরক্ষিত মডিউল থেকে বাদ দেওয়ার জন্য সুরক্ষিত রপ্তানির তালিকা আপডেট করুন।

  3. পর্যালোচনার জন্য আপনার পরিবর্তন জমা দিন. 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 সংস্করণ ব্যবহার করে এটি সংশোধন করা যেতে পারে, যদি স্বাক্ষরবিহীন মডিউলটি একটি কাস্টম সংস্করণ হয়।