Procedura di installazione del server di avvio PXE nella macchina virtuale Ubuntu Server


Risposte:


31

PXE (Preboot eXecution Environment, pixie pronunciato)

Vedi Wikipedia: PXE

Come funziona?

Questa è la mia comprensione!

PXE_Diagram_en.png

  1. La macchina client è accesa. Scansioni BIOS per dispositivi. Segue quindi il tentativo di caricare il bootloader dal dispositivo richiesto come elencato in Ordine di avvio / Sequenza . Carica PXE dalla ROM della scheda di rete.
  2. PXE (lato client) trasmette una richiesta per un IP. Risposta del server DHCP con le informazioni richieste: IP, IP server successivo (IP server TFTP), pxelinux.0(nome file caricatore bootstrap PXE), ... ecc

    PXE_Boot_1.png

  3. PXE (lato client) richiede il pxelinux.0file dal server TFTP, lo carica nella RAM e passa il controllo a pxelinux.0.

    pxelinux.0ottiene il file di configurazione di avvio dal server TFTP con nome come:
    (se non esiste, prova con il successivo)

    • UUID
    • MAC
    • IP in Capital Hex
    • Una parte dell'IP
    • Passa al defaultfile

    PXE_Boot_2.png

  4. Scelta dell'utente o voce di menu predefinita. pxelinux.0richiede il kernel e il RAMDisk corrispondenti dal server TFTP e li carica nella RAM.

    Quindi passa i parametri di avvio e il controllo al kernel caricato.

    PXE_Linux.png

  5. Il kernel carica le parti rimanenti dal server TFTP o da qualsiasi altro server di protocollo in base alle sue caratteristiche / proprietà.

    Parted_Magic_1.png Parted_Magic_2.png

Installazione del server

Esistono molti modi per configurare il server PXE, questo è uno di questi.

Queste istruzioni sono state testate su Ubuntu 9.10 e Ubuntu 10.04 su una macchina reale. Dovrebbero essere ancora validi con solo poche modifiche. (Aggiornato e testato per Ubuntu 14.04 su VirtualBox, controlla le revisioni di modifica per le versioni precedenti)

Il mio obiettivo era PartedMagic 4.5 , dovrebbe essere simile a Ubuntu o qualsiasi distribuzione Linux.

  1. Installa i pacchetti DHCP e TFTP

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

    • Modifica /etc/default/isc-dhcp-server, interfaccia Ethernet per servizio DHCP

      INTERFACES="eth0"
      
    • Modifica /etc/dhcp/dhcpd.conf‬o /etc/ltsp/dhcpd.confesiste, configurazione del servizio DHCP

      Configurazioni specifiche 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;
      }
      
    • Configurare un IP statico per eth0, 192.168.10.123nel mio caso, utilizzando Network Manager per Desktop Edition o /etc/network/interfacesServer Edition.

      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
      

      Reinizializza l'interfaccia di rete:

      sudo ifdown eth0
      sudo ifup eth0
      
    • Riavvia il servizio

      sudo service isc-dhcp-server restart
      

      Controllare lo stato

      netstat -lu
      

      Produzione

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

    • Modifica ‪/etc/inetd.conf, rimuovi #<off>#dall'inizio della tftpriga o aggiungi se non è presente nel #:BOOT:commento. (Salta con systemd, 15.10 e successive)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • Abilita il servizio di avvio per inetd

      sudo update-inetd --enable BOOT
      
    • Avvia il servizio

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

      Controllare lo stato

      netstat -lu
      

      Produzione

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. Impostazione dei file di avvio PXE

    • Decomprimere pmagic-pxe-4.5.zip. Se pxelinux.0non è presente, ottenerlo dal sysliux-commonpacchetto installato su /usr/lib/syslinux/pxelinux.0, Syslinux Project o Ubuntu Netboot Image .

      Mettili in una struttura simile.

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • Modifica /var/lib/tftpboot/pxelinux.cfg/default, se necessario, percorsi di esempio: 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
      
    • Configura le autorizzazioni corrette

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

Configurazione client

Modificare l'ordine di avvio del BIOS per una volta utilizzando F9o F12, per l'installazione permanente dalla configurazione del BIOS DEL, F2oppure F12. (A seconda della marca della macchina)

