كيرنل

درسنا اليوم سوف يكون معقدا بعض الشئ لكن بإذن الله سوف أحاول أن أتتطرق لكل الأركان و بطريقة مبسطة

النواة أو noyau أو Kernel هو قلب النظام , فهو الذي يتوسط بين البرامج و قطع الجهاز (Applications et Matériel) . فهو مثلا الذي يتحكم بذاكرة النظام , هو الذي يطبق الأوامر الآتية من المستخدم , و العديد من الوظائف الأخرى.

الكيرنل يتكون من جزء (partie statique) و التي يمكن أن نظيف لها وحدات إضافية بكل سهولة. هذا الجزء يستعمل عند تشغيل النظام و يبقى محملا في الذاكرة إلى أن نطفئ الجهاز في حين أن الوحدات الإظافية (modules) فيقع تحميلها عند تشغيل النظام فقط و يمكن الرجوع إليها بدون مشاكل.

سيسألني البعض لمذا نقوم بعمل compile للكيرنل ?

يعود ذلك للعديد من الأسباب منها :

– عندك قطعة أو كرت (كرت شبكة مثلا) و لم يتعرف عليها الكيرنل إلا مع النسخة الجديدة.
– تم إكتشاف ثغرة في الكيرنل الحالي و تم إصلاحها في النسخة الجديدة.

هناك العديد من الأسباب الأخرى التي تدفعنا للقيام بهذه العملية.

أي كيرنل يستحق أن نعمل compile له ?

نبدأ أولا بمعرفة نسخة الكيرنل التي لدينا بكتابة

كود:
uname -sr

سوف نتحصل على نتيجة من هذا النوع

كود:
Linux 2.6.16
اقتباس:
Les noyaux sont numérotés depuis le 2.6.11 sur 4 nombres w.x.y.z. Ce dernier numéro est facultatif, il représente la correction d’un bug important ne pouvant attendre la prochaine version. Le plus souvent ce sont des problèmes de sécurité ou des bugs qui altèrent les données. Il est aussi à noter que la différenciation stable/instable via le numéro de sous-version pair/impair a été abandonnée au profit d’un modèle de développement plus souple. Le noyau continue constamment à évoluer en fusionnant des branches plus expérimentales de temps à autres.

هناك العديد من النسخ التي تحتوي على بعض التغييرات من اللتي أصلحت بعض أخطاء النسخة السابقة , ومنها التي أصلحت ثغرة في سلامة النظام و منها ما هو مخصص لبعض الأجهزة. و الأفضل هو تنصيب الكيرنل المخصص للنسخة التي تستعملها و ذلك عبر تحديث الباكيدج المخصصة لذلك.

هاهو الموقع الرسمي الذي يحتوي على جميع نسخ الكيرنل kernel.org

أوامر compile الكيرنل على مختلف الأنظمة

كود:
# urpmi kernel-headers kernel-source

 

كود:
# yum install kernel-source

 

كود:
# apt-get install kernel-headers-$(uname -r) kernel-source-$(uname -r)

 

كود:
# apt-get install linux-headers-N°_de_noyau linux-source-$(uname -r)

كود:
# installpkg /où_est/kernel-source-2.6.x.tgz /où_est/kernel-headers-2.6.x.tgz

 

كود:
# emerge gentoo-sources

بادأ ببدأ يجب علينا معرفة عتادنا و القطع الموجودة بجهازنا لأن لها أهمية كبيرة عند القيام بعملية الكومبيل.

مثلا الأمر lspci المتأتي من pciutils و الذي يمكننا من معرفة القطع المتصلة عبر المنفذ PCI
و الأمر lsusb المتأتي من usbutils و الذي يمكننا من معرفة القطع المتصلة عبر المنفذ USB

هناك أيضا برنامج Hwinfo الذي يمكننا من معرفة العديد من المعلومات حول الجهاز.

قبل المرور للمرحلة المعقدة يجب أن يكون لديك l’environnement de développement
gcc أو make

و أن يكون لديك أيضا fichiers de développement des bibliothèques التي سوف نستعملها للإعدادات

curses أو tcl/tk أو Gtk أو Qt

و أيضا التمتع بصلاحيا المستخدم الخارق ROOT

بعد تحميل الكيرنل أو تنصيب الباكيدج الخاصة بنسخة لينوكس التي تعمل عليها نمر إلى الcompile

بالنسبة لتحضير المصدر هناك طريقتان :

– إما أن نفك ضغط الملف الذي حملناه من الموقع kernel.org داخل المجلد

كود:
~/devel/kernel/

– أو إعطاء تصريح للباكيدج الخاص بالنسخة لكي نستطيع القراءة و الكتابة فيما بعد.

