domingo, 22 de septiembre de 2019

Servidor PXE en Debian

Syslinux

El Proyecto Syslinux abarca cargadores de arranque ligeros para sistemas de archivos FAT de MS-DOS ( SYSLINUX ), arranque en red ( PXELINUX ), CD-ROM de arranque ( ISOLINUX ) y sistemas de archivos ext2 / ext3 / ext4 o btrfs de Linux ( EXTLINUX ). El proyecto también incluye MEMDISK, una herramienta para iniciar sistemas operativos heredados (como DOS) desde medios no tradicionales, Por lo general, se utiliza junto con PXELINUX e ISOLINUX.

PXE (pxelinux)

En este manual veremos como instalar y configurar un servidor PXE (PXELINUX es un derivado de Syslinux) en Debian GNU/Linux, para nuestra red local.

En los orígenes de la informática, la instalación del sistema operativo se realizaba desde DISKETTES, mucho mas tarde pasamos a la instalación por medio de los CD-ROM, luego se usaron los DVD-ROM y por ultimo. los dispositivos externos los PENDRIVE. También existe un método muy interesante de instalación, llamado PXE,  a través de nuestra red local.

Este servidor PXE nos permitirá arrancar a través de la red, la imagen .ISO  de instalación de un sistema operativo (principalmente Debian GNU/Linux) sin necesidad de grabar un disco CD/DVD o de utilizar un PENDRIVE. También es valido para arrancar un sistema  en vivo (Live-CD) y otras herramientas de recuperación (del sistema, de datos, de gestor de arranque, etc..) en otros ordenadores de nuestra red local sin sistema operativo, o con sistema operativo pero que no arrancan por estar el sistema averiado.

En resumen, necesitamos tres cosas:

    1. El ordenador tiene que poder arrancar por red.
    2. Es necesario un servidor DHCP que proporcione la configuración de red a los cliente.
    3. Es necesario transferir los ficheros al cliente.



