কার্নেল মডিউল দুই ধরনের আছে: হার্ডওয়্যার অজ্ঞেয়বাদী GKI মডিউল এবং হার্ডওয়্যার-নির্দিষ্ট ভেন্ডর মডিউল । এই পৃষ্ঠাটি উভয় ধরনের মডিউলের একটি ওভারভিউ প্রদান করে।
GKI মডিউল
জেনেরিক কার্নেল ইমেজ (GKI) মডিউলগুলি জেনেরিক কোর কার্নেল থেকে আলাদা ননবুট-প্রয়োজনীয় কার্নেল ক্ষমতা প্রদান করতে ব্যবহৃত হয়। GKI মডিউলগুলির সাহায্যে, আপনি ব্যবহার করার জন্য নির্দিষ্ট কার্নেল ক্ষমতাগুলি বেছে নিতে পারেন, প্রায়শই কার্নেল চিত্রের আকার এবং রানটাইম মেমরি খরচ হ্রাস করে। আকার হ্রাস GKI কে Android Go ডিভাইস এবং অন্যান্য সংস্থান-সীমাবদ্ধ ফর্ম কারণগুলির জন্য উপযুক্ত করে তোলে।
GKI মডিউলগুলি KMI ফ্রিজ মাইলস্টোনের পরে বিক্রেতাদের নতুন আপস্ট্রিম বৈশিষ্ট্যগুলিকে অন্তর্ভুক্ত করার জন্য একটি প্রক্রিয়াও সরবরাহ করে। বিল্ট-ইন কোড অন্য ইমেজ তৈরি না করে প্রতিস্থাপন করা যাবে না, যেখানে একটি মডিউল হিসাবে বিতরণ করা কোড অন্য মডিউল দ্বারা প্রতিস্থাপিত হতে পারে।
GKI মডিউলগুলি চলমান সময়ে GKI এবং অন্যান্য মডিউলগুলির মধ্যে পার্থক্য করতে কার্নেলের বিল্ড টাইম সাইনিং অবকাঠামো ব্যবহার করে। স্বাক্ষরবিহীন মডিউলগুলিকে ততক্ষণ লোড করার অনুমতি দেওয়া হয় যতক্ষণ না তারা শুধুমাত্র অনুমোদিত তালিকায় উপস্থিত প্রতীকগুলি ব্যবহার করে বা অন্য স্বাক্ষরবিহীন মডিউলগুলি দ্বারা সরবরাহ করা হয়৷
দুটি যৌক্তিক ধরনের GKI মডিউল রয়েছে: সুরক্ষিত GKI মডিউল এবং অরক্ষিত GKI মডিউল ।
সুরক্ষিত GKI মডিউল
একটি সুরক্ষিত GKI মডিউল Google দ্বারা বিতরণ করা হয়, এটি কোনোভাবেই সীমাবদ্ধ নয় এবং লোড করার পরে কার্নেলের সাথে তৈরি করা হয় এমন আচরণ করে। উপরন্তু, সুরক্ষিত GKI মডিউলগুলির নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
- সুরক্ষিত GKI মডিউলগুলির অ-KMI কার্নেল চিহ্নগুলিতে অ্যাক্সেস রয়েছে যা বিক্রেতা মডিউল বা অরক্ষিত GKI মডিউলগুলিতে উপলব্ধ নয়৷
- সুরক্ষিত GKI মডিউলগুলি সেই চিহ্নগুলি রপ্তানি করতে পারে যা KMI পৃষ্ঠের অংশ হয়ে ওঠে যতক্ষণ না সেই চিহ্নগুলিকে একটি প্রতীক তালিকায় উদ্ধৃত করা হয়৷
- সুরক্ষিত GKI মডিউল বিক্রেতা মডিউল দ্বারা ওভাররাইড করা যাবে না।
একটি সুরক্ষিত GKI মডিউল হল GKI মডিউলের ডিফল্ট ক্লাস। সমস্ত GKI মডিউল কেএমআই ফ্রিজের সময় সুরক্ষিত বলে মনে করা হয়।
অরক্ষিত GKI মডিউল
একটি অরক্ষিত GKI মডিউল একটি বিক্রেতা মডিউল দ্বারা ওভাররাইড করা যেতে পারে। KMI ফ্রিজ করার পরে, একটি সুরক্ষিত GKI মডিউল অরক্ষিত হিসাবে পুনরায় শ্রেণীবদ্ধ করা হতে পারে যদি GKI টিম সিদ্ধান্ত নেয় যে বিক্রেতাদের একটি সংস্করণের সাথে ডিফল্ট বাস্তবায়নকে ওভাররাইড করতে হবে যাতে আপস্ট্রিম লিনাক্সের নতুন বৈশিষ্ট্যগুলি অন্তর্ভুক্ত থাকে। পরবর্তী GKI রিলিজে, একটি অ্যান্ড্রয়েড কমন কার্নেলে (ACK) আপস্ট্রিম কোড অবতরণ করার পরে অরক্ষিত মডিউলগুলিকে সুরক্ষিত হিসাবে পুনরায় শ্রেণীবদ্ধ করা হয়। অরক্ষিত GKI মডিউলগুলির নিম্নলিখিত বৈশিষ্ট্য রয়েছে:
- অরক্ষিত GKI মডিউলগুলি বিক্রেতা মডিউলগুলির মতো রপ্তানি করা প্রতীকগুলিতে একই অ্যাক্সেস রয়েছে৷
- অরক্ষিত GKI মডিউল সুরক্ষিত GKI মডিউল দ্বারা রপ্তানি করা প্রতীক রপ্তানি করতে পারে না।
- অরক্ষিত GKI মডিউলগুলিকে অবশ্যই যেকোন KMI ইন্টারফেসগুলিকে মূল কার্নেলের অংশ হিসাবে সংরক্ষণ করতে হবে৷
- অরক্ষিত GKI মডিউল বিক্রেতা মডিউল দ্বারা ওভাররাইড করা যেতে পারে।
বিক্রেতা মডিউল
SoC এবং ডিভাইস-নির্দিষ্ট ক্ষমতা বাস্তবায়নের জন্য অংশীদারদের দ্বারা একটি বিক্রেতা মডিউল সরবরাহ করা হয়। যেকোন বিদ্যমান কার্নেল মডিউল যা GKI কার্নেলের অংশ হিসাবে বিতরণ করা হয় না একটি বিক্রেতা মডিউল হিসাবে বিতরণ করা যেতে পারে।
যেহেতু GKI প্রকল্পের প্রাথমিক লক্ষ্যগুলির মধ্যে একটি হল কোর কার্নেলে হার্ডওয়্যার-নির্দিষ্ট কোড ছোট করা, বিক্রেতারা আশা করতে পারেন যে GKI কার্নেলে এমন মডিউল অন্তর্ভুক্ত হবে না যা স্পষ্টভাবে তাদের নিজস্ব হার্ডওয়্যার পরিচালনা করছে। উদাহরণস্বরূপ, বিক্রেতা ABC Inc. আশা করতে পারে যে CONFIG_ABC_SOC_SUPPORT
এর মতো কনফিগারগুলি তাদের সমর্থন ছাড়া অন্তর্নির্মিত বা লোডযোগ্য GKI মডিউল হিসাবে সক্রিয় করা হবে না৷
যদি ACK-এ একটি কার্নেল ড্রাইভার বা ফ্রেমওয়ার্ক বিদ্যমান থাকে, কিন্তু GKI কার্নেলের অংশ হিসাবে বিতরণ করা না হয়, তাহলে বিক্রেতারা ড্রাইভারটিকে সংশোধন করতে পারে এবং এটি একটি বিক্রেতা মডিউল হিসাবে সরবরাহ করতে পারে। এই ধরনের পরিবর্তনগুলি অ-বিক্রেতা-নির্দিষ্ট মডিউলগুলির জন্য নিরুৎসাহিত করা হয় কারণ একই ক্ষমতাগুলি ভবিষ্যতে প্রকাশে GKI কার্নেলের সাথে সরবরাহ করা হতে পারে। যখন GKI কার্নেলে ভেন্ডর মডিউল দ্বারা প্রদত্ত ক্ষমতা থাকে, তখন ভেন্ডর মডিউল লোড হবে না। উদাহরণস্বরূপ, Android 11-এ CONFIG_GREYBUS
GKI-এর জন্য সেট করা নেই, তাই বিক্রেতারা greybus ভেন্ডর মডিউল সরবরাহ করতে পারে। যাইহোক, Android 12-এ CONFIG_GREYBUS
একটি GKI বিল্ট-ইন বা মডিউল হিসাবে সক্ষম হতে পারে, এই ক্ষেত্রে গ্রেবাস বিক্রেতা মডিউলগুলি লোড করা হবে না। একটি সর্বোত্তম অনুশীলন হল অ-বিক্রেতা-নির্দিষ্ট ড্রাইভারের আপস্ট্রিম সংস্করণ ব্যবহার করা যদি সেগুলি বিক্রেতা মডিউল হিসাবে বিতরণ করা হয়।
আপনি vendor
বা vendor_boot
ছবিতে বিক্রেতা মডিউল সরবরাহ করতে পারেন। বুট প্রক্রিয়ার প্রথম দিকে প্রয়োজনীয় মডিউল অবশ্যই vendor_boot
এ থাকতে হবে। vendor_boot
থেকে মডিউল লোড করার সাথে যুক্ত একটি বুট-টাইম খরচ আছে।