أعجوبة

البرمجيات الحُرة والمفتوحة المصدر

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

أدوات الموقع


linux:netboot

اختلافات

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

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

linux:netboot [2010/02/12 23:19] – تم إنشاء alsadilinux:netboot [2015/04/23 03:21] (حالي) – تحرير خارجي 127.0.0.1
سطر 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 03:21 بواسطة 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki