Home Previous Up Next4.3 نظرة تشريحية
حول
المحتويات
مشاريع
ثواب
مقالات
تنزيل
English

4.3 نظرة تشريحية :لينكس تحت المجهر

محتويات هذا الفصل:

4.3.1 نظام الإدخال والإخراج الأساسي BIOS

عند تشغيل الحاسوب يتم تشغيل BIOS نظام الإدخال والإخراج الأساسي يقوم بعد الرام وفحص الأشياء الأساسية. ثم يبحث ال BIOS عن برنامج الإقلاع بتسلسل معين يحدده برنامج إعداد ال BIOS وغالباً ما يكون القرص المرن فالمدمج فالصلب أو في الأجهزة الأكثر أماناً الصلب أولاً، ولكن أين وعن ماذا يبحث؟ في أول قطاع من كل قرص يوجد منطقة اسمها Boot record أي سجل الإقلاع يتم قراءة ذلك القطاع والتأكد من أنه يحمل توقيع ( يسمى Magic Num ) فإذا وجده وضع القطاع في الذاكرة ونفذه إذا لم يجده انتقل إلى القرص التالي وإذا لم يجده أبداً يطبع رسالة تفيد ذلك. بالنسبة للأقراص الصلبة فإن كل قسم منها يحتوي على مثل هذا السجل ولكن لا يتم قراءة أي منها لأن هناك سجل اضافي للقرص كاملاً يسمى سجل الإقلاع المتسيد Master Boot Record وللاختصار MBR هو الذي يتم قراءته. يحتوي ال MBR على برنامج صغير جدا ( محدود بحجم القطاع وهو 512 بايت) يسمى Boot loader وبالتحديد first stage boot loader

يمكنك أن تصل قرصين صلبين على الحزام الواحد بمقبس IDE على اللوحة الأم، ويوجد عادةً متسع على اللوحة الأم لوصل حزامين أي أنك تصل 4 أقراص باللوحة الواحدة (دون اضافات) تكون مقابس IDE مرقمة الرقم الأصغر يسمى primary أولي والتالي يسمى secondary ثانوي ، ولكن كيف تحديد أي القرصين المرتبطين مع الأولي يأتي أولاً؟ يتم اختيار ترتيب الأقراص المرتبطة على الحزام الواحد بطريقة فيزيائية باستعمال Jumper وهو قطعة معدنية مغلفة بعازل توضع في مكان محدد على القرص الصلب فتوصل دارات لتحدد فيما لو كان القرص سيد Master أم عبد Slave. تكون طريقة وضع ال Jumper مطبوعة على القرص نفسه وتحددها الشركة الصانعة. القرص الذي يبحث في BIOS عن MBR هو Primary Master أي hda فقط.

في لينكس نسمي القرص الأولي السيد Primary Master باسم hda والعبد الأولي Primary Slave باسم hdb والسيد الثانوي hdc والعبد الثانوي hdd ونسمي القسم الأول من hda باسم hda1

في كل مرة تشبك قرص أو تبدل قرص مكان قرص عليك الدخول على برنامج إعداد ال BIOS لتعريفه وبعض أنواع ال BIOS يمكن إعدادها بحيث تفحص نوع القرص تلقائياً في كل حالة اقلاع ولكن هذا يأخذ وقتاً على أي حال لينكس ليس بحاجة لل BIOS فهو يعرف الأقراص تلقائيا حتى لو لم يعرفها ال BIOS وبوقت أقل من ال BIOS ولكن هذا الإجراء لنظام ويندوز ، إذا لم تكن تتعامل معه ضع كل الأقراص عدا قرص لينكس غير موجودة في BIOS!!

4.3.2 برامج الإقلاع Boot-Loaders

قد يكون برنامج ال boot-loader برنامج يسألك اي الأنظمة تريد أن تقلع مثل برنامج BootMagic الشهير وغيره ولكن في ويندوز أو دوس يكون غبي وغير تفاعلي لديه عنوان command.com و io.sys و msdos.sys يقوم يتحميلها وتنفيذها فقط دون أن يأخذ بعين الإعتبار الأقسام الأخرى والأنظمة الأخرى كما لا يمكنه تمرير أي معلومات للنظام لهذا نقول أن ويندوز ليس Multi-boot system وأكثر من ذلك فإن له العيوب التالية:

  • يعجز ويندوز ودوس عن الإقلاع إذا تم لمس أي من هذه الثلاث ملفات حتى لو شطبتها ثم أعدتها لأن برنامج boot loader الخاص به يخزن موقع الملفات باحداثياتها (اسطوانة/قطاع/رأس) حيث أن نظام الملفات في نظام التشغيل غير موجد والBIOS لا تتعامل مع ملفات بل فقط (اسطوانة/قطاع/رأس)
  • يجب أن تكون هذه الملفات في أول قسم (من أول قرص) مرئي لنظام دووس أو ويندوز (يعني الذي يسمونه السي)، إذا قمت بتركيب ويندوز في مكان آخر فإنه سيضع بعض الملفات على السي فإذا قمت بتهيئة (أي format ) السي فان الويندوز الذي على الدي سوف لن يقلع.

في لينكس فهناك برامج مثل lilo و grub و syslinux و isolinux . أولها LILO (أي LInux LOader) هو الأكثر انتشارا ويمكنه عمل قائمة نصية أو رسومية بدقة 640 في 480 ب 16 لون BMPأو 320 في 200 لون PCX يمكنه تحميل لينكس وتمرير معلومات له وتحميل ويندوز وعمل بعض الخدع لويندوز مثل الإقلاع من قرص افتراضي (الدي أو الإي) عن طريق اخفاء القرص الأساسي ( السي ) ولكن عند اجراء أي تعديل على أي من الملفات التي يستعملها مثل الصورة فانه يتوجب عليك إعادة تركيبه بتنفيذ lilo و أنت جذر ليجدد معلوماته ويأخذ الاحداثيات الجديدة للملفات.

grub (من GNU ) وهو برنامج يهدف أولا للقضاء على lilo أو استبداله وثانياً إقلاع لينكس يوفر الكثير من المزايا اضافة لما يوفره lilo مثل الكذب على ويندوز باخفاء الأقسام وإمكانية تمرير معلومات ليس إلى لينكس فقط بل وإلى انظمة اخرى مثل OS/2 و شبيهات unix مثل GNU/Hurd و FreeBSD. ويمكنه الدخول إلى أنظمة الملفات fat و ext3 و ext2 وغيرها أي لا ضرورة لإعادة تركيبه عند تعديل الصورة أو الملف الخيارات ويمتاز بأنه يستطيع إقلاع أنظمة غير موجودة في القائمة