هناك العديد من الواجهات الرسومية للقيام بهذه العملية و كل واجهة تعتمد على ملف تطوير خاص بمكتباتها (fichiers de développement correspondant à la bibliothèque qu’elle utilise) و اللتي سبق ذكرها سابقا (ncurses, Qt, Gtk+).

الواجهة الرسومية لncurses

أكتب

كود:
make menuconfig

الواجهة الرسومية لQt

أكتب

كود:
make xconfig

الواجهة الرسومية لGtk+

أكتب

كود:
make gconfig

الخيارات الموجودة :

الخيارات اللتي أمامنا توافق كل منها لوظيفة معينة يمكن تشغيلها أو إطفئها حسب ما نحتاج له. سوف أشرح هنا الخيارات الرئيسية و وظائفها

اقتباس:
ملاحظة : بإختلاف نسخ الكيرنل هناك العديد من الخيارات التي تتبدل لكن وظائفها تبقى مماثلة

Code maturity level options

هذا الخيار يمكنا من إخفاء و إظهار آخر الوظائف اللتي هي في طور التطوير و اللتي تعتبر غير مستقرة .

General setup

هي مجموعة من الخيارات العامة لنظامك

Loadable module support

هي خاصة بإدارة الوحدات (gestion des modules)

Block layer

هي entrées/sorties للكرت الأم لا يجب لمسها

Processor type and features

خيار خاص بنوع المعالج x86, Sparc, hyper-thread, dual-core, SMP …

Power management options (ACPI, APM

خيار خاص بالتحكم في إستعمال الطاقة و ACPI/APM

Bus options (PCI, PCMCIA, EISA, MCA, ISA)

خيار خاص بتعديل أماكن قطع الجهاز من نوع PCI, PCMCIA, ISA

Executable file formats

إدارة الملفات executable : الخيار ELF يجب أن يكون دائما Y

Networking

خيار خاص بالبروتوكولات المعتمدة من النواة

Device Drivers

خيار خاص بتعريفات القطع (هنا يمر أغلب الوقت)

File systems

خيار خاص بنظام الملفات المعتمد من خلال النواة

Kernel hacking

خيار خاص بتصحيح أخطاء النواة

Security options

خيار خاص بنظام الحماية للنواة

Cryptographic options

خيار خاص بخوارزميات الترميز (Algorithmes cryptographiques) اللتي يمكن إظافتها للنواة

نمر الآن إلى المرحلة الحساسة و هي تعديل الخيارات و الوظائف :

اقتباس:
ملاحظة : إذا كانت هذه أول مرة تقوم بعمل compile للنواة أنصحك بتصفح جميع الخيارات الواحد تلو الآخر و قرائة ملفات الإعانة AIDE و التمعن فيها

لكل خيار يمكن أن نجيب ب :

Y = YES
N = NO

M = أن نترك الخيار تلقائيا يعني أنه حين تحتاجه النواة تستخدمه و إلا يبقى غير مفعل

لبدأ عملية الcompile يكفي أن نكتب هذا الأمر

كود:
make

هذه العملية ستتطلب بعض الوقت بالإعتماد على سرعة المعالج الذي تستعملونه

مثلا إذا كنت تملك معالج من Dual-Core أكتب

كود:
make -j 2

أو إذا كان من نوع Core – 2 – DUO يعني أربعة معالجات أكتب

كود:
make -j 4

ليتم تقسيم العمل على كل المعالجات بالتساوي

بعد هذه العملية اللتي تتطلب من 40 دقيقة إلى ساعتين و نصف حسب سرعة المعالج , سوف نقوم بإعادة تنصيب النواة من جديد

يكفي كتابة

كود:
su -c 'make modules_install && make install'

هذا الأمر يجب أن ينفذ من خلال صلاحيات RooT . يكفي الآن تعديل خيارات Boot Loader ليتمكن النظام من البدأ في المرة القادمة

اقتباس:
ملاحظة : يجب عليكم الإبقاء على الأقل على نواة قابلة للإستخدام و العمل الصحيح إذا كنت غير متأكد من النواة الجديدة اللتي ستنصبها

الملف.config

كل الإعدادات التي تقومون بها مسجلة في هذا المجلد لذا أنصحكم بعمل نسخة إحتياطية منه ووضعها في مجلد على حدى أو في مجلد النواة الجديدية لكي لا تظطر لإعادة الكتابة من جديد.

أرجو أن أكون قد تعرضت لكل النقاط كما أنصح بالبحث جيدا عن الوثائق المتعلقة بنسخة النواة اللتي تعتمدونها و نسخة اللينوكس المنصبة عندكم قبل القيام بأي خطوة

1,188 مشاهدة