Source: https://usuariodebian.blogspot.com/2019/09/
Timestamp: 2020-07-02 21:57:34+00:00

Document:
UsuarioDebian: septiembre 2019
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
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-utils
- tftpd-hpa
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.
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
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
Para verificar la nueva dirección IP, usamos el siguiente comando.
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.
Es muy importante tener el servidor actualizado con las ultimas correciones y actualizaciones de seguridad, para ello usamos los siguiente comandos :
Para instalar el servidor dhcp en Debian usamos el siguiente comando:
Hacemos una copia de seguridad del archivo de configuración del servidor ISC-DHCP-SERVER
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.
Contenido del archivo dhcpd.conf :
# default lease 4H, max lease 8H
option domain-name "Servidor_PXE";
filename "bootnetx64.efi";
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:
Para verificar que el servidor DHCP esta funcionando usamos el siguiente comando:
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:
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
Si en la línea TFTP_OPTIONS aparece el indicador --create, Se recomienda borrar dicha opción:
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 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.
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.0, bootnetx64.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.
Aquí hay un ejemplo simple de un archivo de configuración de Syslinux, con una entrada para arrancar Debian GNU/Linux:
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.
Cambie la etiqueta que se muestra para una entrada de menú específica
Insertar una línea vacía en el menú.
Texto de ayuda ...
... que puede abarcar varias líneas
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.
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].
Ponle un título al menú. El título se presenta en la parte superior del menú.
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.
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Ú .
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.
Reemplace el mensaje " Presione [Tab] para editar las opciones ".
Reemplace el mensaje " Contraseña requerida "
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
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.
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.
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
MENU LABEL 1- Debian 9 GNU/Linux (stable)
APPEND pxelinux.cfg/debian9
MENU LABEL 2- Debian 10 GNU/Linux (testing)
APPEND pxelinux.cfg/debian10
MENU LABEL 3- Otras Distribuciones de Linux
APPEND pxelinux.cfg/otros
MENU LABEL 4- Herramientas administracion de sistemas
APPEND pxelinux.cfg/herramientas
MENU LABEL Reinicio en Frio
COM32 syslinux/reboot.c32
MENU LABEL Reinicio en CALIENTE opcion 1
APPEND -w
MENU LABEL Reinicio en CALIENTE opcion 2
MENU PASSWD usuariodebian
APPEND --warm
MENU LABEL Apagar el ORDENADOR
COM32 syslinux/poweroff.c32
MENU LABEL Arrancar desde HDD
Publicado por Usuario_Debian en 14:19 0 comentarios Enlaces a esta entrada

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 RESOLUCIÓN