SysLinux يستخدم لإقلاع قرص الإنقاذ فهو يستطيع الدخول إلى نظام الملفات fat أما isolinux يستخدم لإقلاع القرص المدمج وهما غير شائع للحالات العادية

loadlin برنامج يعمل في ظل دوس ولا يعمل في ويندوز يستطيع وضع نواة لينكس في الذاكرة ثم ازالة كل شيء عدا ذلك ثم الاقلاع وهو يستعمل للذين لا يريدون اعادة تقسيم القرص الصلب وتغيير ال boot loader ويأتي مع بعض التوزيعات مثل SOT

يمكن للينكس الإقلاع دون boot loader ولكن ستخسر امكانية تمرير بعض المعلومات له إذا أردت تجربة ذلك ضع قرص مرن ثم اكتب في لينكس الأمر التالي

bash# dd if=/boot/vmlinuz of=/dev/fd0 bs=1024
ثم ضعه في السواقة وأعد تشغيل الجهاز سوف تقلع النواة ثم تعطي رسالة
kernel panic : can't find root file system
وهي تعني أن لينكس الذي وضعناه على القرص المرن لايحتوي على نظام ملفات ( وهو نظام ext3 أو ext2 أو minix يحتوي على البرامج الأساسية مثلinit او sh ) أعد تشغيل الجهاز

4.3.3 نواة النظام kernel

النواة تكون عادة موجودة في مجلد boot وهي نوعان vmlinuz او bz2Image تبعا لطريقة الضغط المتبعة ملفات bz2 تستخدم للأنوية العملاقة التي تحتوي الكثير من التعريفات أو كل التعريفات عادة يكون الملف vmlinuz هو وصلة لإصدارة محدد من النواة مثلاً vmlinux-2.4.24 هذه أمثلة على بعض اسماء الأنوية

/boot/vmlinuz
/boot/vmlinuz-2.4.18
/boot/vmlinuz-2.4.20-mdk-9
/boot/bz2Image
/boot/bz2Image-2.4.18
/boot/bz2Image-2.4.20-ErrorMsg-3
الرقم 2.4.18 يشير إلى رقم الإصدارة وإذا كان الأوسط زوجي فهذا يعني أنها نواة مختبرة ومستقرة (بإدارة لينوس) أما إذا كان فردي (ربما بإدارة Alan Cox) فهذا يعني أنها قيد التجريب لإضافة مزايا جديدة
vmlinuz-2.5.56 هي نسخة تجريبية
vmlinuz-2.4.21 مستقرة
من الجدير بالذكر أن هناك ملف اسمه vmlinux ينتهي ب X وليس ب Z هو عبارة عن ملف بيني ( يمكن شطبه ) ربما تجده في RH لا اعلم لماذا لا يشطبونه

4.3.4 تمرير معلومات للنواة

بعد أن يحمل برامج الإقلاع boot loader النواة يمرر لها بعض الخيارت ثم ينفذ النواة وكل خيار لم يتم ذكره يستعمل القيم الإفتراضية لمعرفة القيم الإفتراضية أو تغيرها استعمل هذه الخمسة أوامر rdev و swapdev و ramsize و vidmodeو rootflags التي تعني

  • rdev : root device
  • rdev : swap device
  • ramsize : ram disk size (0 if non)
  • vidmode : vedio mode (for text console)
  • rootflags: mount root disk ( read only ) or ( read & write )
لتعرف المزيد نفذ.
bash$ man rdev
bash$ rdev /boot/vmlinuz

يستخدم قرص الرام لعمل rescue disk أو لإضافة تعريفات لأشياء ضرورية قبل تحميل نظام الملفات الجذري مثلا النواة في RedHat 8.0 لا تدعم ext3 والنظام الجذري هو ext3 فكيف يمكن أن يقرأ نظام الجذري الطريقة أنه يعمل صورة لقسم صغير من نوع ext2 المدعوم من النواة يحتوي على تعريف ext3. تسمى initrd أي قرص الرام الاستهلالي init ram disk. يمكن عمل initrd بواسطة mkinitrd أو يدوياً كما في عمل ram disk في الفصل التالي. وعلى الرغم من كون initrd هو ram disk إلى أنها لا يمرر عن طريق rdev بل عن طريق برنامج الإقلاع lilo مثلاً مما يعني أن برنامج هو المسؤول عن تحميله باستخدام ال BIOS لقراءة هذا الملف وتمريره للنواة. بعد أن تضمه النواة على أنه الجذر يتم تنفيذ ملف linuxrc الذي يفترض أن يحتوي على العمليات اللازمة لتمكين النواة من رؤية النظام الجذري الحقيقي مثل تحميل تعريف ext3 عبر modprobe في حالة أن النواة لا تحتوي تعريفاً مثبتاً فيها له أو تحميل تعريف الإيثرنت و أخذ عنوان (عبر dhcp) تمهيداً لضم نظام جذري عبر الشبكة NFS أو عمل losetup لإعداد إلى ماذا يشير جهاز /dev/loop0 وما نوع التشفير ... وغيرها من الحالات الخاصة التي يكون النظام الجذر غير جاهز/متوفر ويحتاج لإعداد معين قبل تحميله. وبهذا يمكن الآن أن يقرأ نظام الملفات الجذري فتقوم النواة بتحويل الدليل الجذر الحالي من initrd إلى الجذر الذي مرر عبر خيار root من برنامج الإقلاع أو rdev. ويتم ضم initrd إلى دليل /initrd في البيئة الجديدة (يجب أن يكون موجوداً). بالنسبة لقيام ريدهات بعمل initrd من أجل ext3 فأنا غير مقتنع بهذه الخزعبلات لماذا لا يضعون تعريف ext3 داخل النواة ويريحونا من هذه اللفة الطويلة خصوصاً وأنها لا تدعم أن يكون النظام الجذر reiserfs أو xfs (أظن أن مبرر ريدهات هو دعمهم ل LVM و RAID ولكن لم أقتنع بكونهم لا يضعون النظام الوحيد{بإهمام ext2 } الذي يدعمون داخل النواة مباشرة)

 تلميح

لقد قمت ببعض التجارب على الأنوية الصغيرة الموجودة في أقراص التركيب المرنة لبعض التوزيعات فوضعتها في دليل /boot واستعملتها لإقلاع النظام الكامل المركب على القرص الصلب فكانت النتيجة (كما هو متوقع) أن هناك بعض المزايا لم تعد تعمل (مثل الصوت) ولكن تلك المأخوذة من أقراص ديبيان المرنة لم تقلع قط متذرعة بعدم قدرتها على ضم النظام الجذر مع أنه من نوع ext2، بعد الدراة تبين أنها لا تحمل دعماً مثبتاً للكثير من الأشياء منها ناقل IDE الذي أربط عليه القرص الصلب حيث يوجد نظام ext2 الجذري!

