Al final este tutorial nos brindará un Servidor desde el cual podemos instalar en cuestión de minutos las distintas distribuciones de GNU/Linux que se muestran vía PXE
(arranque por red) en el número de computadoras que haya en nuestra red local.
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
Servidor PXE de Instalaciones GNU/Linux
1. Servidor PXE de Instalaciones GNU/Linux
Claudio Concepción Certad
Según Wikipedia, PXE hace referencia al entorno de ejecución de prearranque (Preboot
eXecution Environment). Es un entorno para arrancar e instalar el sistema operativo en
ordenadores a través de una red, de manera independiente de los dispositivos de
almacenamiento de datos disponibles (como discos duros) o de los sistemas operativos
instalados.
PXE fue introducido como parte del framework Wired for Management por Intel y fue descrito en la
especificación (version 2.1) publicada por Intel y Systemsoft el 20 de septiembre de 1999. PXE
utiliza varios protocolos de red como IP, UDP, DHCP y TFTP, y conceptos como Globally Unique
Identifier (GUID), Universally Unique Identifier (UUID) y Universal Network Device Interface (UNDI).
El término cliente PXE sólo se refiere al papel que la máquina juega en el proceso de arranque
mediante PXE. Un cliente PXE puede ser un servidor, un ordenador de mesa, portátil o cualquier
otra máquina que esté equipada con código de arranque PXE.
El firmware del cliente trata de encontrar un servicio de redirección PXE en la red para recabar
información sobre los servidores de arranque PXE disponibles. Tras analizar la respuesta, el
firmware solicitará al servidor de arranque apropiado el file path de un network bootstrap program
(NBP), lo descargará en la memoria RAM del ordenador mediante TFTP, probablemente lo
verificará, y finalmente lo ejecutará. Si se utiliza un único NBP para todos los clientes PXE se
puede especificar mediante BOOTP sin necesidad de un proxy DHCP, pero aún será necesario un
servidor TFTP.
Nota importante: Se que las distros están bastante atrasadas. También se que
existe gPXE, el cual ayuda a hacer este trabajo aun más fácil. Pero la intención de esta
guía es proporcionar una base de conocimiento útil y un panorama de cómo funcionan
las cosas.
Al final este tutorial nos brindará un Servidor desde el cual podemos instalar en
cuestión de minutos las distintas distribuciones de GNU/Linux que se muestran vía PXE
(arranque por red) en el número de computadoras que haya en nuestra red local.
Instalar y configurar los servicios
[root@pxe-server ]# yum install dhcp vsftp tftp-server
[root@pxe-server ]# nano /etc/dhcpd.conf
ddns-update-style interim;
not authoritative;
option domain-name "codigolibre.org";
option domain-name-servers 196.3.81.132, 200.88.127.22;
option subnet-mask 255.255.255.0;
subnet 10.42.43.0 netmask 255.255.255.0
{
authoritative;
range 10.42.43.50 10.42.43.100;
allow unknown-clients;
allow booting;
allow bootp;
next-server 10.42.43.3;
filename "pxelinux.0";
}
Nota: La dirección 10.42.43.3 pertenece al mismo servidor pxe-server.
[root@pxe-server ]# nano /etc/xinetd.d/tftp
2. Buscamos la línea: disable=yes, y la ponemos así:
disable=no
Editar el fichero /etc/exports que le pertenece a NFS y añadir lo
siguiente:
[root@pxe-server ]# nano /etc/exports
/var/ftp/ubuntu 10.42.43.0/255.255.255.0(rw,sync)
/var/ftp/kubuntu 10.42.43.0/255.255.255.0(rw,sync)
/var/ftp/clonezilla 10.42.43.0/255.255.255.0(rw,sync)
/var/ftp/sysrescue 10.42.43.0/255.255.255.0(rw,sync)
Editar el fichero /etc/fstab que le pertenece a mountd y añadir lo
siguiente:
[root@pxe-server ]# nano /etc/fstab
/home/fraterneo/Fedora.iso /var/ftp/fedora/i386/ udf,iso9660 user,auto,loop 0 0
/home/fraterneo/CentOS.iso /var/ftp/centos/5/i386/ udf,iso9660 user,auto,loop 0 0
/home/fraterneo/kubuntu.iso /var/ftp/kubuntu/ udf,iso9660 user,auto,loop 0 0
/home/fraterneo/Ubuntu.iso /var/ftp/ubuntu/ udf,iso9660 user,auto,loop 0 0
/home/fraterneo/Clonezilla.iso /var/ftp/clonezilla/ udf,iso9660 user,auto,loop 0 0
/home/fraterneo/Sysrescue.iso /var/ftp/sysrescue/ udf,iso9660 user,auto,loop 0 0
/home/fraterneo/opensuse.iso /var/ftp/opensuse/ udf,iso9660 user,auto,loop 0 0
Obviamente es importante que ya hayas descargado previamente los .ISO de cada
distro. Verifica si debes descargar LiveCD o DVD según lo indica más adelante cada
entrada Label del fichero default.
Crear los directorios necesarios
Directorios donde se van a montar los .ISO
[root@pxe-server ]# mkdir -p /var/ftp/centos/5/i386/
[root@pxe-server ]# mkdir -p /var/ftp/fedora/i386/
[root@pxe-server ]# mkdir -p /var/ftp/ubuntu/
[root@pxe-server ]# mkdir -p /var/ftp/clonezilla/
[root@pxe-server ]# mkdir -p /var/ftp/sysrescue/
[root@pxe-server ]# mkdir -p /var/ftp/opensuse/
[root@pxe-server ]# mkdir -p /var/ftp/kubuntu/
Directorios donde estará la configuración PXE
[root@pxe-server ]# mkdir /tftpboot/
[root@pxe-server ]# mkdir -p /tftpboot/images/
[root@pxe-server ]# mkdir -p /tftpboot/images/ubuntu/
[root@pxe-server ]# mkdir -p /tftpboot/images/fedora/i386/
[root@pxe-server ]# mkdir -p /tftpboot/images/centos/5/i386/
[root@pxe-server ]# mkdir -p /tftpboot/images/sysrescue/
[root@pxe-server ]# mkdir -p /tftpboot/images/clonezilla/
[root@pxe-server ]# mkdir -p /tftpboot/images/opensuse/
[root@pxe-server ]# mkdir -p /tftpboot/images/kubuntu/
[root@pxe-server ]# mkdir -p /tftpboot/pxelinux.cfg/
De cada distro debemos copiar su initrd y su kernel (vmlinuz*) y pegarlos en el
directorio de cada distro ubicado en el árbol /tftpboot/images. En el caso
3. de SystemRescueCD el kernel se llama rescuecd y no vmlinuz*, y en el caso de openSUSE el
kernel se llama linux.
Copiar los siguientes ficheros a /tftpboot/
[root@pxe-server ]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/
[root@pxe-server ]# cp /usr/lib/syslinux/menu.c32 /tftpboot/
Crear y editar el archivo de configuración del menú PXE
[root@pxe-server ]# nano /tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
MENU TITLE fraterneo's GNU/Linux PXE Installation Server
PROMPT 0
TIMEOUT 300
LABEL SystemRescueCD 1.5.5 (LiveCD)
KERNEL images/sysrescue/rescuecd
APPEND initrd=images/sysrescue/initram.igz netboot=nfs://10.42.43.3:/var/ftp/sysrescue/ setkmap=es scandelay=1 docache vga=normal ramdisk_size=32768
LABEL Clonezilla 1.2.2 (LiveCD)
KERNEL images/clonezilla/vmlinuz1
APPEND initrd=images/clonezilla/initrd1.img boot=live union=aufs netboot=nfs nfsroot=10.42.43.3:/var/ftp/clonezilla/ vga=normal ramdisk_size=32768
LABEL CentOS 5.4 (DVD-i386)
KERNEL images/centos/5/i386/vmlinuz
APPEND initrd=images/centos/5/i386/initrd.img ip=dhcp method=ftp://10.42.43.3/centos/5/i386/ vga=normal ramdisk_size=32768
LABEL Fedora 14 (DVD-i386)
KERNEL images/fedora/i386/vmlinuz
APPEND initrd=images/fedora/i386/initrd.img ip=dhcp method=ftp://10.42.43.3/fedora/14/i386/ vga=normal ramdisk_size=32768
LABEL Ubuntu 10.10 (LiveCD-i386)
KERNEL images/ubuntu/live/vmlinuz
APPEND initrd=images/ubuntu/live/initrd.lz vga=normal boot=casper netboot=nfs nfsroot=10.42.43.3:/var/ftp/ubuntu/ ramdisk_size=32768
LABEL Kubuntu 10.10 (LiveCD-i386)
KERNEL images/kubuntu/vmlinuz
APPEND initrd=images/kubuntu/initrd.lz vga=normal boot=casper netboot=nfs nfsroot=10.42.43.3:/var/ftp/kubuntu/ ramdisk_size=32768
LABEL OpenSUSE 11.3 (DVD-i386)
KERNEL images/opensuse/linux
APPEND initrd=images/opensuse/initrd root=/dev/ram0 load_ramdisk=1 splash=silent showopts ramdisk_size=4096 install=ftp://10.42.43.3/opensuse/
Luego de esto le damos todos los permisos a todo el árbol /tftpboot.
[root@pxe-server ]# chmod -R 777 /tftpboot/
Inicializar los daemons correspondientes.
[root@pxe-server ]# service vsftpd restart
[root@pxe-server ]# service xinetd restart
[root@pxe-server ]# service nfs restart
[root@pxe-server ]# service dhcpd restart
Opcional: Establecer que los daemons se inicializen automáticamente
durante el arranque del sistema.
[root@pxe-server ]# chkconfig vsftpd --level 345 on
[root@pxe-server ]# chkconfig xinetd --level 345 on
[root@pxe-server ]# chkconfig nfs --level 345 on
[root@pxe-server ]# chkconfig dhcpd --level 345 on
NOTA IMPORTANTE: Recordar que para inicializar el DHCPD es necesario tener una tarjeta de red configurada
en la misma subred en la que trabajará el servidor. Además es imprescindible deshabilitar SELINUX y el
FIREWALL.
Servidor PXE de Instalaciones GNU/Linux by Claudio Concepción Certad is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.