با سلام
بعد از ترجمه و نوشتن مقاله ای تحت عنوان ایجاد لیو سی دی شخصی از اوبونتو که آقای اردوخانی هم کمک کردن حال به ترجمه و نوشتن مقال ای تحت عنوان کامپایل کرنل در گنو/لینوکس توزیع اوبونتو می پردازیم .
این مقاله رو آقای Falko Timme نوشتند که بسیار هم سلیس هست
منبع :http://www.howtoforge.com/kernel_compilation_ubuntu
این نوشتار ممکن است ناقص و خالی از اشتباه نباشد لطفا در تکمیل آن به ما کمک نمایید.خوب این مقاله تنها راه برای کاوپایل کرنل نیست و راههای بسیاری برای این کار پیشنهاد شده است که یکی از آن موارد مقاله زیر است
این مقاله آموزشی بر روی نسخه های اوبونتوی زیر تست شده و جواب گرفته شده است :
Ubuntu 6.10 Server ("Edgy Eft") and Ubuntu 6.06 Desktop ("Dapper Drake")
همانطور که می دانید کامپایل کرنل سیستم عامل گنو/لینوکس یکی از جذابترین و علمی ترین مواردی است که به شمار می رود چون شما با دانستن اطلاعات کافی و خوب می توانید نسخه جدید از توزیعی که نصب کرده اید را به نام خود و توزیع جدید ارائه کنید.
همانطور که می دانید توزیع های مختلف و متفاوت گنو/لینوکس توسط کامپایل و ادیت سورس انجام گرفته است .
برای شروع:در این آموزش ما تمامی کار ها را از root انجام خواهیم داد در صورتی که شما این کاربر اصلی را تعریف نکرده اید به روش زیر عمل کنید:
sudo passwd root
بعد از انجام کار از دستور زیر وارد root شوید
su
خوب توجه داشته باشید در صورتی که شما می خواهید موارد و دستورات زیر را با کاربر معمولی خودتان انجام دهید از عبارت کلیدی sudo استفاده کنید .
حال دستور زیر را وارد کنید
apt-get update
در اوبونتو 6/10، /bin/sh به صورت پیش فرض یک سیمبلیک به /bin/dash است . این شاخه و مسیر برای این است که در صورتی که مشکلی در نصب بسته نرم افزار و کامپایل بوجود آمد در این قسمت ذخیره می شود .
خوب اگر شما الان از اوبونتو 6/10 استفاده می کنید برای ایجاداین سیمبلیک از دستورات زیر استفاد کنید :
rm -f /bin/sh
ln -s /bin/bash /bin/sh
نصب بسته های لازم برای کامپایل کرنل:
خوب در ابتدا فایل سورس خود را آپدیت می کنیم :
apt-get update
بعد از انجام دستور فوق دستور زیر را برای دانلود و نصب بسته های لازم اجرا می کنیم :
apt-get install kernel-package libncurses5-dev fakeroot wget bzip2
که در دستور فوق بسته های kernel-package و libncurses5-dev و ... دانلود و نصب خواهند شد .
حال نوبت به دانلود کرنل و هسته اصلی گنو/لینوکس فرا می رسد .در لینک
http://www.kernel.org شما می توانید کرنل خود را انتخاب و دانلود نمایید در صورتی که مایلید از ورژن 2.6 استفاده کنید می توانید به آدرس زیر مراجعه نمایید ما نیز در این مقاله از این کرنل استفاده کرده ایم:
http://www.kernel.org/pub/linux/kernel/v2.6
خوب ابتدا دستور زیر را وارد نمایید :
cd /usr/src
حال دستور زیر را وارد کنید تا فایل کرنل دانلود شود . توجه کنید که چون ما در دستور بالا به شاخه اصلی که کرنل در آن قرار دارد منتقل شده ایم فایل دانلود شده نیز اتومات در این قسمت قرار خواهد گرفت :
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.1.tar.bz2
فایل دانلود شده را از حالت فشرده خارج می کنیم و یک shortcut به شاخه linux ایجاد می کنیم (دسترسی بهتر و راحت تر)
دستورات زیر را وارد نمایید :
برای خارج کردن از حالت فشرده:
tar xjf linux-2.6.18.1.tar.bz2
ایجاد سیمبلیک :ln -s linux-2.6.18.1 linux
ورود به شاخه linux که در دستور بالا یک shortcut است:
cd /usr/src/linux
اعمال patch های لازم به سورس کرنل:
احتمالا می پرسید این کار برای چیست ؟
خوب شما در این قسمت می توانید درایورهای سخت افزاری لازم برای کرنل خود را نصب کنید .
ضمنا می توانید تکنولوژی هایی مانند virtualization را نصب نمایید .
توجه داشته باشید که patch ها باید به مسیر /usr/src/linux اعمال شوند دستورات زیر را برای این کار به ترتیب زیر انجام دهید :
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1
توجه:دستور اول فقط یک تست می باشد و آن هم برای این است که در صورتیکه شما هیچ خطایی مشاهده نکردید می توانید از دستور دوم برای اعمل patch ها استفاده نمایید
فایل patch که patch-2.6.19-rc4.bz2 می باشد در حال حاضر برای استفاده و دانلود آماده است که با ورود به آدرس زیر می توانید آن را دانلود نمایید
http://kernel.org/patchtypes/pre.html
توجه داشته باشید که در صورتی که شما از این patch استفاده می کنید و آن را کامپایل نمایید بایستی فایل سورس kernel 2.6.18.1 را از آدرس:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2 دانلود و آن زیپ نمایید.
حال اگه موارد فوق را پیش برده اید در زیر دستورات لازم را برای اعمال patch به کرنل 2.6.19-rc4 یاد آوری می کنیم
دستورات زیر را وارد نمایید :
cd /usr/src
وارد شاخه مورد نظر می شویم :
wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2
فایل patch لازم را دانلود می کنیم :
cd /usr/src/linux
وارد شاخه linux که سیمبولیک به شاخه اصلی است می شویم :
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 –dry-run
برای اعمال patch لازم یک تست میگیریم در صورتی که بدون اشکال بود دستور زیر را وارد می کنیم :
bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1
پیکربندی کرنل:ممکن است شما دارای عقاید خاصی باشید و یا ممکن است از هوش و ذکاوت فوق العاده ای بر خوردار باشید . در این قمست شما می توانید تنظیمات خاص و شخصی خودتان را با کمال آرامش و راحت اعمال نمایید.خوب دستورات زیر را وارد نمایید :
cp /boot/config-`uname -r` ./.config
خوب الان دستور زیر رو بزنید :
make menuconfig
در صورتی که می خواهید تنظیمات و پیکربندی را به حد بالا برسانید گزینه مورد نظر را که در شکل زیر نشان داده شده است انتخاب کنید
و مرحله بعدی را طبق شکل دنبال نمایید
شما طبق شکل زیر می توانید سراسر تنظیمات و پیکر بندی کرنل را ببینید و حتی می توانید تنظیمات خاص خودتان را نیز اعمال نمایید به خاطر داشته باشید که در جواب سئوالDo you wish to save your new kernel configuration کلید yes را انتخاب نمایید.
ساختن کرنل : خوب اگر تا کنون مراحل و تنظیمات خاص خود را پیش برده اید بایستی کرنل خود را کامپایل و ایجاد کنید تا بتوانید از آن استفاده کنید ، نگران نباشید ساختن و کامپایل آن نیز به راحتی مراحل بالا می باشد .
دستورات زیر کار شما را راه می اندازند :
make-kpkg clean
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
توجه:بعد از عبارت زیر در دستور بالا می توانید عبارتی دلخواه برای راهنمایی خودتان بنویسید
– –append-to-version=
انجام دستورات بالا ممکن است ساعت(ها)ی طول بکشد بنابراین باید صبور باشید البته این بستگی به سخت افزار کامپیوتر شما نیز دارد که تاثیر بسزایی برای تسریع کار دارد .
خوب الان به شما یاد خواهیم داد چگونه کرنل خودتان که پیکربندی و کامپایل کرده اید را نصب نمایید . ما در کامپایل کرنل از عبارت 2.6.18.1 استفاده کرده ایم، ممکن است که آن را در کدام قسمت وارد کرده ایم . اشاره کنم که به جای – –append-to-version=
ما از 2.6.18.1 استفاده کرده ایم
خوب در مورد نصب کرنل نیز دستورات زیر را وارد می کنیم
ابتدا وارد دایرکتوری که کرنل در آن ساخه شده وموجود است وارد می شویم همانطور که می دانید در ابتدا ما از مسیر اصلی یعنی cd /usr/src استفاده کرده ایم
cd /usr/src
ls -l
از دستور ls هم برای اطمینان از صحت کار استفاده می کنیم.
بعد از اینکه شما کرنل را کامپایل کردید دو فایل deb. برای شما فراهم می شود که یکی از آن خود کرنل و دیگری header های مربوط به کرنلی که دستی کامپایل کردید می باشد ، پس به نوبت آن رو نصب می کنیم :
dpkg -i linux-image-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.18.1-custom_2.6.18.1-custom-10.00.Custom_i386.deb
توجه داشته باشید که در اینجا نام فایل همان نامی است که شما موقع ساختن کرنل وارد کرده اید و ممکن است این نام متفاوت باشد.
حال فایل menu.lst که منوی اصلی در boot loader ماست را ادیت خواهیم کرد.
دستور زیر را وارد نمایید :
vi /boot/grub/menu.lst
در صورتی که به ویرایشگر vi تسلط کافی ندارید می توانید از gedit یا نرم افزارهای ویرایشگر گرافیکی دیگر استفاده نمایید.
خطوط زیر را به تناسب کار و استفاده خود می توانید در ابتدا یا انتهای فایل منو درج نمایید .
title Ubuntu, kernel 2.6.18.1-custom
root (hd0,0)
kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro quiet splash
initrd /boot/initrd.img-2.6.18.1-custom
savedefault
boot
title Ubuntu, kernel 2.6.18.1-custom (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18.1-custom root=/dev/sda1 ro single
initrd /boot/initrd.img-2.6.18.1-custom
boot
خوب تا اینجا که خسته نشده اید ؟
نوبت به تست کرنل خودتان فرا رسیده است . از دستور زیر استفاده کنید :
shutdown -r now
بعد از اینکه دستگاه خودتان رستارت شد عکس زیر ظاهر می شود :
شما بعد از بالا آوردن کرنل خود می توانید با استفاده از دستور uname -r نسخه کرنل خود را چک نمایید
اگر تمام مراحل بالا آمدن با موفقیت انجام شد به شما تبریک و خسته نباشید می گوییم