Mi entorno de red existente proporciona lo siguiente:
- Servidor DHCP que envía clientes PXE a un servidor TFTP particular
- Servidor TFTP con archivo SYSLINUX "pxelinux.0" para arrancar
La instalación de SYSLINUX tiene como valor predeterminado el tiempo de espera para "arrancar desde el disco local", lo que permite que los clientes existentes se reinicien correctamente pero también brinda la opción de arrancar en un entorno de rescate o aprovisionamiento.
Estoy probando un nuevo entorno de aprovisionamiento que reside en un servidor TFTP diferente al que apunta el servidor DHCP. Los clientes existentes dependen del entorno actual, pero me gustaría remitir los clientes de prueba al nuevo servidor TFTP para su aprovisionamiento.
Idealmente, me gustaría poder usar una opción de menú particular desde el indicador de SYSLINUX que haría que el cliente arranque desde otro servidor TFTP (codificado, en lugar de proporcionado por el servidor DHCP).
Intenté instalar una imagen gPXE personalizada como opción de menú en SYSLINUX. La imagen personalizada (re) adquirió una dirección DHCP y fue al servidor TFTP codificado, pero le falta una pieza que no creo que gPXE sea capaz de cumplir.
El nuevo sistema de aprovisionamiento se basa en Cobbler y depende de la secuencia PXE habitual en la que el cliente busca un archivo denominado con su dirección MAC antes de conformarse con un archivo menos específico y, eventualmente, genérico. Por lo que puedo decir, parece que gPXE no es capaz de realizar esta secuencia de inicio basada en direcciones Mac.
¿Alguien puede decirme otra forma de hacer esto? Llevo varios días golpeándome la cabeza con este problema. ¡Gracias de antemano!
Respuesta1
Encadenamiento PXE/TFTP dentro del mismo servidor
Coloque el otro cargador de arranque PXE como kernel.
Este es el ejemplo que utilicé para cargar en cadena el cargador de arranque BSD PXE desde el cargador de cadena Linux PXE.
LABEL openbsd
MENU LABEL ^OpenBSD 3.9
KERNEL openbsd_3.9/pxeboot.0
Encadenamiento PXE/TFTP a otro servidor
pxechain.com
Se utiliza para cargar en cadena otro servidor PXE.
pxechain.com
está disponible dentro del syslinux-common
paquete en Debian/Ubuntu oarchivo del proyecto syslinuxbajo un nombre de archivo diferente pxechn.c32
.
Ejemplo:
LABEL pxeserver2
menu label Switch to 2nd PXE server...
kernel pxechain.com
append 192.168.10.254::pxelinux.0
Ejemplo2:(Gracias aUn tiburón) En caso de que el nombre del archivo de configuración de su pxelinux y/o la ruta al mismo difieran en ambos servidores pxe, debe definirlos explícitamente con las opciones -p y -c; de lo contrario, no funcionará (intentará usar un valor definido por dhcp que se utilizó para el arranque actual).
En la configuración del servidor DC-ISO2:
LABEL DC-ISO1
MENU LABEL DC-ISO1 (BIOS mode)
KERNEL pxechn.c32
APPEND 192.168.1.1::pxelinux.0 -c default -p /
TEXT HELP
Boot the legacy dc-iso1 menu in bios mode.
ENDTEXT
En la antigua configuración del servidor DC-ISO1:
LABEL DC-ISO2
MENU LABEL DC-ISO2 (BIOS mode)
KERNEL pxechn.c32
APPEND 192.168.1.2::/configs/pxelinux.0 -p /configs/ -c bios.cfg
TEXT HELP
Boot the new dc-iso2 menu in bios mode.
ENDTEXT
Técnicamente, ahora puedes incluso desactivar el servidor dhcp de DC-ISO1 (pero no tftp), y siempre iniciarás primero en DC-ISO2, mientras podrás cambiar entre los menús de ambos servidores.
Respuesta2
Tome pxelinux.0 de Ubuntu 10.4 LTS. Eso pasará por la iteración "normal": MAC - IP en HEX - ... predeterminado.
Sería más sencillo decirle a su servidor DHCP que NO responda a ciertas solicitudes y configurar otro DHCP en la misma red (no autorizado) que responda a sus solicitudes del servidor de prueba (y no responda a nada más).