Étapes d'installation du serveur de démarrage PXE dans la machine virtuelle du serveur Ubuntu


Réponses:


31

PXE (Preboot eXecution Environment, pixie prononcé)

Voir Wikipedia: PXE

Comment ça fonctionne?

C'est ma compréhension!

PXE_Diagram_en.png

  1. La machine client est sous tension. Le BIOS recherche les périphériques. Ensuite, il suit en essayant de charger le chargeur de démarrage à partir du périphérique requis, comme indiqué dans l' ordre / la séquence de démarrage . Il charge PXE à partir de la ROM de la carte réseau.
  2. PXE (côté client) a diffusé une demande d'adresse IP. Réponse du serveur DHCP avec les informations requises: IP, Next Server IP (TFTP server IP), pxelinux.0(nom du fichier du chargeur d'amorçage PXE), ... etc

    PXE_Boot_1.png

  3. PXE (côté client) demande le pxelinux.0fichier au serveur TFTP, le charge dans la RAM puis passe le contrôle à pxelinux.0.

    pxelinux.0obtient le fichier de configuration de démarrage du serveur TFTP avec le nom:
    (s'il n'existe pas, il essaie avec le suivant)

    • UUID
    • MAC
    • IP dans Capital Hex
    • Une partie de l'IP
    • Gouttes à defaultdéposer

    PXE_Boot_2.png

  4. Choix de l'utilisateur ou entrée de menu par défaut. pxelinux.0demande le noyau et le RAMDisk correspondants au serveur TFTP et les charge dans la RAM.

    Transmet ensuite les paramètres de démarrage et le contrôle au noyau chargé.

    PXE_Linux.png

  5. Le noyau charge les parties restantes à partir du serveur TFTP ou de tout autre serveur de protocole en fonction de ses caractéristiques / propriétés.

    Parted_Magic_1.png Parted_Magic_2.png

Configuration du serveur

Il existe de nombreuses façons de configurer le serveur PXE, c'est l'une d'entre elles.

Ces instructions ont été testées sur Ubuntu 9.10 et Ubuntu 10.04 sur une vraie machine. Ils devraient être toujours valides avec seulement quelques modifications. (Mis à jour et testé pour Ubuntu 14.04 sur VirtualBox, vérifiez les révisions d'édition pour les anciennes versions)

Mon objectif était PartedMagic 4.5 , il devrait être similaire à Ubuntu ou à toute distribution Linux.

  1. Installer les packages DHCP et TFTP

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

    • Modifier /etc/default/isc-dhcp-server, interface Ethernet pour le service DHCP

      INTERFACES="eth0"
      
    • Modifier /etc/dhcp/dhcpd.conf‬ou /etc/ltsp/dhcpd.confil existe, configuration du service DHCP

      Configurations spécifiques 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;
      }
      
    • Configurez une adresse IP statique pour eth0, 192.168.10.123dans mon cas, en utilisant le gestionnaire de réseau pour l'édition Desktop ou /etc/network/interfacespour l'édition Server.

      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
      

      Réinitialisez l'interface réseau:

      sudo ifdown eth0
      sudo ifup eth0
      
    • Redémarrez le service

      sudo service isc-dhcp-server restart
      

      Vérifier l'état

      netstat -lu
      

      Production

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

    • Modifiez ‪/etc/inetd.conf, supprimez #<off>#du début de la tftpligne ou ajoutez-le s'il n'est pas sous le #:BOOT:commentaire (Ignorez ceci avec systemd, 15.10 et versions ultérieures)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • Activer le service de démarrage pour inetd

      sudo update-inetd --enable BOOT
      
    • Démarrer le service

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

      Vérifier l'état

      netstat -lu
      

      Production

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. Configuration des fichiers de démarrage PXE

    • Décompressez pmagic-pxe-4.5.zip. Si ce pxelinux.0n'est pas le cas, récupérez-le dans le sysliux-commonpackage installé sur /usr/lib/syslinux/pxelinux.0, Syslinux Project ou Ubuntu Netboot Image .

      Mettez-les dans une structure similaire.

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • Modifiez /var/lib/tftpboot/pxelinux.cfg/default, si nécessaire, des exemples de chemins: 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
      
    • Configurer les autorisations correctes

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