Spostare verso l'alto: [PXE | NIC | LAN | Ethernet | Network].

Appunti

  • inetutils-inetdo xinetdpuò essere utilizzato al posto di openbsd-inetd, alcuni inetdpassaggi sono diversi.

  • La directory principale TFTP potrebbe essere modificata da /etc/default/tftpd-hpa. Ricorda di aggiornare ‪/etc/inetd.confanche.

  • Molte distribuzioni supportano il caricamento di RAMDisk attraverso numerosi protocolli: SSH (SFTP), SMB, NFS ... Esempio Ubuntu supporta NFS.

  • Alcune vecchie schede di rete non supportano PXE, è possibile utilizzare iPXE ( es. GPXE o Etherboot ), sia su disco floppy, unità USB, disco rigido ( /bootpartizione) o addirittura flash su ROM (solo alcune schede di rete supportate). GRUB2 ha un modulo per supportare l'avvio tramite PXE.

    Vedi anche Wikipedia: gPXE e ROM-O-matic .

  • Ubuntu Netboot Image da cdimage.ubuntu.com/netboot/ fornisce l'installazione di Ubuntu dalla rete e chiederà di scaricare tutti i pacchetti richiesti dal mirror ufficiale o locale se ne hai uno.

    La maggior parte degli utenti è alla ricerca di immagini live in diretta tramite PXE. Questa domanda era solo per configurare un server PXE. Vedi Ubuntu Wiki: Installazione - LocalNet

    Ubuntu NetBoot - Mirror ufficiale dell'archivio Ubuntu NetBoot - Mirror di archivio personalizzato / locale

  • Il menu PXE può essere personalizzato, il modello migliore da cui imparare è Ubuntu NetBoot . Vedi Pxeboot Immagini multiple

    PXE_Linux_Menu.png

  • memdiskpuò essere utilizzato per caricare direttamente le immagini ISO o floppy disk tramite PXE. syslinux-commonil pacchetto ha una copia. Il client dovrebbe avere abbastanza RAM per contenere l'immagine più una parte per eseguire il sistema operativo caricato.

    Esempio di configurazione:

    /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
    
  • I pacchetti PartedMagic sono stati rilasciati dal sito ufficiale dopo che lo sviluppatore originale ha deciso di renderlo commerciale, alcune versioni potrebbero essere trovate attraverso la rete torrent. La mia risposta qui è un riassunto della prima configurazione PXE che ha funzionato per me. Ubuntu Netboot Image dovrebbe funzionare con le stesse istruzioni.


Amici, attualmente sto lavorando su Pxeboot. Ho installato questi pacchetti in una macchina virtuale (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 Modifico il dhcpd File .conf e il server DHCP è in esecuzione
Principiante

@Sneetsher: Ciao, sto usando tftpd-hda, configurato con valori predefiniti. A lo netstat -lu | grep tftpmostra in modalità di ascolto. La cartella / tftpboot è 777, tuttavia se provo ad tftp> get pxelinux.0esso dal client ottengo sempre un tftp: pxelinux.0: errore di autorizzazione negata . Hai un'idea per il debug? Grazie in anticipo.
Danduk82,

@ Danduk82, /var/lib/tftpboot/con 755 (impostazione predefinita) dovrebbe essere ok. Controlla se pxelinux.0hai 644 o esegui sudo chmod -R +r /var/lib/tftpboot/per rendere leggibile tutto il suo contenuto.
user.dz,

1
Ciao, in realtà ho risolto il problema: infatti ho (stupidamente) dimenticato di riavviare il servizio DHCP dopo aver aggiunto filename "pxelinux.0";... nessun commento; P ... grazie per la tua risposta e per questa grande (e completa) risposta. Saluti
Danduk82

1
@Matthieu, potresti trovare alcune versioni attraverso la rete torrent, i pacchetti sono stati rilasciati dal sito ufficiale dopo che lo sviluppatore originale ha deciso di renderlo commerciale. Inoltre puoi usare cdimage.ubuntu.com/netboot se stai solo cercando di testare o installare PXE per la prima volta.
user.dz
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.