PXE Boot Explicado
1.0) Introducción :
Antes de empezar, me gustaría comentar que la distro que elegí es Slackware (por que es lo que uso y lo que me pidieron), pero que todo esto es aplicable de una u otra forma a cualquier distro ....
. sí, esto sería un manual de cómo hacer un PXE boot para instalar slackware ...
Otra cosa que (sería obvia) es tener armada una red, donde A es el servidor PXE y B es el cliente (siendo este por ejemplo, una netbook)
también, me gustaría aclarar que se necesita un mínimo conocimiento de linux y que no es para alguien que está en absoluta desintonía (voy a hacer un esfuerzo para que sea sencillo)
Bien, cuando llega el momento de instalar slackware tenés pocas opciones : DVD y USB
cuando ninguna de estas opciones está (ya sea por que nos falta la unidad o por que no podemos hacer un buen booteo por usb, esto suele suceder en las netbooks, que carecen de unidad óptica y que, no siempre podemos disponer de un usb y hacer una instalación exitosa desde el) tenemos PXE boot
1.2) Explicando PXE Boot
Que significa PXE ? PXE, significa "Preboot Execution Environment" o "Ambiente de ejecución prebooteo", es un entorno para arrancar/instalar un sistema operativo (o para hacer un booteo diskless, como se suele ver en algunas terminales)
PXE es la agrupación de diferentes protocolos : DHCP (o bootp) y TFTP .. también vamos a usar NFS/HTTP/Samba (para obtener los paquetes, o se puede obtener directamente de un mirror de Slackware, aunque esto no entra en PXE)
cuando booteamos en red, descargamos un bootloader, kernel (Kernel de Slackware) y un ramdisk (nuestro sistema de archivos inicial en un comprimido, acá está el soft de instalación y módulos de kernel), vale aclarar que lo que tengamos en la compu no se tocará hasta que no lleguemos a la instalación (al buen estilo LiveCD
)hecho esto, como no booteamos desde esta compu, necesitamos pedir los paquetes a dondesea ... en este caso vamos a tener nuestro server NFS que nos va a servir para esto...
1.3) Requisitos
Cliente :
- Tarjeta de red que soporte PXE boot
- Bios que soporte y que permita elegir PXE boot (o booteo en LAN)
Server :
- Servicio que entienda protocolo bootp : el firmware broadcastea en busca de un server PXE y este es el encargado de decirle el "hola" y darle código para bootear, slackware trae dos programas con este fin : dhcpd y dnsmasq
- Servidor TFTP : acá bajamos el bootloader/kernel/ramdisk
- Instalador Slackware : alguno de estos : NFS/HTTP/Samba, todos disponibles en slackware
2.0) Preparativos
2.1) Preparando el servidor DHCP
Bien, acá podemos tener dos situaciones : ya tenemos un servidor dhcp al cual tenemos acceso para configurarlo para que haga lo que queremos ... o bien, como la mayoría de los usuarios hogareños, no se puede : este es el router (el cual vamos a tener que deshabilitarle el server dhcp para montarnos el nuestro)
como mi caso (así como el de muchos) es el segundos, vamos a por ello :
primero, entramos al setup del router :

y en LAN, deshabilitamos el server DHCP :