Comparar instalador PXE con el instalador por CD/DVD/PENDRIVE

    1. Al instalación por red (PXE), el sistema necesita un lanzador de arranque que le permita cargar el gestor de arranque. Ese lanzador normalmente se encuentra en la memoria ROM de la tarjeta de red. Pero el gestor de arranque (pxelinux.0) no se encuentra en el ordenador local, se encuentra en el servidor, así que antes de cargarlo hay que dar un paso mas, que no era necesario en el instalador por CD/DVD/PENDRIVE, consiste en configurar la red. Entonces, el lanzador no sólo carga el gestor, sino que previamente ha de procurarse una configuración de red.

    2. Carga del gestor:
     
    2.1. La carga del gestor de arranque es también más complicada que en el caso del arranque por CD/DVD/PENDRIVE. Cuando se arranca por CD/DVD/PENDRIVE, el lanzador solo tiene que leer desde el CD/DVD/PENDRIVE. Sin embargo, en el instalador por red (PXE) hay que descargarse del servidor el gestor (pxelinux.0) y para eso necesitamos un protocolo para realizar esa transferencia. Este protocolo es TFTP

  2.2. Cargado el gestor de arranque y los ficheros de configuración necesarios, se podrá elegir el sistema operativo que se quiere arrancar. Este sistema operativo también será remoto, así que también habrá que descargarlo. Como de esto se encarga el gestor, para descargar el núcleo y la imagen initrd, podremos usar los protocolos de transferencia que soporte el gestor. Es común que el sistema, después de descargar el kernel e imagen initrd, requiera descargar el sistema de ficheros comprimido (el fichero filesystem.squasfs que vemos en muchos cd-live. Cuando se produce esta última descarga, ya se habrá cedido el control a éste sistema operativo, así que los protocolos soportados de descarga dependerán de cada sistema operativo en particular.



Requisitos para el servidor PXE

Para instalar un servidor PXE necesitamos tener funcionando en nuestro Servidor DebianGNU/Linux los siguientes servicios: DHCP , TFTP , NFS

- DHCP : El protocolo de configuración dinámica de host (en inglés: Dynamic Host Configuration Protocol) es un protocolo de red de tipo cliente/servidor mediante el cual el servidor DHCP asigna dinámicamente una dirección IP y otros parámetros de configuración de red a cada dispositivo de la red para que puedan comunicarse entre ellos.

- TFTP : Trivial File Transfer Protocol (Protocolo de transferencia de archivos trivial). Es un protocolo de transferencia muy simple, es una versión muy básica de FTP. TFTP utiliza para transferir pequeños archivos entre computadoras en una red.

          Algunos detalles del TFTP:

        - Utiliza UDP (en el puerto 69) como protocolo de transporte (a diferencia de FTP que utiliza los puertos 20 y 21 TCP).
        - No puede listar el contenido de los directorios.
        - No existen mecanismos de autenticación o cifrado.
        - Se utiliza para leer o escribir archivos de un servidor remoto.

- NFS : Network File System (sistema de archivos de red) es un protocolo utilizado para sistemas de archivos distribuido en un entorno de red de computadoras de área local. Posibilita que distintos ordenadores conectados a la misma red accedan a los archivos remotos como si se tratara de archivos locales.

- Imagen ISO o NetBoot : Son los archivos de instalación necesarios que pasaremos a los ordenadores de nuestra led local para instalar el sistema operativo



Programas necesarios:

A continuación detallamos los programas necesarios que necesitamos:

SYSLINUX y SYSLINUX-UTILS :  Son archivos necesarios para arrancar un ordenador en la red local. Podemos usar los paquetes que incluye Debian GNU/Linux, o bien descargándolos desde la web oficial de Syslinux. Enlace web oficial

ISC-DHCP-SERVER : Servidor DHCP que usaremos para configurar el entorno PXE.

TFTPD-HPA : Es el encargado de transferir los archivos de arranque a los ordenadores de la red local.

- NFS-KERNEL-SERVER : Para compartir las imágenes .ISO en nuestra red local.


Existen mas programas que se aconsejan usar en el servidor, tales como: wget, bash-completion, unzip, net-tools, iptables-persistent, aunque estos se pueden omitir, si nos conectamos al servidor por ssh desde otro ordenador de nuestra red local.

- syslinux
- syslinux-utils
- isc-dhcp-server
- tftpd-hpa
- nfs-kernel-server
- wget
- bash-completion
- unzip
- net-tools
- iptables-persistent

En este manual vamos a instalar los programas mínimos necesarios, usando el gestor de paquetes apt:

# apt install syslinux syslinux-utils isc-dhcp-server tftpd-hpa  nfs-kernel-server





 Empezamos con la configuración del Servidor PXE 


 Configurar IP estática del Servidor 

Lo primero es configurar con una dirección IP estática el Servidor Debian GNU/Linux.

Para realizar la configuración nos dirigimos ruta: /etc/network
y editamos el archivo interfaces usando el editor nano.

# nano /etc/network/interfaces

En este manual usamos la interfaz de red llamada enp0s3, usamos la red 192.168.1.0, ponemos IP estática al servidor 192.168.1.100, como puerta de enlace colocamos la IP del router de nuestro proveedor de internet, y en los servidores dns ponemos como primario la propia ip del Servidor y como secundario la dns de google 8.8.8.8 ó 8.8.4.4

auto enp0s3
iface enp0s3 inet static
  address 192.168.1.100
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255
  gateway 192.168.1.1
  dns-nameservers 192.168.1.100 8.8.4.4
  dns-search debian.local

Después de haber editado el archivo de las interfaces de red, guardamos los cambios para aplicar la configuración.

Usamos los siguientes comandos para deshabilitar y habilitar la nueva configuración de red del servidor.

ifdown enp0s3

ifup enp0s3



Para verificar la nueva dirección IP, usamos el siguiente comando.

ip a

A veces, la configuración de IP no se aplica simplemente reiniciando el servicio de red o desactivando y habilitando la interfaz. En este caso, debemos reiniciar el servidor usando uno de los siguientes comandos.

init 6
o
systemctl reboot



 Actualizar el servidor 

Es muy importante tener el servidor actualizado con las ultimas correciones y actualizaciones de seguridad, para ello usamos los siguiente comandos :

apt update

apt upgrade


apt dist-upgrade




 Instalación y configuración del Servidor DHCP 

Para instalar el servidor dhcp en Debian usamos el siguiente comando:

apt install isc-dhcp-server


Hacemos una copia de seguridad del archivo de configuración del servidor ISC-DHCP-SERVER

mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.backup

Vamos a indicarle al archivo /etc/default/isc-dhcp-server en que interfaz de red vamos a usar para servir DHCP, buscamos la línea INTERFACESv4="" añadimos el nombre de interfaz dentro de las comillas, en este manual es: enp0s3
si estamos usando IPv6, entonces lo añadimos dentro de dichas comillas: INTERFACESv6=""

Ahora editamos el archivo de configuración del servidor dhcp para que contenga las siguiente configuración (esto cambiara dependiendo del rango de red en el que se encuentre el servidor). Para ello usamos el editor nano.

nano /etc/dhcp/dhcpd.conf

Contenido del archivo dhcpd.conf :

=====================================================
# default lease 4H, max  lease 8H
default-lease-time 14400;
max-lease-time 28800;

option arch code 93 = unsigned integer 16;


ddns-update-style none;

# authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
  option routers 192.168.1.100;
  option domain-name "Servidor_PXE";
  option broadcast-address 192.168.1.255;
  option domain-name-servers 192.168.1.1, 8.8.8.8;
        
  allow booting;
   allow bootp;

if option arch = 00:07 or option arch = 00:09 {

      filename "bootnetx64.efi";
} else {
      filename "pxelinux.0";
}

  next-server 192.168.1.100;

  range 192.168.1.101 192.168.1.110;

 }
