ขั้นตอนการติดตั้ง PXE Boot Server ใน Ubuntu Server VM


15

ฉันจะติดตั้งเครื่องเสมือน Ubuntu โดยใช้เซิร์ฟเวอร์บูต PXE ได้อย่างไร

ฉันต้องการรายละเอียดการกำหนดค่าทั้งหมดและสิ่งที่ต้องเปลี่ยนแปลงในไฟล์การกำหนดค่า

คำตอบ:


31

PXE (Preboot eXecution Environment, Pixie เด่นชัด)

ดูที่Wikipedia: PXE

มันทำงานอย่างไร?

นี่คือความเข้าใจของฉัน!

PXE_Diagram_en.png

  1. เครื่องไคลเอนต์เปิดทำงาน BIOS สแกนหาอุปกรณ์ จากนั้นก็ต่อไปนี้โดยพยายามที่จะโหลดบูตโหลดจากอุปกรณ์ที่จำเป็นตามที่ระบุไว้ในBoot สั่งซื้อ โหลด PXE จาก ROM การ์ดเครือข่าย
  2. PXE (ฝั่งไคลเอ็นต์) กระจายการร้องขอสำหรับ IP เซิร์ฟเวอร์ DHCP ตอบกลับพร้อมข้อมูลที่จำเป็น: IP, IP เซิร์ฟเวอร์ถัดไป (IP เซิร์ฟเวอร์ TFTP), pxelinux.0(ชื่อไฟล์ตัวโหลดบูต PXE), ... ฯลฯ

    PXE_Boot_1.png

  3. PXE (ฝั่งไคลเอ็นต์) ขอpxelinux.0ไฟล์จากเซิร์ฟเวอร์ TFTP โหลดไปยัง RAM pxelinux.0แล้วผ่านการควบคุม

    pxelinux.0รับไฟล์การตั้งค่าการบู๊ตจากเซิร์ฟเวอร์ TFTP ที่มีชื่อเป็น:
    (หากไม่มีอยู่จะลองทำในครั้งถัดไป)

    • UUID
    • MAC
    • IP ในฐานสิบหก
    • ส่วนหนึ่งของ IP
    • วางลงdefaultไฟล์

    PXE_Boot_2.png

  4. อาจเป็นตัวเลือกผู้ใช้หรือรายการเมนูเริ่มต้น pxelinux.0ร้องขอเคอร์เนลและ RAMDisk ที่สอดคล้องกันจากเซิร์ฟเวอร์ TFTP และโหลดไปยัง RAM

    จากนั้นผ่านพารามิเตอร์การบู๊ตและควบคุมไปยังเคอร์เนลที่โหลด

    PXE_Linux.png

  5. เคอร์เนลโหลดส่วนที่เหลือจากเซิร์ฟเวอร์ TFTP หรือเซิร์ฟเวอร์โปรโตคอลอื่น ๆ ขึ้นอยู่กับคุณสมบัติ / คุณสมบัติของมัน

    Parted_Magic_1.png Parted_Magic_2.png

การตั้งค่าเซิร์ฟเวอร์

มีหลายวิธีในการตั้งค่าเซิร์ฟเวอร์ PXE นี่เป็นหนึ่งในนั้น

คำแนะนำเหล่านี้ทดสอบบนUbuntu 9.10และUbuntu 10.04บนเครื่องจริง ควรจะยังคงใช้ได้เมื่อมีการเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น (อัปเดต & ทดสอบสำหรับ Ubuntu 14.04 บน VirtualBox ตรวจสอบการแก้ไขสำหรับรุ่นเก่า)