أما الأشياء الأخرى التي يمكن تمريرها فهي كثيرة منها
root=/dev/hda7 اعتبار أن القسم hda7 هو الدليل الجذر
ro للقراءة فقط لكي تتمكن من فحصه ثم يتحول إلى قراءة وكتابة
rw قراءة وكتابة
load_ramdisk=1 تفعيل قرص رام (اجعلها صفر لتثبيط هذا الخيار)
prompt_ramdisk=1 تعطيك فرصة لتبديل الأقراص وإدخال القرص الثاني عند عمل rescue disk
ramdisk_size=4096 تحديد حجم قرص رام بمقدار 4096 كيلوبايت
ramdisk_start=400 تحديد مكان قرص رام بمقدار 400 كيلوبايت عن بداية القرص المرن
init=/sbin/init تمرر اسم البرنامج الذي سيتم تشغيله أولا
mca-pentium تحتاجه لجهاز IBM-95 Microchannle لأنه يحتوي على عيب صناعي يتم تلافيه بها
panic=10 إعادة تسغيل الجهاز تلقائيا بعد 10 ثواني من حدوث الخلل panic مثل طلبت منه أن يبوت على hda8 ولكن لايوجد hda8
quiet يجعل الكيرنل لا تطبع شيء ، يمكن الإطلاع على الرسائل في ما بعد بأمر dmesg
reboot=warm تجعل لينكس يخبر ال BIOS بأن لا تعد الرام،وتفحص الأقراص.. عند اعادة التشغيل وهي عكس ال cold
vga=ask تجعل لينكس يسأل عن طور الشاشة المطلوب(عدد الأعمدة والأسطر) عند بدء التشغيل
ram=64m بعض BIOS القديمة توهم النظام بأن الرام أقل مما هي عليه نستعمل هذا الخيار لنحدد الحجم الحقيقي لذاكرة رام RAM، المثال 64ميغا-بايت
hda=cyl,head,sec في حال رغبتك في تمرير قيم مختلفة عن ما يتم فحصه لعدد قطاعات القرص ...
sound=sound-driver تمرير كرت الصوت وهو يستخدم لكروت non-PNP ISA وهي قديمة جدا
idle=poll تزيد من سرعة الجهاز واستهلاكه للكهرباء في حال استخدام أكثر من معالج SMP
ملاحظة لا يوجد مسافة بين ما هو على يمين المساواة ويسارها أو يمين ويسار الفاصلة

4.3.5 مبدأ عمل قرص الإنقاذ

تعمل النواة على فحص كل شيء القرص الصلب والسي دي وكروت الشبكة أو إذا كان هناك معلومة تم تمريرها عن طريق ال boot loader يستعملها ولا يفحص. حتى الآن لم يعمل ضم mount للدليل الجذر. ثم تبحث النواة عن صورة مضغوطة لنظام ملفات جذري لتحميله في الرام (من هنا جاء الاسم قرص رام ram disk) إذا حددنا ذلك عبر معاملات النواة (مثل ramdisk_size و ramdisk_start) أو بأن تكون مثبتة بواسطة أدوات rdev. ثم تضمه mount على أنه الدليل الجذر ويمكن عمل هذه الصورة بعمل ملف بالحجم المطلوب باستعمال dd ثم تحويله إلى تهيئته ليحمل نظام ملفات mke2fs أو mkfs.minix ثم ضمه ووضع الملفات المطلوبة فيه ثم إزالة الضم وضغطه ثم دمجه مع النواة. الطريقة التالية توضح كيفية عمل قرصص إنقاذ يحتوي على bash فقط.

 تلميح

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

 تحذير

إنتبه: هذه الطريقة لاتؤذي التوزيعة الموجدة ولكن الخطأ في طباعة الأوامر يقوم بذلك !!

bash$ su
bash# dd if=/dev/zero of=~/fsImage bs=1024 count=4096
4096+0 records in
4096+0 records out
bash# mkfs.minix ~/fsImage
bash# mkdir /mnt/test
bash# mount -o loop -t minix ~/fsImage /mnt/test
bash# cd /mnt/test
bash# mkdir bin usr tmp var proc sbin lib etc
bash# cp /bin/bash /mnt/test/bin/
bash# cd /mnt/test/sbin && ln -s ../bin/bash init
bash# cd ~
ثم نسخ الملفات التي تريد إلى mnt/test ولا تنس وضع المكتبات في lib تستطيع أن تعرف ما هي المكتبات المطلوبة عن طريق ldd ، ثم اضغط تلك الصورة
 تلميح

لاحظ أننا هنا عملنا وصلة من bash باسم init لهذا عندما تأتي النواة لتشغيله سيعمل سطر الأوامر bash ولن يسأل عن كلمة سر أو يعطيك أجهزة إفتراضية أو يتعامل مع CTRL+ALT+DEL لأنه باش وليس init

نتابع :
bash# ldd /bin/bash
 # انسخ كل المكتبات التي ظهرت
bash# cp -avi /lib/libc.*so* /mnt/test/lib
bash# cp -avi /lib/ld.so /mnt/test/lib
bash# cp -avi /lib/libncurses.*so* /mnt/test/lib
bash# umount /mnt/test
bash# gzip -9 < ~/fsImage > ~/fsImage.gz
ولوضعها مع النواة (التي تدعم نظام minix إن استعملته)على القرص المرن ضع قرص وتأكد من أنه غير مضموم unmounted وأن حجم الملف floppy.img الذي سينتج من دمج vmlinuz مع ~/fsImage.gz سيتسع على القرص. قد يكون عليك أن تصنع نواة صغيرة منزوعة المزايا بنفسك (انظر فصل 4.7 ابني النواة بنفسك) وأن تجرب مفسر أوامر غير BASH (مثل DASH أي Debain Almquist Shell أو zsh أو ash). ثم نفذ ما يلي:
bash# dd if=/boot/vmlinuz-old-with-minix-support of=floppy.img bs=1k
399+0 records in
399+0 records out
bash# dd if=fsImage.gz of=floppy.img bs=1k seek=400
bash# rdev floppy.img /dev/fd0
bash# rdev -R floppy.img 0
bash# rdev -r floppy.img $((16384+400))
bash# dd if=floppy.img of=/dev/fd0 bs=1k
هنا قمنا بإرسال نواة صغير للقرص المرن وقسنا الحجم من ناتج dd فكان 399 الآن نرسل صورة قرص الرام المضغوط في مكان ما بعد هذه المنطقة مثلاً 400 كيلوبايت بخيار seek الآن نحدد أن القرص الجذر هو /dev/fd0 ونحدد أنه على بعد 400 (الرقم 16384 يكافئ load_ramdisk=1). وغالباً لن تكفيك سعة القرص الواحد (دون أن تعيد التصنيف لتقليل المزايا) لذا نعمل قرصي إقلاع أحدهما النواة والآخر هو قرص رام كما يلي
bash# dd if=/boot/vmlinuz-big-new of=/dev/fd0 bs=1k
bash# rdev /dev/fd0 /dev/fd0
bash# rdev -r /dev/fd0 49152
#ضع لاصق "القرص الأول" ثم ضع قرص آخر
bash# dd if=fsImage.gz of=/dev/fd0 bs=1k
#ضع لاصق "القرص الثاني"؛
الرقم 49152 يعني load_ramdisk=1,prompt_ramdisk=1
 تلميح