=====================================================


Explicación de la configuración del fichero: /etc/dhcp/dhcpd.conf


domain-name escribimos el nombre de dominio de nuestro servidor.

- # authoritative; No quites el comentario a la línea  si ya existe un servidor DHCP funcionando en nuestra red. (por ejemplo el DHCP de nuestro router)
Nuestro servidor sólo atenderá las peticiones DHCP extendidas del tipo PXE, dejando el resto para el servidor DHCP de nuestra red. Las peticiones DHCP que nos interesan las filtramos mediante las dos reglas que se han definido.
Por último se indican las opciones que definen la configuración que nuestro servidor envía a las máquinas cliente.

- range define el rango de direcciones IP que va a repartirá (que irán desde la 192.168.1.100 hasta la 192.168.1.110).

En mi caso es más que de sobra.

- filename le decimos pxelinux.0 para pc con BIOS  y bootnetx64.efi para pc con UEFI. El solo detectara si es BIOS o UEFI

- server-name ponemos la IP del Servidor: 192.168.1.100

- next-server ponemos la IP del Servidor: 192.168.1.100


Como utilizamos el servidor ISC DHCP, entonces usamos el contenido de la solicitud DHCP para diferenciar entre clientes los BIOS y EFI. La opción de arquitectura del cliente DHCP (código 93) indicará la arquitectura del cliente según lo especificado por RFC 4578 :

Tipo de nombre de la arquitectura
DHCP opción 93   Arquitectura del cliente
    00:00                   BIOS estándar para PC
    00:06                   EFI x86 de 32 bits
    00:07                   EFI x86 de 64 bits
    00:09                   EFI x86 de 64 bits (obsoleto)

Para finalizar, reiniciamos el servidor DHCP para aplicar los cambios.
Para ello usamos el siguiente comando:

# systemctl restart isc-dhcp-server
o
# service isc-dhcp-server restart

Para verificar que el servidor DHCP esta funcionando usamos el siguiente comando:

# systemctl status isc-dhcp-server

o
# service isc-dhcp-server status



 Instalación y configuración del Servidor TFTP 

