Kroki instalacji serwera rozruchowego PXE na maszynie Wirtualnej serwera Ubuntu

Odpowiedzi:

31

PXE (Preboot eXecution Environment, wyraźne pixie)

Zobacz Wikipedia: PXE

Jak to działa?

To jest moje zrozumienie!

PXE_Diagram_en.png

  1. Komputer kliencki jest włączony. System BIOS skanuje urządzenia. Następnie następuje próba załadowania programu ładującego z wymaganego urządzenia zgodnie z listą Boot Order / Sequence . Ładuje PXE z ROM karty sieciowej.
  2. PXE (po stronie klienta) rozgłasza żądanie adresu IP. Odpowiedź serwera DHCP z wymaganymi informacjami: IP, IP następnego serwera (IP serwera TFTP), pxelinux.0(nazwa pliku modułu ładującego PXE), ... itd.

    PXE_Boot_1.png

  3. PXE (po stronie klienta) żąda pxelinux.0pliku z serwera TFTP, ładuje go do pamięci RAM, a następnie przekazuje kontrolę pxelinux.0.

    pxelinux.0pobiera plik konfiguracyjny rozruchu z serwera TFTP o nazwie jako:
    (jeśli nie istnieje, próbuje z następnym)

    • UUID
    • PROCHOWIEC
    • Własność intelektualna w Hex
    • Część własności intelektualnej
    • Krople do defaultpliku

    PXE_Boot_2.png

  4. Wybór użytkownika lub domyślna pozycja menu. pxelinux.0żąda odpowiedniego jądra i pamięci RAM od serwera TFTP i ładuje je do pamięci RAM.

    Następnie przekazuje parametry rozruchowe i kontrolę do załadowanego jądra.

    PXE_Linux.png

  5. Jądro ładuje pozostałe części z serwera TFTP lub dowolnego innego serwera protokołu, w zależności od jego funkcji / właściwości.

    Parted_Magic_1.png Parted_Magic_2.png

Konfiguracja serwera

Istnieje wiele sposobów konfiguracji serwera PXE, jest to jeden z nich.

Te instrukcje zostały przetestowane na Ubuntu 9.10 i Ubuntu 10.04 na prawdziwej maszynie. Powinny one nadal obowiązywać, z niewielkimi zmianami. (Zaktualizowano i przetestowano dla Ubuntu 14.04 na VirtualBox, sprawdź wersje edycji dla starych wydań)

Moim celem była PartedMagic 4.5 , powinna być podobna do Ubuntu lub dowolnej dystrybucji Linuksa.

  1. Zainstaluj pakiety DHCP i TFTP

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. Konfiguracja DHCP

    • Edycja /etc/default/isc-dhcp-server, interfejs Ethernet dla usługi DHCP

      INTERFACES="eth0"
      
    • Edytuj /etc/dhcp/dhcpd.conf‬lub /etc/ltsp/dhcpd.confistnieje, konfiguracja usługi DHCP

      Konfiguracje specyficzne dla PXE: filenameinext-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;
      }
      
    • Skonfiguruj statyczny adres IP eth0, 192.168.10.123w moim przypadku za pomocą menedżera sieci w wersji Desktop lub /etc/network/interfacesServer.

      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
      

      Uruchom ponownie interfejs sieciowy:

      sudo ifdown eth0
      sudo ifup eth0
      
    • Uruchom ponownie usługę

      sudo service isc-dhcp-server restart
      

      Sprawdź status

      netstat -lu
      

      Wynik

      Proto Recv-Q Send-Q Local Address           Foreign Address         State      
      udp        0      0 *:bootpc                *:*                                
      
  3. Konfiguracja TFTP

    • Edytuj ‪/etc/inetd.conf, usuń #<off>#z początku tftpwiersza lub dodaj, jeśli nie ma go pod #:BOOT:komentarzem. (Pomiń to przy pomocy systemd, 15.10 i późniejszych)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • Włącz usługę rozruchu dla inetd

      sudo update-inetd --enable BOOT
      
    • Uruchomić usługę

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

      Sprawdź status

      netstat -lu
      

      Wynik

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. Konfiguracja plików rozruchowych PXE

    • Rozpakuj pmagic-pxe-4.5.zip. Jeśli pxelinux.0nie ma, to się z sysliux-commonpakietu zainstalowanego w /usr/lib/syslinux/pxelinux.0, Syslinux Projektu lub Ubuntu Netboot obrazu .

      Umieść je w podobnej strukturze.

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • W /var/lib/tftpboot/pxelinux.cfg/defaultrazie potrzeby edytuj przykładowe ścieżki: 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
      
    • Skonfiguruj prawidłowe uprawnienia

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

Konfiguracja klienta