ملاحظة : لا تخلط بينه وبين initrd لأنه في حالة ramdisk يكون ال root=/dev/ram ويتم قراءته بواسطة النواة kernel وبإعدادات rdev أما في حالة initrd يكون الجذر عادياً root=/dev/hda7 أي القرص مثلاً. وقبل عمل Mount له يتم تحميل initrd والتعريفات المطلوبة. في حالة ramdisk يتم تنفيذ init أما في حالة initrd يتم تنفيذ linuxrc. وعادة ما يكون initrd موجود في /boot/initrd-ver
باختصار ال initrd يكون موجود على مكان في ال root-file-sytem اما الآخر فيكون هو ال root-file-system

لا بد أنك لاحظت أن 4 ميغابايت لا تكفي لوضع الحد الأدنى من أدوات غنو كاملة المزايا (مثل init و sh و ls و cp ...) ومكتبة سي من غنو كاملة المزايا أهم الحلول هو استعمال برنامج busybox وهو برنامج واحد بعدة استخدامات ووظائف حيث يمكنه أن يتصرف مثل عدد من الأدوات الأساسية تبعاً للاسم الذي استخدم لتشغيله (من هنا جاء الاسم multi-call binary) فإذا عملت وصله باسم ls تشير إليه فإن تنفيذها سيعرض الملفات، ضع في نظام الملفات الخاص بقرص الانقاذ نسخة من busybox واعمل وصلات تشير إليه لها أسماء الأدوات (نفذ busybox دون معاملات لتحصل على قائمة بها). كما يمكنك توفير المساحة بتصنيف البرامج لتربط مع مكتبة سي DietLibc (انظر www.fefe.de/dietlibc/) الخاصة بالحمية (تخفيف الوزن)

 تلميح

تحميل قرص رام بواسطة برامج الإقلاع boot loader مثل SYSLINUX أسهل بكثير من دمجها مع النواة واستعمال rdev، ببساطة ضع ملف النواة و قرص الرام على شكل ملف initrd سوياً على القرص المرن، ثم قم بإعداد برنامج الإقلاع ليحمل initrd مع تحديد الجذر على أنه RAM disk 'root=/dev/ram0' (أو '/dev/rd/0' للأنوية التي تدعم devfs).

نعود للحديث عن إقلاع نظام لينكس، وكنا قد وصلنا إلى أنه يبحث عن قرص رام ram disk فإذا لم يجده أو طلبت منه أن لا يبحث عنه يتم عمل mount لنظام الملفات الجذر ويفضل أن يكون ro أي read only لعمل فحص له إذا كان بحاجة لذلك وهذا ضروري إلا إذا كنا نتحدث عن ram disk موجود على rescue disk فهو يكون rw أي read and write والسبب في كونه يجب أن يكون ro لأن نظام لينكس متعدد المهام فإذا كان النظام للقراءة والكتابة والنظام يفحص ربما يكون هناك برنامج يكتب في الملف الذي يفحص الآن مما يؤدي إلى حدوث أخطاء.

4.3.6 برنامج init و مستويات التشغيل run-levels

الآن تبحث النواة عن برنامج init الموجود في sbin أي /sbin/init ويتم تمرير كل شي لم تفهم النواة من المعلومات التي مررت إليها عن طريق برنامج الإقلاع boot loader وهي غالباً عن رقم المستوى run level وهو رقم من 1إلى 5 . المستوى صفر وستة يستخدمان لإغلاق الجهاز أو إعادة تشغيله

  • 1 : single user mode
  • 2 : multi user mode
  • 3 : not used or multi user mode with network
  • 4 : not used or X11 mode without network
  • 5 : X11 mode
في ديبيان تكون 2-5 كلها متشابهة -إكس مع شبكة- والتلقائي هو 2. فإذا تم تمرير root=/dev/hda7 ro 2 فإن النواة ستفهم كل شيء عدا 2 فترسل إلى init رقم 2

4.3.7 ملف inittab

يقوم برامج init بقراءة الملف inittab الموجود في etc أي /etc/inittab يمكنك أن تقرأ كتيب هذا الملف بكتابة الأمر man inittab كل سطر (عدا التعليقات) تكون على الصيغة [ID]:[RUNLEVEL]:[ACTION]:[COMMAND] معرّف(لا معنى له) فرقم مستويات التشغيل فمحدد لمتى أو كيف ينفذ الأمر (يحدد معنى السطر كله) يمكن أن تكون نفذه مرة عند الإقلاع (بغض النظر عن المستوى) sysinit أو نفذه وانتظر حتى ينتهي عند عند دخول/خروج المستوى wait نفذه عند إغلاق الجهاز shutdown أو عند الضغط على ctrlaltdel أو عند انقطاع الكهرباء powerfail أو عودتها powerokwait أو نفذها مرة واحدة once أو أعد تشغيلها كلما انتهت respown ثم الأمر. ويفصل بينهم نقطتين رأسيتين ‘:‘ منها سطر يشير إلى رقم المستوى التلقائي default run level ليتم استعماله في حال لم تمرر النواة رقم وهو سطر يبدو مثل

id:5:initdefault:
ومعناه أن مستوى التشغيل التلقائي هو خمسة أي الرسومي هنا id تعني init default وهي كما قلنا لأغراض التوثيق فقط.

يوجد في ملف inittab أسماء برامج نصوص الاستهلال initializeing scripts والتي تسمى نصوص الإقلاع Boot scripts ويقوم باستدعائها ملف يحدده سطر يشبه

si::sysinit:/etc/rc.d/rc.sysinit
يقوم هذا الملف بتنفيذ العمليات الاستهلالية التي يجب أن تنفذ بشكل مسبق قبل كل شيء مثل تشغيل برنامجي klogd و syslogd اللازمان لحفظ تقارير النواة والنظام، ومثل تحميل خط الشاشة النصية
unicode_start /usr/lib/kbd/consolefonts/LatArCyrHeb16.pcf.gz
أو تحديد وضع أضواء لوحة المفاتيح بواسطة setleds مثل Numlock. وضم الأقراص وفحصها ب fsck عند اللزوم وتشغيل الذكرة الافترضية swap و ضبط الساعة ... ثم تأتي نصوص الإقلاع الخاصة بمستوى تشغيل معين وهي في Slackware باسلوب BSD أي
  • /etc/rc.d/rc.S : طور المستخدم الوحيد
  • /etc/rc.d/rc.M : الطور متعدد المستخدمين
  • /etc/rc.d/rc.X : الطور الرسومي
