نصب , تنظيم و ارتقاي کرنل لينوکس

D.c0d.r

Member
همان طور که بهتون قل داده بودم که این آموزش بزارم امروز این آموزش آماده کردم براتون با تشکر از دوست خوبم آرش و امیر عزیز ......
هميشه دو نوع کرنل برای Download کردن وجود دارن: نسخه Stable ( پايدار يا Production ) و نسخه Beta يا Development . به عنوان يک کاربر عادی سر و کار شما با کرنل‌های Stable خواهد بود. کرنل Development مخصوص برنامه‌نويسان و Debuger های لينوکسه. تا الان که من اين مقاله رو می‌نويسم، آخرين کرنل Stable لينوکس نسخه 2.4.20 و آخرين کرنل Beta نسخه 2.5.5۹ هست. اگر بد شانسی نيارم تا وقتی که شما اين مقاله رو می‌خونين همين نسخه می‌مونه. به هر صورت اگر هم تغيری کرده باشه انقدر کلی نيست که نتونين از اين نوشته استفاده کنيد - با اينکه ممکنه مشکلاتی پيش بياد. اين مقاله بر اساس اين نسخه کرنل نوشته شده , در ضمن تمام حقوق اين مقاله متعلق به وبلاگ http://technotux.mihanblog.com هست ,

بنابر اين اگر کسي احساس ميکنه براي کپي کردن احتياج به اجازه نويسنده داره بايد با

اين آیدی تماس بگيره .


[email protected]

۱) کرنل چه کاری انجام ميده ؟

تقريبا همه کار: کنترل سخت افزار و نرم افزار، کرنل کنترل حافظه کامپيوتر رو هم به عهده داره، کرنل کنترل می‌کنه که نرم‌افزار از فضای تخصيص يافته به خودش استفاده کنه، به نرم افزارها اجازه ميده از سخت افزار ها استفاده کنند و به طور کلی اين کار رو بهتر از ويندوز انجام ميده، خيلی بهتر !

۲) چرا لازمه که کرنل به روز شه ؟

کرنل‌های جديد سخت‌افزارهای بيشتری رو پشتيبانی می‌کنن، سريع‌تر از قبلی کار می‌کنن و Bug های کمتری دارن. اکثر مردم برای پشتيبانی بيشتر از سخت افزارهای مختلف کرنل رو به روز می‌کنن .

کرنل های جديد مخصوصا روی سخت‌افزارهای جديد مثل pcmcia يا Usb متمرکز شدن، به طوری که کرنل 2.4.20 به خوبی Usb2 رو پشتيبانی می‌کنه .

۳) برای Patch/Install کردن کرنل به چه نرم افزارهای احتياج هست ؟

به طور کلی نميشه گفت. از اونجايی که اين نوشته مرجعه پيشنهاد می‌کنم به فايل ReadMe کرنل مراجعه کنيد. طبق Readme کرنل 2.4.20 بهترين GCC برای کامپایل کردن کرنل نسخه 2.95.3 است .

۴) Loadable Module چيست ؟

قستمی از لينوکس که مستقيما به کرنل متصل نيست ولی کاملا هم جدا نيست. يعنی هر وقت که لازم باشه می‌تونين به سيستم عامل متصل يا جداش کنيد .

۵) به چقدر فضا احتياج هست ؟

کرنل 2.4.20 فشرده شده حدود 32 مگابايت حجم داره که بعد از Unzip شدن 137.5 مگابايت فضا اشغال می‌کنه.

۶) کامپايل کردن لينوکس چقدر وقت می‌گيره ؟

با کامپيوترهای جديد امروزی خيلی دچار مشکل نمی‌شيد. من با Athlon 950 درحدود 5 دقيقه کرنل رو کامپايل کردم . طبيعيه که رو کامپيوتر های کندتر اين زمان بيشتر باشه. می‌تونيد رو کامپيوتر سريعی اين کار رو انجام بديد و برای کامپيوتر کندتر بفرستيد .