Zmień kolejność rozruchu systemu BIOS raz, używając F9lub F12, do stałej konfiguracji z konfiguracji BIOS DEL, F2lub F12. (W zależności od marki maszyny)

Przenieś do góry: [PXE | NIC | LAN | Ethernet | Network].

Notatki

  • inetutils-inetdlub xinetdmogą być użyte zamiast openbsd-inetd, niektóre inetdkroki są różne.

  • Katalog główny TFTP można zmienić z /etc/default/tftpd-hpa. Pamiętaj też o aktualizacji ‪/etc/inetd.conf.

  • Obsługa wielu dystrybucji ładuje RAMDisk przez wiele protokołów: SSH (SFTP), SMB, NFS ... Przykład Ubuntu obsługuje NFS.

  • Niektóre stare karty sieciowe nie obsługują PXE, iPXE ( np. GPXE lub Etherboot ) może być używany na dyskietce, dysku USB, dysku twardym ( /bootpartycji), a nawet flashować go na ROM (tylko kilka obsługiwanych kart sieciowych ). GRUB2 ma moduł do obsługi uruchamiania za pomocą PXE.

    Zobacz także Wikipedia: gPXE i ROM-O-matic .

  • Ubuntu Netboot Obraz z cdimage.ubuntu.com/netboot/ zapewnia instalację Ubuntu z sieci i poprosi o pobranie wszystkich wymaganych pakietów z oficjalnego serwera lustrzanego lub lokalnego, jeśli taki masz.

    Większość użytkowników szuka rozruchu obrazu na żywo za pośrednictwem PXE. To pytanie dotyczyło tylko konfiguracji serwera PXE. Zobacz Wiki Ubuntu: Instalacja - LocalNet

    Ubuntu NetBoot - Oficjalne lustro archiwalne Ubuntu NetBoot - niestandardowe / lokalne archiwum lustrzane

  • Menu PXE można dostosować, najlepszym szablonem do nauki jest Ubuntu NetBoot . Zobacz Pxeboot Multiple image

    PXE_Linux_Menu.png

  • memdiskmożna użyć do bezpośredniego załadowania obrazów ISO lub dyskietek przez PXE. syslinux-commonpaczka ma kopię. Klient powinien mieć wystarczającą ilość pamięci RAM, aby pomieścić obraz oraz część do uruchomienia załadowanego systemu operacyjnego.

    Przykład konfiguracji:

    /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
    
  • Pakiety PartedMagic zostały usunięte z oficjalnej strony po tym, jak pierwotny deweloper zdecydował się na komercję, niektóre wydania można było znaleźć za pośrednictwem sieci torrent. Moja odpowiedź tutaj to podsumowanie pierwszej konfiguracji PXE, która działała dla mnie. Obraz Ubuntu Netboot powinien działać z tymi samymi instrukcjami.

user.dz
źródło
Przyjaciele, Właściwie pracuję nad Pxeboot. Zainstalowałem te pakiety na jednej maszynie wirtualnej (Oracle Virtualbox), apt-get install nfs-kernel-server apt-get install tftpd-hpa inetutils-inetd apt-get install syslinux apt-get install isc-dhcp-server Edytuję dhcpd .conf i uruchomiono serwer dhcp
Początkujący
@Sneetsher: Cześć, używam tftpd-hda, skonfigurowanych z wartościami domyślnymi. A netstat -lu | grep tftppokazuje to w trybie słuchania. Folder / tftpboot to 777, jednak jeśli spróbuję to tftp> get pxelinux.0zrobić od klienta, zawsze otrzymuję błąd tftp: pxelinux.0: błąd odmowy uprawnień . Czy masz pomysł na debugowanie? Z góry dziękuję.
Danduk82,
@ Danduk82, /var/lib/tftpboot/z 755 (domyślnie) powinno być w porządku. Sprawdź, czy pxelinux.0masz 644 lub uruchom, sudo chmod -R +r /var/lib/tftpboot/aby cała jego zawartość była czytelna.
user.dz
1
Cześć, właściwie rozwiązałem problem: w rzeczywistości (głupio) zapomniałem ponownie uruchomić usługę DHCP po dodaniu filename "pxelinux.0";... bez komentarza; P ... dziękuję za odpowiedź i za tę świetną (i kompletną) odpowiedź. Na zdrowie
Danduk82,
1
@ Matthieu, niektóre wydania można znaleźć w sieci torrent, paczki zostały usunięte z oficjalnej strony po tym, jak oryginalny programista zdecydował się wprowadzić je na rynek. Możesz także użyć cdimage.ubuntu.com/netboot, jeśli chcesz po prostu przetestować lub skonfigurować PXE po raz pierwszy.
user.dz