এই ডকুমেন্টে অ্যান্ড্রয়েড কার্নেল সম্পর্কিত প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী রয়েছে, যা জেনেরিক কার্নেল ইমেজ (GKI) কার্নেল নামেও পরিচিত। আপনি যদি GKI এবং GKI কার্নেলের পরিভাষার সাথে পরিচিত না হন, তবে কার্নেল ওভারভিউ দেখুন।
একটি স্থিতিশীল কার্নেলে কি কার্নেল মডিউল ইন্টারফেস (KMI) প্রতীক তালিকা পরিবর্তন করা যায়?
যেসব পরিবর্তন বিদ্যমান KMI-কে প্রভাবিত করে না, সেগুলো ফ্রোজেন করা কার্নেলগুলিতে যোগ করা যেতে পারে। এই পরিবর্তনগুলির মধ্যে নতুন এক্সপোর্টেড ফাংশন এবং সিম্বল লিস্ট এন্ট্রি অন্তর্ভুক্ত। বিস্তারিত জানতে, ‘ম্যানেজ সিম্বল লিস্টস’ দেখুন।
আমি কি একটি স্থিতিশীল কার্নেলে ভেন্ডর মডিউল দ্বারা ব্যবহৃত কাঠামো পরিবর্তন করতে পারি?
যেসব স্ট্রাকচার KMI ইন্টারফেসের অংশ, সেগুলো ফ্রোজেন KMI যুক্ত কার্নেলে পরিবর্তন করা যায় না। KMI ফ্রিজ হওয়ার আগে এই স্ট্রাকচারগুলো পরিবর্তন করা যায়।
আমি কি কার্নেল পরিবর্তন করতে পারি, যতক্ষণ পর্যন্ত এতে বাইনারি বা সোর্স কম্প্যাটিবিলিটি নষ্ট না হয়?
যেসব পরিবর্তন KMI-কে প্রভাবিত করে না, সেগুলো অ্যান্ড্রয়েড-নির্দিষ্ট প্যাচগুলিতে বর্ণিত পদ্ধতি অনুযায়ী করা যেতে পারে।
GKI কীভাবে কার্নেল কনফিগারেশন পরিচালনা করে?
কার্নেল কনফিগারেশন সংক্রান্ত তথ্যের জন্য, gki_defconfig-এর পরিবর্তনসমূহ দেখুন।
বিদ্যমান GKI মডিউলগুলিতে ওভাররাইট করার ক্ষেত্রে আপস্ট্রিম বাগ ফিক্সগুলি আমি কীভাবে পরিচালনা করব?
আপনি যদি অ্যান্ড্রয়েড কমন কার্নেল (ACK)- এর কোনো ড্রাইভারের উপর ভিত্তি করে একটি ভেন্ডর মডিউল তৈরি করেন, তবে আপস্ট্রিম এবং ACK থেকে আসা বাগ ফিক্সগুলো যেন আপনার মডিউলে পৌঁছে যায়, তা নিশ্চিত করার দায়িত্ব আপনারই। সাধারণত, কোনো পরিবর্তন ছাড়াই GKI কার্নেল এবং GKI মডিউলগুলো ব্যবহার করাই আপনার জন্য সবচেয়ে ভালো, যাতে গুগল থেকে এই আপডেটগুলো ধারাবাহিকভাবে পাওয়া যায়।
GKI-এর জন্য কি কোনো নির্দিষ্ট পরীক্ষা আছে?
ভেন্ডর টেস্ট স্যুট (VTS) টেস্ট রয়েছে, যা একটি সার্টিফায়েড GKI বিল্ড ইনস্টল করা হয়েছে কিনা তা যাচাই করে এবং প্রতিটি রিলিজের জন্য নির্ধারিত GKI-এর আবশ্যিক শর্তাবলীও কার্যকর করে। উদাহরণস্বরূপ, অ্যান্ড্রয়েড ১২-এর জন্য VTS টেস্ট রয়েছে যা বুট হেডার v3-এর সত্যতা যাচাই করে এবং ৫.১০ কার্নেল চালিত কোনো ডিভাইসে প্রয়োজনীয় পার্টিশনগুলোর অস্তিত্ব নিশ্চিত করে।
ডিভাইস বিল্ডের জন্য প্রোজেক্টের defconfig ফ্র্যাগমেন্ট ফাইলটি কীভাবে তৈরি করব?
অনেক GKI-সম্মত ডিভাইস ভেন্ডর মডিউলগুলো বিল্ড করার জন্য gki_defconfig পাশাপাশি প্রয়োজনীয় কনফিগারেশন অপশনগুলো বর্ণনা করতে একটি কনফিগ ফ্র্যাগমেন্ট ব্যবহার করে। ACK কোডবেসের অন্তর্ভুক্ত উদাহরণগুলোর মধ্যে রয়েছে Cuttlefish এবং DB845c। ফ্র্যাগমেন্টটিকে অপটিমাইজ করার জন্য কনফিগারেশন অপশনগুলোর কিছু ম্যানুয়াল পরীক্ষা এড়ানোর কোনো উপায় নেই, কিন্তু কার্নেল সোর্স থেকে scripts/diffconfig gki_defconfig এবং gki_defconfig+device.fragment এর ফলাফল তুলনা করার জন্য সহায়ক।
modprobe যখন - এবং _ কে সমতুল্য হিসেবে গণ্য করে, তার কি কোনো সমাধান আছে?
modprobe ম্যান পেজে এই বর্ণনাটি রয়েছে: " modprobe বুদ্ধিমত্তার সাথে লিনাক্স কার্নেল থেকে একটি মডিউল যোগ বা অপসারণ করে: উল্লেখ্য যে, সুবিধার জন্য মডিউলের নামে _ এবং - এর মধ্যে কোনো পার্থক্য নেই (স্বয়ংক্রিয়ভাবে আন্ডারস্কোরে রূপান্তর করা হয়)।" GKI টিম আপস্ট্রিমের প্রচলিত নিয়ম মেনে চলে, তাই ভেন্ডর টুল বা মডিউল নামকরণের ক্ষেত্রে এই নিয়মটি অবশ্যই বিবেচনায় রাখতে হবে।
অভ্যন্তরীণ ব্যবহারের জন্য আমি কীভাবে debugfs সক্রিয় করব?
debugfs সক্রিয় করার বিষয়ে বিস্তারিত জানতে, intrusive downstream debug features দেখুন।
একটি নির্দিষ্ট মডিউল কনফিগারেশন সক্রিয় থাকা অবস্থায় GKI কার্নেলের মধ্যে অমিল ABI-গুলো আমি কীভাবে সমাধান করতে পারি?
GKI কার্নেল এবং মডিউল কনফিগারেশনের মধ্যে ABI-এর অমিল একটি অন্তর্নিহিত মডিউল কনফিগারেশন নির্ভরতা নির্দেশ করে, যেখানে একটি মডিউল সক্রিয় করলে চূড়ান্ত কার্নেল ইমেজে একটি বাইনারি কনফিগারেশন বিল্ড হয়ে যায়। পরবর্তী পদক্ষেপ নির্ধারণের জন্য অ্যান্ড্রয়েড কার্নেল টিমের ( kernel-team@android.com ) সাথে যোগাযোগ করুন। সিম্বলের তালিকা নির্ধারিত হয়ে গেলে, ইস্যু ট্র্যাকারে একটি বাগ তৈরি করুন এবং সিম্বল তালিকায় একটি পরিবর্তন আপলোড করুন।