เป้าหมายของฉันคือPartedMagic 4.5มันควรจะคล้ายกับ Ubuntu หรือการกระจาย Linux ใด ๆ

  1. ติดตั้งแพ็คเกจ DHCP & TFTP

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. ตั้งค่า DHCP

    • แก้ไข/etc/default/isc-dhcp-serverอินเตอร์เฟส Ethernet สำหรับบริการ DHCP

      INTERFACES="eth0"
      
    • แก้ไข/etc/dhcp/dhcpd.conf‬หรือ/etc/ltsp/dhcpd.confมีอยู่, การกำหนดค่าบริการ DHCP

      การกำหนดค่าเฉพาะของ PXE: filename&next-server

      default-lease-time 600;
      max-lease-time 7200;
      subnet 192.168.10.0 netmask 255.255.255.0 {
          range 192.168.10.50 192.168.10.100;
          option subnet-mask 255.255.255.0;
          option routers 192.168.10.123;
          option broadcast-address 192.168.10.255;
          filename "pxelinux.0";
          next-server 192.168.10.123;
      }
      
    • การตั้งค่า IP แบบคงที่สำหรับeth0, 192.168.10.123ในกรณีของฉันโดยใช้ผู้จัดการเครือข่ายฉบับสก์ท็อปหรือ/etc/network/interfacesฉบับเซิร์ฟเวอร์

      auto eth0
      iface eth0 inet static
      address 192.168.10.123
      netmask 255.255.255.0
      network 192.168.10.0
      broadcast 192.168.10.255
      

      กำหนดค่าเริ่มต้นใหม่ให้กับส่วนต่อประสานเครือข่าย:

      sudo ifdown eth0
      sudo ifup eth0
      
    • เริ่มบริการใหม่

      sudo service isc-dhcp-server restart
      

      ตรวจสอบสถานะ

      netstat -lu
      

      เอาท์พุต

      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      udp        0      0 *:bootpc                *:*                                
      
  3. การตั้งค่า TFTP

    • แก้ไข‪/etc/inetd.confลบออก#<off>#จากจุดเริ่มต้นของtftpบรรทัดหรือเพิ่มหากไม่มีอยู่ใต้#:BOOT:ความคิดเห็น (ข้ามสิ่งนี้ด้วย systemd, 15.10 และใหม่กว่า)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • เปิดใช้งานบริการบู๊ตสำหรับ inetd

      sudo update-inetd --enable BOOT
      
    • เริ่มบริการ

      sudo service openbsd-inetd restart
      sudo service tftpd-hpa restart
      

      ตรวจสอบสถานะ

      netstat -lu
      

      เอาท์พุต

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. การตั้งค่าไฟล์บูต PXE

    • pmagic-pxe-4.5.zipเปิดเครื่องรูด ถ้าpxelinux.0ไม่ได้มีได้รับจากsysliux-commonแพคเกจติดตั้งที่/usr/lib/syslinux/pxelinux.0, syslinux โครงการหรืออูบุนตู NetBoot ภาพ

      วางไว้ในโครงสร้างที่คล้ายกัน

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • แก้ไข/var/lib/tftpboot/pxelinux.cfg/defaultหากต้องการตัวอย่างเส้นทาง: pmagic/bzimage&pmagic/initramfs

      DEFAULT partmagic 
      
      LABEL partmagic 
          MENU LABEL PartMagic 4.5 
          KERNEL pmagic/bzimage 
          APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
      
    • ตั้งค่าสิทธิ์ที่ถูกต้อง

      sudo find /var/lib/tftpboot -type f -exec chmod 644 {} \;
      sudo find /var/lib/tftpboot -type d -exec chmod 755 {} \;
      

การตั้งค่าไคลเอนต์

เปลี่ยน BIOS ลำดับการบูตหนึ่งครั้งใช้F9หรือF12สำหรับการติดตั้งอย่างถาวรจากการกำหนดค่า BIOS DEL, หรือF2 F12(ขึ้นอยู่กับยี่ห้อเครื่อง)

เลื่อนไปด้านบน: [PXE | NIC | LAN | Ethernet | Network].