أو تكون باسلوب SysV كما في ريدهات وديبيان أي ملف وحيد اسمه /etc/rc.d/rc يتم تمرير رقم المستوى له وعلى ضوئه يتصرف
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
وهو الملف المسؤول عن تشغيل/إغلاق كل المراقبات daemons (إختصار ل Disk And Execution Monitor وهي ككلمة تعني شبح إذ يعتقد بأن يونكس يملك قوى فوق طبيعية) واحداً واحداً. للانتقال من مستوى لآخر نستعمل الأداة /sbin/telinit ونمرر لها الرقم

4.3.8 ملف fstab

يعمل أحد نصوص الإقلاع على تشغيل mount -a الذي بدوره يقرأ الملف fstab (اي file systems table) أي /etc/fstab وهو بالصيغة التالية

# this is /etc/fstab by <alsadi[at]gmail.com>
# this is a comment
# devicemount-pointtypeoptionsdump pass
/dev/hda7/ext3defaults,errors=remount-ro0 1
/dev/hda1/mnt/win_cvfatdefaults,umask=00 0
/dev/fd0/mnt/floppyautodefaults,noauto,user0 0
/dev/cdrom/mnt/cdromiso9660defaults,noauto,ro,user0 0
proc/procprocdefaults0 0
/dev/hda8noneswapsw0 0
ملاحظة يجب أن تكون المجلدات win_c و floppy موجودة لتنجح. جرب هذه الأوامر
bash$ man fstab
bash$ man mount
bash$ mount
bash$ cat /proc/mounts
bash$ su root
password :
bash# fdisk -l
bash# cat /proc/partitions
bash# mkdir /mnt/win_c
bash# mount /dev/hda1 /mntt/win_c -t auto
bash# exit
لاحظ أن mount بدون شيء تعطي معلومات عن الأقسام والأجهزة المعرفة حاليا ولاحظ أن fdisk -l تعرض الأقسام الموجودة وأن الملف /proc/partitions

4.3.9 برامج الخدمات services

قلنا أن الملف rc يقوم بتشغيل أو إيقاف كل المراقبات daemons المطلوبة في ذلك المستوى ويتم ذلك فعلياً من خلال نصوص الملفات (shell scripts) الموجدة في المجلد المقابل لرقم مستوى التشغيل مثلاً /etc/rc.d/rc2.d/ (طبعا استبدل 2 بأي رقم آخر) فيوقف تلك التي تبدأ ب K (اختصار ل‘KILL‘) ويشغل تلك التي تبدأ ب S (اختصار ل‘START‘) مثلاً في مستوى 0 أو 6 (إغلاق الجهاز وإعادة تشغيله) كل الملفات تبدأ ب K أما في 5 تكون كلها تبدأ ب S. والتي يسمح بتنفيذها(أي أنها تحمل إذن التنفيذ) تسمى هذه الملفات خدمات service وهما عبارة عن رابط إلى ملف نصي تنفيذي موجود في /etc/rc.d/init.d/ مثلاً /etc/rc.d/init.d/random والرابط يكون /etc/rc.d/rc2.d/S51random الرقم 51 من أجل التحكم في ترتيب تشغيلها. يقبل هذا البرنامج معاملاً مثل start و stop و restart و status فإذا كان مطلوباً أن يوقفه يمرر له stop وإذا كان مطلوباً أن يشغله يمرر له start

# part of simple rc
# take runlevel from argument 1
runlevel=$1
# distro links "/etc/rc$runlevel.d/" to "/etc/rc.d/rc$runlevel.d/"
# like /etc/rc.d/rc2.d/ & /etc/rc2.d/
for i in /etc/rc$runlevel.d/K*
do
	[ -x $i ] && $i stop
done
for i in /etc/rc$runlevel.d/S*
do
	[ -x $i ] && $i start
done

 تلميح

[ -x $i ] تعني افحص هل الملف قابل للتنفيذ (هل يسمح لي بتشغيله) إذا نجح الفحص عندها نفذ ما بعد ‘&&‘

 تلميح

الملفات في توزيعتك أكثر تعقيداً لأنها تستعمل وظائف خاصة لتجميل وترجمة الرسائل. هذه الوظائف موجودة في ملف اسمه /etc/init.d/functions مثل وظيفة لطباعة [OK] بالأخضر عند النجاح و [Fail] بالأحمر عند الفشل وربما في ماندريك المعرب [فشل] بدلاً من كتابتها في كل ملف.

يوفر ديبيان أداة start-stop-daemon التي تستخدمها نصوص rc، إنها ذكية وتوفر العديد من الخيرات، مثلاً قبل أن تشغل المراقب تتأكد من أنه لا يعمل من قبل، ولكن عند ايقافه تمنع أي محاولة لتشغيله في الفترة الانتقالية قبل اكتمال ايقافه. مستخدمي التوزيعات المبنية على ريدهات يمكنهم كتابة service متبوعة باسم الخدمة والمعامل لتشغيلها أو ايقافها مثلاً service gpm start لتشغيل gpm.

في العادة تعمل هذه النصوص على إيقاف المراقب من خلال kill أو تقوم بعملية الإلغاء المناسب مثلاً umount وللتشغيل تعمل على استدعاء المراقبات daemon مثل talkd أو بعمليات تفعيل مناسبة مثل mount أو إضافة وحدة module (جزء من النواة يمكن تحميله أثناء العمل) بواسطة insmod أو modprobe تسمى هذه الوحدة تعريفاً ولك هذه التسمية ليست دقيقة. لأن module قد يكون طريقة تشفير مثلاً. هذه الوحدات موجودة في دليل فرعي من /lib/modules ثم إصدار النواة uname -r حيث تجد ملفات o أو ko (في الأنوية 2.6) لتفعيل هذه وحدة اكتب modprobe foo حيث foo اسم الملف الهدف object file للوحدة دون الدليل ودون o أو ko. لعرض الوحدات المحملة حالياً lsmod و rmmod foo لإزالة الوحدة foo. للحصول على وصف لها modinfo -d foo ولمعرفة ما تأخذ من معاملات modinfo -p foo أما insmod فهي طريقة قديمة لما يقوم به modprobe.