Para poder servir los archivos de arranque requeridos por los clientes de forma remota a través de PXE, necesitamos instalar un servidor TFTP en el servidor. La instalación y configuración del servidor tftp en Debian GNU/Linux es muy fácil. Podemos instalar y usar el servidor atftpd o tftpd-hpa. La diferencia fundamental entre uno y otro es que el primero no soporta ficheros de más de 32 MB. y el segundo, sí. Lógicamente nosotros instalaremos el servidor tftpd-hpa:

apt install tftpd-hpa


Una vez instalado el servidor tftphd-hpa, Debian GNU/Linux crea el directorio: / srv / tftp en el cual se encuentran los menús de inicios de las imágenes a servir

Si necesitamos modificar la configuración que trae por defecto, editamos el fichero /etc/default/tftpd-hpa, aunque casi no es necesario realizar ninguna modificación.


En todos los casos, dentro del directorio: / srv / tftp  deberán estar metidos todos los ficheros de arranque, como se veremos en los siguientes pasos.


Este es el contenido del archivo /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"



Si en la línea TFTP_OPTIONS aparece el indicador --create, Se recomienda borrar dicha opción:

TFTP_OPTIONS="--secure --create"

El indicador --create permite a los clientes remotos cargar archivos en el servidor tftp. Esta opción es peligrosa porque los usuarios pueden cargar o eliminar archivos de la raíz del servidor TFTP.

Para finalizar habilitamos el servicio en el arranque del servidor, iniciamos el servidor TFTP y por ultimo verificamos el estado del demonio tftp, usando los siguientes comandos:

systemctl enable tftpd-hpa
systemctl start tftpd-hpa
systemctl status tftpd-hpa




Implementar los archivos de arranque de Debian 9

 Debian netboot installer (netboot.tar.gz) 

Vamos a la página web de Debian y buscamos el netinstall en la siguiente dirección https://www.debian.org/distrib/netinst ó http://ftp.es.debian.org/debian/dists/ y descargamos la última versión de Debian netboot : netboot.tar.gz usando el comando wget.

wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz

Después de descargar el netboot.tar.gz de Debian netinstall, extraemos el contenido del archivo directamente a la ruta de la raíz de TFTP ejecutando el siguiente comando.

tar xfz netboot.tar.gz -C /srv/tftp/



Gestor de arranque (pxelinux)

Esta es la parte más engorrosa de todas. No tanto por la dificultad, sino por la cantidad de posibilidades que hay a la hora de crear el menu de sistemas operativos. Lo primero, no obstante, es hacerse con el gestor, para ello instalamos el paquete syslinux

# apt install syslinux

La instalación del paquete no instala los ficheros en el lugar que corresponde, sino que estos quedan en la siguiente ruta: /usr/lib/syslinux y nosotros tenemos que copiarlos en la siguiente ruta: /srv/tftp, que es el lugar que compartimos con nuestro servidor tftp.

Para que todo quede ordenado creamos los siguientes directorios: syslinux , pxelinux.cfg , ssoo , dentro del servidor /srv/tftp , para ello usamos el siguiente comando:

# mkdir syslinux pxelinux.cfg ssoo

Explicación de cada carpeta que hemos creado:

- syslinux : colocamos los programas auxiliares de syslinux, tales como reiniciar, apagar el pc, etc...

- pxelinux.cfg : colocamos los ficheros de configuración que creamos nosotros, es decir los menús que veremos en pantalla

- ssoo : En esta carpeta colocamos los sistemas operativos que arrancaremos (aunque le hemos colocado el nombre: ssoo, se le puede poner el nombre que deseemos).

En la carpeta: /srv/tftp, colocamos los archivos pxelinux.0bootnetx64.efi ya que dichos ficheros son los que indicamos en el servidor dhcp que debíamos pasarle al lanzador:

cp /usr/lib/syslinux/pxelinux.0 /srv/tftp
# cp /usr/lib/syslinux/bootnetx64.efi /srv/tftp

