الفصل الثاني
إعداد العتاديات Hardware Configuration

1- دعم الذاكرة Memory Support:

إن ذاكرة النظام ذات الوصول العشوائي RAM هي أول ما يتم كشفه من قبل نظام الدخل/الخرج الأساسي BIOS . وتستطيع نواة لينكس التعرف على كافة أنواع ذواكر الوصول العشوائي (EDO ،DRAM و SDRAM).

يمكن أن تواجه بعض المشاكل مع العتاديات القديمة عندما لا يستطيع نظام الدخل/الخرج الأساسي BIOS كشف الذواكر بحجم 64MB أو أكثر، تحتاج في هذه الحالة إلى تمرير وسائط إلى النواة عند الإقلاع.

في حال استخدام برنامج LILO فيجب إدخال ما يلي في الملف /etc/lilo.conf:

append="mem=<amount of ram>M" 

وتذكر أن تقوم بتنفيذ /sbin/lilo.

أما إذا كنت تستخدم برنامج GRUB فعليك إضافة ما يلي إلى الملف /etc/grub.conf عند السطر الذي يبدأ بكلمة kernel :

kernel vmlinuz mem=<amount of ram>M 

2- توزيع الموارد Resource Allocation:

حتى تسمح للطرفيات والتجهيزات على حاسبك بالاتصال مباشرة مع موارد النظام، وبشكل خاص مع المعالج CPU، فإن النظام يقوم بتوزيع الموارد على شكل خطوط وأقنية لكل جهاز. هذه الموارد هي : خطوط طلب المقاطعة IRQ، عناوين الدخل/الخرج I/O Addresses، وقنوات الوصول المباشر للذاكرة DMA.

استعراض الموارد الموزعة Listing Allocated Resources:

تحتفظ الذاكرة بالمعلومات المتعلقة بالموارد الموزعة في الدليل /proc والملفات ذات الصلة بذلك هي:

/proc/dma
/proc/interrupts
/proc/ioports
/proc/pci

يمكن استعراض الموارد الموزعة أيضاً باستخدام أدوات برمجية مثل lspci و dmesg :

lspci: تقوم بعرض معلومات الرقاقة لكل المكونات المربوطة عن طريق المنفذ PCI، وتعرض إعدادات الدخل/الخرج وكذلك IRQ باستخدام المؤشر -v. ولاحظ أيضاً أن الخيار -b (اختصاراً للناقل BUS)يقوم بعرض الموارد الموزعة عن طريق نظام الدخل/الخرج الأساسي BIOS بدلاً من النواة.

dmesg: تقوم بعرض رسائل النواة التي تم تسجيلها أثناء الإقلاع. تقوم النواة بمسح كافة العتاديات في النظام وتستطيع بشكل تلقائي أن تحدد برامج القيادة drivers التي ستشغل التجهيزات تبعاً للرقاقات الموجودة ضمن الحاسب. وهذه الرسائل متاحة أيضاً في: /var/log/dmesg.

الموارد النموذجية (المنافذ) Typical Resources:

تركيبات مسبقة الضبط من أرقام IRQ وعناوين I/O أنشأتها IBM من أجل الأجهزة التسلسلية COM والتفرعية LPT. علماً بأنه يمكن تعديل أرقام IRQ و I/O لاحقاً من البيوس.

الجهاز Device منفذ الدخل/الخرج I/O Port طلب المقاطعة IRQ
/dev/ttyS0 0x03f8 4
/dev/ttyS1 0x02f8 3
/dev/lp0 0x378 7
/dev/lp1 0x278 5
soundcard 0x220  

توزيع الموارد يدوياً:

ملاحظة: إن هذا المثال شائع جداً، على أية حال فإن الوحدات البرمجية للنواة kernel modules ستتم مناقشتها فقط في امتحان LPI 102 ، وقد يجد البعض صعوبة في هذا المثال، لذلك يمكن تجاوزه والانتقال مباشرة إلى الفقرة 3.

مثال: إعداد بطاقتي شبكة (إيثرنت):

أ- من أجل الوحدات البرمجية المترجمة بشكل ساكن statically compiled modules:

فيمكن أن يتم تمرير وسائط إلى النواة أثناء الإقلاع. وكمثال نموذجي على ذلك عندما يتواجد بطاقتا شبكة (إيثرنت) ضمن الحاسب، لكن يتم كشف البطاقة الأولى فقط فإن السطر التالي:

ether=10,0x300,eth0 ether=9,0x340,eth1 

يخبر النواة بأنه:

قم بكتابة السطر السابق عند موجه أوامر ‘boot:’ في LILO/GRUB ، أو كما فعلنا سابقاً في إعدادات الذاكرة قم بكتابة:

/etc/lilo.conf (append= statement استخدم)

أو:

/etc/grub.conf 

لاحظ أن ether= statement هو أمر عام في النواة مشابه لكل من : root= و mem= و init= .

كذلك لاحظ بأنك لا تحتاج إلى تحديد أية معلومات حول بطاقة الشبكة (مثل الشركة المصنعة Intel, Netgear... إلخ).

ب - من أجل الوحدات البرمجية المترجمة بشكل ديناميكي dynamically compiled modules:

فإنه يمكن تحديد إعدادات عناوين IRQ و I/O باستخدام /etc/modules.conf (أو /etc/conf.modules).

في المثال السابق بافتراض أن كلتا البطاقتين تستخدمان وحدة النواة البرمجية e100.o فإن الملف /etc/modules.conf سيحوي ما يلي:

alias eth0 e100 
alias eth1 e100 
options eth0 io=0x300 irq=10 
options eth1 io=0x340 irq=9