4.7 كيف تبني نواة لينكس ال kernel
اقتباسات هذا الفصل:
- "'لا تستطيع استعمال حاسوب دون أن تصنف نواة نظام التشغيل بيديك'
من يخرق هذا القانون سوف 'يعاقب' بالكثير من المشاكل الحاسوبية!!"
-- Alavoor Vasudevan (المعروف باسم AlDev)
- "يجب أن نصل إلى الحالة التالية ‘فقط ركب نواة حديثة وفجأةً سيتسع نظام الملفات
إلى 20% مساحة إضافية بنفس السعر!‘ (...)"
-- لينوس تورفلدز على LKML.
محتويات هذا الفصل:
4.7.1 لماذا أفعل هذا
بناء نواة لينكس تجربة مسلية جدا
وعلى كل من يريد أن يسمي نفسه مستخدم لينكس محترف أن يجربها
ليس لأنها صعبة بل ليعرف كل تلك الأشياء التي تقوم بها النواة
وعلى أي حال هذه أهم الأسباب
- قمة الموثوقية والأمان لأنك تبنيها بيديك
- تتعرف على خفايا لم تسمع عنها من قبل أثناء تحديد الإعدادات
- تحصل على نواة جديدة من الجيل الجديد قبل أن تنزل توزيعة تحملها
وتتمتع بالمزايا قبل الآخرين
- بعض التعريفات بحاجة إلى نواة جديدة أو يكون الدعم أقوى
في النواة الجديدة مثلا تعريف الصوت ALSA في أنوية 2.6
بدلا من OSS الذي يعطيك المزيد من الفعالية لبطاقة الصوت
وتعريف ntfs فيها في طور الكتابة أيضا آمن
- قد تضطر أن تركب نواة قديمة من أجل برامج تعريف لأجهزة منقرضة
مثل مودم موتورولا SM56 الذي توقفت عن انتاجه وتطوير تعريفاته
فهو لا يعمل سوى على أنوية 2.4.5 فقط
- تستطيع أن تعمل نواة صغيرة أو سريعة بحسب احتياجاتك
والتحكم بأي التعريفات ستكون داخل النواة وأيها تكون وحدات مضافة
modules وأيها غير موجودة
- وجود الملف المصدري للنواة يساعدك أحيانا كثيرة
لأنه يحتوي على شروحات وملفات مساعدة إضافة إلى التعليقات
داخل ملفات ال C
4.7.1 من أين أحصل عليها
يمكنك الحصول على نواة قديمة نسبيا مع التوزيعة
أما للحصول على أي اصدار تريد يمكنك
تنزيلها من موقع
www.kernel.org
حيث ستجد ما تريد، لاحظ أن الحزمة لا تسمى kernel بل linux.
4.7.3 لنبدأ
انسخ الملف المضغوط وفك ضغطه في المجلد /usr/src/linux
إذا كان هناك أكثر من نواة أو كانت في مكان آخر اعمل وصلة بأمر ln إلى ذلك المكان مثلاً بالأمر
cd /usr/src; ln -s linux-2.4.22 linux.
قم بازالة الملفات غير الضرورية make clean ; make mrproper
حتى لو لم تكن موجودة.
، انسخ الإعدادات من مرات سابقة أو اعمل
إعدادات جديدة بواسطة قائمة نصية make menuconfig
أو رسومية بشعة make xconfig ،
اعمل الملفات والأدوات التي يحتاجها make dep
واعمل النواة ب make bzImage
وهذا يأخذ وقت طويل ،
وفي نفس الوقت اعمل الملفات الإضافية modules وذلك ب
make modules
وتركيبها (نقلها إلى الدليل المناسب) وذلك ب make modules_install
عند انهاء العملية اضف الخيار إلى lilo/grub
وأعد تشغيل الجهاز
اذا كان كل شيء على مايرام تستطيع حذف الملفات الزائدة،
واذا كنت تريد توزيعها تستطيع عمل ملف rpm.
هذه الأوامر (جربها أولاً دون nohup إذا كنت لم تتعامل مع هذه الأداة) ،
bash$ su
bash# cd /usr/src
bash# ln -sf linux-2.4.24 linux
bash# cd linux
bash# pwd
/usr/src/linux
bash# make clean ; make mrproper
bash# make menuconfig
bash# make dep
bash# nohup make bzImage &
# you can see the file nohup.out by tail -f nohup.out
bash# nohup make modules 1> mod.out 2> mod.err &
# to check the progress tail -f mod.out or tail -f mod.err
# wait to finish making the modules then type
bash# make modules_install
# wait to finish making the kernel then type
bash# cp /usr/src/linux/arch/i386/boot/bzImage /boot
# remove intermedite files do
bash# make clean
# if you wnt you can make rpm
bash# make rpm
فشلت لماذا؟ انظر الرسالة على الشاشة أو في ملف nohup.out وحدد السبب.
إذا طلب منك حزمة معينة فتأكد أن تكون هي وحزمة التطوير الخاصة بها مركبة
مثلاً ncurses و ncurses-devel (أو ncurses-dev) وهكذا.
طبعاً إضافة لمصنف سي و سي++ ومكتبتهما glibc-devel ...
تلميح
يمكنك اعطاء اسم فريد للنواة التي أعددتها بفتح
ملف Makefile
وتحرير سطر وعدل قيمة ال
EXTRAVERSION
تلميح
استبدل كل bzImage ب zImage لعمل نواة عادية مضغوطة بطريقة z
(أي vmlinuz)
بدلا من النواة العملاقة المضغوطة بطريقة bz2
تلميح
يمكن تسريع عملية التصنيف بوضع الخيار -jN
حيث N هي عدد مثلاً make modules -j2
حيث سيتم تشغيل عمليتان process مصنفان compilers دفعة واحدة.
رقم N الذي تنصح به بعض وثائق HOWTO (TLDP) عند تصنيف modules هو ححم الرام
بالميغا مقسوم على 8 ثم جمع واحد.
4.7.4 اختيار الإعدادات
هذه أهم الملاحظات
- اختيار نوع المعالج ليتناسب مع الذي لديك
مثلا Pentium I سيعمل على Pentium IV وليس العكس
ولكن الأخير سيعمل بشكل أسرع من الأول
- اختر SMP إذا كنت تريد أكثر من معالج !!
- تأكد من طلب دعم modules وهي وحدات اضافية يتم تحميلها وقت الحاجة فقط
أي عند استخدام الجهاز الذي تعرفه وعند انهاء عمله تزال من الذاكرة
يجب أن تتأكد من اختيار
‘kernel module loader‘ و ‘loadable module support‘
إلا إذا كنت تعرف بالضبط ماذا تفعل.
- ضع دعم للأنظمة ext2 و ext3 و vfat و msdos و minix
كجزء من النواة وليس وحدة اضافية أما الأنظمة الأخرى مثل reiserfs
و ntfs و hpfs و jfs و xfs لأنها نادرة الإستخدام
ضعها على شكل وحدات اضافية ولا تحذفها
- إذا كان برنامج menuconfig لايظهر بشكل مناسب مناسبة
اكتب export TERM=linux أو
export TERM=ansi
ثم نفذه من جيد وإذا لم تعجبك فكرة القوائم النصية جرب
make xconfig
|