Cómo instalar Ubuntu a través del servidor PXE usando fuentes de DVD locales


PXE o Preboot eXecution Environment es un mecanismo servidor-cliente que indica a una máquina cliente que arranque desde la red.

En esta guía, mostraremos cómo instalar Ubuntu Server a través de un servidor PXE con fuentes HTTP locales reflejadas desde la imagen ISO del servidor Ubuntu a través del servidor web Apache. El servidor PXE utilizado en este tutorial es Dnsmasq Server.

  1. Instalación de Ubuntu Server 16.04 o 17.04
  2. Una interfaz de red configurada con una dirección IP estática
  3. Imagen ISO de Ubuntu Server 16.04 o 17.04

Paso 1: instalar y configurar el servidor DNSMASQ

1. Para configurar el servidor PXE, en el primer paso inicie sesión con la cuenta root o una cuenta con privilegios de root e instale el paquete Dnsmasq en Ubuntu emitiendo el siguiente comando.

# apt install dnsmasq

2. A continuación, haga una copia de seguridad del archivo de configuración principal dnsmasq y luego comience a editar el archivo con las siguientes configuraciones.

# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
# nano /etc/dnsmasq.conf

Agregue la siguiente configuración al archivo dnsmasq.conf.

interface=ens33,lo
bind-interfaces
domain=mypxe.local

dhcp-range=ens33,192.168.1.230,192.168.1.253,255.255.255.0,1h
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.1
dhcp-option=6,8.8.8.8
server=8.8.4.4
dhcp-option=28,10.0.0.255
dhcp-option=42,0.0.0.0

dhcp-boot=pxelinux.0,pxeserver,192.168.1.14

pxe-prompt="Press F8 for menu.", 2
pxe-service=x86PC, "Install Ubuntu 16.04 from network server 192.168.1.14", pxelinux
enable-tftp
tftp-root=/srv/tftp

En el archivo de configuración anterior, reemplace las siguientes líneas en consecuencia.

  • interfaz Reemplácela con la interfaz de red de su propia máquina.
  • dominio: reemplácelo con su nombre de dominio.
  • dhcp-range: defina su propio rango de red para que DHCP asigne direcciones IP a este segmento de red y durante cuánto tiempo se debe otorgar una dirección IP para un cliente.
  • dhcp-option u003d 3: su IP de puerta de enlace.
  • dhcp-option u003d 6 direcciones IP de servidor DNS: se pueden definir varias direcciones IP de DNS.
  • servidor: dirección IP del reenviador de DNS.
  • dhcp-option u003d 28: su dirección de transmisión de red.
  • dhcp-option u003d 42 - Servidor NTP - use 0.0.0.0 La dirección es para autorreferencia.
  • dhcp-boot: el archivo de arranque pxe y la dirección IP del servidor PXE (aquí pxelinux.0 y la dirección IP de la misma máquina).
  • pxe-prompt: los usuarios pueden presionar la tecla F8 para ingresar al menú PXE o esperar 2 segundos antes de cambiar automáticamente al menú PXE.
  • pxe u003d service: use x86PC para arquitecturas de 32 bits/64 bits e ingrese un mensaje de descripción de menú debajo de las comillas de cadena. Otros tipos de valores pueden ser: PC98, IA64_EFI, Alpha, Arc_x86, Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI y X86-64_EFI.
  • enable-tftp: habilita el servidor TFTP integrado.
  • tftp-root: la ruta del sistema para los archivos de arranque de red.

3. Además, una vez que haya terminado de editar el archivo de configuración dnsmasq, cree el directorio para los archivos netboot de PXE emitiendo el siguiente comando y reinicie el demonio dnsmasq para aplicar los cambios. Verifique el estado del servicio dnsmasq para ver si se ha iniciado.

# mkdir /srv/tftp
# systemctl restart dnsmasq.service
# systemctl status dnsmasq.service

Paso 2: Instale los archivos TFTP Netboot

4. En el siguiente paso, obtenga la última versión de la imagen ISO del servidor Ubuntu para la arquitectura de 64 bits emitiendo el siguiente comando.