y, por último, creamos un fichero mínimo de configuración para poder probar nuestro servidor.


 Archivo :  default 

default, es el archivo de configuración necesario para que aparezca el menú de selección de sistemas operativos y utilidades para arrancar desde el servidor pxe. Obligatoriamente este archivo se tiene que llamar: default.

En este archivo definimos las opciones de instalación/arranque. Así como el modo la visualización del menú, que es muy importante, ya que es la forma en la que aparecerá al usuario.

El sistema de menús de pxe tiene las siguientes opciones:

- El menú gráfico (vesamenu.c32)
- El menú texto (menu.c32)
- El menú de Interfaz de linea de comandos
- El menú de Interfaz de linea de comandos en color
- El menú avanzado (complex.c32)


 Menú (texto o gráfico) 

La estructura del fichero es básicamente la misma, excepto porque hay que añadir directivas específicas para que se muestre el menú.

Es siempre necesario incluir para menú de texto:

IU /syslinux/menu.c32

Y para menú gráfico:

IU /syslinux/vesamenu.c32

Los dos ficheros (menu.c32 y vesamenu.c32) los proporciona syslinux y están en /usr/lib/syslinux, así que deberemos copiarlos dentro de nuestro directorio /srv/tftp/syslinux.

El resto de la configuración del archivo default empieza por la palabra MENU y, por lo general, esta dedicada a la interfaz gráfica

- posición del menú
- título para el menú
- número de línea del menú
- imagen de fondo de pantalla del menú
- resolución del menú
- contraseña de protección para editar el menú
- contraseña maestra del menú
- mensaje de la tecla tabulador
- color de titulo del menú
- color de selección del menú
- y muchas opciones mas, cosa que no tiene sentido en el modo de línea de comando.


 Sintaxis del archivo default 

Este apartado describe la configuración del menú de arranque de Syslinux.

Hay que tener en cuenta que la sintaxis descrita en este manual puede funcionar correctamente en las versiones  actuales de Syslinux, pero puede cambiar en las versiones futuras.

El archivo de configuración (default) es un archivo de texto plano, que contiene una o más de las palabras clave indicadas a continuación. Las palabras clave son insensibles a mayúsculas y minúsculas. Las mayúsculas se utilizan aquí para indicar que una palabra debe escribirse tal y como aparece en el manual.

Las líneas en blanco se ignoran.

Aquí hay un ejemplo simple de un archivo de configuración de Syslinux, con una entrada para arrancar Debian GNU/Linux:

=====================================================
LABEL 1
    MENU LABEL 1- Debian 10 - Installer amd64 (Graphics)
    KERNEL ssoo/2-debian-installer-gtk-10/amd64/vmlinuz
    APPEND lang=es_ES kmap=es vga=788 initrd=ssoo/2-debian-installer-gtk-10/amd64/initrd.gz 

=====================================================


El menú grafico

El menú se basa en un módulo ubicado en com32 / menu / vesamenu.c32 (en modo gráfico) o com32 / menu / menu.c32 (en modo texto). Utiliza el mismo archivo de configuración que la línea de comandos normal de Syslinux y muestra todas las declaraciones de ETIQUETAS .

Para usar el sistema de menús, simplemente asegúrese de que vesamenu.c32 esté escrito al principio del archivo.

 DEFAULT vesamenu.c32
 PROMPT 0


MENU LABEL label

Cambie la etiqueta que se muestra para una entrada de menú específica


MENU SEPARATOR

Insertar una línea vacía en el menú.


TEXT HELP

TEXT HELP

Texto de ayuda ... 

... que puede abarcar varias líneas

ENDTEXT


MENU PASSWD passwd

Establezca una contraseña en esta entrada del menú. " passwd " puede ser una contraseña de texto simple o una contraseña cifrada con uno de los siguientes algoritmos:

 MD5 (Firma: $ 1 $) 
 SHA-1 (Firma: $ 4 $) 
 SHA-2-256 (Firma: $ 5 $) 
 SHA-2-512 (Firma: $ 6 $)

