27 মার্চ, 2025 থেকে, আমরা AOSP তৈরি করতে এবং অবদান রাখতে aosp-main এর পরিবর্তে android-latest-release ব্যবহার করার পরামর্শ দিচ্ছি। আরও তথ্যের জন্য, AOSP-তে পরিবর্তনগুলি দেখুন।
কার্নেল বৈশিষ্ট্যগুলিকে GKI মডিউল হিসাবে কনফিগার করুন
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
এই পৃষ্ঠাটি কভার করে কিভাবে একটি নতুন কার্নেল বৈশিষ্ট্য একটি 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.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.kosome_kernel_function রপ্তানি করার চেষ্টা করে, যা শুধুমাত্র একটি স্বাক্ষরিত GKI মডিউল দ্বারা রপ্তানি করা যেতে পারে, এই বার্তার সাথে লোডিং ব্যর্থ হয়।
রেজোলিউশন:
some_kernel_function রপ্তানি করে এমন মডিউলের GKI সংস্করণ ব্যবহার করে এটি সংশোধন করা যেতে পারে, যদি স্বাক্ষরবিহীন মডিউলটি একটি কাস্টম সংস্করণ হয়।
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# Configure kernel features as GKI modules\n\nThis page covers how to configure a new kernel feature as a GKI module or\nconfigure an existing built-in kernel feature as a GKI module.\n| **Note:** Changes that result in a new GKI module or that change the protection status of a GKI module must be approved by Google.\n\nConfigure a new feature as a GKI module\n---------------------------------------\n\n1. For the new feature, edit `gki_defconfig` and set the required kernel\n feature's config item from `n` to `m` (`=m`). Set this setting in both\n `arch/arm64/configs/gki_defconfig` and `arch/x86/configs/gki_defconfig`.\n\n2. Add the KO (`.ko`) files generated for the feature\n to the `COMMON_GKI_MODULES_LIST` section of `common/modules.bzl`. Add the\n files in a sorted order. If you're unsure of all the files generated,\n the build fails and lists all the necessary KO files to be added to the list.\n\n3. For Android 14, add the same set of KO files from step 2, sorted in ascending\n order for binary search at runtime, to\n `common/android/gki_{ARCH}_protected_modules` to designate the module as a\n protected GKI module.\n\n4. For Android 14 and 15, update the list of exports so that it includes the\n newly-added exports in `common/android/abi_gki_protected_exports_`\u003cvar translate=\"no\"\u003eARCHITECTURE\u003c/var\u003e. For example, to update the list, run\n `tools/bazel run //common:kernel_aarch64_abi_update_protected_exports` for\n `aarch64`.\n\n5. Make sure newly added KO files from step 2 are copied to the kernel's\n `out/\u003candroidX-Y.Z\u003e/dist/system_dlkm.img` and\n `out/`\u003cvar translate=\"no\"\u003eandroidX-Y.Z\u003c/var\u003e`/dist/system_dlkm_staging_archive.tar.gz`.\n Modules in the `system_dlkm_staging_archive.tar.gz` archive can be used as\n input to generate the `system_dlkm.img` in the platform build.\n\n6. Submit your changes for review. GKI modules are an Android-only kernel\n feature, so module conversion patches aren't required to be submitted\n upstream. However, you must follow other guidelines to submit\n [Android Common Kernel (ACK) patches](/docs/core/architecture/kernel/kernel-code#ack-patches).\n\nConfigure a kernel built-in feature as a GKI module\n---------------------------------------------------\n\n1. For an existing built-in kernel feature, edit `gki_defconfig` and set the\n required kernel feature's config item from `y` to `m` (`=m`). Set this\n setting in both `arch/arm64/configs/gki_defconfig` and\n `arch/x86/configs/gki_defconfig`.\n\n2. Add the KO (`.ko`) files generated for the feature to the\n `COMMON_GKI_MODULES_LIST` section of `common/modules.bzl`. Add the files\n in a sorted order. If you're unsure of all the files generated,\n the build fails and lists all the necessary KO files to be added to the list.\n\n3. For Android 14, add the same set of KO files from step 2, sorted in ascending\n order for binary search at runtime, to\n `common/android/gki_{ARCH}_protected_modules` to designate the module as a\n protected GKI module.\n\n4. For Android 14 and 15, update the list of exports that are protected to\n include ones from the newly added module in\n `common/android/abi_gki_protected_exports_{ARCH}` using `tools/bazel run\n //common:kernel_aarch64_abi_update_protected_exports` for `aarch64`.\n\n5. Make sure newly converted module KO files from step 2 are copied to the\n kernel's `out/\u003candroidX-Y.Z\u003e/dist/system_dlkm.img` and\n `out/`\u003cvar translate=\"no\"\u003eandroidX-Y.Z\u003c/var\u003e`/dist/system_dlkm_staging_archive.tar.gz`.\n Modules in the `system_dlkm_staging_archive.tar.gz` archive can be used as\n input to generate the `system_dlkm.img` in the platform build.\n\n6. Submit your changes for review. GKI modules are an Android-only kernel\n feature, so module conversion patches aren't required to be submitted\n upstream. However, you must follow the other guidelines to submit\n [Android Common Kernel (ACK)\n patches](/docs/core/architecture/kernel/kernel-code#ack-patches).\n\nConvert a protected GKI module to unprotected\n---------------------------------------------\n\n1. For Android 15 and higher, add the module being converted from protected to\n unprotected to the `COMMON_UNPROTECTED_MODULES_LIST` list in\n `common/modules.bzl` file.\n\n2. For Android 14, remove the module being converted from protected to\n unprotected from the list of protected modules at\n `common/android/gki_protected_modules`.\n\n3. For Android 14 and 15, update the list of exports that are protected to\n exclude ones from the newly converted unprotected module in the\n `common/android/abi_gki_protected_exports_{ARCH}` using `tools/bazel run\n //common:kernel_aarch64_abi_update_protected_exports` for `aarch64`.\n\n4. Submit your changes for review. GKI modules are an Android-only kernel\n feature, so module conversion patches aren't required to be submitted\n upstream. However, you must follow the other guidelines to submit\n [Android Common Kernel (ACK)\n patches](/docs/core/architecture/kernel/kernel-code#ack-patches).\n\nGKI modules symbol violation resolution quick guide\n---------------------------------------------------\n\nWhen unsigned modules violate the symbol protection in place for GKI modules,\ntwo types of errors may be encountered during module loading, resulting in\nfailure.\n\n### 1. Unsigned module using the protected symbol\n\n**Error:**\n\n`module: Protected symbol: some_kernel_function (err -13)`\n\n**Cause:**\n\nThe `module.ko` file is an unsigned vendor module and attempts to resolve the\nGKI module exported symbol `some_kernel_function` during loading, without\nbeing listed in the vendor symbol list.\n\n**Resolution:**\n\nIf `module.ko` is not a protected GKI module, updating the symbol list will\nresolve the error by including `some_kernel_function` in the vendor symbol list.\nAlternatively, use the GKI version of `module.ko`.\n\n### 2. Unsigned module exporting the protected symbol\n\n**Error:**\n\n`module: exports protected symbol some_kernel_function`\n\n**Cause:**\n\nThe module exporting the `some_kernel_function` is a protected GKI module, and\n`module.ko` is likely an unsigned custom version of that module. When\n`module.ko` tries to export `some_kernel_function`, which can only be exported\nby a signed GKI module, loading fails with this message.\n\n**Resolution:**\n\nThis can be corrected by using the GKI version of the module that exports\n`some_kernel_function`, if the unsigned module is a custom version."]]