Instalacion de Gnu/linux por PXE

palichis's picture

Hola Amigos aquí os dejo un pequeño How to para la instalación por red

Necesitamos instalar tres pequeñas aplicaciones
tftpd, dhcp-server, y nfs-kernel-server

NOTA:La instalación de estos paquetes dependerá de la distribución que uses

configuramos nuestro DHCP- server para que nos de una IP automaticamente y nos capture pxelinux.0


vim /etc/dhcp3/dhcpd.conf

# Archvio para el uso de DHCP
ddns-update-style none;

# El servidor tftp, por supuesto eso varía según su configuración y topología.
next-server 192.168.0.1;
# Rango de direcciones que atenderé con este servidor
range 192.168.0.250 192.168.0.254;
option domain-name-servers 200.63.206.1;
# Como estoy usando NAT mando la ruta por defecto.
option routers 192.168.0.1;
# El archivo que manda enseguida para no tener que esperar tanto tiempo.
filename="pxelinux.0";
}

configuramos nuestro server tftp

Por defecto tftp-hpa3 quiere arrancar con inetd, pero nosotros lo configuramos par que arranque como demonio y lo configuremos así:

dpkg-reconfigure tftp-hpa

y editamos el siguiente archivo y lo dejamos así: /etc/default/tftpd-hpa:


RUN_DAEMON=”yes”
# La ruta donde descansan nuestros archivos
OPTIONS=”-l -s /var/lib/tftpboot”

Ahora configuremos nfs para que las maquinas puedan acceder a los directorios donde están montadas las isos
primero montamos la iso

mount -o loop /home/palichis/distros/debianETCH.iso /home/palichis/debian

ahora editamos /etc/exports que es donde ponemos los directorios a compartir por nfs

/home/palichis/debian 192.168.0.0/255.255.255.0(ro,no_root_squash,sync)

A continuación nos descargaremos netboot

y descomprimiremos el contenido en /var/lib/tftpboot


tar xjf netboot.tar.gz -C /var/lib/tftpboot

Ahora copiamos initrd.gz y vmlinuz de la carpeta casper de nuestra iso montada


cp /home/palichis/debian/casper/initrd.gz /var/lib/tftpboot/solidinitrd.gz
cp /home/palichis/debian/casper/vmlinux /var/lib/tftpboot/solidvmlinux

Ahora tenemos que hacer un pequeño cambio en la imagen initrd.gz para que nos pueda bootear por red


mkdir /var/lib/tftpboot/initrd
cd /var/lib/tftpboot/initrd
gzip -dc /home/palichis/debian/casper/initrd.gz | cpio -i
vim /var/lib/tftpboot/initrd/scripts/casper

aqui buscamos la función do_netmount() y cambiamos:
DE

if [ "${NFSROOT}" = "auto" ]; then
NFSROOT=${ROOTSERVER}:${ROOTPATH}
fi

POR

if [ "${NFSROOT}" = "auto" ]; then
ROOTSERVER="192.168.0.1"
ROOTPATH="/home/palichis/debian"
NFSROOT=${ROOTSERVER}:${ROOTPATH}
fi

guardamos y salimos
Luego de esto para crear una nueva imagen con los nuevos datos hacemos


find ./ | cpio -H newc -o > initrd
gzip initrd.gz

tenemos nuestra nueva imagen creada y lo que haremos es copiar de /var/lib/tftpboot/initrd a /var/lib/tftpboot/ reemplazando al initrd.gz anterior

ahora vamos a modificar nuestro boot para que arranque con los parámetros solicitados
vim /var/lib/tftpboot/pxelinux.cfg/default


DISPLAY ubuntu-installer/i386/boot-screens/boot.txt

F1 boot-screens/f1.txt
F2 boot-screens/f2.txt

DEFAULT install

LABEL install
kernel vmlinuz
append boot=casper initrd=solidinitrd.gz ramdisk_size=148576 netboot=nfs nfsdir=192.168.0.1:/var/lib/tftpboot/ubuntu-installer/xubuntu root=/dev/ram rw quiet splash --

PROMPT 1
TIMEOUT 10

y por último vamos a reiniciar los servicios instalados al inicio


/etc/init.d/dhcp3-server restart
/etc/init.d/nfs-kernel-server restart
/etc/init.d/tftpd restart