اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

پیکربندی و نصب کرنل لینوکس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    پیکربندی و نصب کرنل لینوکس

    در این نوشته قصد داریم در مورد روند پیکربندی و کامپایل هستهٔ لینوکس صحبت کنیم. اگر شما یک کاربر عادی سیستم عامل های مبتنی بر لینوکس هستید، شاید هیچوقت به فکر تغییر هستهٔ سیستم عامل خود نبوده اید. در این صورت این نوشته اطلاعاتی کلی در مورد هسته و نحوهٔ کامپایل و تعویض آن در اختیار شما می گذارد.
    واژهٔ «هسته»، به سامانهٔ نرم افزاری سطح پایینی (به معنی نزدیک تر به سخت افزار در رده بندی معماری سیستم عامل) اشاره می کند که لایه ای در معماری سیستم عامل به نام لایه انتزاع سخت افزار را تأمین می کند و دیسک ها وسامانهٔ پرونده گردانی را بررسی می نماید و تراز کردن (Balancing) ذخیره سازی داده ها و شبکه بندی و برقراری امنیت را برعهده دارد. [ویکی پدیا]

    چرا باید هستهٔ لینوکس را دوباره کامپایل کنیم؟
    شاید این سؤال برای شما پیش بیاید که با وجود این که یک هستهٔ کامپایل شده در توزیع گنو/لینوکس وجود دارد، چرا بخواهیم دوباره هسته را کامپایل کنیم؟ دلایل زیادی برای این کار وجود دارد. از جمله بهبود کارایی و شخصی سازی.
    هسته هایی که با توزیع های معروف گنو/لینوکس منتشر می شوند معمولاً با یک پیکربندی بسیار عمومی کامپایل شده اند. این یعنی تقریباً تمام سخت افزارهای مدرن موجود در بازار رایانه ها پشتیبانی می شوند. بنابراین وقتی شما یک توزیع گنو/لینوکس نصب می کنید، صدها ماژول اضافی برای سخت افزارها، استانداردها و پروتکل های مختلف به همراه کرنل شما نصب می شود که هیچ نیازی به آن ها ندارید. به عنوان مثال اگر کارت صوتی شما از درایورهای FM801 استفاده می کند دیگر نیازی به درایورهای cm109 و یا Zoltrix ندارید. با این حال درایورهای تمامی این چیپ ست ها در کرنل شما موجود است البته این درایورها همیشه بارگذاری نمی شود. بارگذاری ماژول مناسب برعهدهٔ برنامه ای به نام udev است. این برنامه در هنگام بوت شدن سیستم عامل، در فضای هسته اجرا می شود و با تطبیق کد وقفه های حاصل از اسکن سخت افزار، درایور مناسب را لود می کند. این کار طبیعتاً وقت گیر است. علاوه بر آن وجود ماژول های اضافی در کرنل، فضا را به هدر می دهد. بنابراین پیکربندی هسته برای یک مجموعهٔ سخت افزاری خاص، سرعت بوت سیستم را تا حد زیادی افزایش می دهد و حجم کرنل را تا حدودی کاهش می دهد. بهبود کارایی بوت برای سیستم های Real Time حیاتی است. در یک مورد خاص، با حذف روال UDev بهبود زمان بوت از ۴۵ ثانیه به ۵ ثانیه (۸۸٪ بهبود زمانی) در کرنل فدورا کور ۶ روی یک کامپیوتر قدیمی مشاهده شده است. شاید بهبود حجم هسته برای رایانه های شخصی امروزی چندان اهمیت نداشته باشد. اما برای سیستم های غیر PC مانند، گاهی اوقات ۱۰ مگابایت فضای بسیار زیادی به حساب می آید! بنابراین عاقلانه است که در صورت امکان کرنل توزیع گنو/لینوکس خود را برای دلایل متعدد بهینه کنیم.

    از طرف دیگر باید در نظر داشته باشیم که کرنل لینوکس یک سامانهٔ نرم افزاری بسیار گسترده است. علاوه بر این که تعداد زیادی ماژول غیرضروری به همراه کرنل شما وجود دارد، تعداد بسیار بیشتری وجود ندارد! این ماژول ها معمولاً آن هایی هستند که کاربرد آن ها در زمرهٔ فعالیت های عادی در روند استفاده از رایانهٔ شخصی قرار نمی گیرد. با این حال ممکن است یکی از این ها دقیقاً همان چیزی باشد که شما برای کار غیرمعمولی خود نیاز دارید! به عنوان مثال شما شاید مایل باشید به دلایلی از یک الگوریتم بسیار قوی برای رمزنگاری تمامی محتویات دیسک سخت خودتان استفاده کنید. در کرنل لینوکس ماژول هایی برای پیاه سازی چنین مکانیسمی وجود دارد. شما می توانید این کار را به سادگی به سیستم عامل بسپارید و در فضای کرنل، روی فایل سیستم ها این رمزنگاری را انجام دهید! (البته برای کاربردهای عادی انجام چنین کارهایی به هیچ وجه توصیه نمی شود! توجه داشته باشید که در صورت استفاده از این سیستم، کارایی رایانهٔ شما تا حد بسیار زیادی پایین می آید و اگر رمز خود را فراموش کنید حتی FBI هم نمی تواند اطلاعات شما را برگرداند!)

    روند کلی :
    ساخت یک کرنل در سه فاز کلی انجام می شود: پیکربندی، کامپایل و نصب. مهم ترین مرحله پیکربندی کرنل است. این کار نیازمند اطلاع کامل از سامانهٔ سخت افزاری، پروتکل ها و اطلاعات سطح پایین دیگر در سیستم است. پیکربندی کرنل برای کامپایل کار بسیار دقیق و با حساسیت بسیار بالایی است. شما باید مراقب باشید چیزی را که ضروری است حذف نکنید. و یا ناسازگاری بین ماژول های انتخاب شده وجود نداشته باشد. با این اوصاف پیکربندی دقیق یک کرنل می تواند ساعت ها وقت شما را بگیرد. در عوض کامپایل و تعویض کرنل لینوکس برخلاف تصور عمومی کار بسیار ساده ای است و تنها با چند دستور ساده انجام می شود! با این حال کار سختی در این فاز برعهدهٔ پردازندهٔ شما است. ممکن است روند کامپایل ساعت ها وقت بگیرد در حالی که پردازندهٔ شما با تمام قوا کار می کند.

    شروع به کار: دریافت کد کرنل
    قبل از هر چیز شما باید کد کرنل دلخواه خود را داشته باشید. می توانید نسخهٔ مربوطه را از وبگاه رسمی kernel دریافت کنید. توصیه می شود نسخهٔ پایدار را دریافت کنید. نسخه های در حال توسعه هیچ تضمینی برای رفتار متعارف ندارند. اگر در یک محیط غیر گرافیکی هستید می توانید از این دستورات برای دریافت کرنل استفاده کنید :

    کد PHP:
    wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.4.tar.bz2 
    البته این آخرین نسخهٔ فعلی کرنل تا امروز (زمان نگارش این مقاله) است. طبیعتاً شما مایل هستید نسخه های جدیدتری را که در آینده منتشر خواهد شد، یا نسخه های قدیمی تر را دانلود کنید. بهتر است از rsync یا ftp استفاده کنید. در همهٔ توزیع های لینوکس و یونیکس ftp وجود دارد. شما می توانید به سرور ftp سایت کرنل متصل شوید و لیستی از کرنل ها را مشاهده کرده و نسخهٔ موردنظر را دریافت کنید (اجرای دستور در ترمینال) :

    کد PHP:
    ftp ftp.kernel.org 
    با نام کاربری anonymous و گذرواژهٔ خالی وارد شوید :

    Connected to pub2.kernel.org
    220 (vsFTPd 2.3.4)
    Name (pub2.kernel.org:soroush) : anonymous
    331 Please specify the password
    Password
    230 Login successful
    Remote system type is UNIX
    Using binary mode to transfer files
    ftp


    حالا باید به مسیر کرنل های لینوکس بروید. در حال حاضر کرنل های نسخهٔ ۳ در مسیر pub/linux/kernel/v3.x و نسخهٔ ۲ در مسیر pub/linux/kernel/v2.6 قرار دارند. با فرمان cd مسیر را عوض کنید و با فرمان ls لیستی از فایل های موجود در آن مسیر را چاپ کنید :
    کد PHP:
    ftp cd /pub/linux/kernel/v3.x
    250 Directory successfully changed
    .
    ftp
    200 PORT command successful
    Consider using PASV.
    150 Here comes the directory listing.
    -
    rw-rw-r-- 1 536 536 248483 Oct 23 07:00 ChangeLog-3.0.5
    -rw-rw-r-- 1 536 536 836 Oct 23 07:00 ChangeLog-3.0.5
    -rw-rw-r-- 1 536 536 734 Oct 23 07:51 ChangeLog-3.0.6
    -rw-rw-r-- 1 536 536 836 Oct 23 07:51 ChangeLog-3.0.6
    -rw-rw-r-- 1 536 536 47149 Oct 23 07:57 ChangeLog-3.0.7
    -rw-rw-r-- 1 536 536 836 Oct 23 07:57 ChangeLog-3.0.7
    -rw-rw-r-- 1 536 536 33174 Oct 25 05:14 ChangeLog-3.0.8
    -rw-rw-r-- 1 536 536 836 Oct 25 05:14 ChangeLog-3.0.8
    -rw-rw-r-- 1 536 536 6022933 Oct 24 07:32 ChangeLog-3.1
    -rw-rw-r-- 1 536 536 490 Oct 24 07:32 ChangeLog-3.1
    -rw-rw-r-- 1 536 536 0 Oct 23 10:23 LATEST-IS-3.0.7
    .....
    226 Directory send OK
    حالا می توانید با دستور get کرنل موردنظر را دانلود کنید :
    کد PHP:
    ftp get linux-3.0.1.tar.bz2
    200 PORT command successful
    Consider using PASV.
    150 Opening BINARY mode data connection for linux-3.0.1.tar.bz2 (76754139 bytes).
    ..... 
    بعد از اتمام دانلود، شما سورس کامل کرنل را در یک فایل فشرده در مسیر فعلی دارید. کافیست این فایل را از حالت فشرده خارج کنید تا بتوانید وارد مرحلهٔ پیکربندی شوید. برای خارج کردن از حالت فشرده می توانید از دستور tar استفاده کنید :

    کد PHP:
    tar xvjf linux-3.0.1.tar.bz2 
    پیکربندی :
    پیکربندی عبارت است از انتخاب مجموعه ای از ماژول ها و تنظیم پارامترهایی برای استفاده کامپایلر. برنامهٔ پیکربندی با پرسش چند سؤال از شما فایل مخفی .config را ایجاد/ویرایش می کند. این کار می تواند در مقاطع مختلف طی چند روز انجام شود. در صورتی که فایل .config موجود باشد، محتویات آن بارگذاری می شود و پس از ویرایش ذخیره می شود. با دستور make config وارد برنامهٔ پیکربندی می شوید. این برنامه رابط گرافیکی ندارد و با پرسش های متعدد از شما در مورد هر ماژول یا مجموعه ای از ماژول ها پیکربندی را انجام می دهد. جواب دادن به ۱۰۰ ~ ۲۰۰ سؤال عجیب و غریب شاید چندان خوشایند نباشد! راه بهتر استفاده از یک رابط گرافیکی برای پیکربندی است. اگر کتابخانهٔ ncurses را نصب کرده باشید، می توانید از محیط گرافیکی متنی برای پیکربندی استفاده کنید. این دستور را وارد کنید :

    کد PHP:
    make menuconfig 
    وارد چنین محیطی خواهید شد :

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	menuconfig-thumb.png نمایش ها:	1 اندازه:	50.5 KB شناسه:	18194

    در صورتی که در محیط گرافیکی مانند گنوم هستید می توانید از محیط gtk برای پیکربندی استفاده کنید :

    کد PHP:
    make gconfig 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	gconfig-thumb.png نمایش ها:	1 اندازه:	146.2 KB شناسه:	18195

    و اگر در کی دی ای باشید، می توانید از برنامهٔ پیکربندی تحت کیوت استفاده کنید :

    کد PHP:
    make xconfig 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	xconfig-thumb.png نمایش ها:	1 اندازه:	66.2 KB شناسه:	18196

    تمام این برنامه ها کار یکسانی انجام می دهند و آن تشکیل فایل .config است. روند پیکربندی یک روال حساس و ظریف است. شما باید با اطلاع کامل از وظایف هر ماژول آن را نگه دارید، حذف کنید و یا به صورت قابل بارگذاری کامپایل کنید. هر ماژول سه حالت دارد :

    کامپایل نمی شود که در این صورت طبیعتا بارگذاری هم نمی شود،
    کامپایل شده ولی به صورت خودکار بارگذاری نمی شود. در این صورت ماژول در فضای کرنل موجود خواهید بود. و با دستور modprobe قابل بارگذاری است.
    کامپایل شده و به صورت خودکار بارگذاری می شود.

    بعد از این که با دقت کامل مراحل پیکربندی را پشت سر گذاشتید، فایل پیکربندی را ذخیره کنید و به مرحلهٔ بعد بروید.

    کامپایل :
    روند کامپایل کرنل بسیار ساده است! شما تنها باید دستور make را فراخوانی کنید. در صورتی که از پردازنده های چندهسته ای استفاده می کنید می توانید از ویژگی کامپایل همزمان کرنل استفاده کنید که سرعت شما را چند برابر خواهد کرد. مثلا برای پردازنده های ۴ هسته ای :

    کد PHP:
    make -j4 
    بعد از اتمام کامپایل کرنل، شما باید ماژول های کرنل را کامپایل کنید :

    کد PHP:
    make modules 
    و سپس ماژول ها را به مکان مناسب در /lib/moduls انتقال دهید تا سیستم عامل بتواند آن ها را بارگذاری کند :

    کد PHP:
    make modules_install 
    حالا شما باید یک ramdisk بسازید! رم دیسک برنامه ای است که پیش از بارگذاری کرنل در فضای سخت افزار اجرا می شود و وظیفهٔ آن بارگذاری کرنل و فایرآپ کردن آن است. دستور مربوط به آن ممکن است در توزیع های مختلف متفاوت باشد…

    برای آرچ دستور :

    کد PHP:
    mkinitcpio 
    و برای اوبونتو و دیگر توزیع ها معمولا دستور :

    کد PHP:
    mkinitrd 
    این کار را انجام می دهد. این دستور نام کرنل را به عنوان پارامتر دریافت می کند. این نام همان نام فولدری است که با دستور make modules_install در شاخهٔ /lib/modules ایجاد شده است. همچنین دستور در حالت عادی به شکل dry run اجرا می شود و خروجی تولید نمی کند. برای تولید خروجی از سویچ -g استفاده کنید. به عنوان مثال در کامپیوتر من دستور به این شکل خواهد بود :

    کد PHP:
    mkinitcpio -./my-ramdisk.img 3.0-ARCH 
    با این دستورات فایل my-ramdisk.img در شاخهٔ جاری ایجاد می شود. حالا شما یک کرنل کامل دارید و باید آن را نصب کنید!

    نصب کرنل :
    کرنل جدید شما عبارت است از دو فایل! یکی همین ramdisk که در مرحلهٔ قبل ایجاد کرده اید و دیگری خود کرنل که در مسیر arch/$your-architecture/ قرار گرفته است. your-architecture معماری پردازنده ای است که کرنل را با آن (یا برای استفاده در آن) کامپایل کرده اید. برای پردازنده های سازگار با اینتل ۳۲ بیتی x86 است. کرنل را به راحتی می توایند پیدا کنید (یک فایل image با حجم بین ۲ تا ۵۰ مگابایت است). این فایل و ramdisk را در مسیر /boot کپی کنید. اسامی آن ها هم به خاطر بسپارید چون قرار است تایپ شان کنید. حالا تنها چیزی که نیاز دارید این است که در منوی بوت لودر خودتان، کرنل جدید را معرفی کنید! برای گراب به مسیر /boog/grub بروید و فایل menu.lst را ویرایش کنید. باید چهار خط برای ایجاد گزینهٔ جدید اضافه کنید :
    کد PHP:
    # Our custom kernel menu entry:
    title My very good new kernel
    root 
    (hd0,0)
    # this depends on your filesystem and partitions
    kernel /boot/my-kernel.img root=/dev/sda1 ro
    initrd 
    /boot/my-ramdisk.img 
    طبیعتا مسیرها و شمارهٔ پارتیشن ها را باید با توجه به سیستم خودتان اصلاح کنید. hd0 شمارهٔ هارددیسک را نشان می دهد و 1 شمارهٔ پارتیشن / با شروع از صفر.

    /dev/sda1 با شروع از 1 شمارهٔ پارتیشن / را نشان می دهد. اگر سردرگم شده اید می توانید توضیحات ابتدایی فایل menu.lst را در گراب خودتان ملاحظه کنید :
    کد PHP:
    # DEVICE NAME CONVERSIONS
    # Linux Grub
    # -------------------------
    # /dev/fd0 (fd0)
    # /dev/sda (hd0)
    # /dev/sda1 (hd0,0)
    # /dev/sdb2 (hd1,1)
    # /dev/sda3 (hd0,2) 
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-13-2020, 02:57 AM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی
در حال انجام ...
X