# wget http://releases.ubuntu.com/16.04/ubuntu-16.04.3-server-amd64.iso

5. Una vez que se haya descargado la ISO del servidor Ubuntu, monte la imagen en el directorio /mnt y enumere el contenido del directorio montado ejecutando los siguientes comandos.

# mount -o loop ubuntu-16.04.3-desktop-amd64.iso /mnt/
# ls /mnt/

6. A continuación, copie los archivos netboot del árbol montado en Ubuntu a la ruta del sistema tftp emitiendo el siguiente comando. Además, enumere la ruta del sistema tftp para ver los archivos copiados.

# cp -rf /mnt/install/netboot/* /srv/tftp/
# ls /srv/tftp/

Paso 3: preparar los archivos fuente de la instalación local

7. Las fuentes de instalación de la red local para el servidor Ubuntu se proporcionarán a través del protocolo HTTP. Primero, instale, inicie y habilite el servidor web Apache emitiendo los siguientes comandos.

# apt install apache2
# systemctl start apache2
# systemctl status apache2
# systemctl enable apache2

8. Luego, copie el contenido del DVD de Ubuntu montado en la ruta raíz web del servidor web Apache ejecutando los siguientes comandos. Enumere el contenido de la ruta raíz web de Apache para comprobar si el árbol montado en ISO de Ubuntu se ha copiado por completo.

# cp -rf /mnt/* /var/www/html/
# ls /var/www/html/

