এই পৃষ্ঠায় জেনেরিক কার্নেল ইমেজ (GKI) প্রজেক্ট এবং কীভাবে এটি Android-এর স্থিতিশীলতা বাড়ায় ও নিরাপত্তা উন্নত করে সেই সম্পর্কে বর্ণনা করা হয়েছে।
ইতিহাস
Android-পরিচালিত প্রতিটি ডিভাইসে প্রোডাকশন কার্নেল থাকতে হবে। GKI-এর আগে, কার্নেলগুলি কাস্টম এবং Android কমন কার্নেল (ACK)-এর উপর ভিত্তি করে তৈরি করা হত, সাথে সিস্টেম অন চিপ (SoC) ভেন্ডর এবং OEM-এর করা ডিভাইস-নির্দিষ্ট পরিবর্তন থাকত।
এই কাস্টমাইজেশনের ফলে কার্নেল কোডের ৫০% পর্যন্ত আউট-অফ-ট্রি কোড হতে পারে এবং আপস্ট্রিম Linux কার্নেল বা ACK থেকে নয়। এই কারণে, GKI-এর আগের কার্নেল কাস্টমাইজ করা হত বলে কার্নেল ফ্র্যাগমেন্টেশন অনেক বেশি হত।
ফ্র্যাগমেন্টেশনের খরচ
Android কমিউনিটির উপর কার্নেল ফ্র্যাগমেন্টেশনের একাধিক নেতিবাচক প্রভাব পড়ে।
নিরাপত্তা আপডেট করার জন্য অনেক পরিশ্রম করতে হয়
Android নিরাপত্তা বুলেটিনে (ASB) উল্লেখ করা নিরাপত্তা প্যাচ প্রতিটি ডিভাইসের কার্নেলে ব্যাকপোর্ট করতে হবে। তবে, কার্নেল ফ্র্যাগমেন্টেশনের কারণে, ফিল্ডে থাকা Android ডিভাইসে নিরাপত্তা সংক্রান্ত সমাধান প্রয়োগ করা অত্যন্ত কঠিন।
লং-টার্ম সাপোর্ট আপডেট মার্জ করা কঠিন
দীর্ঘমেয়াদী কাজ করে (LTS) এমন রিলিজে নিরাপত্তা সংক্রান্ত সমাধান ও অন্যান্য গুরুত্বপূর্ণ সমস্যার সমাধান অন্তর্ভুক্ত থাকে। LTS রিলিজের সাথে আপ-টু-ডেট থাকলে তা নিরাপত্তা সংক্রান্ত সমস্যার সমাধান করার সবচেয়ে কার্যকর উপায় হিসেবে প্রমাণিত হয়েছে। Pixel ডিভাইসে দেখা গেছে যে ASB-তে রিপোর্ট করা কার্নেল নিরাপত্তা সংক্রান্ত সমস্যার ৯০% আপ-টু-ডেট থাকা ডিভাইসের ক্ষেত্রে আগেই সমাধান করা হয়েছে।
তবে, ডিভাইস কার্নেলে করা সমস্ত কাস্টম পরিবর্তনের সাথে, ডিভাইস কার্নেলে শুধু LTS ফিক্স মার্জ করা কঠিন।
Android প্ল্যাটফর্ম রিলিজ আপগ্রেড আটকানো
ফ্র্যাগমেন্টেশনের কারণে নতুন Android ফিচারের জন্য প্রয়োজনীয় কার্নেল পরিবর্তন ফিল্ডে থাকা ডিভাইসে যোগ করা কঠিন হয়ে পড়ে। Android ফ্রেমওয়ার্ক কোডকে বিভিন্ন কার্নেল ভেরিয়েশনকে বিবেচনা করতে হত এবং কার্নেলে নতুন Android ফিচার প্রয়োগ করার উপর নির্ভর করতে পারত না। এর ফলে উদ্ভাবনের গতি কমে যায় এবং কোডের সাইজ ও জটিলতা বৃদ্ধি পায়।
আপস্ট্রিম Linux-এ কার্নেল পরিবর্তন কন্ট্রিবিউট করা কঠিন
প্রোডাকশন কার্নেলে প্যাচ যোগ করার খণ্ডিত পদ্ধতির কারণে, আপস্ট্রিম থেকে LTS রিলিজ উপলভ্য হওয়ার পর থেকে ডিভাইসে সেটি আসার মধ্যে ১৮ মাস পর্যন্ত দেরি হয়ে যায়। আপস্ট্রিম কার্নেল রিলিজ ও প্রোডাক্টের মধ্যে দীর্ঘ সময় ধরে এই বিলম্বের ফলে, Android কমিউনিটির পক্ষে আপস্ট্রিম কার্নেলে প্রয়োজনীয় ফিচার ও ড্রাইভার ফিড করা কঠিন হয়ে যায়। ব্যবহারকারী যখন উন্নতির জন্য সাজেশন জমা দেন, তখন কোডবেস পরিবর্তিত হয়ে যায়, যার ফলে প্যাচের প্রাসঙ্গিকতা দেখানো কঠিন হয়ে পড়ে।
ফ্র্যাগমেন্টেশন সংক্রান্ত সমস্যার সমাধান করা: জেনেরিক কার্নেল ইমেজ
জেনেরিক কার্নেল ইমেজ (GKI) প্রোজেক্ট, মূল কার্নেলকে একত্রিত করে এবং SoC ও বোর্ড সাপোর্টকে মূল কার্নেল থেকে সরিয়ে লোড করা যায় এমন ভেন্ডর মডিউলে স্থানান্তরিত করে কার্নেল ফ্র্যাগমেন্টেশন সমাধান করে। এছাড়াও, GKI ভেন্ডর মডিউলের জন্য একটি স্থিতিশীল Kernel Module Interface (KMI) প্রদান করে, যাতে মডিউল ও কার্নেলকে আলাদাভাবে আপডেট করা যায়। GKI কার্নেলের কিছু বৈশিষ্ট্য হল:
- ACK সোর্স থেকে GKI কার্নেল তৈরি করা হয়।
- GKI কার্নেল হল একটি সিঙ্গেল-কার্নেল বাইনারি এবং এর সাথে যুক্ত লোড করা যায় এমন মডিউল প্রতিটি আর্কিটেকচার, প্রতিটি LTS রিলিজের জন্য।
- GKI কার্নেল, Android প্ল্যাটফর্মের সব রিলিজের সাথে পরীক্ষা করা হয়, যেগুলি সংশ্লিষ্ট ACK-এর জন্য সমর্থিত। GKI কার্নেল ভার্সনের লাইফটাইমের জন্য কোনও ফিচার বন্ধ করা হয় না।
- GKI কার্নেল প্রদত্ত LTS-এর মধ্যে ড্রাইভারদের জন্য একটি স্থিতিশীল KMI প্রকাশ করে।
- GKI কার্নেলে SoC-নির্দিষ্ট বা বোর্ড-নির্দিষ্ট কোড থাকে না।
GKI আর্কিটেকচারের ছবি দেখতে, কার্নেল ওভারভিউ দেখুন।
সাধারণ ছবি
Android 12 থেকে শুরু করে, 5.10 বা তার পরের যেকোনও ভার্সনের কার্নেল সহ ডিভাইস অবশ্যই GKI কার্নেল সহ শিপ করতে হবে। জেনেরিক কার্নেল ইমেজ (GKI) রিলিজ বিল্ড নিয়মিত আপডেট করা হয় এবং LTS ও গুরুত্বপূর্ণ সমস্যার সমাধান সহ নিয়মিত আপডেট করা হয়। KMI-এর জন্য বাইনারি স্থিতিশীলতা বজায় রাখা হয় বলে, আপনি ভেন্ডর ইমেজে কোনও পরিবর্তন না করেই এইসব বুট ইমেজ ইনস্টল করতে পারবেন। GKI প্রোজেক্টের এইসব লক্ষ্য রয়েছে:
- GKI কার্নেল দিয়ে প্রোডাক্ট কার্নেল রিপ্লেস করার সময় পারফর্ম্যান্স বা পাওয়ার রিগ্রেশন উল্লেখযোগ্যভাবে কমাবেন না।
- পার্টনারদের কার্নেল নিরাপত্তা সংক্রান্ত সমস্যার সমাধান এবং ভেন্ডরের অংশগ্রহণ ছাড়াই বাগ ফিক্স করার সুবিধা দিন।
- ডিভাইসের জন্য প্রধান কার্নেল ভার্সন আপগ্রেড করার খরচ কমান।
- আপগ্রেড করার স্পষ্ট প্রসেস সহ kernel ভার্সন আপডেট করার মাধ্যমে প্রতি আর্কিটেকচারে একটি GKI কার্নেল বাইনারি বজায় রাখুন।