|
کامپایل هسته لینوکس
|
|
۲-۹-۱۳۸۶, ۰۱:۳۶ عصر
ارسال: #1
|
|||
|
|||
|
کامپایل هسته لینوکس
پیشگفتار
برای کاربر جدید گنو/لینوکس و حتی کاربران حرفه ای آن،تصور کامپایل مجدد هسته پیچیده است چه برسد به اینکه جرات کامپایل هسته را بکنند. اگرچه این مسئله می تواند درست باشد ولی شما زمانی را خواهید یافت که کامپایل هسته همانند دیگر کارهای پشتیبانی سیستم ساده خواهد شد. مقدمه ما در این مقاله سعی خواهیم کرد مراحل دریافت کد هسته، پیکر بندی، کامپایل و تنظیمات مربوطه را جهت کار با هسته ی جدید، گام به گام بررسی نموده و بر روی توزیع SuSE 9.3 از سیستم عامل گنو/لینوکس(1) اجرا نماییم. هسته چیست؟ مطمئناً شما پیش از این شنیده اید که هسته قلب هر سیستم عامل nix * ( سیستم عاملهای مبتنی بر unix و minix) است. در گنو/لینوکس تعریف فوق می تواند قدری گمراه کننده باشد. گنو/لینوکس برای همه مقاصد و کاربردها می باشد و در واقع چیزی نیست جز هسته. توزیعی که شما استفاده می کنید، آن چیزی است که باقی سیستم عامل را شکل می دهد، به عبارت ساده تر هسته پایین ترین سطح نرم افزار در سیستم شماست و نقش هدایت کننده را برای همه سیستم عامل بازی می کند. این هسته است که در مورد اولویت اجرای برنامه ها تصمیم می گیرد و تقریباً برای همه ی نرم افزارها، با سخت افزار در سیستم ارتباط بر قرار می کند. حال این سوال مطرح می شود که چرا می خواهیم هسته را مجدداً کامپایل نماییم؟ به این دلیل که سیستم عامل گنو/لینوکس بر روی انواع مختلف بسته های سخت افزاری قابل استفاده باشد، هسته ی ‘general’ (عمومی) در زمان نصب هر توزیع از این سیستم عامل برای کامپیوتر شما در نظر گرفته می شود که طبعاً بهینه ترین حالت نمی باشد. بی شک مهم ترین دلیل کامپایل مجدد بهینه شدن هسته در قبال نیازهای شما خواهد بود، و شما در واقع سیستم عامل سفارشی برای خود ساخته اید. قدم اول در اختیار داشتن کد برنامه هسته برای کامپایل کردن هسته سیستم عامل در اختیار داشتن کد برنامه هسته می باشد که می توان آن را از دیسک نصب توزیع مربوطه، منوط به اینکه هنگام نصب بسته نرم افزار ‘kernel sources‘را انتخاب کرده باشیم و یا پس از نصب از طریق install and remove program در اختیار داشته باشیم، اگر از این حالت استفاده نماییم، مسیر ما /usr/src/linux خواهد بود که به کمک فرمان ls –l /usr/src/linux می توان از وجود آنها اطمینان حاصل کرد. اگر می خواهید به مجموعه کاملی از نسخه های مختلف هسته دسترسی داشته باشید ما وب سایت http://www.kernel.org را به شما پیشنهاد می کنیم. اگر هسته جدید تفاوت زیادی با هسته فعلی شما دارد، شما چاره ای جز دریافت کامل هسته و کامپایل کامل آن نخواهید داشت ولی اگر هسته جدید اندکی با هسته فعلی متفاوت باشد کافیست patch های مورد نیاز را گرفته و استفاده نمایید. حال حالت اول را پی گیری می کنیم: کد: #cd اگر شما نسخه متفاوتی می خواهید و یا نمی توانید مسیر را به خاطر آورید از یک مرور گر web/ftp برای پیدا کردن و دانلود آن استفاده کنید. (فرضاً root / مقصد دانلودتان باشد)، گام بعدی استخراج(2) کدها به مقصد نهایی شان می باشد که /usr/src خواهد بود. کد: # cd /usr/src کد: # ls -lنکته: اگر شما بخواهید patch هایی را همراه با هسته به کار ببرید،اگر آنها را داشته باشید می توانید به سادگی آنها را به دایرکتوری /usr/src/ با فرمان # cd /usr/src/linux/ && patch -p1 <.. /patch-name از حالت فشرده درآورید(3) . بخاطر داشته باشید که در برخی از مواقع نیاز هست که Patch ها بر اساس ترتیب درستشان از حالت فشرده خارج شوند. قدم دوم پیکر بندی هسته چندین راه برای پیکربندی هسته وجود دارد: config , menuconfig , xconfig , gconfig , oldconfig ![]() شکل 1: menu config "config" هر گزینه را به صورت منفرد ارایه می کند (تک تک حالات ممکن را پرسیده و پاسخ آنها را خواستار است) و همچنین فراموش نکنید که برگشت به عقبی به هیچ یک از سوالهای پرسیده شده وجود نخواهد داشت. اگر متحمل اشتباهی شوید باید تمامی مراحل را از ابتدا شروع کنید. menuconfig یک منوی مبتنی بر متن را پیش روی ما قرار خواهد داد. در واقع این همان چیزیست که شما اگر بخواهید از خط فرمان ، هسته را پیکر بندی کنید باید با آن مواجه شوید. xconfig مبتنی بر xwindowsمی باشد و در محیط گرافیکی اجرا می شود. ![]() شکل 2: xconfig همه این روش ها نتایج یکسانی را برای شما حاصل خواهد کرد. کد: #cd /usr/src/linux "M" گزینه مورد نظر را به صورت پیمانه کامپایل می نماید و در xconfig همین عمل بوسیله‘.‘ (dot) در checkbox امکان پذیر می باشد. معمولاً برای درایو های ویژه سعی بر کامپایل به صورت پیمانه می باشد. ‘*’ گزینه انتخابی را به صورت جزیی از هسته کامپایل می نماید و سرعت اجرا در این حالت سریعتر خواهد بود. از آنجائی که تنظیمات مربوط به پیکر بندی هسته از سیستمی به سیستمی دیگر هسته متفاوت است آن را به شما واگذار می کنیم . قدم سوم ایجاد و نصب اکنون زمان استراحت است و مراحل مشکل را به انتها رسانده ایم، پیکر بندیها ذخیره شده است و شما می توانید هسته را نهایتا ایجاد نمایید. کد: # make dep در هسته های جدید نیازی به make dep نداریم. کد: # make bzImageقدم چهارم کامپایل پیمانه ها(4) پس از این فرایند، زمان کامپایل نمودن پیمانه های هسته می باشد. ما پیشنهاد می کنیم که حتی اگر در پیکر بندی هسته هیچ گزینه ای را به صورت پیمانه انتخاب نکرده باشید این فرمان را جا نگذارید: کد: # make modulesکد: # make installمی توانید فرمان ls –l /boot را تایپ کنید تا از ایجاد فایلهایimg و initrd.< kernel version > اطمینان حاصل کنید. نهایتا با مشاهده بخشی با عنوان همان هسته کامپایل شده در فایل /boot/grub/grub.conf یا /boot/grub/menu.lst کار به اتمام می رسد. اگر از فرمانmake install استفاده نکنیم باید فایل bzImage ساخته شده را به پارتیشن /boot کپی نماییم. کد: # cp arch/i386/boot/bzImage /boot/<kernel version>حال سیستم را reboot نموده و با هسته جدید مشغول به کار شوید. نتیجه با مطالب بیان شده در این مقاله، می توانید لینوکسی با هسته سفارشی را تجربه کنید.حس نزدیکی به سیستم عامل تا این حد که بتوانید خود هسته را پیکربندی و کامپایل کنید، مطمئنا جذاب خواهد بود، هر چند که مدت زمان زیادی از وقت را صرف آن نمایید. از طریق آدرسهای پست الکترونیکی rcemaghsoudy at yahoo.com و mehdi_ziari_83 at yahoo.com پاسخگوی شما خواهیم بود. نویسندگان: روح الله مقصودی - مهدی زیاری ویرایش: زهرا احمدی
1– GNU/linux
2- extract 3 - decompress 4 - modules منبع : FOSS.IR |
|||
|
۲۰-۳-۱۳۸۷, ۰۵:۴۳ صبح
(آخرین تغییر در این ارسال: ۲۰-۳-۱۳۸۷ ۰۷:۲۶ صبح توسط sorset.)
ارسال: #2
|
|||
|
|||
|
RE: کامپایل هسته لینوکس
سلام
در یک سایتی دو تا آموزش دیدم که واقعاْ برای خودم مفید بود. برای همین برای شما هم لینکش رو میذارم. آموزش پچ کردن کرنل آموزش کانفیگ کردن کرنل جدید البته برای کانفیگ کردن فقط دو تا مثال داره. یکی برای Processor type and features و یکی هم Filesystems در حالی که برای ۳۷ مورد باید کانفیگ کنید! (که بهتره در مورد انواع سخت افزار ها اطلاعات کافی داشته باشید گر چه برای هر مورد راهنماش در خود برنامه هست.) اصلاْ کلاْ سایت جالبیه حتماْ یک سری بهش بزنید. http://www.linuxheadquarters.com در این سایت هم یک آموزش برای کامپایل کرنل هست. http://ubuntuforums.org/showthread.php?t=157560 |
|||
|
۲۵-۷-۱۳۸۷, ۱۰:۵۰ صبح
ارسال: #3
|
|||
|
|||
|
RE: کامپایل هسته لینوکس
سلام
من این آموزش رو در سایت اوبنتو فارسی دیدم که توسط کسری کشاورز نوشته شده بود. خیلی خوب توضیح داده بود. گفتم بد نیست یک کپی از اونو اینجا هم داشته باشیم تا افراد بیشتری ببینن. در ۶ قدم شما یک کرنل جدید خواهید داشت.اما کمی وقتگیر هستش...پس زیاد نگران نباشید... قدم اول: کارهای اولیه... اولین کار این هست که شما بعضی از پکیجهای مورد نظرتون رو دانلود کنید.با دستورات زیر میتونید این کار رو انجام بدید: کد: sudo apt-get updateقدم دوم: دانلود کرنل برای آپدیت کرنل میتونید از کرنل خود اوبونتو استفاده کنید یا نه کرنل اصلی رو دانلود کنید.اما کرنل اوبونتو کمی قدیمی هستش.برای دانلود کرنل اصلی باید از http://www.kernel.org کمک بگیرید.اما میتونید از دستور زیر کرنل خودتون رو دانلود کنید: کد: cd /usr/srcسپس با دستور زیر از حالت فشرده درش میاریم و وارد فولد مربوطه میشیم: کد: sudo tar -xjvf linux-x.y.z.tar.bz2قدم سوم: کانفیگ کرنل این قسمت به نظر سختترین قسمت برای کسانی هست که برای اولین بار هست که میخوان کرنل خودشون رو کامپایل کنن.اما یه راهحل سادهتری هم هستش.شما میتونید از کانفیگی که الان برای کرنل فعلیتون هست برای کرنل جدید که میخوان کامپایل کنید استفاده کنید با دستور زیر می تونید کانفیگ کرنل فعلیتون برای کرنل جدیدتون استفاده کنید: کد: sudo cp /boot/config-$(uname -r) ./.configاگر در حالت Text-Based هستین از دستور زیر استفاده کنید: کد: sudo make menuconfigبرای این که کانفیگ خودتون رو اجرا کنید مانند شکل بالا به Load an Alternate Configuration File بردی و config. رو انتخاب کنید. اگر در میزکار Gnome قرار دارین میتونین از دستور زیر استفاده کنین: کد: sudo make gconfigاگر در میزکار KDE ( Brick Wall)هستین میتونین از دستور: کد: sudo make xconfigقدم چهارم: کامپایل و نصب کرنل این قسمت حساسترین بخش هستش.پس دقت کنید.با استفاده از دستور زیر میتونید کرنل جدیدتون رو پیکربندی بکنید: کد: make-kpkg cleanکد: --append-to-version=-اگر دستور بالا رو اجرا کنید کرنل شروع به کامپایل شدن میکنه.این بخش زمان زیادی میخواد و کمی حوصله.پس بزارید کارش رو انجام بده و بعد از این که کارش رو انجام داد فولدر linux-x.y.z حجم بالایی رو اشغال میکنه.بعد از این که کارش تموم شد میتونید فولدر کرنلتون رو پاک کنید از همون مسیر: کد: /usr/srcکد: /usr/srcپس این دو تا فایل رو میتونید با دستورات زیر نصب کنید. کد: sudo dpkg -i *.debمنتظر بشید تا عملیات نصب به پایان برسه.سپس شما کرنل جدید نصب شده رو دارید ، در ضمن خودش تنظیمات گراب رو انجام میده پس بهتره که نگران نباشید. قدم پنجم: اطمینان بیشتر برای اطمینان بیشتر از این که تنظیمات گراب صورت گرفته یا نه میتونید با دستور زیر: کد: sudo nano /boot/grub/menu.lstکد: title Ubuntu, kernel 2.6.18.1-customقدم ششم: ورود به اوبونتویی جدید خب بهتون تبریک میگم میتونید با دستور زیر ریبوت کنید: کد: sudo shutdown -r nowوارد اوبونتویی با کرنل جدید بشید.برای اطمینان بیشتر میتونید با دستور زیر ورژن کرنل خودتون رو ببینید: کد: uname -rمنابع: http://www.howtoforge.com/kernel_compilation_ubuntu http://www.howtoforge.com/kernel_compilation_ubuntu_p2 http://forum.ubuntu.ir |
|||
|
|
| موضوعات مشابه ... | |||||
| موضوع: | نویسنده | پاسخ: | بازدید: | آخرین ارسال | |
| چطوری باید در لینوکس به اینترنت وصل بشم | bahram32 | 2 | 833 |
۱۰-۵-۱۳۸۸ ۰۱:۱۴ صبح آخرین ارسال: bahram32 |
|
| ۱۰۱ دلیل بر اینکه لینوکس از ویندوز بهتر است! | sorset | 10 | 2,313 |
۱۲-۳-۱۳۸۸ ۰۳:۰۴ صبح آخرین ارسال: h4d1 |
|
| آموزش لینوکس Red Hat | pooya1 | 0 | 907 |
۲۲-۱۲-۱۳۸۷ ۰۴:۳۳ عصر آخرین ارسال: pooya1 |
|
| نصب نرم افزار در لینوکس | inspector | 3 | 3,205 |
۱۰-۱۲-۱۳۸۶ ۱۱:۱۲ صبح آخرین ارسال: sorset |
|
| راه اندازی لینوکس با استفاده از Flash به جای CD-Rom | sorset | 0 | 1,495 |
۱۹-۱۱-۱۳۸۶ ۱۰:۴۲ صبح آخرین ارسال: sorset |
|
| مونت ntfs در لینوکس | hogat_sh | 15 | 2,419 |
۲۳-۸-۱۳۸۶ ۰۸:۰۳ عصر آخرین ارسال: sorset |
|
| چرا لینوکس را انتخاب کنیم؟ | sorset | 0 | 816 |
۲۲-۸-۱۳۸۶ ۰۴:۳۸ عصر آخرین ارسال: sorset |
|
| مونت درایوهای لینوکس در ویندوز | sorset | 0 | 745 |
۱۶-۸-۱۳۸۶ ۱۱:۲۸ عصر آخرین ارسال: sorset |
|
| اینترنت در لینوکس | mohammad | 13 | 2,178 |
۱۶-۸-۱۳۸۶ ۰۹:۲۳ صبح آخرین ارسال: sorset |
|
| نصب مودم ADSL با رابط USB در لینوکس | sorset | 0 | 3,585 |
۸-۸-۱۳۸۶ ۰۹:۴۸ عصر آخرین ارسال: sorset |
|



![[تصویر: 1.jpg]](http://foss.ir/~ahmadi/Pictures/Kernel/1.jpg)
![[تصویر: 2.jpg]](http://foss.ir/~ahmadi/Pictures/Kernel/2.jpg)