9. A continuación, abra el puerto HTTP en el firewall y navegue hasta la dirección IP de su máquina a través de un navegador ( http://192.168.1.14/ubuntu ) para probar si puede acceder a las fuentes a través del protocolo HTTP.

# ufw allow http

Paso 4: Configurar el archivo de configuración del servidor PXE

10. Para poder pivotar rootfs a través de PXE y fuentes locales, Ubuntu necesita recibir instrucciones a través de un archivo preconfigurado. Cree el siguiente archivo local-sources.seed en la ruta raíz del documento del servidor web con el siguiente contenido.

# nano /var/www/html/ubuntu/preseed/local-sources.seed

Agregue la siguiente línea al archivo local-sources.seed.

d-i live-installer/net-image string http://192.168.1.14/ubuntu/install/filesystem.squashfs

Aquí, asegúrese de reemplazar la dirección IP en consecuencia. Debe ser la dirección IP donde se encuentran los recursos web. En esta guía, las fuentes web, el servidor PXE y el servidor TFTP están alojados en el mismo sistema. En una red abarrotada, es posible que desee ejecutar PXE, TFTP y servicios web en máquinas separadas para mejorar la velocidad de la red PXE.

11. Un servidor PXE lee y ejecuta archivos de configuración ubicados en el directorio raíz TFTP pxelinux.cfg en este orden: archivos GUID, archivos MAC y archivo predeterminado.

El directorio pxelinux.cfg ya está creado y poblado con los archivos de configuración PXE requeridos porque anteriormente copiamos los archivos netboot de la imagen ISO montada en Ubuntu.

Para agregar el archivo de declaración preestablecido anterior a la etiqueta de instalación de Ubuntu en el archivo de configuración PXE, abra el siguiente archivo para editarlo emitiendo el siguiente comando.

# nano /srv/tftp/ubuntu-installer/amd64/boot-screens/txt.cfg

En el archivo de configuración Ubuntu PXE txt.cfg, reemplace la siguiente línea como se ilustra en el siguiente extracto.

append auto=true url=http://192.168.1.14/ubuntu/preseed/local-sources.seed vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet

El archivo /srv/tftp/ubuntu-installer/amd64/boot-screens/txt.cfg debe tener el siguiente contenido global:

default install
label install
	menu label ^Install Ubuntu 16.04 with Local Sources
	menu default
	kernel ubuntu-installer/amd64/linux
	append auto=true url=http://192.168.1.14/ubuntu/preseed/local-sources.seed vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet 
label cli
	menu label ^Command-line install
	kernel ubuntu-installer/amd64/linux
	append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet

12. En caso de que desee agregar la declaración de url preconfigurada al menú de rescate de Ubuntu, abra el archivo a continuación y asegúrese de actualizar el contenido como se ilustra en el ejemplo a continuación.

# nano /srv/tftp/ubuntu-installer/amd64/boot-screens/rqtxt.cfg

Agregue la siguiente configuración al archivo rqtxt.cfg.

label rescue
	menu label ^Rescue mode
	kernel ubuntu-installer/amd64/linux
	append auto=true url=http://192.168.1.14/ubuntu/preseed/local-sources.seed vga=788 initrd=ubuntu-installer/amd64/initrd.gz rescue/enable=true --- quiet

La línea importante que debe actualizar es url u003d http://192.168.1.14/ubuntu/preseed/local-sources.seed, que especifica la dirección URL donde se encuentra el archivo presionado en su red.

13. Finalmente, abra el archivo Ubuntu pxe menu.cfg y comente las primeras tres líneas para expandir la pantalla de arranque PXE como se ilustra en la captura de pantalla a continuación.

# nano /srv/tftp/ubuntu-installer/amd64/boot-screens/menu.cfg

Comente estas tres líneas siguientes.

#menu hshift 13
#menu width 49
#menu margin 8

Paso 5: Abra los puertos del cortafuegos en Ubuntu

14. Ejecute el comando netstat con privilegios de root para identificar los puertos abiertos dnsmasq, tftp y web en estado de escucha en su servidor, como se ilustra en el siguiente extracto.

# netstat -tulpn

15. Una vez que haya identificado todos los puertos necesarios, emita los siguientes comandos para abrir los puertos en el firewall ufw.

# ufw allow 53/tcp
# ufw allow 53/udp
# ufw allow 67/udp
# ufw allow 69/udp
# ufw allow 4011/udp

Paso 6: Instale Ubuntu con fuentes locales a través de PXE

16. Para instalar el servidor Ubuntu a través de PXE y usar las fuentes de instalación de la red local, reinicie el cliente de su máquina, indique al BIOS que arranque desde la red y en la primera pantalla del menú PXE elija la primera opción como se ilustra en las imágenes a continuación.

17. El procedimiento de instalación debe realizarse como de costumbre. Cuando el instalador llegue a la configuración del país del espejo de archivos de Ubuntu, use la flecha hacia arriba del teclado para pasar a la primera opción, que dice: ingrese la información manualmente.

18. Presione la tecla [enter] para actualizar esta opción, elimine la cadena de espejo y agregue la dirección IP de las fuentes de espejo del servidor web y presione enter para continuar como se ilustra en la imagen de abajo.

http://192.168.1.14

19. En la siguiente pantalla, agregue su directorio de archivos espejo como se muestra a continuación y presione la tecla Intro para continuar con el proceso de instalación y normalmente.

/ubuntu

20. En caso de que desee ver información sobre qué paquetes se descargan de su réplica local de red, presione las teclas [CTRL + ALT + F2] para cambiar la consola virtual de la máquina y ejecute el siguiente comando.

# tail –f /var/log/syslog

21. Una vez finalizada la instalación del servidor Ubuntu, inicie sesión en el sistema recién instalado y ejecute el siguiente comando con privilegios de root para actualizar los paquetes de repositorios de fuentes de red local a réplicas oficiales de Ubuntu.

Los espejos deben cambiarse para actualizar el sistema utilizando los repositorios de Internet.

$ sudo sed –i.bak ‘s/192.168.1.14/archive.ubuntu.com/g’ /etc/apt/sources.list

Asegúrese de reemplazar la dirección IP de acuerdo con la dirección IP de sus propias fuentes web locales.

¡Eso es todo! Ahora puede actualizar su sistema de servidor Ubuntu e instalar todo el software necesario. La instalación de Ubuntu a través de PXE y un espejo de origen de red local puede mejorar la velocidad de instalación y puede ahorrar ancho de banda de Internet y costos en caso de implementar una gran cantidad de servidores en un corto período de tiempo en sus instalaciones.