hecho esto, podemos pasar a montar uno casero, pero ... toca escribir la config de nuestro dhcpd, vamos a ello :
como base vamos a tomar el ejemplo que viene en el dvd de slackware :
Código
# dhcpd.conf
#
# Configuration file for ISC dhcpd
#
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
ddns-update-style none;
# Allow bootp requestsallow bootp;
# Point to the TFTP server:next-server 192.168.0.1;
# Default lease is 1 week (604800 sec.)
default-lease-time 604800;
# Max lease is 4 weeks (2419200 sec.)
max-lease-time 2419200;
subnet 192.168.0.0 netmask 255.255.255.0 {option domain-name "my.lan";option broadcast-address 192.168.0.255;
option subnet-mask 255.255.255.0;option domain-name-servers 192.168.0.1;option routers 192.168.0.10;range dynamic-bootp 192.168.0.50 192.168.0.100;use-host-decl-names on;
if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
filename "/slackware-13.0/pxelinux.0";
}
}
esto debería ir out-of-the box (sin tocar mucho que digamos)pero .., prestando atención como mucho a lo que está resaltado, especialmente a routers, que es donde declaramos gateways, y domain-name,servers que es donde declaramos el server dns (the router is fine for this), y next-server, que es la ip del server tftp ...
o, con dnsmasq que es más simple : dnsmasq dhcp-boot={pxeboot file}, {hostname of tftp server}, {ip address of tftpserver}
siendo pxebootfile el /slackware-13.0/pxelinux.0 y los datos del tftp server (lo mismo que nuestro server dhcp)
en mi caso :
Código
dnsmasq dhcp-boot=/slackware-13.0/pxelinux.0,"192.168.0.100",192.168.0.100(siempre se aconseja que el hostname sea idéntico a la ip, pero depende de la situación de
nuestra red)
nota : no ejecutes el comando todavía, esperá que abajo (ya que estamos) montamos el server tftp
2.2) Preparando el servidor TFTP
En nuestro caso vamos a manejar el tftp con inetd, pero cualquier opción sirve (dnsmasq trae uno, que, lo hace más simple a la hora de poner a correr por que es también nuestro server dhcp... más adelante lo cubro) ..
veamos como sería con in.tftpd :
iniciamos como root (sudo -s o su, yo me atengo al su)
Código
su # ponemos la password root(o un kdesu kate /etc/inetd.conf como usuario común es suficiente)
nano /etc/inetd.conf
bajamos buscamos una linea similar a esta :
Código:
#tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -v -s /tftpboot -r blksize
y descomentamos sacando el # ...
notese que el -s /tftpboot es nuestro directorio donde vamos a poner los archivos !
Ctrl+O, Ctrl+X para guardar y salir, respectivamente
listo, ahora veamos como es con dnsmasq :
si volvemos al comando que usamos para levantar el server dhcp (en mi caso

Código
dnsmasq dhcp-boot=/slackware-13.0/pxelinux.0,"192.168.0.100",192.168.0.100y le agregamos : --enable-tftp --tftp-root=/tftpboot
quedando :
Código
dnsmasq dhcp-boot=/slackware-13.0/pxelinux.0,"192.168.0.100",192.168.0.100 --enable-tftp --tftp-root=/tftpboot
listo, hecho esto, podemos pasar a armar el directorio, para esto vamos a necesitar nuestro de de Slack, o el ftp (es lo mismo) para armar la estructura de directorios ...
volviendo a nuestra consola root :
Código
export Slack=/media/SlackDVD
export TFTP=/tftpboot/slackware-13.0
mkdir -p $TFTP/pxelinux.cfg
cp /usr/lib/syslinux/pxelinux.0 $TFTP
cp $Slack/isolinux/f2.txt $TFTP
cp $Slack/isolinux/message.txt $TFTP
cp $Slack/isolinux/initrd.img $TFTP
cp $Slack/usb-and-pxe-installers/pxelinux.cfg_default $TFTP/pxelinux.cfg/default
cp -a $Slack/kernels $TFTP
/etc/rc.d/rc.inetd restart
y después ya tenemos la estructura de directorios ! (junto con los archivos)
ya tenemos un server PXE y slackware está apto para bootear (te invito a prender la otra compu que tenga habilitado ya el PXE/LAN boot en la bios) ...vamos a ello !

como vemos en la imagen, slackware booteó !
esto ya es territorio familiar, excepto por un detalle : placa de red (ouch) / conexión de internet...
entramos con el kernel huge.smp y cuando estemos como root :
Código
network # fjate si sabes el modulo de tu placa, o apretá enter para que se trate de detectar
dhcpcd eth0
y ya estamos listos para lanzar los particionadores y demás cosas que gustemos como si de un DVD se slackware se tratase ~
2.3) Levantando el server NFS
Bueno, esto en realidad está de más, pero vale ponerlo

simplemente hay que agregar esto :
Código:
/media/SlackDVD 192.168.0.0/24(ro,sync,insecure,all_squash,subtree_check)
a nuestro /etc/exports y reiniciar nfs con este comando : (como root)
Código
/etc/rc.d/rc.nfsd restart
y todo hecho (o con la interface gráfica, da igual)
3.0) Despedida
Bueno, eso fue todo, el como instalar Slackware via PXE boot, espero que alguno que tenga por ej una netbook (y haya tenido mala suerte con el usb) le haya servido !
cualquier duda, posteen =D
Saludos n_n
P.S : deter, disculpame la demora !









Autor




En línea

