Pasos de instalación del servidor de arranque PXE en Ubuntu Server VM

Respuestas:

31

PXE (entorno de ejecución de arranque previo, duendecillo pronunciado)

Ver Wikipedia: PXE

¿Cómo funciona?

Este es mi entendimiento!

PXE_Diagram_en.png

  1. La máquina del cliente está encendida. El BIOS busca dispositivos. Luego sigue intentando cargar el cargador de arranque desde el dispositivo requerido como se enumera en Orden / secuencia de arranque . Carga PXE desde la ROM de la tarjeta de red.
  2. PXE (lado del cliente) difunde una solicitud de IP. El servidor DHCP responde con la información requerida: IP, IP del siguiente servidor (IP del servidor TFTP), pxelinux.0(nombre del archivo del cargador de arranque PXE), ... etc.

    PXE_Boot_1.png

  3. PXE (lado del cliente) solicita el pxelinux.0archivo del servidor TFTP, lo carga en la RAM y luego le pasa el control pxelinux.0.

    pxelinux.0obtiene el archivo de configuración de arranque del servidor TFTP con el nombre:
    (si no existe, intenta con el siguiente)

    • UUID
    • MAC
    • IP en Capital Hex
    • Una porción de la IP
    • Gotas para defaultarchivar

    PXE_Boot_2.png

  4. Elección del usuario o entrada de menú predeterminada. pxelinux.0solicita el kernel y RAMDisk correspondientes del servidor TFTP y los carga en la RAM.

    Luego pasa los parámetros de arranque y el control al núcleo cargado.

    PXE_Linux.png

  5. Kernel carga las partes restantes del servidor TFTP o cualquier otro servidor de protocolo, dependiendo de sus características / propiedades.

    Parted_Magic_1.png Parted_Magic_2.png

Configuración del servidor

Hay muchas formas de configurar el servidor PXE, esta es una de ellas.

Estas instrucciones se probaron en Ubuntu 9.10 y Ubuntu 10.04 en una máquina real. Deberían seguir siendo válidos con solo unos pocos cambios. (Actualizado y probado para Ubuntu 14.04 en VirtualBox, verifique las revisiones de edición para versiones anteriores)

