پنجشنبه، خرداد ۰۳، ۱۳۸۶

کامپایل کردن کرنل لینوکس

کرنل یا هسته لینوکس از قسمت‌هایی تشکیل شده که به اصطلاح به آن‌ها module یا اگر بخواهیم کامل‌تر بگوییم kernel module می‌گویند. بسیاری از این module ها درایورهای مختلف هستند. گاهی لازم می‌شود که برای کاری تحقیقاتی یک سیستم سبک و کم حجم بسازید، یا module ای را به کرنل خود اضافه کنید. این کار را با کامپایل و نصب کردن کرنل لینوکس خود می‌توانید انجام دهید. دستورات این پست با Fedora Core 6 امتحان شده‌اند. احتمالا با کمی تغییر می‌توانید همین کار را با distribution های دیگر هم انجام دهید. برای انجام این کار احتیاج به پکیج سورس کرنل خود نیز دارید. در مورد فدورایی که من استفاده می‌کردم این فایل (که یک فایل .src.rpm است) از این‌جا (فایل:+، فولدر:+) قابل دانلود است.

 

۱.

اگر نتوانستید به راحتی بالا سورس کرنل لینوکس خود را دانلود کنید، اول باید ببینید نسخه آن چیست. برای این کار از دستور زیر استفاده کنید:

$ uname -r
[this will print kernel release version]
$ uname -a
[this will print all system information]

سپس با اطلاعات بالا دنبال پکیج سورس آن بگردید، یا به پانوشت ۱ مراجعه کنید.

 

۲.

فرض کنید پکیج سورس کرنل را دانلود کرده‌اید. در مورد فدورایی که من استفاده می‌کنم، نام این فایل kernel-2.6.18-1.2798.fc6.src.rpm است. در دستورات این نام را با نام بسته خودتان عوض کنید. برای اجرای بقیه دستورها باید کاربری با اختیارات root یا خود root باشید.

$ rpm -Uvh kernel-2.6.18-1.2798.fc6.src.rpm
$ cd /usr/src/redhat/SPECS
$ rpmbuild -bp --target $(arch) kernel-2.6.spec

دستور rpm اولی موجب نصب پکیج می‌شود، اما چون این بسته تنها یک بسته سورس است، یک سری فایل سورس در /usr/src کپی خواهد کرد. –Uvh به معنای upgrade کردن بسته است (U) و گزارش لحظه به لحظه از کاری که در حال انجام است (v) و نشان دادن میزان پیشرفت با کاراکتر hash که # است (h). حاصل آن فایل .spec ایست که rpmbuild در دستور بعدی از آن استفاده خواهد کرد.

 

۳.

حالا وقت اضافه و کم کردن module هاست. این که به طور پیش فرض چه module هایی نصب می‌شوند در فایل مخفی .config نوشته شده. برای تغییر محتویات این فایل به طور گرافیکی یا متنی از دستورات زیر استفاده کنید.

$ cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18-i686
[the .config file and the Makefile reside here]

$ make help
[lists all available options to configure and make]

[run one of the following, as you wish]

$ make xconfig
[GUI configuration, using Qt for KDE]
[probably the most user-friendly option]

$ make gconfig
[GUI configuration, using GTK for GNOME]

$ make menuconfig
[text based configuration, using ncurses]

اگر از روش گرافیکی استفاده می‌کنید، می‌توانید درختی از تمامی module ها ببینید. آن‌هایی را که می‌خواهید نصب کنید را انتخاب کنید و آن‌هایی را که نمی‌خواهید را از حالت انتخاب بیرون بیاورید. مثلا می‌توانید به قسمت filesystems بروید و ntfs را انتخاب کنید. با save کردن تغییراتی که دادید فایل .config به‌روز خواهد شد.

 

۴.

الآن دیگر می‌توانید کامپایل و نصب را شروع کنید. این کار تقریبا نیم الی یک ساعت طول خواهد کشید. توجه کنید که مرحله آخر نصب، boot-loader را نیز update خواهد کرد.

$ make
$ make modules_install
$ make install

 

۵.

برای استفاده از کرنل جدید باید سیستم را reboot کنید. با این کار خواهید دید که یک گزینه به گزینه‌های grub (یا lilo) اضافه شده. گزینه جدید که کلمه prep در آن به چشم می‌خورد، همان کرنل جدید است.

 

 

پ.ن.

 

۱. نسخه‌های اصلی کرنل را گروهی به سرپرستی لینوس توروالدس تولید می‌کنند. سپس distribution های مختلف، بسته به کاربرد یا ایدئولوژی خود، آن را تغییر می‌دهند (patch تغییراتشان اکثرا از سایت خودشان قابل دانلود است). نسخه‌های اصلی کرنل را می‌توان ازwww.kernel.org  دانلود کرد. اگر قصد کامپایل چنین نسخه‌ای را دارید، توجه کنید که نسخه آن باید با نسخه کرنل لینوکس شما سازگار باشد، مثلا با 2.6.18 شروع شده باشد. اگر این نسخه را کامپایل کنید، کرنل حاصل دیگر کرنل patch شده توسط distribution شما نیست، بلکه کرنلی است که لینوس توروالدس منتشر کرده.

 

۲. این دستورات مخصوص distribution های redhat ایست، و به احتمال زیاد برای distribution های debian ای مثل Ubuntu کار نخواهند کرد. اصلا در این نسخه‌ها دستور rpm‌ وجود ندارد، و احتمالا پسوند پکیج سورس آن‌ها .deb است.

 

 

0 نظر:

ارسال یک نظر

جهت نمایش صحیح آدرس سایتتان، حتما قبل از آدرس //:http را درج کنید.