تنظيم کرنل :

قبل از انجام هر کاری، پيشنهاد می‌کنم از فايلهای مهم هارد BackUp بگيريد. معمولا مشکلی پيش نمياد ولی بی‌احتياطی درست نيست. می‌تونيد از Brs يا حتی Tar استفاده کنيد.

لازمه بدونيد که برای کار بايد اطلاعات کلی از نحوه کار لينوکس/يونيکس داشته باشيد و بدونيد بعضی فايلها کجا قرار گرفتن و چگونه عمل می‌کنن يا ساخته ميشن. ولی از همه مهم‌تر آشنايی با ساختار لينوکسه که Fhs نوشته ميشه. برای اطلاعات بيشتر می‌تونيد ازhttp://www.pathname.com/fhs که مرجع استاندارد Fhs هست استفاده کنيد. معمولا يک Pdf برای Download کردن وجود داره يا می‌تونيد به وبلاگ من ( مرجع غير استاندارد ) سر بزنيد و اطلاعات کلی در مورد Fhs پيدا کنيد.

تقريبا برای هر کاری در ضمينه کرنل لازمه که با Root لاگين کنيد. پس لازمه که دسترسی کامل به سيستم داشته باشيد. برای تنظيم کردن کرنل بايد :

۱) سرس کرنل رو دستکاری کنيد.

۲) کرنل رو کامپايل کنيد.

۳) کرنل رو Boot کنيد.

معمولا سرس لينوکس در /usr/src/linux قرار گرفته. در /usr/src همه سرسهای لينوکس موجوده و اين دايرکتوری linux يک Symbolic Link يا ShortCut به اون دايرکتوريه. مثلا /usr/src/linux لينک شده به /usr/src/linux-2.4.20 . فقط برای راحت‌تر تايپ شدن و آدرس دادن . اگر سرس لينوکس اونجا نبود، بايد از طريق سی‌دی‌های لينوکس نصب يا از اينترنت Download کنيد. در اين حال نمی‌تونيد فقط کرنل رو config کنيد.

دو راه برای Config کردن کرنل وجود داره که بستگی به اين داره که از X استفاده کنيد یا نه. اگر از X استفاده می‌کنيد :

Bash# cd /usr/src/linux

Bash# make xconfig

توجه کنيد که این دستورها فقط تحت Bash کار می‌کنن. از Shell ديگری استفاده نکنيد.

و اگر از X استفاده نمی‌کنيد :

Bash# cd /usr/src/linux

Bash# make menuconfig

می‌تونيد درون X هم از menuconfig استفاده کنيد. من هميشه MenuConfig رو ترجيح دادم .

در هر دو صورت بعد از اين کار محيطی در اختيار شما قرار می‌گيره که از طريقش می‌تونيد کرنل رو config يا دستکاری کنيد. منوها انگليسی و با توضيحات کافی هستند و مخصوصا در xconfig يک دکمه اضافه Help هم وجود داره که خيلی مفيده. به هر صورت من قسمتهای مهم کرنل رو اينجا می‌نويسم. توجه کنيد که همه اينها مربوط به کرنل 2.4.20 هستند و ممکنه با چيزی که کرنل شما ارائه ميده فرق داشته باشن. هر فيلد می‌تونه Y به اين معنی که مستقيما به کرنل چسبيده باشه و M به معنی Module که توضيحاتش داده شد يا N يعنی اينکه اصلا استفاده نشده باشه. توجه کنيد که در menuconfig به جای Y از * استفاده شده .


Loadable Module Support :

تعيين می‌کنه که سيستم از Loadable Module استفاده کنه يا نه.

Processor Type And Features :

تنظيمات Cpu و نوع و امکانات مختلف

General Setup :

حاوی تنظيمات مهمی مثل Network Setup و ... حتما دقت کنيد بهش .