التوزيعات تستخدم أدوات (مثل kudzu من ريدهات و Discover المستخدم في ديبيان) لتحديد العتاد وإضافة الوحدة المناسبة له بواسطة modprobe. كما أن العديد من نصوص الإقلاع ونصوص الخدمات في أغلب التوزيعات يتم التحكم بها عبر متغيرات بيئة داخلية تحدد قيمتها في ملف داخل فروع /etc/sysconfig/ في التوزيعات المبنية على ريدهات أو /etc/defaults/ في ديبيان، حيث يتم احتواء هذه الملفات في عملية تسمى sourcing باستعمال أمر source المبني داخل bash (ويسمى أيضاً عملية النقطة).

وتأتي كل توزيعة ببرنامج رسومي تفاعلي لإدارة الخدمات (تفعيلها أو تثبيطها في مستوى تشغيل معي) ربما تجده في قائمة system settings باسم services (اسم البرنامج في فيدورا هوsystem-config-services) كما يمكنك استعمال حزم مستقلة للعديد من التوزيعات مثل ksysv و gnome-system-tools. توفر التوزيعات المبنية على ريدهات (بما في ذلك فيدورا Fedora و Mandriva) أداة من سطر الأوامر اسمها chkconfig لهذا الغرض مثلاً لتفعيل خدمات gpm في المستوى 2 و 3 اكتب chkconfig --level 23 gpm on ولتثبيطه في المستويات الباقية (أي 0 و1 و4 و5 و6) اكتب chkconfig --level 01456 gpm off.

ليس من الصعب أن تقوم بذلك يدوياً، كل ما عليك لإعداد خدمة من الصفر هو عمل وصلة للملف في مجلد كل مستوى التشغيل تريد أن يعمل فيه مثلاً 2-5 بحيث يبدأ اسمه ب S وعدد من منزلتين ثم اسم الخدمة مثلاً ln -s /etc/init.d/gpm /etc/rc2.d/S57gpm بينما يبدأ ب K في البقية (مثلاً 0 و 6 بأمر يشبه ln -s /etc/init.d/gpm /etc/rc0.d/S42gpm) ثم إعطاء الإذن بالتنفيذ بكتابة chmod +x /etc/init.d/gpm. ولتثبيط الخدمة في جميع مستويات التشغيل امنع تنفيذها بكتابة chmod -x /etc/init.d/gpm. إذا كانت خدمة معدة بالشكل الصحيح وكنت تريد تريد تفعيلها في بعض مستويات التشغيل قم بتغيير اسم الوصلة في تلك المستويات لتبدأ بحرف S ولتثبيطها غيّر اسمها لتبدأ بحرف K، مع ملاحظة أن الرقم يجب أن يصبح 99 - الرقم القديم لأن ما ينفذ أخيراً يوقف أولاً.

من أجل السولة والتوافقية بين التوزيعات يلاحظ وجود وصلة باسم /etc/rc1.d لتشير إلى /etc/rc.d/rc1.d ... إلى آخر الستة مستويات تشغيل ، كما ونجد وصلة باسم /etc/init.d تشير إلى /etc/rc.d/init.d (قد تكون الوصلات في توزيعة هي الأدلة في أخرى). ومن الأمثلة على الخدمات services برنامج لتفحص بطارية الجهاز المحمول وإدارة الطاقة apm وآخر من أجل تعريف الصوت alsa وآخر من أجل الماوس في ال console (اسمه gpm) وبرامج تعريب ال console (اسمه acon) وآخر لجدولة المهام في زمن محدد اسمه atd وغيرها الكثير.

4.3.10 تسجيل الدخول بمعرف وكلمة سر

ثم يتم تشغيل عدد من الطرفيات الوهمية VT (أي Virtual Terminal) وهي شاشات من منفصلة يتم التنقل بينها ب ctrl+alt+Fn ( و Fn هي F1 F2 F3 ...) يتحكم في عددها مجموعة من الأسطر في ملف inittab وهذا مثال

1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
لاحظ أن عددها 6 إذا أردت جعلها 4 اشطب آخر سطرين أما إذا أردت جعلها 7 أضف سطر مع تغيير أول رقم وآخر رقم.
الرقم الأول للعد والتعريف (لا معنى له) ،ومجموعة الأرقام الأخرى 2345 هي المستويات التي ستعمل فيها ،أما /sbin/mingetty tty1 فهي اسم البرنامج الذي سينفذ، أما respawn تعني أنه إذا أُغلق هذا البرنامج فإن init سوف يقوم بتشغيله مرة اخرى

إن ttyN (مثل tty1 ) عبارة عن الجهاز الذي يمثل ال VT لتفهم ذلك جرب الأوامر التالية

Press ctrl+alt+F1 and login
bash$ echo "Hello Ali"
Hello Ali
bash$ echo "Hello Ali" >> /dev/tty2
Nothing printed , press ctrl+alt+F2 ,and woo

قلنا أن هناك عدد من الطرفيات VT تشغل برنامج getty وعادة يكون mingetty مهمتها عرض رسالة ترحيبية ( وهي موجودة في ملف /etc/issue ويمكنها أن تحتوي ألوان لا تتعب نفسك في تغييرها لأن هناك بعض الأسطر في rc.sysinit تعيدها إلى ما كانت عليه والسبب طبعاً أن هذه الرسالة في غالب تحتوي اسم وإصدار النواة والتي قد تتغير لهذا تقوم نصوص الإقلاع بإعادة تكوين هذا الملف ) ثم تسأل المستخدم عن اسم الدخول و كلمة السر ثم التحقق من أن الكلمة صحيحة وتشغيل البرنامج الافتراضي وهو عادة مفسر لغة bash الذي تستخدمه لإدخال الأوامر (يمكن تغييره بالأمر chsh) ، طبعا يبدأ من الدليل البيت home folder و الملف الذي يتحكم في ذلك هو passwd قد تجد فيه شيئا كهذا

root:x:0:0::/root:/bin/bash
operator:x:11:0:operator:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
myname:x:1000:100:mygroup:/home/myname:/bin/bash
الخانة الأولى هي اسم المستخدم و الخانة هي كلمة السر المشفرة الرقمان التاليان هما رقم المستخدم ( أي UID ) ورقم المجموعة(أي GID) التي ينتمي لها، الحقل الخامس هو المجموعات الإضافية التي يعتبر عضواً فيها. والحقلان الأخيران هما البرنامج الذي سيشغله ليكون مفسراً للأوامر (في الأغلب bash) والمكان(الدليل البيت home) الذي سيبدأ فيه في حال نجاحه في الدخول، ارجع إلى 4.9 إدارة النظام للمزيد من التفاصيل.
 تلميح

أنا لا أتحدث هنا عن الدخول من الواجهة الرسومية X وإنما الدخول إلى runlevel 2 أو الضغط على ctrl+alt+Fn

