সোর্স থেকে লিনাক্স কার্নেল কম্পাইলেশন ও ইনস্টল


Originally posted on : Rashedul Kabir’s Blog

অনেকদিন ধরে ব্লগটায় কোনকিছু লিখা হচ্ছে না। অনেক কিছুই হয়ে গেছে এর মধ্যে। লিখি, লিখব, লিখছি করতে করতে লিখা হয়ে উঠে নাই কোনকিছুই। গত কয়েকদিনে করা কাজগুলোর মধ্যে সবচেয়ে মজার একটা কাজ নিয়ে আজকে লিখতে বসলাম। কাজটি হল সোর্স থেকে লিনাক্স কার্নেল কম্পাইলেশন। অটো আপডেট / আপগ্রেড দিলে সাধারণত কার্নেল আপডেট হয় যেটা আমাদের প্যাকেজ ম্যানেজার করে দেয়। আমরা আজকে সেটা করবো না। আমরা কার্নেল এর সোর্স নামাবো এবং সেটি কম্পাইল করে ইনস্টল করবো।

সামনের ধাপে আগানোর আগে বলে রাখি, আমি যেটি করতে চলেছি এটি খুবই ঝুকিপূর্ন একটি কাজ। স্ট্যাবল সিস্টেমে এটি না করলেই ভাল হয় কারণ এটায় নিজের সিস্টেম নষ্ট হবার ঝুকি আছে। আর আরেকটি কথা হল কম্পাইল হতে অনেক লম্বা সময় লাগবে। মোটামুটি এক ঘন্টা বার তার চাইতেও বেশি সময় লাগতে পারে যেটা আপনার প্রসেসর এর উপর নির্ভর করে। কোর আই থ্রি এর কম প্রসেসর হলে অনেক লম্বা সময় লাগবে। এই পুরোটা সময় ধরেই আপনাকে পাওয়ার ব্যাপআপ নিশ্চিত করতে হবে। মাঝপথে পাওয়ার চলে গেলে ঠিক কি হবে আমি জানি না।

নিজের সিস্টেমের নিরাপত্তার জন্য আমি কাজটি করেছি ভার্চুয়ালবক্সে। বেস সিস্টেম হিসেবে ব্যবহার করেছি এলএমডিই। আসুন ধাপে ধাপে আমরা দেখে নিই কিভাবে সোর্স থেকে কার্নেল কম্পাইল করতে হয়।

প্রথমেই আমরা বেস সিস্টেমে আমাদের দরকারী প্যাকেজগুলো ইনস্টল করে নিবো। এজন্য নিচের কমান্ডগুলো দিন।

apt-get install kernel-package libncurses5-dev fakeroot
apt-get install build-essential udev

এবার আমরা /usr/src ডিরেক্টরিতে নতুন কার্নেলটি নামাবো। প্রথমে আমরা ওই ডিরক্টরিতে যাবো। এজন্য কমান্ড দিন

cd /usr/src

এবার আমরা নতুন কার্নেল ডাউনলোড করবো। এজন্য ব্রাউজারে http://kernel.org ওয়েবসাইটে যান, এবং সেখান থেকে লেটেস্ট কার্নেল এর লিংকটি কপি করে নিন।
এরপরে /usr/src ডিরেক্টরিতে কার্নেলটি ডাউনলোড করে নিন নিচের কমান্ড দিয়ে।

wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-x.x.x.tar.bz2

এরপর ডাউনলোড করা কার্নেলটি এক্সট্রাক্ট করুন।

tar xvfvj linux-x.x.x.tar.bz2

এবার নতুন এক্সট্রাক্ট হওয়া কার্নেল এর ডিরেক্টরিতে যান।

cd /usr/src/linux-x.x.x

এবার আমরা make কমান্ড দেব।

sudo make clean && make mrproper

এখানে make clean এর কাজ হল আগের যদি কোন ফেইলড মেক থেকে থাকে সেটার ফাইলগুলোকে ক্লিন করা। আর make mrproper কমান্ড দিলে এটি আগের যে কোনো .config ফাইলকে ইগনোর করবে এবং একেবারে স্ক্র্যাচ থেকে মেক শুরু করবে।
এবার আমরা কার্নেল কনফিগার করব। এজন্য নিচের কমান্ডটি দিন।

make menuconfig

এই কমান্ডের পর একটি মেনু আসবে। এখানে কম্পাইলেশনের বিভিন্ন অপশন বাছাই করে দেয়া যাবে। কোন কোন ড্রাইভার থাকবে, কোন কোন মডিউল থাকবে বা থাকবে না এসব এখানে সিলেক্ট করা যায়। আপাতত আমরা এইসব অ্যাডভান্সড অপশন এ যাবো না। তবে আপনি যদি চান অতিরিক্ত মডিউলগুলো বাদ দয়ে শুধুমাত্র আপনার সিস্টেমের দরকারী মডিউলগুলো দিয়ে একটি হালকা কার্নেল কম্পাইল করবেন, তাহলে আপনি এখানে চেষ্টা করে দেখতে পারেন। আমাদের সুবিধার জন্য আমরা এই ধাপে এক্সিট দেব।

configuration
পরের ধাপে আমরা ইয়েস সিলেক্ট করে কনফিগারেশনটি সেভ করবো।

save-config

এবার আমরা কার্নেল বিল্ড করব। এই ধাপটিই সবচেয়ে লম্বা। আপনার প্রসেসর আর র্যাম এর উপর নির্ভর করবে এই ধাপে আপনার কত সময় লাগবে।

make-kpkg clean
fakeroot make deb-pkg

deb-pkg
ডেব প্যাকেজ বানানোর ধাপটি অনেক লম্বা। এই কাজের মাঝখানে পাওয়ার চলে গেলে ঝামেলা হতে পারে। তাই যথাযথ প্রস্তুতির সাথে এই ধাপটি করুন।
উপরের ধাপটি শেষ হলে আপনার /usr/src ডিরেক্টরিতে মোট চারটি .deb ফাইল পাবেন।

completeএবার আমরা আমাদের তৈরি করা কার্নেল ইনস্টল করবো। এজন্য /usr/src ডিরেক্টরিতে গিয়ে আপরা প্রথমে কার্নেল হেডার ইনস্টল করবো, এরপরে কার্নেল ইমেজ ইনস্টল করবো।

cd /usr/src
dpkg -i /usr/src/header-xxxxx.deb
dpkg -i /usr/src/image-xxxxx.deb

install-image

ইনস্টল শেষ হলে আমরা গ্রাব আপডেট করে নেব।

sudo update-grub

রিবুট কমান্ড দিয়ে রিবুট করলে আমরা গ্রাব এর লিস্ট এ আমাদের নতুন কার্নেলটি পাবো।grub
এবার নতুন কার্নেলে বুট করুন। ডেস্কটপ আসবে। কার্নেল ভার্শন নিশ্চিৎ ‌হবার জন্য নিচের কমান্ডটি দিন

uname -r

check-version

Advertisements

মন্তব্য করুন

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / পরিবর্তন )

Twitter picture

You are commenting using your Twitter account. Log Out / পরিবর্তন )

Facebook photo

You are commenting using your Facebook account. Log Out / পরিবর্তন )

Google+ photo

You are commenting using your Google+ account. Log Out / পরিবর্তন )

Connecting to %s