Networking Support :

تنظيمات شبکه .

Networking Device Support :

تنظيمات سخت افزار شبکه. مثلا وقتی يک کابل Host 2 Host داشته باشيد حتما بايد به اينجا سر بزنيد.

MultiMedia Devices :

تنظيمات دستگاهای Multimedia مثل Video Capture ها يا TvCarc ها .

File System :

نحوه کار با فايل سيستم‌های مختلف و اينکه مثلا کرنل به Ntfs چجور دسترسی داشته باشه .

Sound :

کارت صدا ! اگر يک کارت صدای غير عادی داريد و يا مثلا يک کارت صدای 5.1 داريد به اينجا سر بزنيد .

USB support :

تنظيمات Usb و بعضی چيپ های خاص .


خب ! حالا وقتشه که از اديتور خارج بشيد و مواظب باشيد تنظيمات رو Save کرده باشيد . اين کار معمولا يک فايل راهنما برای Compile شدن کرنل ايجاد می‌کنه .

حالا به اين دستورات توجه کنيد:

Bash# cd /usr/src/linux

Bash# make dep

اين Dep ( Dependent ) يک سری لينک و ... رو جمع و جور و آماده برای کامپايل کردن لينوکس مي‌کنه . خيلی طول نمی‌کشه .

حالا لازمه که کرنل Compile شه و فايلهایی که برای Boot شدن سيستم لازمه ساخته شه .

Bash# make bzImage

بعد از انجام شدن اين کار در /usr/src/linux/arch/i386/boot فايل bzImage ساخته ميشه. بهتره اين فايل رو با دسترسی Root به دايرکتوری /boot منتقل کنيد .

اين فايل، فايل Image کرنل و فايليه که BootManager ( ترجیحا Lilo ) ازش برای Boot کردن Kernel جديد استفاده می‌کنه .

Bash# cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage

يا هر اسمی که دوست داريد به جای bzImage ، مثلا MyKernel !


خب ! چقدر از Lilo می‌دونيد؟ فکر می‌کنم بهتر باشه :

Bash# man lilo

رو بخونيد! بستگی به اديتوری که استفاده می‌کنيد داره. از هر چيزی که استفاده می‌کنيد :

Bash# [editor] /etc/lilo.conf

و اين خطها رو پيدا کنيد :

Image=/boot/vmlinuz

Label=linux

Root=/dev/hda1

اين مثاله , ممکنه چيزی که شما می‌بينيد خيلی متفاوت باشه. به هر صورت اون vmlinux همين فايل bzImage ماست که به طور Default توسط لينوکس ساخته شده. بهتره اين Field رو نگه داريد. همين طور Image قبلی رو و همون فيلدها رو در Lilo.conf دوباره بنويسيد يا Copy/Paste کنيد و آدرش Image رو عوض کنيد. مثلا

image=/boot/mykernel

به همين سادگی. فايل رو Save کنيد و سيستم رو Reset .


احتمالا در Boot manager چيزی که به عنوان Label برای Kernel خودتون نوشته ايد مي‌بينبد. بايد روش کليک کنيد تا MyKernel ( your kernel ? ) Boot بشه . احتمال خيلی بالای برای انواع و اقسام مشکلات وجود داره. برای همينه که پيشنهاد می‌کنم اون vmlinuz رو نگه داريد تا بتونيد با يک Reset سيستم رو Restore کنيد .

همين‌طور و به همين روش می‌تونيد از :

Bash# cd /usr/src/linux

Bash# make bzdisk

استفاده کنيد. این دستور يک فلاپی رو به عنوان Boot می‌سازه و برای تست بهتره .


مشکلات احتمالی :

> سيستم در Lilo هنگ می‌کنه .

احتمالا Lilo هارد شما رو Detect نمی‌کنه , يه سری به Bios بزنيد .

> پيغام no init found .

