آموزش کامپایل کرنل در Centos 7

هر نسخه از سیستم عامل‌های گنو/لینوکسی با یه کرنل (kernel) پیشفرض میاد بیرون. توی نسخه‌های مبتنی بر ردهت، شماره کرنل تغییر نمیکنه و فقط شماره پچ بیرون میاد. بنا براین ممکنه شما توی سیستمتون ببینید نسخه کرنل ۳ هست ولی پچ‌های کرنل نسخه ۴ رو داره.

کامپایل کرنل ممکنه توی هر سیستم عاملی ریزه کاریای خودشو داشته باشه که اینجا من کامپایل توی centos 7 رو بررسی میکنم.

با زدن دستور uname -r میتونید ببینید کدوم نسخه از کرنل روی سیستم شما نصبه:

دانلود کرنل

   آخرین نسخه کرنلو میتونید از سایت https://www.kernel.org/  دانلود کنید.

حالا با دستور زیر کرنل رو extract میکنیم:

tar -xJvf linux-4.19.7.tar.xz

توی اینجا من دارم از نسخه ۴٫۱۹٫۷ استفاده میکنم.

حالا با استفاده از دستور زیر وارد دایرکتوری که کرنل داخلشه میشم:

cd linux-4.19.7

دانلود نیازمندی‌ها

با دستور زیر پکیج‌های مورد نیاز رو نصب کنید:

sudo yum groupinstall "Developement tools"
sudo yum install -y elfutils-libelf-devel hmaccalc-devel zlib-devel binutils-devel openssl-devel

کامپایل کرنل

خب حالا لازمه که یه کانفیگوریشن انجام بدیم و مشخص کنیم که کدوم ماژول‌ها رو از کرنل میخوایم و کدومارو نمیخوایم. برای این کار دوتا روش وجود داره، 

  • استفاده از رابط تحت خط فرمان: برای این کار لازمه که پکیج ncurses-devel   رو دانلود کنید.
  • استفاده از رابط گرافیکی: برای این کار لازمه که پکیج qt-devel  رو دانلود کنید.  

من چون رابط کاربری روی سیستم عاملم ندارم نسخه خط فرمان رو دانلود میکنم:

sudo yum install -y ncurses-devel

خب حالا توی همون دایروکتوری کرنل با زدن دستور sudo make menuconfig رابط خط فرمان برای انجام تنظیمات رو اجرا میکنم: 

نکته۱:  اگه از رابط گرافیکی استفاده میکنید باید دستور sudo make xconfig  رو بزنید.

نکته۲: اگه میخواید که ببینید کرنلی که العان دارید چه تنظیماتی داشته با زدن دستور sudo make oldconfig  میتونید اون فایل رو تولید کنید.

  من اینجا ماژولی کم یا زیاد نمیکنم و با زدن دکمه Tab روی کیبرد فایل رو ذخیره میکنم و بعدشم از برنامه خارج میشم.

حالا با زدن دستور  sudo make bzImage ایمیج کرنل رو میسازیم .

اگه دستور بدون ارور انجام بشه یه همچین خروجی میبینید:

حالا با زدن دستور sudo make modules  ماژول‌ها رو کامپایل میکنیم.

اگه همه بدون مشکل کامپایل بشن باید یه همچین خروجی ببینید:

حالا دستورات زیر رو به ترتیب بزنید:

sudo make modules_install
sudo make install

حالا تعداد زیادی object file تولید شده که دیگه نیازی بهشون نیست. برای همین با استفاده از دستور زیر میتونید اونارو پاک کنید تا فضای هاردتونم خالی بشه:

sudo make clean

حالا اگه سیستم رو ریبوت کنید میبینید که کرنل جدید اضافه شده:

پاسخ دهید