ال root دائما رقمه صفر ورقم مجموعته صفر.
لاحظ وجود مستخدمين أنت لم تضفهم إنهم لتنظيم علاقات البرامج من الضروري أن يكون مفسر الأوامر لهم هو برنامج nologin أو أي برنامج يمنع الدخول لهم كما أن أرقامهم UID تكون أقل من 100. هكذا مستخدمين موجودين ليمثلوا صلاحيات برامج معينة بحيث نتحكم في صلاحياته وكأنه مستخدم. لتغير كلمة سر مستخدم اكتب passwd متبوعة بمعرف ذلك المستخدم(اسمه المختصر).
bash$ passwd LOGIN
هذا الملف مقروء للجميع (مثلاً ليعرف رقم معرف مستخدم UID ما) لهذا توضع كلمات السر في ملف آخر (على الرغم من أنها مشفرة) يسمى ملف الظل shadow الذي لا يقرأه إلا الجذر، ومن الضروري أن لا يكون هذان الملف قابلان للكتابة إلا من قبل المستخدم الجذر أي أن يكون الإذن الخاص بهما هو 644 و 600 على الترتيب. وأن يكونا مملوكين للمستخدم الجذر وننصح بأن يكونا للمجموعة الجذر أيضاً.
bash# ls -l /etc/passwd
bash# cd /etc
bash# ls -l passwd shadow
-rw-r--r-- 1 root admin 30 Feb 2003 passwd
-rw-r--r-- 1 root admin 30 Feb 2003 shadow
bash# chmod 644 passwd
bash# chmod 600 shadow
bash# chown root:root passwd shadow
ls -l /etc/passwd
-rw-r--r-- 1 root root 30 Feb 2003 passwd
-rw------- 1 root root 30 Feb 2003 shadow

عند كل الدخول إلى bash يتم تنفيذ الملفات التالية

