Gestor de arranque Etherboot/gPXE

gPXE (conocido antes como Etherboot) es una implementación de fuente abierta del Preboot Execution Environment (PXE) y cargador de arranque. Puede ser usado para habilitar a los computadores que no tienen soporte para el PXE para que puedan cargar desde la red, o para extender con soporte para protocolos adicionales a una implementación de PXE existente. Mientras que los clientes tradicionales de PXE usan TFTP para transferir datos, el gPXE añade la capacidad de recuperar datos a través de otros protocolos como HTTPiSCSI y ATA sobre Ethernet (AoE), y puede trabajar con Wi-Fi en vez de requerir una conexión alámbrica.

Equipos requeridos:

  1. Servidor Web Apache sobre un Ubuntu Server 64 bits, pero valdría cualquiera sobre cualquier sistema operativo.
  2. Máquina virtual gpxe.
  3. ISO descargada de etherboot.org

Para crear un gestor de arranque Etherboot/gPXE  accedemos a la página web de etherboot: http://etherboot.org/wiki/start y pinchamos en DOWNLOAD

 

Existen diferentes versiones de Etherboot/gPXE, en nuestro caso, elegimos la versión más actualizada, (1.0.1).

Elegimos como formato de salida ISO de arranque de la imagen (.iso) y como tipo de tarjeta de red todos los drivers y descargamos la imagen.

Para crear un gestor de arranque para arrancar un Linux, desde Virtual Box creamos una nueva máquina virtual de nombre gPXE, sistema operativo Linux, 512 MB de memoria RAM, no es necesario disco duro. En almacenamiento de la máquina virtual seleccionamos la imagen iso que nos hemos descargado anteriormente.

Creamos una nueva máquina virtual con un sistema operativo linux, en nuestro caso hemos elegido Slitaz. Seguimos los pasos del asistente para crear una máquina virtual de 256MB de RAM, 8 GB de disco duro.

Iniciamos la VM  gPXE y con Ctrol+B nos metemos en la consola. A partir de aquí hemos hecho diferentes pruebas:

    1. Inicio de un SO linux ubicado en un servidor de internet. Comandos necesarios:
      1. Comprobar interfaces de red:[code lang=»bash»]
        ifstat

        [/code]

      2. Configurar por DHCP una de las interfaces de red: [code lang=»bash»]
        dhcp net0

        [/code]

      3. Cargar el kernel, si todo ha sido correcto lo indica con un «ok»:[code lang=»bash»]
        kernel http://etherboot.org/gtest/bz2bzImage root=100

        [/code]

      4. Cargar el disco RAM inicial o initrd, si todo ha sido correcto lo indica con un «ok»(puede tardar unos minutos): [code lang=»bash»]
        initrd http://etherboot.org/gtest/initrd.bz2

        [/code]

      5. Iniciar el SO: [code lang=»bash»]
        boot

        [/code]

      6. La primera imagen muestra los tres primeros pasos y la segunda el SO funcionando:

    1. Inicio de un SO Linux Live – Slitaz 3.0 ubicado en nuestro servidor web (http://192.168.2.22/slitaz/). Se trata de una iso que hemos montado en un directorio público del servidor web utilizando mount con la opción loop (ver la entrada). Para ubicar el kernel e initrd he mirado en el fichero example-menu.lst que está en boot/grub.

1. Comprobar interfaces de red:[code lang=»bash»]

ifstat

[/code]
2.  Configurar por DHCP una de las interfaces de red: [code lang=»bash»] dchp net0[/code]
3.  Cargar el kernel, si todo ha sido correcto lo indica con un «ok»:[code lang=»bash»]kernel http://192.168.2.22/slitaz/bzImage[/code]
4.  Cargar el disco RAM inicial o initrd, si todo ha sido correcto lo indica con un «ok»(puede tardar unos minutos): [code lang=»bash»]initrd http://192.168.2.22/slitaz/rootfs.gz[/code]
5.  Iniciar el SO: [code lang=»bash»]boot[/code]
Imagen de slitaz funcionando:

 
NOTA: algunas teclas que necesitaremos del teclado en Inglés: = (corresponde con la tecla en Español ¿¡), / (corresponde con la tecla en Español – _) y : (corresponde con la tecla en Español ñÑ)