دستکاری یا ساختن کرنل جدید

FreeBSD در حالت معمولی با kernel یا هسته ای به نام Generic نصب می شود که د را ین هسته  بعضی از قابلیت ها فعال است و بعضی از قابلیت ها فعال نیست . مثلا ممکن است شناسایی بعضی از سخت افزار ها به صورت خودکار فعال نباشد و باید آنها به طریقه ماژول فعال کنید . کرنل معمولی یا  default یا Generic تمام چیز هایی را که برای آغاز به کار  یک سیستم لارم دارد سعی می کند لود کند تا سیستم به راحتی به کار خود ادامه دهد و ممکن است خیلی از این چیز ها برا ی سیستم شما لازم نباشد و فقط لود شوند .

ممکن است کرنل شما از بعضی از قابلیت ها مانند استفاده از   PF که به نظر من قویترین فایروال دنیا می باشد را دارا نباشد . و اگر شما بخواهید از PF   به عنوان فایروال استفاده کنید باید به کرنل بگویید برای کار با آن آماده گی پیدا کند .

پس لازم است که کرنل اختصاصی داشته باشیم .

کرنل اختصاصی دارای مزیت های زیر می باشد :

۱-  بوت شدن سریع سیستم  چون بعضی از چیز ها که لازم نداریم بوت نخواهند شد و زمان را نمی کیرند.

۲- کرنل اختصاصی رم کمتری را اشغال می کند چون خیلی از داریور ها و ماژول ها که ما احتیاج نداریم لود نمی شوند.

۳- کرنل اختصاصی به شما اجازه می دهد از سخت افزارهایی که به صورت پیش فرض فعال نبودند استفاده کنید .


برای ساختن کرنل اختصاصی احتیاج به  سورس یا Source کرنل می باشد . اگر می خواهید چک کنید که آیا در هنگام نصب FreeBSD سورس کرنل را نصب کرده اید کافی است به شاخه زیر بروید

/usr/src/sys

اگر این شاخه وجود داشت پس سورس کرنل نصب شده است و اگر وجود نداشت پس باید آن را نصب کنید .

برای نصب سورس کرنل راه های مختلفی وجود دارد که معمولا راحت ترین راه  نصب از روی DVD یا CD سیستم عامل می باشد . برای نصب کرنل از روی دیسک نصاب سیستم عامل به این طریق عمل می کنیم

اول DVD یا CD را در داخل درایو نوری خود قرار می دهیم  و دستور های زیر را اجرا می کنیم

# mount /cdrom
# mkdir -p /usr/src/sys
# ln -s /usr/src/sys /sys
# cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
# cat /cdrom/src/sbase.[a-d]* | tar -xzvf -

با دستور های بالا سی دی رام را مونت کردیم یک دایرکتوری به نام usr/src/sys ساختیم و محتویات سورس کرنل را در آن ریختیم .

سورس کرنل را می توان از طریق برنامه نصاب FreeBSD که همه آن را به نام sysinstall می شناسیم نیز قابل نصب است . برای نصب سورس کرنل با استفاده از sysinstall مراحل زیر باید طی گردد .

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

۱- در طفحه جدید گزینه configure را نتخاب می کنیم .

۲- در صفحه جدید گزینه Distributions  را انتخاب می کنیم .

۳- در صفحه جدید گزینه src  را نتخاب می کنیم.

۴- در صفحه جدید گزینه sys را انتخاب می کنیم .

۵-  اینتر را می زنیم

۶ – دوباره اینتر را می زنیم .

۷- در این قسمت CDROM را به عنوان منبع انتخاب می کنیم .

۸- گزینه install را انتخاب می کنیم .

بعد از مدت زمانی سورس کرنل نصب خواهد شد.

در این مثال فرض بر این است که FreeBSD ما از نوع ۳۲ بیت است . پس در ترمینال بعد از نصب سورس کرنل دستور زیر را تایپ می کنیم.

# cd /usr/src/sys/i386/conf

برای احتیاط بهتر است که کرنل Generic را حفظ کنیم و آن را دستکاری نکنیم و یک کرنل جدید درست کرده و آن را دستکاری کنیم . پس در ترمینال تایپ می کنم

# cp GENERIC MFARIDI

پس من یک کرنل درست کردم به نام mfaridi . حالا با یک ویرایشگر مانند edit یا mcedit یا nano یا pico یا VI کرنل mfaridi را باز کرده و آن را به دلخواه ویرایش می کنم .

اولین کاری که انجام می دهم این است که در این کرنل جدید هر کجا Generic دیدم در ابتدای متن کرنل آن را به mfaridi تغییر می دهم .

فرض می کنیم من می خواهم از PF  به عنوان فایروال استفاده کنم . طبق Handbook  سیستم عامل FreeBSD  باید Option ها یا گزینه های زیر را به آن اضافه کنم .

options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build

خوب این گزینه ها در جای مربوطه به کرنل اضافه می کنم و تغییرات را ذخیره می کنم .

شما می توانید بعضی از سخت افزار ها در این  کرنل جدید فعال یا غیر فعال کنید . فقط کافی است برای فعال نشدن آن سخت افزار در جلوی اسم سخت افزار مورد نظر علامت #  قرار دهید .

خوب بعد از دست کاری کرنل دستور زیر را در ترمینال تایپ می کنیم

# cd /usr/src

بعد از این فرمان دستور زیر را  تایپ می کنیم.

# make buildkernel KERNCONF=MFARIDI

با دستور بالا کرنل mfaridi ساخته می شود و زمانی را باید صبر کنید . اگر error ی مشاهده نشد دستور زیر را  تایپ می کنیم.

# make installkernel KERNCONF=MFARIDI

خوب حالا کرنل مورد نظر ما نصب می شو د . اگر error دیده نشد . حالا باید سیستم را ریست کنیم . بعد از ریست کافی است در ترمینال دستور uname را تایپ کنیم .

خروجی باید شبیه به زیر باشد

FreeBSD beast.local x.x-XXXXX FreeBSD 8.X-XXXXX #0: Day Mon XX XX:XX:56 EDT 2010
    USER@beast.local:/usr/obj/usr/src/sys/MFARIDI  i386

خوب الان کرنل اخنصاصی داریم و می توانیم بقیه کار ها را انجام دهیم .

اگر در هنگام ساختن کرنل جدید اشتباه کردید و error دیدید کافی است دوباره کرنل Generic را لود کنید.