جدول المحتويات

, , , , ,

الإقلاع والتثبيت عبر الشبكة

تمهيد

الكثير من بطاقات الإيثرنت تدعم الإقلاع عبر الشبكة netboot ويستفاد من ذلك في عمل شبكة مركزية لا تملك أطرافها أقراصا disk-less clients. كذلك يمكن الاستفادة من هذه الخاصية في تثبيت لينكس على عدد كبير من الأجهزة متشابهة الإعدادات.

المتطلبات

نحتاج تخصيص خادم في الشبكة يحتوي على tftp (خدمة لنقل الملفات عبر الشبكة المحلية عبر منفذ UDP رقم 69 وهي بروتوكول مختلف تماما عن FTP الذي يعمل على منفذ TCP رقم 21). مهمة tftp هي توصيل الملفات اللازمة للإقلاع.

يتم الإقلاع عبر gPXE وهي تنفيذ لمعايير PXE

محمل الإقلاع المستخدم في هذه الوثيقة هو syslinux

تثبيت TFTP على الخادم

استخدم مدير الحزم لتثبيت tftp-server

yum install tftp-server

في فيدورا وبالتالي أعجوبة ذلك يتضمن تثبيت xinetd الإعدادات التلقائية ل tftp أنه يكون غير مفعل لذا قم بتحرير ملف /etc/xinetd.d/tftp وستجد في رأسه disable = yes اجعل قيمتها no.

disable = no

وهذا لا يكفي حيث أن xinetd لا يكون مفعل تلقائيا (يمكنك تفعيله من نظام ثم إدارة ثم حدمات) أو عبر الأوامر

chkconfig --levels 2345 xinetd on
service xinetd start

وسنفترض في بقية الوثيقة أن مسار ملفات TFTP هو المجلد /tftpboot/

وضع ملفات SysLinux على TFTP

يمكنك القيام بذلك عبر system-config-netboot

إعداد الإقلاع عبر الشبكة


التثبيت عبر الشبكة

توزيعة حية عبر الشبكة

اذهب لمجلد /tftpboot/ ثم قم بوضع إعدادات syslinux 1) عمل ذلك أسهل ما يكون (طبعا ضع المكان الحقيقي لملف ISO الخاص بتوزيعة أعجوبة)

cd /
livecd-iso-to-pxeboot /path/to/ojuba-X-Live-i386.iso

هذا الأمر يعمل مجلد tftpboot داخل المجلد الحالي و محتوياته

تلك الإعدادات تبدو هكذا

DEFAULT oj3deskless
TIMEOUT 20
PROMPT 0
LABEL oj3deskless
	KERNEL vmlinuz0
	APPEND rootflags=loop initrd=initrd0.img root=/ojuba-X-Live-i386.iso rootfstype=auto ro liveimg quiet  rhgb 
ONERROR LOCALBOOT 0

التثبيت عبر الشبكة

داخل قرص أعجوبة وسيط التثبت ستجد مجلد اسمه images بداخله مجلد pxeboot فيه ملفات

ما ينقصك حتى تقلع هو نسخ محمل الإقلاع pxelinux.0 من syslinux

yum install syslinux
cp /usr/share/syslinux/pxelinux.0 /tftpboot/

كما يلزمنا عمل الإعدادات pxelinux وذلك داخل مجلد pxelinux.cfg اعمل ملف اسمه default كما يلي:

DEFAULT oj3inst
TIMEOUT 20
PROMPT 0
LABEL oj3inst
	KERNEL vmlinuz
	APPEND initrd=initrd.img ramdisk_size=34561 method=http://webserver/netboot ip=dhcp
ONERROR LOCALBOOT 0

حيث webserver هو خادم الويب و netboot هو العنوان الذي فيه نسخة محتويات قرص التثبيت (اللازمة لبرنامج التثبيت أناكوندا بما فيها حزم rpm) يعني على خادم الويب اكتب

mkdir /mnt/virtual
mount -o loop ojuba-X-i386-DVD.iso /mnt/virtual
mkdir /var/www/html/netboot/
cp -ra /mnt/virtual/*  /var/www/html/netboot/
umount /mnt/virtual
rmdir /mnt/virtual

إعداد خادم DHCP كي يحمل pxelinux

عليك إضافة مدخلات تدل الأجهزة على الخادم وعلى الملف محمل الإقلاع. يعني في الجزء الخاص بالأجهزة المخدومة أضف

  filename "/tftpboot/pxelinux.0";
  server-name "servername";
  next-server ip_address;

هذا كل ما تحتاجه للبدء بالعمل يمكنك تجربة ما صنعنا دون إكمال بقية المقال.

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

ملاحظة: يفترض أن لا يكون هناك إلا خادم DHCP واحد في الشبكة المحلية الواحدة وقد يكون هذا الخادم موجود داخل الموجه router

وضع ملفات gPXE على TFTP

محمل إقلاع gPXE هو ملف واحد ذي امتداد .pxe يعمل على تحميل firmware في بطاقة الإيثرنت مما يدعلها تدعم بروتوكلات مثل HTTP و HTTPS لذا يتم جلبه عبر tftp ثم جلب pxelinux عبر HTTP لأنه أسرع.

يفترض أننا سنحتاج ملف واحد امتداده .pxe لكن هناك بعض الحالات لا تعمل فيها التعريفات العامة فنضطر لاستخدام gPXE UNDI driver

للحصول على الملفات

إعداد خادم DHCP كي يحمل gPXE

قم بوضع الملفات على خادم apache أي في /var/www/html/netboot/ ولا تبق في /tftpboot/ إلا ملفي gpxe.pxe و undi.pxe

قم بتعديل إعدادات DCHP كي تقوم بتحميل pxelinux عبر http إن كان النظام يدعم محمل إقلاع gPXE فإن لم يكن يدعمه فإنه يحمل gpxe.pxe الذي يضيف دعم http ثم يعيد من جديد.

الإقلاع على مرحلتين عبر الشبكة

يعني في الجزء الخاص بالأجهزة المخدومة أضف

next-server ip_address;
if exists user-class and option user-class = "gPXE" {
    filename "http://webserver/netboot/pxelinux.0";
} else {
    filename "/gpxe.pxe";
}

قد تسأل ما فائدة الملف الآخر undi.pxe حيث انه وفق هذه الإعدادات لن يتم استخدامه. قد يلزمك استخدامه مكان gpxe.pxe إن لم تكن الأجهزة عندك مدعومة من قبل الأول.

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

لكن إن وجدت نفسك في موقف بحاجة لاستعمالهما معا يمكنك عمل:

if exists user-class and option user-class = "gPXE" {
    filename "http://webserver/netboot
} else {
    if binary-to-ascii(16, 8, ":",
       substring(hardware, 1, 6)) = "mac_address_1"
    or binary-to-ascii(16, 8, ":",
       substring(hardware, 1, 6)) = "mac_address_2" {
        filename "/undi.pxe";
    } else {
        filename "/gpxe.pxe";
    }
}

حيث mac_address_1 و mac_address_2 هما عنواني MAC للجهازين اللذان لم يعملان مع الملف العادي ويحتاجان للملف الثانوي undi.pxe

مراجع ووثائق ذات صلة

1)
وهو مشروع كبير منه isolinux المستخدم في إقلاع النسة الحية ومنه syslinux العادية التي تستخدم في إقلاع من أقراص USB ومنه pxelinux التي سنستخدمها