احتمالا شما Root رو در /etc/lilo.conf تنظيم نکرده ايد. خب خيلی هم مشکل ناجوری نيست ! خیلی راحت و ساده با

Bash# df /

ميتونيد پارتيشن Root رو پيدا و Lilo.conf رو اديت کنيد.

> Unresolved symbol error messages

مشکل بر می‌گرده به Module . احتمالا موقع Compile کردن فراموش کرده‌ايد قبل از Image ساختن Module هارو Compile کنيد .


نکات :

#bash make mrproper

همه فايلهای تنظيماتی کرنل لينوکس رو پاک می‌کنه .

#bash make clean

فايلهای کرنل قبلی رو پاک می‌کنه. معمولا رو کرنل های مدرن لازم نيست ازش استفاده کنيد .


نصب کرنل :

هميشه امکان تنظيم کرنل وجود نداره. بعضی وقتها لازمه اول کرنل رو از اينترنت بگيريد و در سيستم نصب کنيد . می‌تونيد آخرين ويرايش کرنل رو از http://www.kernel.org دريافت کنيد .

بعد از Download کردن کرنل، فايل رو به /usr/src منتقل کنيد و اونجا از طريق هر برنامه ای می‌تونيد با دسترسی Root بازش کنيد. مثلا :

Bash# bz2cat linux-Y.X.Z.tar.bz2 | tar –xvf

می‌تونيد Smbolic Link کرنل جديد رو به اسم kernel بسازيد. از اينجا به بعد کارها فرق چندانی با Config کردن کرنل ندارن. فقط چند مسئله مهمه و بايد با دقت بيشتری کرنل رو Config کنيد چون هيچ پيش گزيده ای وجود نداره .

Bash# make xconfig

Bash# make dep

Bash# make bzImage

Patch کردن کرنل :

هميشه لازم نيست برای Update کردن کرنل کل کرنل جديد رو Download کنيد. Patch هم هميشه حدود 5 يا 6 مگابايت حجم دارن و نحوه استفاده از اونها راحته. چيز مهمی که در مورد Patch بايد بدونيد اينه که نمی‌تونيد مثلا با Patch شماره 2-4-19 برای تبديل کرنل 4-18 به 4-19 ساخته شده، پس 4-17 نمی‌تونه با اين Patch تبديل به 4-19 شه .

Patch ها با دستور Patch و با دسترسی Root اينستال ميشن :

Bash# cp patch-2.4.19 /usr/src

Bash# Patch –po patch-2-4-19

ليستی از کارهايی که انجام ميشه رو روی صفحه می‌بينيد. برای اينکه فقط قسمتهای کار نکرده رو ببينيد از

Bash# Patch -S –P0 patch-2-4-19

کرنل Patch خواهد شد و احتمالا فايلی به اسم config.in.rej يا config.rej در /usr/src/linux قرار می‌گيره . از اين مرحله به بعد مثل Config کردن کرنل عمل می‌کنيم .

Bash# make xconfig

Bash# make dep

Bash# make bzImage


Faq :

۱) Parallel Port کار نمی‌کنه .

قسمت General Setup و Parallel Port Support رو چک کنيد .

۲) کرنل کامپايل نميشه .

احتمالا مشکل بر می‌گرده به Patch ناجور. خيلی Patch های غير استاندارد وجود داره که توصيه نميشه نصب کنيد. اگر مشکل ديگری باشه با نگاهی به فايل README حل ميشه .

۳) Kernel بوت نمی‌شه .

احتمالا Lilo نصب نشده يا Bootmanager کارش رو درست انجام نميده .

۴) فراموش کرده‌ايد از Lilo استفاده کنيد .

بهترين کار استفاده از يک Rescue Floppy يا به هر نحوی Boot کردن لينوکس بدون استفاده از Lilo خواهد بود. لينوکس‌های مدرن با استفاده از Cdrom های خودشون هم Boot ميشن .