Mi objetivo era PartedMagic 4.5 , debería ser similar a Ubuntu o cualquier distribución de Linux.

  1. Instalar paquetes DHCP y TFTP

        sudo apt-get install isc-dhcp-server openbsd-inetd lftp tftpd-hpa syslinux
    
  2. Configuración de DHCP

    • Editar /etc/default/isc-dhcp-server, interfaz Ethernet para servicio DHCP

      INTERFACES="eth0"
      
    • Editar /etc/dhcp/dhcpd.conf‬o /etc/ltsp/dhcpd.confexiste, configuración del servicio DHCP

      Configuraciones específicas de 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;
      }
      
    • Configure una IP estática para eth0, 192.168.10.123en mi caso, usar el administrador de red para la edición Desktop o /etc/network/interfacespara la edición 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
      

      Reinicializar la interfaz de red:

      sudo ifdown eth0
      sudo ifup eth0
      
    • Reiniciar servicio

      sudo service isc-dhcp-server restart
      

      Comprobar estado

      netstat -lu
      

      Salida

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

    • Edite ‪/etc/inetd.conf, elimine #<off>#desde el principio de la tftplínea o agregue si no está debajo del #:BOOT:comentario. (Omita esto con systemd, 15.10 y posterior)

      tftp    dgram   udp wait    root    /usr/sbin/in.tftpd  /usr/sbin/in.tftpd -s /var/lib/tftpboot
      
    • Habilitar el servicio de arranque para inetd

      sudo update-inetd --enable BOOT
      
    • Comienza el servicio

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

      Comprobar estado

      netstat -lu
      

      Salida

      Proto Recv-Q Send-Q Local Address           Foreign Address         State 
      udp        0      0 *:tftp                  *:*                          
      
  4. Configuración de archivos de arranque PXE

    • Descomprimir pmagic-pxe-4.5.zip. Si pxelinux.0no está allí, lo consigue a partir sysliux-commonpaquete instalado en /usr/lib/syslinux/pxelinux.0, Proyecto Syslinux o Ubuntu Netboot imagen .

      Póngalos en una estructura similar.

      /var/lib/tftpboot/
       |-- pxelinux.0
       |-- pxelinux.cfg/
       |   `-- default
       `-- pmagic/
           |-- bzimage
           `-- initramfs
      
    • Edite /var/lib/tftpboot/pxelinux.cfg/default, si es necesario, rutas de ejemplo: 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
      
    • Configurar permisos correctos

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

Configuración del cliente

Cambie el orden de arranque del BIOS por una vez usando F9o F12, para la configuración permanente desde la configuración del BIOS DEL, F2o F12. (Dependiendo de la marca de la máquina)

Mover a la parte superior: [PXE | NIC | LAN | Ethernet | Network].

Notas

  • inetutils-inetdo xinetdpuede usarse en lugar de openbsd-inetd, algunos inetdpasos son diferentes.

  • El directorio raíz TFTP se puede cambiar desde /etc/default/tftpd-hpa. Recuerde actualizar ‪/etc/inetd.conftambién.

  • Muchas distribuciones soportan cargar RAMDisk a través de muchos protocolos: SSH (SFTP), SMB, NFS ... Ejemplo Ubuntu soporta NFS.

  • Algunas tarjetas de red antiguas no son compatibles con PXE, se puede usar iPXE (por ejemplo , gPXE o Etherboot ), ya sea en disquete, unidad USB, disco duro ( /bootpartición) o incluso flashearlo a la ROM (solo se admiten pocas NIC). GRUB2 tiene un módulo para admitir el arranque mediante PXE.

    Ver también Wikipedia: gPXE y ROM-O-matic .

  • Ubuntu Netboot Image de cdimage.ubuntu.com/netboot/ proporciona la instalación de Ubuntu desde la red y le pedirá que descargue todos los paquetes necesarios desde el espejo oficial o local si tiene uno.

    La mayoría de los usuarios buscan arrancar imágenes en vivo a través de PXE. Esta pregunta fue solo para configurar un servidor PXE. Ver Ubuntu Wiki: Instalación - LocalNet

    Ubuntu NetBoot - Archivo oficial espejo Ubuntu NetBoot: espejo de archivo personalizado / local

  • El menú PXE se puede personalizar, la mejor plantilla para aprender es Ubuntu NetBoot . Ver imagen múltiple de Pxeboot

    PXE_Linux_Menu.png

  • memdiskse puede usar para cargar directamente las imágenes ISO o de disquete a través de PXE. syslinux-commonEl paquete tiene una copia. El cliente debe tener suficiente RAM para contener la imagen más una parte para ejecutar el sistema operativo cargado.

    Ejemplo de configuración:

    /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
    
  • Los paquetes de PartedMagic se eliminaron del sitio oficial después de que el desarrollador original decidiera comercializarlo, algunos lanzamientos se podían encontrar a través de la red de torrents. Mi respuesta aquí es un resumen de la primera configuración de PXE que funcionó para mí. Ubuntu Netboot Image debería funcionar con las mismas instrucciones.

user.dz
fuente
Amigos, en realidad estoy trabajando en Pxeboot. Instalé estos paquetes en una máquina virtual (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 Edito el dhcpd .conf y obtuve el servidor dhcp ejecutándose
Principiante
@Sneetsher: Hola, estoy usando tftpd-hda, configurado con valores predeterminados. A lo netstat -lu | grep tftpmuestra en modo de audición. La carpeta / tftpboot es 777, sin embargo, si lo intento tftp> get pxelinux.0desde el cliente, siempre obtengo un tftp: pxelinux.0: error de permiso denegado . ¿Tienes una idea para depurarlo? Gracias por adelantado.
Danduk82
@ Danduk82, /var/lib/tftpboot/con 755 (predeterminado) debería estar bien. Compruebe si pxelinux.0tiene 644 o ejecute sudo chmod -R +r /var/lib/tftpboot/para que todos sus contenidos sean legibles.
user.dz
1
Hola, en realidad he resuelto el problema: de hecho, (estúpidamente) olvidé reiniciar el servicio DHCP después de agregar filename "pxelinux.0";... sin comentarios; P ... gracias por su respuesta y por esta excelente (y completa) respuesta. Saludos
Danduk82
1
@ Matthieu, puede encontrar algunos lanzamientos a través de la red torrent, los paquetes se eliminaron del sitio oficial después de que el desarrollador original decidiera comercializarlo. También puede usar cdimage.ubuntu.com/netboot si solo está buscando probar o configurar PXE por primera vez.
user.dz