====== 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 '': # 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 [[howtos: network_services: dhcp_server_via_dnsmasq | 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 [[http://boot.ipxe.org/undionly.kpxe|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: #!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: #!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 ====== * El sitio web de iPXE: [[http://ipxe.org|ipxe.org]] con muchos [[http://ipxe.org/examples|ejemplos]]. * Escrito originalmente por [[wiki:user:fdonkers | Frank Donkers]] * Traducido por: [[wiki:user: slackwarespanol | Victor]] 2019/02/14 18:21 (UTC) {{tag>howtos boot pxe ipxe author_fdonkers}}