/etc/profile
/etc/profile.d/*.sh (only exectable)
~/.bashrc
وهي تحتوي على بعض الإعدادات وتحدد قيمة متغيرات البيئة العامة (بعضها يكون له قيمة سابقة حددها /etc/login.defs) وتقوم بعمل اسماء بديلة (مستعارة) تجعل عملك سهلاً، قد تشبه هذا الجزء:
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:.
alias ls="ls --color -F -h"
alias df="df -h"
alias cp="cp -i"
التي تقوم ب
  • السطر الأول يحدد المكان الذي يبحث فيه عن البرامج عند كتابة أمر بدون مسار ولاحظ أن : تفصل المسار عن الآخر وأن . تعني لدليل الحالي ويجب أن تكون في آخر الأولويات
  • الثاني يطلب من bash استبدال ls ب ls --color -F -h مما يجعل الملفات تظهر ملونة
  • الثالث يجعل لأمر df يعرض المساحة المتاحة بطريقة مفهومة أكثر أي إذا كانت 1024 فانه يكتب 1K وإذا كانت أكبر بكثير يكتب بالميغا أو الغيغا
  • الرابع يجعل امر النسخ يسألك عن الملفات الموجودة مسبقا قبل الكتابة مكانها

4.3.11 الدخول إلى إكس الشاشة الرسومية

وبمجرد تشغيل getty من هنا وقبل أن تدخل اسمك تعمل الشاشة الرسومية من هناك، (في مستوى تشغيل مناسب، 5 مثلاً) وذلك لأن ملف inittab به سطر يشبه (السطر من slackware)

x:5:respawn:/etc/rc.d/rc.X
لاحظ الرقم 5 في الحقل الثاني مما يعني فقط في مستوى التشغيل الخامس، أو في توزيعات أخرى قد يستدعي نفس نص rc مع تمرير 5 له كما ذكرنا سابقاً، حيث هناك جزء منه يفحص مستوى التشغي فإذا كان 5 فإنه يشغل إكس. في كلا الحالتين سيكون الجزء الذي يشغل إكس يشبه ما يلي:
if [ -x /usr/bin/gdm ]
	/usr/bin/gdm
elseif [ -x /usr/bin/kdm ]
	/usr/bin/kdm
elseif [ -x /usr/bin/xdm ]
	/usr/bin/xdm
else
	echo "error blah blah"
fi
إنه يفحص وجود مدراء العرض display managers (البرنامج الذي يدير الدخول إلى الجلسة الرسومية)، مثل GDM ويشغل واحد منهم. وهم :
  • kdm وهو من مجموعة برامج kde هو التلقائي في Mandrake ولكن في بعض الإصدارات ماندريك تكون هناك نسخة معدلة منه ، تكون هي التلقائية، إضافة للبرنامج الأصلي.
  • gdm هو التلقائي في RedHat وهو من مجموعة برامج gnome
  • xdm وهو بشع وسريع ولا يعطي خيارات وهو من البرامج التي تأتي مع XFree86
  • wdm أجمل من xdm له منظر يشبه WindowMaker
في ماندريفا Mandriva يكون هذا الجزء داخل خدمة اسمها dm (اختصاراً ل display manager). ديبيان يقوم بتشغيل المدير المفضل لديك كأي خدمة أخرى تسمى xdm أو gdm أو kdm أو wdm حيث يكون واحد منهم على الأكثر مفعّلاً. مدير العرض بدوره يشغل إكس باستدعاء نص (ربما /etc/X11/xinit/xserverrc بحسب توزيعتك) التي بها سطر يشبه exec /usr/bin/X11/X -dpi 100، ديبيان تمرر له الخيار -nolisten tcp لتثبيط الاستماع لمنافذ TCP عبر الشبكة (مثل 6000) للمزيد من الأمن. بعد ذلك يتم تحميل الجلسة التي طلبتها (مثلاً KDE أو GNOME) بواسطة /etc/X11/Xsession.

إذا دخلت مستوى تشغيل دون إكس، يمكنك تشغيل إكس بكتابة startx الذي يستخدم الأداة xinit التي تحتوي /etc/X11/xinit/xinitrc وتحاول بدء الجلسة المعرفة في ~/.xinitrc من بيت المستخدم إن وجد وإلا فإنه يشغل الجلسة التلقائية المعرفة في /etc/X11/Xsession

4.3.12 رسومات قبل ودون إكس

في قديم الزمان كان برنامج تركيب توزيعة ريدهات 7.x تظهر صورة بِطريق قبل دخول إكس! (بل وحتى قبل تشغيل init) أيضاً في توزيعة ماندريك منذ 8.2 (وربما قبل) عند إقلاع التوزيعة وأثناء تحميل الخدمات تجد خلفية زرقاء رسومية ومؤشر progress bar رسومي حتى قبل دخول إكس وبعد الخروج منه! وفي الكثير من Live CDs تجد في سطر الأوامر الحقيقي console يوجد ظل بِطريق كما أن هناك عدد كبير من الأسطر! كل هذا يتم بواسطة frame buffer device (انظر http://linux-fbdev.sf.net) يتم تفعيله بإضافة الوحدة المناسبة باستعمال modprobe متبوعة باسم الوحدة من بين تلك الموجودة في دليل video الفرعي، لعرض قائمة بها اكتب ls /lib/module/$(uname -r)/kernel/video، اكتب 'modprobe vga16' أو 'modprobe vga16fb' (في أنوية 2.6) لتشغيله في طور 640x480x4 (أي 16 لون). قد تجد واحد عام generic اسمه VESA مبني في النواة (دون الحاجة لوحدة تعريف) يتم تشغيلها بواسطة vga=0301 في برامج الإقلاع boot loader مثل LILO أو GRUB (إذا لم تكن بطاقة العرض تدعم معايير VESA أو إذا وجد لها وحدة أفضل عليك تمرير video=XXXX للنواة), الرقم 0311 بالست-عشري (على عكس العرف الشائع فإن الصف يدل على الست-عشري وليس الثماني) هنا هو لتحديد الكثافة النقطية لتكون 640x480x16 و يمكن أن نستعمل العشري 785 دون الصفر في البداية لنفس الهدف. هذا جدول بالست-عشري لأهم الأطوار:

Colours   640x400 640x480 800x600 1024x768 1152x864 1280x1024 1600x1200
--------+--------------------------------------------------------------
 4 bits |    ?       ?      0302      ?        ?        ?         ?
 8 bits |   0300    0301    0303     0305     0161     0307      031C
15 bits |    ?      0310    0313     0316     0162     0319      031D
16 bits |    ?      0311    0314     0317     0163     031A      031E
24 bits |    ?      0312    0315     0318      ?       031B      031F
32 bits |    ?       ?       ?        ?       0164      ?
الأداة fbset تمكنك من تعديل خصائص وحدة ال frame buffer مثل الكثافة النقطية وموقع(توسيط) الجزء المرئي (لا تعمل مع وحدة VESA العامة). مثلاً لعرض معلومات عن الطور الحالي اكتب fbset دون معاملات. لمعلومات عامة عن كل الأطوار fbset -i والخيار x لعرض معلومات عن التزامن (تلزم في إكس) لاختيار أحد الأطوار يكفي ذكر اسمه (موجودين في /etc/fb.modes) مثلاً fbset 800x600@65. الخيار g متبوع بالأبعاد والأبعاد الافتراضية والعمق اللوني (بالبت) مثل fbset -g 800 600 800 600 16 الخيار move متبوع بأحد الإتجاهات right أو left أو up أو down ثم بالخيار step لتحديد المقدار من أجل تحريك الجزء المرئي لتوسيطه. الخيار accel متبوع ب true أو false لتفعيل أو تثبيط التسريع. إذا كان هناك أكثر من بطاقة عرض حدد أيها بالخيار fb متبوعاً بالجهاز مثلاً fbset -i -fb /dev/fd0 انظر كتيبات fbset(1) fb.modes(5) fbdev(4)

في الإصدارات 3.x من XFree86 (وما قبله) كان هناك أكثر من خادم إكس، واحد لكل نوع من البطاقات، في حين أن الأحدث مثل 4 و X.org لها خادم وحيد متعدد التعاريف (عبر وحدات modules). إن برنامج التركيب الرسومي في ريدهات لينكس 7.x يستخدم XFree86 3.x وبسبب محدودية المساحة فإن هناك مجال لخادم إكس واحد فقط(في مرحلة التركيب) ولكنه يعمل على أغلب بطاقات العرض وذلك باستعمال خادم frame buffer X server (اسمه XF86_FBDev) يستغل دعم النواة للعديد من البطاقات عبر frame buffer devices (مثل وحدة VESA العام) وبعد التركيب يكون النظام كاملاً فيتم استخدام خادم إكس الخاص ببطاقة العرض. على الرغم من أن وثائق نواة لينكس في هذا المجال (التي يقوم عليها Geert Uytterhoeven) تدعي أن: "خادم Frame buffer X server (واسمه XF86_FBDev) هو أهم تطبيق يستخدم جهاز frame buffer device." ولكن هذا لم يعد صحيحاً في XFree86 4 لأنه يدعم عدد كبير من البطاقات ويدعم التسريع بشكل أفضل كل ذلك عبر خادم وحيد وتعريف VESA فيه أفضل من VESA frame buffer عبر النواة (على الأقل تستطيع تغيير الكثافة النقطية). في هذه الأيام لا يوجد أي توزيعة رئيسية تستخدم frame buffer في إكس من تلقاء نفسها. ومع ذلك لا يزال Frame buffer مستخدماً في العديد من التوزيعات لتوفير مؤشر إقلاع جميل وصورة خلفية قبل تشغيل إكس ولتوفير شاشة سطر أوامر بعدد كبير من الأسطر (تحتها خلفية).

 تلميح

الإقلاع الرسومي في فيدورا لا يستخدم frame buffer بل إكس.

كما أنه مفيد جداً في الأنظمة المدمجة embedded systems مثل تطبيقات GtkFB و Qt/Embedded (مثل بيئة Qtopia،انظر www.trolltech.com/products/qtopia). هناك مشروع مختلف في موضوع مشابه اسمه Direct frame buffer يبدو أنه يدعم التسريع (أنا غير واثق).

طريقة أخرى للرسوميات دون إكس هي استعمال مكتبة SVGA library، إنها تستخدم الوصول المباشراً لعتاد العرض لتوفير العمليات الدنيا على أطوار VGA و SVGA القياسية. تعمل على عدد قليل من العتاد وأهم تطبيقاتها الألعاب مثل lxdoom.

مراجع

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

عرب-آيز
مجتمع لينكس العربي
موسوعة ثواب
موسوعة ويكيبيديا
تعريف البرمجيات الحرة
تعريف مفتوحة المصدر
LinuxToday
Linux.org
Linux.com
SlashDot
FreshMeat
LWN.net
توزيعات لينكس
النسخة الإسلامية لأوبنتو
عَرَبيان
جواثا (أول مسجد في أوروبا)
المزيد من التوزيعات هنا

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

 

ننصح باستخدام متصفحات الوب الحرة، جرب ثعلب النار الآن

يمكنك الحصول على الكثير من البرامج الحرة عالية الجودة من هنا مجاناً
proud to be 100% Microsoft FREE GNU FDL
التدخين حرام

كن كحامل المسك ولا تكن كنافخ الكير

Generously Hosted by www.JadMadi.net

Previous Up 4.3 نظرة تشريحية Next
Copyright © 2007, Muayyad Saleh AlSadi