۵) “Not a compressed kernel image file”

احتمالا از vmlinuz برای Boot شدن استفاده کرده‌ايد . بايد از /usr/src/linuxXXXX/arch/i386/boot/bzImage برای Boot کردن کرنل خودتون استفاده کنيد .

بی‌شک کرنل لينوکس پيشرفته تر و بهتر از اونه که بشه فقط از يک راه نصب يا Config اش کرد. من می‌دونم راههای ديگری هم برای اين کار وجود داره!

به عنوان آخر مقاله چند تا آدرس برای اطلاعات بيشتر در اخيارتون بگذارم . /usr/src/linux/arch/i386/config.in مرجع خوبيه برای اطلاعات در مورد Config کردن کرنل .

www.tldp.org < Sound howto, scsci howto ,net howto ,PPP howto,PCMcia howto Hardware howto , Kernel Analysis
منبع نمیزنم چون وبلاگ خودمه نویسندشم خودمم :shock:
امیدوارم آموزش مفید بوده باشه ..
 
آخرین ویرایش:

Old User

Member
من خیلی کم با لینوکس کار کردم ... با خوندن مقاله چندتا سوال برام پیش اومد ؟

اون Brs چیه؟ منظورتون نوعی زیپ کردنه؟

vmlinuz همون vmlinux هست یا فرق داره؟؟

یه جا اول مقاله نوشتید pcmciaیا USB ، میشه بگید Pcmcia چیه من اصلا نشنیده بودم ...؟؟


تشکر از مقالتون ...
 

D.c0d.r

Member
من خیلی کم با لینوکس کار کردم ... با خوندن مقاله چندتا سوال برام پیش اومد ؟

اون Brs چیه؟ منظورتون نوعی زیپ کردنه؟

vmlinuz همون vmlinux هست یا فرق داره؟؟

یه جا اول مقاله نوشتید pcmciaیا USB ، میشه بگید Pcmcia چیه من اصلا نشنیده بودم ...؟؟
...
من خیلی سریع براتو سوالاتون جواب میدم .....
در مورد سوال اولی بله اونم یه نوع زیپ کردنه ..
در مورد سوال دوم بهتون بگم که فکر نکنم فرقی داشته باشه ...
سوال سوم براتون ایشاالله براتو کامل توضیح میدم الان یه خورده عجله دارم اگه براتو شکی باقی موند به این سایت سر بزنید خودتون متوجه میشید ..
http://www.pcmcia.org
اگه باز جایی برات جا نیوفتاده کامل توضیح بدم که مشکل تون حل شه با تشکر :oops: :oops:
 

Old User

Member
1)خیلی ممنون به خاطر معرفی سایت ...

2) Tar با Brs چه فرقی داره؟؟

3)
در مورد سوال دوم بهتون بگم که فکر نکنم فرقی داشته باشه ...

:neutral: ولی بنظر میاد فرق داره !! vmlinux درستشه نه ؟؟

تشکر:wink:
 

oxygenws

Active Member
۱- میشه لینکی از Brs بدی؟؟؟؟ نشنیدم تا حالا!!!!
۲- یه فرق کوچیک داره، vmlinux فشرده نیست و vmlinuz با zlib فشرده شده.
۳- PCMCIA به کارت هایی که به لپتاپ ها می خوره می گن... در حقیقت اسم یک «درگاه» بوده (مثل PCI یا AGP یا ...)
 

D.c0d.r

Member
۱
- میشه لینکی از Brs بدی؟؟؟؟ نشنیدم تا حالا!!!!
اگه با کرنل لین.کس خوب کار کرده باشی حتمآ میدونی ....
یه مثال میزنم بفهمید مثلآ یه فال داریم با پسوند brs.4.00.l1.tar.gz
Installing brs
سوال دیگه دارید بپرسید ..؟؟؟:oops: :oops:
 

جدیدترین ارسال ها

بالا