أدوات المستخدم

أدوات الموقع


linux:netboot

اختلافات

عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.

رابط إلى هذه المقارنة

linux:netboot [2015/04/23 00:21] (حالي)
سطر 1: سطر 1:
 +{{tag>oj شبكة خوادم تثبيت deskless netboot}}
 +====== الإقلاع والتثبيت عبر الشبكة ======
 +  * مترجمة بتصرف عن مقالة [[http://​cedarandthistle.wordpress.com/​2010/​02/​01/​setting-up-a-netboot-server-in-fedoracentos/​|Jonathan Dieter]]
 +  * غير مكتملة
  
 +===== تمهيد =====
 +الكثير من بطاقات الإيثرنت تدعم الإقلاع عبر الشبكة netboot ويستفاد من ذلك في عمل شبكة مركزية لا تملك أطرافها أقراصا disk-less clients. كذلك يمكن الاستفادة من هذه الخاصية في تثبيت لينكس على عدد كبير من الأجهزة متشابهة الإعدادات.
 +
 +===== المتطلبات =====
 +نحتاج تخصيص خادم في الشبكة يحتوي على tftp (خدمة لنقل الملفات عبر الشبكة المحلية عبر منفذ UDP رقم 69 وهي بروتوكول **مختلف** تماما عن FTP الذي يعمل على منفذ TCP رقم 21). مهمة tftp هي توصيل الملفات اللازمة للإقلاع.
 +
 +يتم الإقلاع عبر gPXE وهي تنفيذ لمعايير PXE
 +
 +محمل الإقلاع المستخدم في هذه الوثيقة هو syslinux
 +
 +===== تثبيت TFTP على الخادم =====
 +استخدم مدير الحزم لتثبيت tftp-server
 +<code bash>
 +yum install tftp-server
 +</​code>​
 +في فيدورا وبالتالي أعجوبة ذلك يتضمن تثبيت xinetd
 +الإعدادات التلقائية ل tftp أنه يكون غير مفعل لذا قم بتحرير ملف /​etc/​xinetd.d/​tftp ​ وستجد في رأسه disable = yes اجعل قيمتها no.
 +
 +<​file>​
 +disable = no
 +</​file>​
 +وهذا لا يكفي حيث أن xinetd لا يكون مفعل تلقائيا (يمكنك تفعيله من نظام ثم إدارة ثم حدمات) أو عبر الأوامر
 +<code bash>
 +chkconfig --levels 2345 xinetd on
 +service xinetd start
 +</​code>​
 +
 +وسنفترض في بقية الوثيقة أن مسار ملفات TFTP هو المجلد /tftpboot/
 +
 +===== وضع ملفات SysLinux على TFTP =====
 +يمكنك القيام بذلك عبر system-config-netboot
 +
 +{{ :​linux:​s-c-netboot1.png |إعداد الإقلاع عبر الشبكة}}
 +
 + ​\\ ​
 +
 +{{ :​linux:​s-c-netboot2.png |التثبيت عبر الشبكة}}
 +
 +==== توزيعة حية عبر الشبكة ====
 +اذهب لمجلد /tftpboot/ ثم قم بوضع إعدادات syslinux ((وهو مشروع كبير منه isolinux المستخدم في إقلاع النسة الحية ومنه syslinux العادية التي تستخدم في إقلاع من أقراص USB ومنه pxelinux التي سنستخدمها))
 +عمل ذلك أسهل ما يكون (طبعا ضع المكان الحقيقي لملف ISO الخاص بتوزيعة أعجوبة)
 +<code bash>
 +cd /
 +livecd-iso-to-pxeboot /​path/​to/​ojuba-X-Live-i386.iso
 +</​code>​
 +
 +هذا الأمر يعمل مجلد tftpboot داخل المجلد الحالي و محتوياته
 +  * pxelinux.0 - محمل الإقلاع pxelinux
 +  * vmlinuz0 - النواة
 +  * initrd0.img - صورة لقرص الرام - في حالتنا الآن هي القرص الحي كاملا
 +  * pxelinux.cfg - مجلد الإعدادات ويحتوي ويحتوي ملف إعدادات هكذا
 +    * default -  الإعدادات الافتراضية
 +
 +تلك الإعدادات تبدو هكذا
 +<​file>​
 +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
 +</​file>​
 +
 +==== التثبيت عبر الشبكة ====
 +داخل قرص أعجوبة وسيط التثبت ستجد مجلد اسمه images بداخله مجلد pxeboot فيه ملفات
 +  * vmlinuz - النواة (او vmlinuz-PAE إن كان عندك أكثر من 4 غيغا من ذاكرة رام تريد الاستفادة منها)
 +  * initrd.img - قرص الرام الاستهلالي (بعكس القرص الحي حجم هذا حوالي 20 ميغا فقط) كذلك ستجد ملف initrd-PAE.img المقابل للنواة vmlinuz-PAE
 +
 +ما ينقصك حتى تقلع هو نسخ محمل الإقلاع pxelinux.0 من syslinux
 +<​code>​
 +yum install syslinux
 +cp /​usr/​share/​syslinux/​pxelinux.0 /tftpboot/
 +</​code>​
 +
 +كما يلزمنا عمل الإعدادات pxelinux وذلك داخل مجلد pxelinux.cfg اعمل ملف اسمه default كما يلي:
 +
 +<​file>​
 +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
 +</​file>​
 +
 +حيث webserver هو خادم الويب و netboot هو العنوان الذي فيه نسخة محتويات قرص
 +التثبيت (اللازمة لبرنامج التثبيت أناكوندا بما فيها حزم rpm) يعني على خادم الويب اكتب
 +<code bash>
 +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
 +</​code>​
 +
 +===== إعداد خادم DHCP كي يحمل pxelinux =====
 +عليك إضافة مدخلات تدل الأجهزة على الخادم وعلى الملف محمل الإقلاع. يعني في الجزء الخاص بالأجهزة المخدومة أضف
 +<​file>​
 +  filename "/​tftpboot/​pxelinux.0";​
 +  server-name "​servername";​
 +  next-server ip_address;
 +</​file>​
 +
 +هذا كل ما تحتاجه للبدء بالعمل يمكنك تجربة ما صنعنا دون إكمال بقية المقال.
 +
 +سيتم نقل النواة وقرص الرام عبر الشبكة إلى الرام في الجهاز المخدوم ثم يقلع النظام.
 +في حالة النظام الحي سيكون قرص الرام هو القرص الحي كاملا مما سيأخذ وقتا طويلا خصوصا إن أخذنا تأخير بروتوكول tftp.
 +
 +ملاحظة:​ يفترض أن لا يكون هناك إلا خادم DHCP واحد في الشبكة المحلية الواحدة وقد يكون هذا الخادم موجود داخل الموجه router
 +
 +===== وضع ملفات gPXE على TFTP =====
 +محمل إقلاع gPXE هو ملف واحد ذي امتداد .pxe يعمل على تحميل firmware في بطاقة الإيثرنت مما يدعلها تدعم بروتوكلات مثل HTTP و HTTPS لذا يتم جلبه عبر tftp ثم جلب pxelinux
 +عبر HTTP لأنه أسرع.
 +
 +يفترض أننا سنحتاج ملف واحد امتداده .pxe لكن هناك بعض الحالات لا تعمل فيها التعريفات العامة فنضطر لاستخدام gPXE UNDI driver
 +
 +للحصول على الملفات
 +  * من موقع [[http://​rom-o-matic.net/​|ROM-o-matic]] اختر آخر نسخة مستقرة production release
 +  * من القائمة اختر "PXE bootstrap loader image [Unload PXE stack] (.pxe)"​
 +  * اختر كل التعريفات all drivers
 +  * قم بتخصيصه لتفعيل بروتوكول https
 +  * اضغط على get image واحفظ الملف في /​tftpboot/​gpxe.pxe
 +  * غير نوع التعريفات من all drivers إلى undionly
 +  * اضغط على get image واحفظ الملف في /​tftpboot/​undi.pxe
 +
 +===== إعداد خادم DHCP كي يحمل gPXE =====
 +قم بوضع الملفات على خادم apache أي في /​var/​www/​html/​netboot/​ ولا تبق في /tftpboot/ إلا ملفي gpxe.pxe و undi.pxe
 +
 +قم بتعديل إعدادات DCHP كي تقوم بتحميل pxelinux عبر http إن كان النظام يدعم
 +محمل إقلاع gPXE فإن لم يكن يدعمه فإنه يحمل gpxe.pxe الذي يضيف دعم http ثم يعيد من جديد.
 +
 +
 +{{ :​linux:​gpxe-stages.png?​480 |الإقلاع على مرحلتين عبر الشبكة}}
 +
 +يعني في الجزء الخاص بالأجهزة المخدومة أضف
 +<​file>​
 +next-server ip_address;
 +if exists user-class and option user-class = "​gPXE"​ {
 +    filename "​http://​webserver/​netboot/​pxelinux.0";​
 +} else {
 +    filename "/​gpxe.pxe";​
 +}
 +</​file>​
 +
 +قد تسأل ما فائدة الملف الآخر ​ undi.pxe حيث انه وفق هذه الإعدادات لن يتم استخدامه.
 +قد يلزمك استخدامه مكان gpxe.pxe إن لم تكن الأجهزة عندك مدعومة من قبل الأول.
 +
 +ولأن أغلب المختبرات تكون معدة من أجهزة متشابهة فإنه يلزمك واحد فقط من الملفين.
 +
 +لكن إن وجدت نفسك في موقف بحاجة لاستعمالهما معا يمكنك عمل:
 +<​file>​
 +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";​
 +    }
 +}
 +</​file>​
 +حيث mac_address_1 و mac_address_2 هما عنواني MAC للجهازين اللذان لم يعملان مع الملف العادي ويحتاجان للملف الثانوي undi.pxe
 +
 +
 +===== مراجع ووثائق ذات صلة =====
 +  * http://​etherboot.org/​wiki/​pxechaining
 +  * [[:​docs:​anaconda_askmethod]]
 +  * http://​docs.fedoraproject.org/​install-guide/​f12/​en-US/​html/​s2-x86-starting-bootopts.html
 +  * http://​fedoraproject.org/​w/​index.php?​title=Anaconda/​Options
 +  * http://​fedoraproject.org/​wiki/​Docs/​Drafts/​NetworkInstall
 +  * http://​cedarandthistle.wordpress.com/​2010/​02/​01/​setting-up-a-netboot-server-in-fedoracentos/​
 +  * http://​www.debian.org/​releases/​oldstable/​alpha/​ch04s03.html.en
 +  * https://​projects.centos.org/​trac/​livecd/​wiki/​PxeBoot
linux/netboot.txt · آخر تعديل: 2015/04/23 00:21 (تحرير خارجي)