หมายเหตุ

  • inetutils-inetdหรือxinetdสามารถใช้แทนได้openbsd-inetdบางinetdขั้นตอนจะแตกต่างกัน

  • ไดเรกทอรีราก TFTP สามารถเปลี่ยนแปลง/etc/default/tftpd-hpaได้ อย่าลืมอัพเดท‪/etc/inetd.confด้วย

  • การกระจายจำนวนมากรองรับการโหลด RAMDisk ผ่านโปรโตคอลจำนวนมาก: SSH (SFTP), SMB, NFS ... ตัวอย่าง Ubuntu รองรับ NFS

  • การ์ดเครือข่ายเก่าบางรุ่นไม่รองรับ PXE, iPXE ( เช่น gPXE หรือ Etherboot ) สามารถใช้ได้ทั้งบนฟลอปปี้ดิสก์, ไดรฟ์ USB, Harddisk ( /bootพาร์ติชั่น) หรือแม้แต่แฟลชไปยัง ROM (รองรับ NIC เพียงไม่กี่ตัว) GRUB2 มีโมดูลรองรับการบูทโดยใช้ PXE

    ดูยังวิกิพีเดีย: gPXEและรอม-o-matic

  • Ubuntu Netboot Image จากcdimage.ubuntu.com/netboot/ ให้การติดตั้ง Ubuntu จากเครือข่ายและมันจะขอให้ดาวน์โหลดแพคเกจที่จำเป็นทั้งหมดจากมิเรอร์อย่างเป็นทางการหรือท้องถิ่นถ้าคุณมี

    ผู้ใช้ส่วนใหญ่กำลังค้นหาการบูตรูปภาพสดผ่าน PXE คำถามนี้เป็นเพียงการตั้งค่าเซิร์ฟเวอร์ PXE ดูUbuntu Wiki: การติดตั้ง - LocalNet

    Ubuntu NetBoot - มิร์เรอร์ไฟล์เก็บถาวรอย่างเป็นทางการ Ubuntu NetBoot - มิร์เรอร์เก็บถาวร / กำหนดเอง

  • PXE เมนูสามารถปรับแต่งแม่แบบที่ดีที่สุดที่จะเรียนรู้จากการเป็นอูบุนตู NetBoot ดูPxeboot หลายภาพ

    PXE_Linux_Menu.png

  • memdiskสามารถใช้เพื่อโหลดภาพ ISO หรือฟลอปปี้ดิสก์โดยตรงผ่าน PXE syslinux-commonแพคเกจมีสำเนา ไคลเอนต์ควรมี RAM เพียงพอที่จะเก็บภาพรวมส่วนสำหรับการเรียกใช้ระบบปฏิบัติการที่โหลด

    ตัวอย่างการกำหนดค่า:

    /var/lib/tftpboot/
    |-- FDSTD.144
    |-- memdisk
    |-- pxelinux.0
    |-- slitaz-cooking.iso
    |-- pxelinux.cfg
    |   `-- default
    `-- pmagic/
        |-- bzimage
        `-- initramfs
    

    /pxelinux.cfg/default

    DEFAULT partmagic
    
    LABEL partmagic
        MENU LABEL PartMagic 4.5
        KERNEL pmagic/bzimage
        APPEND initrd=pmagic/initramfs edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us livemedia
    
    LABEL slitaz
        MENU LABEL ^Slitaz.iso
        TEXT HELP
    Testing boot from iso.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=slitaz-cooking.iso
    
    LABEL freedos_std
        MENU LABEL ^FreeDOS STD
        TEXT HELP
    Testing boot from Floppy IMG.
        ENDTEXT 
        KERNEL memdisk
        APPEND initrd=FDSTD.144
    
  • แพคเกจ PartedMagic ถูกลบจากเว็บไซต์อย่างเป็นทางการหลังจากผู้พัฒนาดั้งเดิมตัดสินใจที่จะทำการค้าบางรุ่นสามารถพบได้ผ่านเครือข่ายฝนตกหนัก คำตอบของฉันที่นี่คือประวัติย่อของการตั้งค่า PXE ครั้งแรกที่เหมาะกับฉัน Ubuntu Netboot Imageควรทำงานด้วยคำแนะนำเดียวกัน


เพื่อนจริง ๆ แล้วฉันกำลังทำงานกับ Pxeboot ฉันติดตั้งแพคเกจเหล่านี้ในเครื่องเสมือน (Oracle Virtualbox), apt-get install nfs-kernel-server apt-get ติดตั้ง tftpd-hpa inetutils-inetd apt-get ติดตั้ง syslinux apt-get ติดตั้ง isc-dhcp- เซิร์ฟเวอร์ ไฟล์. config และให้เซิร์ฟเวอร์ dhcp ทำงาน
เริ่มต้น

@Sneetsher: สวัสดีฉันใช้ tftpd-hda กำหนดค่าด้วยค่าเริ่มต้น netstat -lu | grep tftpแสดงในโหมดฟัง โฟลเดอร์ / tftpboot คือ 777 แต่ถ้าฉันลองtftp> get pxelinux.0จากไคลเอนต์ฉันจะได้รับข้อผิดพลาดtftp: pxelinux.0: การอนุญาตถูกปฏิเสธเสมอ คุณมีความคิดที่จะแก้ปัญหาหรือไม่ ขอบคุณล่วงหน้า.
Danduk82

@ Danduk82 ที่/var/lib/tftpboot/มี 755 (ค่าเริ่มต้น) ควรเป็น ok ตรวจสอบว่าpxelinux.0มี 644 หรือเรียกใช้sudo chmod -R +r /var/lib/tftpboot/เพื่อให้สามารถอ่านเนื้อหาทั้งหมดได้หรือไม่
user.dz

1
สวัสดีที่จริงฉันได้แก้ปัญหา: อันที่จริงฉัน (โง่) ลืมที่จะรีสตาร์ทบริการ DHCP หลังจากเพิ่มfilename "pxelinux.0";... ไม่มีความคิดเห็น P ... ขอบคุณสำหรับคำตอบของคุณและคำตอบที่ดี (และสมบูรณ์) นี้ ไชโย
Danduk82

1
@Matthieu, คุณอาจพบบางรุ่นผ่านเครือข่ายฝนตกหนัก, แพ็คเกจถูกลบจากเว็บไซต์อย่างเป็นทางการหลังจากผู้พัฒนาดั้งเดิมตัดสินใจที่จะทำการค้า นอกจากนี้คุณอาจใช้cdimage.ubuntu.com/netbootหากคุณต้องการทดสอบหรือติดตั้ง PXE เป็นครั้งแรก
user.dz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.