[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Servidor de arranque iPXE

iPXE es una implementación de código abierto de Preboot Execution Environment que tiene mucha más funcionalidad que la mayoría de los clientes PXE de firmware. Además de usar tftp para descargar datos, iPXE también puede usar HTTP. Otros métodos de arranque incluyen el arranque desde una SAN iSCSI, una SAN de canal de fibra usando FCoE, una SAN ATA sobre Ethernet (AoE) o una red inalámbrica. También tiene un lenguaje de secuencias de comandos para que pueda crear secuencias de comandos de arranque complejas. iPXE también se utiliza como cliente PXE en QEMU, por lo que con un servidor iPXE puede arrancar máquinas virtuales directamente desde un servidor web.

En este artículo, configuraremos un servidor web como servidor de arranque primario. Debido a que no todos los clientes PXE pueden usar HTTP, configuraremos un servidor tftp simple para servir (o cargar en cadena) al propio cliente iPXE.

Supuestos y requisitos previos

  • Usaremos dnsmasq como servidor DHCP y tftp. Solo necesitamos una configuración tftp mínima y dnsmasq tiene un servidor incorporado.
  • La carpeta raíz tftp es /srv/tftproot .
  • El servidor web es www.mynetwork.com. La raíz del servidor web es /var/www/htdocs .
  • Necesitamos un kernel y un archivo initrd. Copie esto desde un CD de Slackware o un mirror.

Configurar el servidor DHCP y tftp

Agregue la siguiente sección a /etc/dnsmasq.conf :

dnsmasq.conf
# PXE booting: setup tftp server
enable-tftp
tftp-root=/srv/tftproot

# set tag "ipxe" if request comes from iPXE ("iPXE" user class)
dhcp-userclass=set:ipxe,iPXE

# if PXE request came from regular firmware, serve iPXE firmware
dhcp-boot=tag:!ipxe,undionly.kpxe
# if PXE request comes from iPXE, direct it to boot from HTTP
dhcp-boot=tag:ipxe,http://www.mynetwork.com/pxe/boot.txt

Las primeras líneas activarán el servidor tftp incorporado y definirán la carpeta raíz. Luego, se establece una etiqueta para determinar si la solicitud de inicio proviene de un cliente iPXE. Si la solicitud no proviene de iPXE, el cliente iPXE se descarga y se ejecuta. Si la solicitud proviene de iPXE, se descarga un script de arranque desde el servidor web y se ejecuta.

La sección anterior trata específicamente con el arranque PXE. También necesitarás configurar la funcionalidad básica de DHCP; vea el artículo DHCP a través de dnsmasq para eso. Para activar dnsmasq, asegúrese de que el script /etc/rc.d/rc.dnsmasq sea ejecutable.

Cree un nuevo directorio /srv/tftproot . Descargue el archivo undionly.kpxe desde el sitio web de iPXE y cópielo al directorio /srv/tftproot . Este es el archivo del cliente iPXE que se descargará del servidor tftp.

Configuración del servidor web

Cree una nueva carpeta /var/www/htdocs/pxe . Desde el CD o espejo de Slackware, copie los siguientes archivos: isolinux/initrd.img y kernels/huge.s/bzImage en la carpeta pxe. Ahora cree un nuevo archivo de texto boot.txt con el siguiente contenido:

boot.txt
#!ipxe
 
initrd http://www.mynetwork.com/pxe/initrd.img
chain  http://www.mynetwork.com/pxe/bzImage load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 nomodeset SLACK_KERNEL=huge.s

Esto es todo lo que se necesita para crear un servidor de arranque PXE. Este es un ejemplo muy simple que simplemente inicia el gran núcleo de instalación predeterminado. Para atender situaciones más dinámicas, tendrá que crear scripts de arranque más complejos. Mira la página de ejemplos en el sitio web de iPXE.

Scripts complejos

A continuación se muestra un script más complejo con un menú de arranque:

boot.txt
#!ipxe

set mirror http://www.mynetwork.com
set dir mirror

menu Slackware installation menu
item slackware64-14.1    Slackware64 14.1 
item slackware64-14.0    Slackware64 14.0
item slackware64-current Slackware64 current
item slackware-14.1      Slackware 14.1 
item slackware-14.0      Slackware 14.0 
item slackware-current   Slackware current
choose slackversion || exit 0

# boot arguments
set args load_ramdisk=1 prompt_ramdisk=0 rw printk.time=0 nomodeset SLACK_KERNEL=huge.s

# The APU system from PC Engines has the console on the serial port
set pcengines PC Engines
iseq ${manufacturer} ${pcengines} && iseq ${product} APU && set extraargs console=ttyS0,115200n8 ||

# load initrd and boot kernel
initrd ${mirror}/${dir}/${slackversion}/isolinux/initrd.img
chain  ${mirror}/${dir}/${slackversion}/kernels/huge.s/bzImage ${args} ${extraargs}

Tenga en cuenta que también puede usar una réplica pública de Slackware en lugar de alojar los archivos usted mismo. Si apunta a un espejo actual de slackware, ¡puede arrancar el kernel de instalación más reciente directamente desde Internet!

Fuentes

 es:howtos:network_services:ipxe ()