Utilice los scripts de Perl incluidos " sha1pass " o " md5pass " para cifrar las contraseñas. Las contraseñas de MD5 son compatibles con la mayoría de las utilidades de archivos de contraseñas de Unix. Las contraseñas de SHA-1 son probablemente exclusivas de Syslinux. Las contraseñas de SHA-2 son compatibles con distribuciones de Linux muy recientes. Obviamente, si no cifras tus contraseñas, no serán muy seguras.

Si usa contraseñas, asegúrese de usar " NOESCAPE 1 " y " PROMPT 0 ", y configure " ALLOWOPTIONS 0 " o use una contraseña maestra .

Si passwd es una cadena vacía, esta entrada de menú solo se puede desbloquear con la contraseña maestra.


MENU MASTER PASSWD passwd

Establecer una contraseña maestra. Esta contraseña se puede utilizar para iniciar cualquier entrada del menú. Si se utiliza esta directiva, también se requiere la contraseña maestra para que funcionen las teclas [Tab] y [Esc].


MENU TITLE title

Ponle un título al menú. El título se presenta en la parte superior del menú.


MENU RESOLUTION width height

Solicite una resolución de pantalla específica en el modo gráfico. El valor predeterminado es "640 480" correspondiente a una resolución de 640x480 píxeles, que todos los monitores compatibles con VGA deberían poder mostrar.

Si la resolución especificada no está disponible, se muestra el menú de modo de texto.


MENU BACKGROUND background

Para el modo grafico: vesamenu.c32, establece la imagen de fondo. El fondo puede ser un color o el nombre de un archivo de imagen, que debe tener el tamaño de la pantalla (normalmente 640x480 píxeles, pero ver RESOLUTION DE MENÚ) y en formato PNG, JPEG o LSS16.

Nota muy  importante: Cuando use un archivo de imagen como fondo, su resolución debe coincidir con los valores utilizados en RESOLUCIÓN DE MENÚ .


MENU AUTOBOOT message

Reemplace el mensaje "Arranque automático en # segundo {, s} ... ". El símbolo "#" se reemplaza con el número de segundos restantes. La sintaxis " {singular,[dual,]plural}" se puede utilizar para conjugar adecuadamente.


MENU TABMSG message

Reemplace el mensaje " Presione [Tab] para editar las opciones ".


MENU PASSPROMPT message

Reemplace el mensaje " Contraseña requerida "



MENU COLOR element ansi foreground background shadow

Establezce el color del elemento " elemento seleccionado " , de entre las siguientes opciones:

 screen..................Rest of the screen
 border...................Border area
 title.......................Title bar
 unsel....................Unselected menu item
 hotkey...................Unselected hotkey
 sel.........................Selection bar
 hotsel....................Selected hotkey
 disabled................Disabled menu item
 scrollbar................Scroll bar
 tabmsg..................Press [Tab] message
 cmdmark...............Command line marker
 cmdline..................Command line
 pwdborder..............Password box border
 pwdheader.............Password box header
 pwdentry................Password box contents
 timeout_msg..........Timeout message
 timeout...................Timeout counter
 help........................Help text
 msgXX...................Message (F-key) file attribute XX

... donde XX es dos dígitos hexadecimales (el "texto simple" es 07).

Estos se utilizan (a) en modo de texto y (b) en la consola serie.

" primer plano " y " fondo " son códigos de color en la notación #AARRGGBB, donde AA RR GG BB son dígitos hexadecimales para alfa (opacidad), rojo, verde y azul, respectivamente. # 00000000 representa completamente transparente, y #ffffffff representa blanco opaco.

" sombra " controla el manejo de la sombra del texto de la consola gráfica. Los valores permitidos son " ninguno " (sin sombreado), " STD " o " estándar " (estándar sombreado - píxeles de primer plano son criados), " todo " (ambos de fondo y el primer plano en relieve), y " rev " o " inversa " (fondo Los píxeles son elevados).

Si algún campo se establece en "*" u se omite (al final de la línea), ese campo no se modifica.

