PXE - syslinux
Descripción
PXELINUX es un derivado de Syslinux, para el arranque desde un servidor en red, mediante una ROM [1] de red, conforme a la especificación Intel PXE. PXELINUX, no es un programa destinado a ser flaseado o quemado, en una PROM de una tarjeta de red. En tal caso, revisar iPXE.
Si fuese necesario crear una PROM; compatible con PXE, para la tarjeta de red -con objeto de utilizarla con PXELINUX, por qjemplo, revisar NetBoot.
Direcotorio de trabajo
El Directorio de Trabajo Activo inicial, es aportado tanto por DHCP, opción 210(pxelinux.pathprefix), prefijo de ruta en bruto, o el directorio ascendente del archivo PXELINUX, indicado por el campo sname y el archivo (sname=“192.168.2.3” y file=“boot/pxelinux.0” resuelto en “tftp://192.168.2.3/boot/”, o en “192.168.2.3::boot/” en un
formato PXELINUX anterior), con precedencia, tal y como es especificado en la sección #Options de este documento.
Todos los nombre de archivo no cualificados, son relativos al Directorio de Trabajo Activo.
Configuración
La configuración básica, es la misma en todas la variantes Syslinux. Este documento explica algunas de las diferencias, especialmente aplicables a PXELINUX.
En el servidor TFTP, crear el directorio /tftpboot y, copiar pxelinux.0 -desde la distribución de Syslinux y, cualquier imagen del kernel o initrd, desde la que arrancar.
[5.00+] Copiar ldlinux.c32 desde la distribución de Syslinux, al directorio /tftpboot en el servidor TFTP.
Finalmente, crear el directorio /tftpboot/pxelinux.cfg. El archivo de configuración -equivalente a syslinux.cfg -ver SYSLINUX FAQ para más opciones, situado en este mismo directorio.
Dado que podría arrancarse más de un sistema, desde el mismo servidor, el nombre del archivo de configuración, dependrá de la dirección IP de la máquina de arranque.
Antes dar una explicación gnérica, presentaremos un ejemplo:
el nombre del archivo del gestor de arranque es
/mybootdir/pxelinux.0; y,el UUID de cliente es
b8945908-d6a6-41a9-611d-74a6ab80b83d; y,la dirección MAC Ethernet
88:99:AA:BB:CC:DD; y,la direcció IP es
192.168.2.91, el letras hexadecimales mayúsculasC0A8025B.
PXELINUX buscará los siguientes archivos de configuración -en éste orden:
/mybootdir/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d
/mybootdir/pxelinux.cfg/01-88-99-aa-bb-cc-dd
/mybootdir/pxelinux.cfg/C0A8025B
/mybootdir/pxelinux.cfg/C0A8025
/mybootdir/pxelinux.cfg/C0A802
/mybootdir/pxelinux.cfg/C0A80
/mybootdir/pxelinux.cfg/C0A8
/mybootdir/pxelinux.cfg/C0A
/mybootdir/pxelinux.cfg/C0
/mybootdir/pxelinux.cfg/C
/mybootdir/pxelinux.cfg/default
Veamos qué representa exactamente, el ejemplo de arriba.
Después de intentar los archivos especificados en el DHCP, u opciones en bruto, pxelinux probará las siguientes rutas, con prefijo pxelinux.cfg, bajo el Directorio de Trabajo inicial.
El UUID de cliente, de ser provisto por la pila PXE.
Nota
Algunas BIOS, carecen de una UUID válida y, podrían
terminar por devolver algo parecido a 1 -unos.
El valor es representado en el formato estandar UUID, mediante dígitos hexadecimales en minúscula. Ejemplo, b8945908-d6a6-41a9-611d-74a6ab80b83d.
El tipo de hardware -modelo de código ARP, y dirección; todo, en hexadecimal y en minúscula, con giones por separador.
Por ejemplo, la tabla ARP ethernet tipo 1, con la dirección 88:99:AA:BB:CC:DD, buscaría el nombre de archivo 01-88-99-aa-bb-cc-dd.
La própia dirección de cliente IPv4, en hexadecimal mayúscula, seguido de los carácteres hexadecimales retirados, uno cada vez, hasta el final.
Por ejemplo, 192.168.2.91 → C0A8025B.
El programa incluido gethostip, podrá ser utilizado para computar la dirección IP en hexadecimal, para cualquier anfitrión -host.
default.
Título
Todas las referencias a nombres de archivo, son relativas
al directorio en él situado: pxelinux.0.
PXELINUX, requiere generalmente para el nombre de archivo -incluida cualquier ruta relativa, constar de un tamaño de 127 carácteres.
[3.20+] Si PXELINUX no pudiese encontrar un archivo de configuración, dispararía el reinicio, tras haber expirado, el intérvalo de espera. Esto evitaría paralizar indefinídamente la máquina, debido a una falla en el arranque.
Opciones
[1.62+] Dependiendo del servidor específico DHCP, las siguientes opciones no específicas, podrían estar disponibles, para así, adecuar el comportamiento PXELINUX. Ver RFC 5071 para información adicional sobre estas opciones. Dichas alternativas pxelinux, podrán ser especificadas con opciones DHCP, o escritas en bruto, en binario.
Prioridad de opciones
En bruto after-options, es aplicado tras las opciones DHCP -sobreescribiéndolas, mientras before-options -también en bruto, son préviamente aplicadas a las opciones DHCP. El comportamiento por defecto toma una menor prioridad.
Opción 208 pxelinux.magic Versiones de PXELINUX anteriores, requireron la configuración de esta opción a
F1:00:74:7E(241.0.116.126) con objeto de reconocer cualquier opción DHCP especial. A partir de PXELINUX v3.55, la opción es depreciada y, nunca más necesaria.Opción 209 pxelinux.configfile Especifica el nombre de archivo de configuración inicial PXELINUX, el cuál podría ser calificado, o descalificado.
Opción 210 pxelinux.pathprefix Especifica el prefijo de ruta común, de PXELINUX. En lugar de derivarlo del nombre de archivo de arranque. Esto es -casi, necesario de hecho, para terminar en culaquier caracter, utilizado por el servidor TFTP del OS, utilizado como nombre de ruta separador, ejemplo
/, en Unix.Option 211 pxelinux.reboottime Especifica, en segundos, el tiempo de espera antes del reinicio, en el evento de falla de TFTP.
0-cero, significa esperar indefinidamente -en realidad, esperará 136 años, aproximádamente.
Opciones en bruto
[3.83+] El programa pxelinux-options podría utilizarse para escribir en bruto las opciones DHCP, dentro de la imagen pxelinux.0. Es en ocasiones útil, cuando el sevidor DHCP, aparezca bajo un control administrativo diferente.
6 => 'domain-name-servers',
15 => 'domain-name',
54 => 'next-server',
209 => 'config-file',
210 => 'path-prefix',
211 => 'reboottime'
HTTP y FTP
Anteriores versiones de PXELINUX, soportaron HTTP, mediante un gestor de arranque híbrido, también conteniendo gPXE/iPXE; con éste tipo de imágenes, llamadas tanto gpxelinux.0 como ipxelinux.0.
Desde la versión 5.10, un binario PXELINUX especial, lpxelinux.0, soportó natívamente, transferencias HTTP y FTP, incrementando satisfactoriamente, la velocidad de carga, y permitiendo a escritos -scripts, HTTP estandar, presentar archivos de configuración PXELINUX.
El empleo de HTTP o FTP, utliza un nombre de archivo con una sintaxis standar, para el URL; opciones DHCP, para transmitir prefijos URL adecuados, al cliente. Incluso la utilización de la herramienta pxelinux-options, provista desde el directorio utils, para programar directamente, sobre el archivo lpxelinux.0. Aunque es utilizada la sintaxis HTTP/FTP, al tratar de emplear pxelinux.0 -sin el prefijo l, de no estar iPXE/gPXE corriendo debajo, resultará en una advertencia archivo no encontrado, sin dar explicación acerca de la causa.
Ejemplo:
LABEL linux-http
LINUX http://boot-server/boot/mykernel
APPEND initrd=http://boot-server/boot/myinitrd
Sintaxis del nombre de archivo
PXELINUX, soporta las siguientes conversiones, en cuanto al nombre de ruta:
::filename Surpime el prefijo del nombre de archivo común, ejemplo, pasará la cadena filename sin modificar al servidor.
IP
address::filenameEjemplo,192.168.2.3::filenameSurpime el prefijo del nombre de archivo común y, envía una petición a un servidor TFTP alternativo. Podrá ser utilizado un nombre DNS, en lugar de una dirección IP. Asumiendo que es completamente cualificado, si contiene puntos; de otra forma,añadirá el dominio local, tal y como es reportado por el servidor DHCP(opción 15).
El símbolo de doble punto ::, fué escogido, aunque es, desafortunadamente, conflictivo con el sistema operativo. Sin embargo, si encontramos un entorno, donde el tratamiento especial de :: signifique un problema, por favor, contactar la de Syslinux.
[4.00+], PXELINUX también soporta una sintaxis URL estandar.
Keeppxe
Normalmente, PXELINUX descargará la pila de PXE y UNDI, antes de invocar al kernel. En circunstancias especiales -por ejemplo, al utilizar MEMDISK para arrancar un sistema operativo con un controlador de red UNDI, podría ser deseado, el guardar la pila PXE en memoria. Si la opción keepxe es pasada como argumento desde la línea de órdenes, PXELINUX, guardará la pila respectiva, en memoria. Si no se comprende que significa ésto, probablemente no sea necesario.
Ejemplos
Nombre de archivo de configuración
Para el DHCP siaddr 192.168.2.3, archivo mybootdir/pxelinux.0, UUID de cliente b8945908-d6a6-41a9-611d-74a6ab80b83d, dirección MAC Ethernet 88:99:AA:BB:CC:DD y dirección IPv4 192.168.2.91, serán considerados los archivos, en el orden que sigue -tras las opciones “config-file”:
mybootdir/pxelinux.cfg/b8945908-d6a6-41a9-611d-74a6ab80b83d
mybootdir/pxelinux.cfg/01-88-99-aa-bb-cc-dd
mybootdir/pxelinux.cfg/C0A8025B
mybootdir/pxelinux.cfg/C0A8025
mybootdir/pxelinux.cfg/C0A802
mybootdir/pxelinux.cfg/C0A80
mybootdir/pxelinux.cfg/C0A8
mybootdir/pxelinux.cfg/C0A
mybootdir/pxelinux.cfg/C0
mybootdir/pxelinux.cfg/C
mybootdir/pxelinux.cfg/default
Servidores TFTP
Para mejores resultados, utilizar el servidor TFTP con soporte a tsize RFC 1784/RFC 2349.
Por favor, comprobar la página de referencias a la compatibilidad de hardware, para ver si PXE, necesita algún tipo de atención especial.
Algunos servidores TFTP, que mejor resultado han dado con PXELINUX, son:
El servidor TFTP “tftp-hpa” -áltamente portable [2] y, un “puerto” de un servidor TFTP de un sistema operativo BSD. Soporta opciones y está disponible en: TFTP y en cualquier servidor espejo -mirror, kernel.org Otro servidor TFTP, con soporte de opciones es “atftp” por Jean-Pierre Lefebvre:
atftp da mejores resultados que tftp-hpa en grandes servidores de arranque, aunque con menor portabilidad.
Si el servidor de arranque, corre bajo Windows -y no puede cambiarse esto, intentar tftpd32, escrito por Philippe Jounin -necesaria versión 2.11 o posterior; versiones anteriores contenían errores haciéndolo incompatible con PXELINUX.
Eric Cook de Intel, advierte el uso de TFTPD, desde el servidor Win2000 RIS:
El truco está en instalar RIS, sin configurar la interfase gráfica de usuario -GUI. En su lugar, hacer lo siguiente:
En el registro, añadir la carpeta \HKLM\System\CurrentControlSet\Services\TFTPD\Parameters. En la carpeta Parameters, añadir la llave llamada Directory, como valor, escribir la ruta hacia el directorio raíz de TFTP. En servicios GUI, configurar el servicio TFTPD, para un inicio automático, e iniciarlo. Si ha sido configurado el RIS en Win2k, se terminará por tener un MS PXE -algo no demasiado adecuado.
En cualquier caso, Christian -Dr. Disk Hechelmann, anotó un satisfactoria experiencia, en el uso de Windows RIS, tal y como es. Ha escrito un ensayo, acerca de como configurarlo. Ver Windows Remote Install System.
Configuración DHCP - Simple
El protocolo PXE, usa un conjunto de extensiones complejas al DHCP o BOOTP. Aunque la mayor parte de las implementaciones PXE -esto incluye todas las versiones Intel v0.99 y posteriores, parecen ser capaces de arrancar con una configuración DHCP/TFTP “convencional”. Asumiendo que deba dar soprte a clientes demasiado antiguos -o incluso sevéramente rotos, es probáblemente la mejor configuración; a menos que ya se disponga de un seervidor de arranque PXE, en la red.
Una muestra de la configuración DHCP, haciendo uso de una configuración TFTP convencional, mantendría cierto parecido a lo siguiente -utiliza ISC dhcp (2.0 o posterior) sintaxis “dhcpd.conf” :
allow booting;
allow bootp;
# Standard configuration directives...
option domain-name "domain_name";
option subnet-mask subnet_mask;
option broadcast-address broadcast_address;
option domain-name-servers dns_servers;
option routers default_router;
# Group the PXE bootable hosts together
group {
# PXE-specific configuration directives...
next-server TFTP_server_address;
filename "/tftpboot/pxelinux.0";
# You need an entry like this for every host
# unless you're using dynamic addresses
host hostname {
hardware ethernet ethernet_address;
fixed-address hostname;
}
}
Nótese, que si un demonio TFTP en particular, corre bajo chroot -tftp-hpa lo hace, si fue especificada la opcion -s (secure), lo que resulta áltamente recomendable. Casi con total seguridad, no debería incluirse el prefijo /tftpboot en el nombre de archvo.
Si la configuración simple, no funciona en un entorno, debería configurarse un servidor de arranque PXE, sobre el puerto 4011 del servidor tftp; Un servidor para el arranque PXE, está disponible en kano.org.
Con este tipo de servidor definido, la configuración DHCP, debería ser similar, exceptuando la opción “dhcp-class-identifier” (ISC dhcp 2) u “opción vendor-class-identifier” (ISC dhcp 3):
# Tu código aquí
allow booting;
allow bootp;
# Standard configuration directives...
option domain-name "domain_name";
option subnet-mask subnet_mask;
option broadcast-address broadcast_address;
option domain-name-servers dns_servers;
option routers default_router;
# Group the PXE bootable hosts together
group {
# PXE-specific configuration directives...
option dhcp-class-identifier "PXEClient";
next-server pxe_boot_server_address;
# You need an entry like this for every host
# unless you're using dynamic addresses
host hostname {
hardware ethernet ethernet_address;
fixed-address hostname;
}
}
Aquí, el nombre del archivo de arranque, será obtenido desde el servidor PXE.
Configuración DHCP - Encapsulado
Si la configuración convenciona de TFTP, no funciona en los clientes y, configurar un servidor de arranque PXE, no es una opción, podría intentarse la siguiente configuración. Es sabido que ha funcionado en determinadas circunstancias; aunque no hay garantias:
allow booting;
allow bootp;
# Standard configuration directives...
option domain-name "domain_name";
option subnet-mask subnet_mask;
option broadcast-address broadcast_address;
option domain-name-servers dns_servers;
option routers default_router;
# Group the PXE bootable hosts together
group {
# PXE-specific configuration directives...
option dhcp-class-identifier "PXEClient";
option vendor-encapsulated-options 09:0f:80:00:0c:4e:65:74:77:6f:72:6b:20:62:6f:6f:74:0a:07:00:50:72:6f:6d:70:74:06:01:02:08:03:80:00:00:47:04:80:00:00:00:ff;
next-server TFTP_server;
filename "/tftpboot/pxelinux.0";
# You need an entry like this for every host
# unless you're using dynamic addresses
host hostname {
hardware ethernet ethernet_address;
fixed-address hostname;
}
}
Nota
En algunos clientes no funcionará con la configuración TFTP convencional; Client 3.0 de Intel y posteriores, caen en esta categoria.
Configuración DHCP - opciones ISC dhcpd
ISC dhcp 3.0, soporta un sintaxis más elegante, a la hora de establecer opciones personalizables. la siguiente sintaxis, podría ser utilizada en dhcpd.conf, de estar utilizándose dicha versión dhcpd:
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
Nota
En versiones anteriores a PXELINUX, esto funcionará como site-option-space. Desde la versión PXELINUX 2.07, funciona como site-option-space(encapsulado) y, como vendor-option-space (tipo encapsulado 43). Esto podría evitar interferir con el dhcp-parameter-request-list, detallado más abajo.
[PXELINUX 2.07+] Este soporta ámbas el site-option-space y vendor-option-space.
Dentro del grupo -o clase, de arranque PXELINUX; donde están la opciones PXELINUX relacionadas, podría ser añadido:
# Always include the following lines for all PXELINUX clients
site-option-space "pxelinux";
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
# Always send the PXELINUX options (specified in hexadecimal)
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
# These lines should be customized to your setup
option pxelinux.configfile "configs/common";
option pxelinux.pathprefix "/tftpboot/pxelinux/files/";
option pxelinux.reboottime 30;
filename "/tftpboot/pxelinux/pxelinux.bin";
Nota
El archivo de configuraciónm es relativo al prefijo de ruta; buscará un archivo de configuración llamado /tftpboot/pxelinux/files/configs/common en el servidor TFTP.
El estamento option dhcp-parameter-request-list, fuerza al servidor DHCP, a enviar opciones específicas PXELINUX, incluso sin ser explícitamente solicitadas. Puesto que las solicitudes DHCP, son enviadas anter de la carga PXELINUX, el cliente PXE no sabrá pedirlas.
En versiones posteriores a 3.0 de ISC, site-local option spaces empiezanen 224, no en 128 -para ser compatible con la RFC 3942, así que deberían definirse las opciones 208-211como opciones DHCP normales, en lugar de site local. Por ejemplo:
option magic code 208 = string;
option configfile code 209 = text;
option pathprefix code 210 = text;
option reboottime code 211 = unsigned integer 32;
Dentro del grupo -o clase, de arranque PXELINUX; donde están la opciones PXELINUX relacionadas (como las opciones para el nombre de archivo), podría ser añadido:
# Always include the following lines for all PXELINUX clients
option magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
# Always send the PXELINUX options (specified in hexadecimal, ie: 208 = 0xd0, 209 = 0xd1, etc.)
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
# These lines should be customized to your setup
option configfile "configs/common";
option pathprefix "/tftpboot/pxelinux/files/";
option reboottime 30;
filename "/tftpboot/pxelinux/pxelinux.bin";
Nota
El archivo de configuración, es relativo al prefijo de ruta; esto buscará un archivo de configuración llamado /tftpboot/pxelinux/files/configs/common en el servidor TFTP.
El estamento option dhcp-parameter-request-list fuerza la servidor DHCP, el enviar opciones específica PXELINUX, incluso sin haver sido explícitamente solicitadas. Puesto que las solicitudes DHCP, son enviadas anter de la carga PXELINUX, el cliente PXE no sabrá pedirlas.
Por medio de dhcp 3.0, es posible crear un gran número de estas cadenas. Por ejemplo, para utilizar la forma hexadecimal de la dirección del hardware, como nombre de archivo de configuración, podría hacerse algo parecido:
site-option-space "pxelinux";
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
# Always send the PXELINUX options (specified in hexadecimal)
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}
option pxelinux.configfile =
concat("pxelinux.cfg/", binary-to-ascii(16, 8, ":", hardware));
filename "/tftpboot/pxelinux.bin";
Al utilizar un cliente cuya dirección Ethenet es 58:FA:84:CF:55:0E, buscaría un archivo de configuración llamado /tftpboot/pxelinux.cfg/1:58:fa:84:cf:55:e.
Opciones de fabricante
host trantor-sky2 {
hardware ethernet 00:00:5a:70:c2:71;
vendor-option-space pxelinux;
option pxelinux.magic f1:00:74:7e;
option pxelinux.pathprefix "http://raidtest.hos.anvin.org/tftpboot/";
option pxelinux.reboottime 30;
filename "/pxelinux.0";
}
Evita la necesidad de trastear_con el dhcp-parameter-request-list.
Opciones de fabricante - elavoradas manualmente
host trantor-sky2 {
hardware ethernet 00:00:5a:70:c2:71;
option vendor-encapsulated-options
d0:04:f1:00:74:73:
d2:23:68:74:74:70:3a:2f:2f:72:61:69:64:74:65:73:74:2e:
61:6e:76:69:6e:2e:6f:72:67:2f:74:66:74:70:62:6f:
6f:74:2f:
d3:04:00:00:00:1e;
filename "/pxelinux.0";
}
Problemas conocidos
Requiere un servidor TFPT con soporte a la opción tsize.
La rutina para la recuperación de errores, no funcionará completamente. Por ahora, sólo hace un reinicio completo -parece suficientemente bueno.
Podría llamarse a la función UDP receive, con un bucle de entrada, desde el teclado, y poder responder a peticiones ARP.
Imágenes de arranque en sector/disco, no están soportadas aún… Podrían necesitar información auxiliar adicional -como el dispositivo, para funcionar.
Si aparecen problemas adicionalesm por favor, contactar con la lista de correo de Syslinux. Antes de publicar algo, comprobar que los archivos del kernel, no han sido nombrados con una de las extensiones de especial significado:
.0 PXE programa trampa de arranque(NBP) [sólo PXELINUX]. .bin “CD sector de arranque” [sólo ISOLINUX]. .bs Sector de arranque [sólo SYSLINUX]. .bss Sector de arranque, superbloque de DOS será parcheado en [sólo SYSLINUX]. c32 imagen COM32 (32-bit COMBOOT). cbt imagen COMBOOT (usable en DOS). .com imagen COMBOOT (usable en DOS). .img Disco imagen [sólo ISOLINUX].
Broken PXE stacks
Muchas de ésteas -especialmente las muy antiguas, contienen diversos problemas con distinto grado de severidad. Comprobar la página de referencia para la compatibilidad de hardware.
PXE stack on a floppy
Si la tarjeta de red, no dispone de ROM, para el arranque PXE, aún existen un par de alternativas PXE, disponibles.
Etherboot, es un kit ROM, que permitirá crear un ROM personalizado, para arranque PXE y, pobablemente ser lanzado desde un disco flexible(floppy). Está disponible en: http://netboot.sourceforge.net/.
Un disco flexible multi-hardware, es incluido junto a Windows Server 2000 y 2003. La compañía Argon Technology, ofrecía una versión gratis, actualizada. Aunque es ahora una versión comercial -en cualquier caso la alternativa existe. El disco flexible -el cuál puede ser quemado en un CD, mediante la aplicación El Torito, es sabido que trabaja únicamente sobre versiones PXELINUX 2.03 y posteriores.
Nota
En este ejemplo, será utilizado un sistema simple de menú, aunque es fácil modificar el siguiente procedimiento y, utilizar un menú vesa o ninguno.
Para WDS, es mejor lanzarlo en modo Mixed. Alternativamente, ver WDSLINUX para configurarlo en sólo WDS.
Setup\English\Images\PXELinux\i386\templates\pxelinux.cfg\
Setup\English\Images\PXELinux\i386\templates\conf
Setup\English\Images\PXELinux\i386\templates\knl
Setup\English\Images\PXELinux\i386\templates\img
Nota
Setup\English\Images es la localización de otras imágenes RIS. Puede también cambiar el nombre PXELinux, por cualquier otra cosa; por ejemplo, una opción por separado en RIS, para cada distribución.
Descargar la última versión de Syslinux desde:
Desde Redhat AS4u3 CD1 -o el cd de la distribución deseada, en el directorio images\pxeboot copiar los siguientes archivos dentro de Setup\English\Images\PXELinux\i386\templates en el servidor RIS.
vmlinuz
initrd.img
Renombrar los archivos a:
vmlinuz-<distro>-<arch>
initrd-<distro>-<arch>.img
Ejemplo:
vmlinuz-rhas43-x86
initrd-rhas43-x86.img
Renombrar el archivo vmlinuz en el directorio \knl. Colocar el archivo renombrado iitrd.img en la carpeta \img.
Nota
Pueden utilizarse los archivos vmlinuz y initrd.img desde la versión de la distro, a entregar.
Desde la descarga de archivos de Syslinux, extraer el archivo pxelinux.0 -desde versiones 5.0 y posteriores, extraer el correspondiente archivo ldlinux.32 Setup\English\Images\PXELinux\i386\templates en el servidor RIS.
En Setup\English\Images\PXELinux\i386\templates crear el archivo pxelinux.sif dándole el siguiente contenido:
[OSChooser]
Description = "Linux"
Help = "This option runs a Linux installer."
LaunchFile = "Setup\English\Images\PXELinux\i386\templates\pxelinux.0"
ImageType = Flat
Version="1.01"
En Setup\English\Images\PXELinux\i386\templates\pxelinux.cfg\ crear un archivo llamado default dándole el siguiente contenido:
# Default boot option to use
DEFAULT menu.c32
# Prompt user for selection
PROMPT 0
# Menu Configuration
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU TITLE Main Menu
# Menus
# x86
LABEL x86
MENU LABEL 32Bit (x86)
KERNEL menu.c32
APPEND conf/x86.conf
# x64
LABEL x64
MENU LABEL 64Bit (x64)
KERNEL menu.c32
APPEND conf/x64.conf
En Setup\English\Images\PXELinux\i386\templates\conf\ crear un archivo llamado x86.conf -esto listará la instalación en un OS de 32bit y, darle el contenido que sigue:
# Default boot option to use
DEFAULT menu.c32
# Prompt user for selection
PROMPT 0
# Menu Configuration
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU TITLE 32Bit (x86) OS Choice
# Return to Main Menu
LABEL MainMenu
MENU DEFAULT
MENU LABEL ^Main Menu
KERNEL menu.c32
#
# Blank boots
#
LABEL linux-43
MENU LABEL ^Blank Boot 4.3
KERNEL knl/vmlinuz-rhas43-x86
APPEND initrd=initrd=img/initrd-rhes43-x86.img
En Setup\English\Images\PXELinux\i386\templates\conf\ crear un archivo llamado x64.conf -esto listará la instalación en un OS de 64bit y, darle el contenido que sigue:
# Default boot option to use
DEFAULT menu.c32
# Prompt user for selection
PROMPT 0
# Menu Configuration
MENU WIDTH 80
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 20
MENU TITLE 64Bit (x64) OS Choice
# Return to Main Menu
LABEL MainMenu
MENU DEFAULT
MENU LABEL ^Main Menu
KERNEL menu.c32
#
# Blank boots
#
LABEL linux-43
MENU LABEL ^Blank Boot 4.3
KERNEL knl/vmlinuz-rhas43-x64
APPEND initrd=img/initrd-rhes43-x64.img
Si ahora es arrancado el servidor RIS, en la pantalla con la lista de Sistemas operativos, podrá verse uno llamado Linux. Al escogerlo, arrancará PXELinux y, dirigiéndo al usuario hacia el menú conde escoger el tipo de arquitectura (32/64 bits) de la distribución a instalar.
Utilizando las nuevas características Syslinux para el menú vesa, es posibe construir una interfase fácil de usar.
Opciones avanzadas. Leer la documentación de Syslinux al completo. Las claves protegen, las modificaciones durante el arranque PXE, útil para prevenir incursiones no deseadas.
Nota
Este ejemplo, utiliza una forma “anterior”, para generar los submenús, el cuál es compatible con versiones Syslinux posteriores. Syslinux 3.62, soporta una sintaxis ligeramente distinta, más rápida y, de alguna manera, más flexible.
Estructura del directorio:
/tftpboot/
/tftpboot/memdisk
/tftpboot/pxelinux.0
/tftpboot/menu.c32
/tftpboot/pxelinux.cfg/
/tftpboot/pxelinux.cfg/default
/tftpboot/pxelinux.cfg/graphics.conf
/tftpboot/pxelinux.cfg/fixes.menu
/tftpboot/pxelinux.cfg/setup.menu
/tftpboot/TRK/
/tftpboot/TRK/chkdsk.trk
/tftpboot/TRK/initrd.trk
/tftpboot/TRK/kernel.trk
/tftpboot/Memtest/memtest.x86
/tftpboot/Suse/
/tftpboot/Suse/initrd92
/tftpboot/Suse/linux92
/tftpboot/Floppy/
/tftpboot/Floppy/kbfloppy.img
/tftpboot/pxelinux.cfg/default:
DEFAULT menu.c32
PROMPT 0
MENU TITLE PXE Special Boot Menu
MENU INCLUDE pxelinux.cfg/graphics.conf
MENU AUTOBOOT Starting Local System in # seconds
LABEL bootlocal
MENU LABEL ^Boot Point of Sale
MENU DEFAULT
LOCALBOOT 0
TIMEOUT 80
TOTALTIMEOUT 9000
LABEL FixesMenu
MENU LABEL ^Fixes Menu
KERNEL menu.c32
APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/fixes.menu
LABEL SetupMenu
MENU LABEL ^Setup Menu
KERNEL menu.c32
APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/setup.menu
/tftpboot/pxelinux.cfg/graphics.conf:
MENU COLOR TABMSG 37;40 #80ffffff #00000000
MENU COLOR HOTSEL 30;47 #40000000 #20ffffff
MENU COLOR SEL 30;47 #40000000 #20ffffff
MENU COLOR SCROLLBAR 30;47 #40000000 #20ffffff
MENU MASTER PASSWD yourpassword
MENU WIDTH 80
MENU MARGIN 22
MENU PASSWORDMARGIN 26
MENU ROWS 6
MENU TABMSGROW 15
MENU CMDLINEROW 15
MENU ENDROW 24
MENU PASSWORDROW 12
MENU TIMEOUTROW 13
MENU VSHIFT 6
MENU PASSPROMPT Enter Password:
NOESCAPE 1
ALLOWOPTIONS 0
Cambiar ALLOWOPTIONS a 1(uno) para poder editar cualquier entrada durante el arranque con PXE. También cambiar NOESCAPE a0`(cero). Tómese en consideración, a efectos de prueba/ensayo.
/tftpboot/pxelinux.cfg/fixes.menu:
MENU TITLE Fixes Menu
LABEL MainMenu
MENU LABEL ^Return to Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default
LABEL fsck
MENU LABEL ^File system check
KERNEL TRK/kernel.trk
APPEND initrd=TRK/chkdsk.trk ramdisk_size=32768 root=/dev/ram0 vga=0
LABEL memtest
MENU LABEL ^Memory Test: Memtest86+ v1.65
KERNEL Memtest/memtest.x86
LABEL trk3
MENU LABEL ^Trinity Rescue Kit
KERNEL TRK/kernel.trk
APPEND initrd=TRK/initrd.trk ramdisk_size=32768 root=/dev/ram0 vga=0 trknfs=IPADDR:/trk ip=::::::dhcp splash=verbose
/tftpboot/pxelinux.cfg/setup.menu:
MENU TITLE Setup Menu
LABEL MainMenu
MENU LABEL ^Return to Main Menu
KERNEL menu.c32
APPEND pxelinux.cfg/default
LABEL setupkb
MENU LABEL ^Any floppy disk image
KERNEL memdisk
APPEND initrd=Floppy/kbfloppy.img
LABEL linux
MENU PASSWD yourpassword
MENU LABEL Install - ^Classic
KERNEL Suse/linux92
APPEND initrd=Suse/initrd92 ramdisk_size=65536 vga=0 textmode=1 install=http://IPADDR serverdir=/9.2/install autoyast=http://IPADDR/9.2/scripts/ay92.xml
LABEL trkclone
MENU PASSWD yourpassword
MENU LABEL Install - ^Faster
KERNEL TRK/kernel.trk
APPEND initrd=TRK/initrd.trk ramdisk_size=65536 root=/dev/ram0 vga=0 install=Y trknfs=IPADDR:/trk ip=::::::dhcp splash=verbose
LABEL linuxfull
MENU PASSWD yourpassword
MENU LABEL Install - ^Developer
KERNEL Suse/linux92
APPEND initrd=Suse/initrd92 ramdisk_size=65536 vga=0 textmode=1 install=http://IPADDR serverdir=/9.2/install autoyast=http://IPADDR/9.2/scripts/develdesktop.xml
Notas Correción de errores
Si falla el arranque, PXELINUX -exceptuando SYSLINUX, no esparará indefinidamente; en su lugar, de no recibir ninguna entrada, en aproximádamente cinco minutos, depués de monstrar el mensaje de error, la máquina hará un reinicio. Esto permite que una máquina desatendida, pueda recuperarse en caso de falla, al intentar arrancar al mismo tiempo que el apagado del servidor TFTP.
Por favor, comprobar la página de referencias a la compatibilidad de hardware, para ver si la pila PXE necesitara cualquier acción especial.
MTFTP
PXELINUX no soporta MTFTP. Tanpoco hay plan que lo haga en un futuro! Aunque es posible utilizar MTFTP en un arranque inicial, de tener éste tipo de configuración. La configuración del servidor MTFTP, queda fuera de ámbito del presente documento.
UEFI Los gestores (l)pxelinux.0 son capaces de arrancar desde red con clientes basados en BIOS. El hardware que utilice UEFI, debe utilizar el syslinux.efi adecuado. Esto es EFI IA32 o EFI X64, respectívamente, en lugar de utilizar (l)pxelinux.0.
Por ejemplo, en el archivo de configuración del DHCP, podrá ser utilizado algo similar:
; This one line must be outside any bracketed scope
option architecture-type code 93 = unsigned integer 16;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
if option architecture-type = 0 {
filename "path/to/BIOS/pxelinux.0";
} elsif option architecture-type = 9 {
filename "path/to/EFIx64/syslinux.efi";
} elsif option architecture-type = 7 {
filename "path/to/EFIx64/syslinux.efi";
} elsif option architecture-type = 6 {
filename "path/to/EFIia32/syslinux.efi";
}
}
Acerca del tipo de arquitectura:
06 (EFI IA32) is sometimes (mis)used for legacy (CSM) boot of x64 machines by some vendors.
07 (EFI BC) is sometimes (mis)used for EFI x64 boot by some vendors.
Each bootloader needs its respective "ldlinux.*" module too:
path/to/BIOS/ldlinux.c32
path/to/EFIia32/ldlinux.e32
path/to/EFIx64/ldlinux.e64
Alternatively, the PXE directory can be organized by architecture number. This allows the namespace to be managed on the TFTP server (usually with symlinks), rather than requiring changes to DHCP:
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
filename concat("path/to/PXE-", binary-to-ascii(16, 16, "", option architecture-type), "/pxelinux.0");
}
Las respectivas librerías para cada módulo, en relación al software de fabricante -de ser necesarias, no podrán compartir el mismo directorio, unas con otras; puesto que tienen el mismo nombre de archivo. Utilizar una configuración de archivos individual, en cada arquitectura/firmware y, de ser necesario, añadir también, una directiva de ruta en cada una de ellas.
El directorio ascendente, para el gestor de arranque en red, podría ser el mismo en todos ellos; si cada gestor el nombrado de forma distinta. En tal caso, la directiva de ruta podría ser necesaria.
Opcionalmente, usar directivas adicionales, como INCLUDE y/o CONFIG. Compartir así, archivos de configuración Syslinux.
Vev también PXELINUX-Multi-Arch.
Notas
En lugar de pxelinux.0, la alternativa es lpxelinux.0 -cuya letra inicial en minúscula “L”, podrá ser utilizada en clientes BIOS.
El archivo syslinux.efi en EFI IA32, es distinto en EFI X64, cada arquitectura/firmware tiene su própio EFI X64.
El archivo syslinux.efi en EFI X64, es el mimso binario desde el arranque de disco en EFI X64, que desde el arranque de red en EFI X64.
El archivo syslinux.efi en EFI IA32 es el mimso binario desde el arranque de disco en EFI X64, que desde el arranque de red en EFI IA32.
Cada archivo syslinux.efi puede ser renombrado -ejemplo, a bootx64.efi; habrá que tener en cuenta la ruta/s adecuada y, el nombre/s, en el archivo de configuración del DHCP.
Referencias y agradecimientos
Recursos
RFC 2132 - March 1997 - DHCP Options and BOOTP Vendor Extensions
RFC 4578 - November 2006 - DHCP Options for PXE
RFC 5071 - December 2007 - DHCP Options used by PXELINUX
RFC 5494 - April 2009 - IANA Guidelines for ARP
RFC 5970 - September 2010 - DHCPv6 Options for Network Boot
[3] Puerto, referido como interfase física de conexionado, dónde es acoplada alguna suerte de conector físico, conectando dos piezas hardware. Ejemplo, El puerto db9 es habitualmente utilizado como interfase de conexión entre dos máquinas, con una conexión serial para la depuración, o lectura de registros. Desambiguación, leer la entrada de arriba, portable. El término podría referirse tanto a la arquitectura del procesador, como al tipo de sistema operativo -Linux, Macintosh, etc, como tambień a una versión o distribución de un sistema operativo concreto. Ejemplo, la comunidad Linux ha estado tabajando intensamente, en un puerto a la dustrubución Fedora 8, de Xen hipervisor.
flashed – destello?, es algo así como sobreescribir los datos contenidos en una memoria.
PXE – Preboot Execution Environment NBP – network bootstrap program. Programa trampa de red. TFTP – Trivial File Transfer Protocol bootstrapping – referido a un proceso de autoarranque, que, supuestamente, procedera sin una entrada externa. En tecnología de computación, el término es referido habitualmente, al proceso de cargar software básico, en memoria …