Configuration du client

Modifiez l'ordre de démarrage du BIOS une seule fois à l'aide de F9ou F12, pour une configuration permanente à partir de la configuration du BIOS DEL, F2ou F12. (Selon la marque de la machine)

Déplacer vers le haut: [PXE | NIC | LAN | Ethernet | Network].

Remarques

  • inetutils-inetdou xinetdpeut être utilisé à la place de openbsd-inetd, certaines inetdétapes sont différentes.

  • Le répertoire racine TFTP peut être modifié depuis /etc/default/tftpd-hpa. N'oubliez pas de mettre à jour ‪/etc/inetd.confaussi.

  • De nombreuses distributions prennent en charge le chargement de RAMDisk via de nombreux protocoles: SSH (SFTP), SMB, NFS ... Exemple Ubuntu prend en charge NFS.

  • Certaines anciennes cartes réseau ne prennent pas en charge PXE, iPXE ( Ex. GPXE ou Etherboot ) peut être utilisé, soit sur disquette, clé USB, disque dur ( /bootpartition) ou même le flasher sur ROM (seulement quelques NIC pris en charge). GRUB2 possède un module pour prendre en charge le démarrage à l'aide de PXE.

    Voir aussi Wikipedia: gPXE et ROM-O-matic .

  • Ubuntu Netboot Image from cdimage.ubuntu.com/netboot/ fournit l'installation d'Ubuntu à partir du réseau et il vous demandera de télécharger tous les packages requis depuis le miroir officiel ou local si vous en avez un.

    La plupart des utilisateurs recherchent le démarrage d'une image en direct via PXE. Cette question était uniquement pour configurer un serveur PXE. Voir Ubuntu Wiki: Installation - LocalNet

    Ubuntu NetBoot - Miroir d'archive officiel Ubuntu NetBoot - Miroir d'archive personnalisé / local

  • Le menu PXE peut être personnalisé, le meilleur modèle à apprendre est Ubuntu NetBoot . Voir Pxeboot Multiple image

    PXE_Linux_Menu.png

  • memdiskpeut être utilisé pour charger directement les images ISO ou de disquette via PXE. syslinux-commonle paquet en a une copie. Le client doit avoir suffisamment de RAM pour contenir l'image et une partie pour exécuter le système d'exploitation chargé.

    Exemple de configuration:

    /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
    
  • Les packages PartedMagic ont été supprimés du site officiel après que le développeur d'origine ait décidé de le rendre commercial, certaines versions ont pu être trouvées via le réseau torrent. Ma réponse ici est un résumé de la première configuration PXE qui a fonctionné pour moi. Ubuntu Netboot Image devrait fonctionner avec les mêmes instructions.


Amis, En fait, je travaille sur Pxeboot. J'ai installé ces packages dans une machine virtuelle (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 je modifie le dhcpd .conf et a obtenu le serveur DHCP en cours d'exécution
Débutant

@Sneetsher: Bonjour, j'utilise tftpd-hda, configuré avec des valeurs par défaut. A le netstat -lu | grep tftpmontre en mode d'écoute. Le dossier / tftpboot est 777, mais si j'essaye tftp> get pxelinux.0depuis le client, j'obtiens toujours une erreur tftp: pxelinux.0: Autorisation refusée . Avez-vous une idée pour le déboguer? Merci d'avance.
Danduk82

@ Danduk82, /var/lib/tftpboot/avec 755 (par défaut) devrait être ok. Vérifiez si vous pxelinux.0avez 644 ou exécutez sudo chmod -R +r /var/lib/tftpboot/pour rendre tout son contenu lisible.
user.dz

1
Salut, en fait, j'ai résolu le problème: En fait, j'ai (stupidement) oublié de redémarrer le service DHCP après avoir ajouté filename "pxelinux.0";... aucun commentaire; P ... merci pour votre réponse et pour cette excellente (et complète) réponse. Vive
Danduk82

1
@Matthieu, Vous pouvez trouver des versions via le réseau torrent, les packages ont été supprimés du site officiel après que le développeur d'origine ait décidé de le rendre commercial. Vous pouvez également utiliser cdimage.ubuntu.com/netboot si vous cherchez simplement à tester ou à configurer PXE pour la première fois.
user.dz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.