Los valores predeterminados actuales son:

 menu color screen 37;40................#80ffffff #00000000 std
 menu color border 30;44................#40000000 #00000000 std
 menu color title 1;36;44..................#c00090f0 #00000000 std
 menu color unsel 37;44..................#90ffffff #00000000 std
 menu color hotkey 1;37;44.............#ffffffff #00000000 std
 menu color sel  7;37;40.................#e0000000 #20ff8000 all
 menu color hotsel 1;7;37;40...........#e0400000 #20ff8000 all
 menu color disabled 1;30;44..........#60cccccc #00000000 std
 menu color scrollbar 30;44.............#40000000 #00000000 std
 menu color tabmsg 31;40...............#90ffff00 #00000000 std
 menu color cmdmark 1;36;40.........#c000ffff #00000000 std
 menu color cmdline 37;40..............#c0ffffff #00000000 std
 menu color pwdborder 30;47.........#80ffffff #20ffffff std
 menu color pwdheader 31;47........#80ff8080 #20ffffff std
 menu color pwdentry 30;47...........#80ffffff #20ffffff std
 menu color timeout_msg 37;40.....#80ffffff #00000000 std
 menu color timeout 1;37;40...........#c0ffffff #00000000 std
 menu color help 37;40..................#c0ffffff #00000000 std
 menu color msg07 37;40...............#90ffffff #00000000 std


MENU MSGCOLOR fg_filter bg_filter shadow

Establezca todos los colores msgXX en un esquema de color derivado de los valores fg_filter y bg_filter . El color de fondo cero siempre se trata como transparente. El valor predeterminado corresponde a:

menú msgcolor # 90ffffff # 80ffffff std

Esta directiva debe aparecer antes que cualquier directiva que personalice colores de msgXX individuales.

NOESCAPE flag_val

Si flag_val se establece en 1, ignora los escapes Shift / Alt / Caps Lock / Scroll Lock. Use esto (junto con PROMPT 0) para forzar la selección de inicio predeterminada.

=============================================
default vesamenu.c32
prompt 0
NOESCAPE 1

MENU TITLE  Selecciona una opcion y pulsa INTRO 
MENU BACKGROUND /pxelinux.cfg/pxe-server.png
MENU PASSPROMPT Contrasena requerida
MENU TABMSG Presiona [Enter] para aceptar, [TAB] para editar opciones de arranque.

menu color title 1;36;44    #c0ff8600 #00000000 std
menu color sel 7;37;40    #c0ff8600 #ffffffff all

LABEL 1
    MENU LABEL 1- Debian 9 GNU/Linux (stable)
    KERNEL vesamenu.c32
    APPEND pxelinux.cfg/debian9
    
LABEL 2
    MENU LABEL 2- Debian 10 GNU/Linux (testing)
    KERNEL vesamenu.c32
    APPEND pxelinux.cfg/debian10

MENU SEPARATOR

LABEL 3
    MENU LABEL 3- Otras Distribuciones de Linux
    KERNEL vesamenu.c32
    APPEND pxelinux.cfg/otros

MENU SEPARATOR

LABEL 4
    MENU LABEL 4- Herramientas administracion de sistemas
    KERNEL vesamenu.c32
    APPEND pxelinux.cfg/herramientas

MENU SEPARATOR

LABEL 5

    MENU LABEL Reinicio en Frio
    COM32 syslinux/reboot.c32

LABEL 6
    MENU LABEL Reinicio en CALIENTE opcion 1
    COM32 syslinux/reboot.c32
    APPEND -w

LABEL 7
    MENU LABEL Reinicio en CALIENTE opcion 2
    MENU PASSWD usuariodebian
    COM32 syslinux/reboot.c32
    APPEND --warm
  
LABEL 8
    MENU LABEL Apagar el ORDENADOR
    COM32 syslinux/poweroff.c32

MENU SEPARATOR
    
LABEL 9
    MENU LABEL Arrancar desde HDD
    LOCALBOOT 0
============================================= 


Algunas capturas de pantalla