En este artículo, analizaremos cómo configurar tftpboot, incluida la instalación de los paquetes necesarios y las configuraciones de tftpboot.
El servicio de arranque TFTP se utiliza principalmente para realizar la instalación del sistema operativo en una máquina remota para la que no tienes acceso físico. Para realizar la instalación del sistema operativo con éxito, debe haber una manera de reiniciar el servidor remoto, ya sea usando wakeonlan o alguien que la reinicie manualmente o de alguna otra manera.
En esos escenarios, puedes configurar los servicios de tftpboot en consecuencia y la instalación del sistema operativo se puede hacer de forma remota (necesitas tener el archivo de configuración autoyast para automatizar los pasos de instalación del sistema operativo).
El procedimiento paso a paso se presenta en este artículo para SLES10-SP3 en arquitectura de 64 bits. Sin embargo, estos pasos son bastante similares a cualquier otra distribución de Linux.
Paquetes requeridos
Los siguientes paquetes deben instalarse para la configuración de tftpboot.
- Paquetes de servicios dhcp: dhcp-3.0.7-7.5.20.x86_64.rpm y dhcp-server-3.0.7-7.5.20.x86_64.rpm
- Paquete tftpboot: tftp-0.48-1.6.x86_64.rpm
- paquete pxeboot: syslinux-3.11-20.14.26.x86_64.rpm
Instalación de paquete
Se deben instalar los paquetes para los servicios del servidor dhcp:
1 2 3 4 5 6 7 8 9 10 11 |
$ rpm -ivh dhcp-3.0.7-7.5.20.x86_64.rpm Preparing... ########################################### [100%] 1:dhcp ########################################### [100%] $ rpm -ivh dhcp-server-3.0.7-7.5.20.x86_64.rpm Preparing... ########################################### [100%] 1:dhcp ########################################### [100%] $ rpm -ivh tftp-0.48-1.6.x86_64.rpm $ rpm -ivh syslinux-3.11-20.14.26.x86_64.rpm |
Después de instalar el paquete syslinux, se creará el archivo pxelinux.0 en el directorio /usr/share/pxelinux/. Esto es necesario para cargar el núcleo de instalación y las imágenes initrd en la máquina cliente.
Es necesario verificar que los paquetes se hayan instalado correctamente.
1 2 |
$ rpm -qa | grep dhcp $ rpm -qa | grep tftp |
Luego tienes que descargar el tftpserver apropiado del repositorio de su respectiva distribución de Linux.
Pasos para configurar tftpboot
Paso 1: crear el directorio /tftpboot
Hay que iniciar creando el directorio tftpboot en el directorio root(/) como se muestra a continuación.
1 |
# mkdir /tftpboot/ |
Paso 2: copiar la imagen pxelinux
La imagen PXE Linux estará disponible una vez que hayas instalado el paquete syslinux. Esto se debe copiar a ruta la /tftpboot como se muestra a continuación.
1 |
# cp /usr/share/syslinux/pxelinux.0 /tftpboot |
Paso 3: crear el punto de montaje para la ISO y montar la imagen ISO
Supongamos que vamos a instalar la distribución SLES10 SP3 Linux en un servidor remoto. Si tienes el DVD SUSE10-SP3, insértalo en la unidad o monta la imagen ISO que tengas. Aquí, la imagen iso se ha montado de la siguiente manera:
1 2 |
# mkdir /tftpboot/sles10_sp3 # mount -o loop SLES-10-SP3-DVD-x86_64.iso /tftpboot/sles10_sp3 |
Paso 4: Copiar las imágenes vmlinuz e initrd en /tftpboot
Copia initrd en el directorio tftpboot como se muestra a continuación.
1 2 |
# cd /tftpboot/sles10_sp3/boot/x86_64/loader # cp initrd linux /tftpboot/ |
Paso 5: Crear el directorio pxelinux.cfg
Luego se debe crear el directorio pxelinux.cfg en /tftpboot y especificar las definiciones de arranque pxe para el cliente.
1 2 3 4 5 6 |
# mkdir /tftpboot/pxelinux.cfg # cat >/tftpboot/pxelinux.cfg/default default linux label linux kernel linux append initrd=initrd showopts instmode=nfs install=nfs://192.168.1.101/tftpboot/sles10_sp3/ |
Las siguientes opciones se utilizan para:
- kernel: especifica dónde encontrar el kernel de instalación de Linux en el servidor TFTP.
- install: especifica los argumentos de arranque para pasar al núcleo de instalación.
Según las entradas anteriores, el modo de instalación nfs se utiliza para servir RPM de instalación y archivos de configuración. Por lo tanto, configura nfs en esta máquina con el directorio /tftpboot en la lista exportada.
Puedes agregar la opción “autoyast” con el archivo de configuración de autoyast para automatizar los pasos de instalación del sistema operativo; de lo contrario, debes ejecutar los pasos de instalación manualmente.
Paso 6: cambiar el propietario y el permiso para el directorio /tftpboot
Asigna nobody:nobody al directorio /tftpboot.
1 2 |
# chown nobody:nobody /tftpboot # chmod 777 /tftpboot |
Paso 7: Modificar /etc/dhcpd.conf
Asegúrate de modificar /etc/dhcpd.conf como se muestra a continuación.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# cat /etc/dhcpd.conf ddns-update-style none; default-lease-time 14400; filename "pxelinux.0"; # IP address of the dhcp server nothing but this machine. next-server 192.168.1.101; subnet 192.168.1.0 netmask 255.255.255.0 { # ip distribution range between 192.168.1.1 to 192.168.1.100 range 192.168.1.1 192.168.1.100; default-lease-time 10; max-lease-time 10; } |
Especifica la interfaz en /etc/syslinux/dhcpd para escuchar las solicitudes dhcp que provienen de los clientes.
1 2 |
# cat /etc/syslinux/dhcpd | grep DHCPD_INTERFACE DHCPD_INTERFACE=”eth1”; |
Aquí, esta máquina tiene la dirección IP 192.168.1.101 en el dispositivo eth1. Por lo tanto, se debe especificar eth1 para DHCPD_INTERFACE como se muestra arriba.
Paso 8: Modificar /etc/xinetd.d/tftp
Cambia el archivo /etc/xinetd.d/tftp para reflejar lo siguiente. De forma predeterminada, el valor para el parámetro de disable es “yes”, asegúrate de modificarlo a “no” y debes cambiar la entrada server_args a -s /tftpboot.
1 2 3 4 5 6 7 8 9 10 |
# cat /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no } |
Paso 9: sin cambios en /etc/xinetd.conf
No es necesario modificar el archivo etc/xinetd.conf. Utiliza los valores predeterminados especificados en el archivo xinetd.conf.
Paso 10: reiniciar los servicios xinetd, dhcpd y nfs
Reinicia estos servicios como se muestra a continuación.
1 2 3 |
# /etc/init.d/xinetd restart # /etc/init.d/dhcpd restart # /etc/init.d/nfsserver restart |
Después de reiniciar los servicios nfs, puedes ver la lista de directorios exportados (/tftpboot) con el siguiente comando:
1 |
# showmount -e |
Finalmente, la configuración de tftpboot está lista y ahora la máquina cliente se puede iniciar después de cambiar el primer dispositivo de inicio como “network” en la configuración de la BIOS.
Si encuentras algún error tftp, puedes solucionar el problema recuperando algunos archivos a través del servicio tftpd.
Puedes recuperar algunos archivos del servidor tftpserver para asegurarte de que el servicio tftp funciona correctamente con el cliente tftp. Supongamos que el archivo sample.txt está presente en el directorio /tftpboot, entonces debes ejecutar lo siguiente:
1 |
$ tftp -v 192.168.1.101 -c get sample.txt |