¿Que es PXE?

PXE es la tecnología con la que podremos bootear diferentes distros de GNU/Linux en nuestro cliente sin necesidad de CDrom, ya que este boot se hace mediante la red. Ni que decir tiene que para poder hacerlo la BIOS tiene que permitir arraque por red.
En la wikipedia inglesa encontraremos una gran definicion.

¿Quien es Colfire?

Coldfire es un servidor PXE que se a montado en zylk con IP 192.168.1.215, su sistema operativo es Ubuntu Edgy Eft (6.10), tiene una capacidad en disco de unos 4GB de los cuales después de tener imágenes de dapper, edgy. sarge. etch, fedora code 6 y openSuSE 10.1 esta es su disponibilidad de disco:

[email protected]:~$ df −H

Filesystem /dev/sda1 varrun varlock procbususb udev devshm

Size Used 4,1G 647M

84M 46k 84M 0

11M 82k 11M 82k

84M 0

Avail Use% Mounted on 3,2G 17% /

84M 1% /var/run 84M 0% /var/lock

11M 1% /proc/bus/usb 11M 1% /dev

84M 0% /dev/shm

Para la instalación de un server PXE usaremos los siguiente componentes, tfpt, dhcp3−server y por ultimo lftpd.

Bien teniendo en cuenta que ya tenemos hecha la instalación de Ubuntu Edgy Eft (server, ya que no nos harán falta las X en ningún momento) continuemos con el proceso de instalación.

Proceso de instalación

Actuaremos en todo momento como super usuarios de la maquina (root) de lo contrario podría llegar a ser un poco mas incomodo, en mi opinión. Para ello:

Lo primero que haremos sera actualizar el sistema:

El tiempo de espera como siempre dependerá de nuestra conexión de red, es importante disponer de ella ya que el cliente descargara desde ahí los componentes necesarios para la posterior instalación del sistema operativo.

sudo su paswd #

# aptitude update
# aptitude dist−upgrade

5 / 22 Creative Commons by­sa

ArdentIce Poniendo en marcha un servidor PXE 07/04/26 Continuemos pues instalando los servicios y componentes necesarios para la creación de un PXE:

# aptitude install netkit−inetd tftpd−hpa dhcp3−server lftp

Checkearemos que vemos algo parecido a esto:

De no aparecer tendremos que editar el archivo /etc/inetd.conf de la siguiente manera:

vim /etc/inetd.conf

Y rearrancar el demonio inet:

/etc/init.d/inetd restart

Configurando el servidor DHCP

Este el punto casi (por no decir el mas) mas importante de todo el proceso de instalación del server PXE, tenemos que hacer una configuración de acorde a la red en la que se encuentre, lo mas común es encontrarse un red como la que vamos a seguir en este ejemplo:

Comencemos pues conestos parámetros, a configurar el server DHCP. Simplemente tendremos que editar /etc/dhcp3/dhcpd.conf:

[email protected]:~# netstat −uap
Active Internet connections (servers and established)
Proto Recv−Q Send−Q Local Address Foreign Address State PID/Program name udp 0 0 *:tftp

[…]
#:BOOT: Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as “boot servers.”
tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd −s /var/lib/tftpb […]

Red: 192.168.1.0
Router: 192.168.1.1
Servidor 192.168.1.215 > En nuestro caso
Rangos: 192.168.1.10 // 192.168.1.200 ‘Rango reservado para el arranque por PXE

6 / 22 Creative Commons by­sa

ArdentIce Poniendo en marcha un servidor PXE 07/04/26

# cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig # cat /dev/null > /etc/dhcp3/dhcpd.conf
# vim /etc/dhcp3/dhcpd.conf

Añadimos las siguientes lineas (lo encontraremos vació):

option domain−name−servers 145.253.2.75, 193.174.32.18; default−lease−time 86400;
max−lease−time 604800;
authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.200; filename “pxelinux.0”;
option subnet−mask 255.255.255.0; option broadcast−address 192.168.1.255; option routers 192.168.1.1;

next−server 192.168.1.215; }

Rearrancamos el demonio:

# /etc/init.d/dhcp3−server restart

Poniendo en marcha el Netboot de Ubuntu Edgy Eft

Lo que haremos a continuación sera meter la distro Ubuntu Edgy Eft en nuestro Netboot, para ello seguiremos los siguientes sencillos pasos:

(Podemos usar otro mirror)

A continuación miraremos si /var/lib/tftpboot/pxelinux.cfg/default tiene una configuracion como la siguiente:

cd /tmp
lftp −c “open http://archive.ubuntu.com/ubuntu/dists/edgy/main/installer−i386/current/images/; mirro mv netboot/* /var/lib/tftpboot
rm −fr netboot

7 / 22 Creative Commons by­sa

ArdentIce Poniendo en marcha un servidor PXE 07/04/26

DISPLAY ubuntu−installer/i386/boot−screens/boot.txt F1 ubuntu−installer/i386/boot−screens/f1.txt
F2 ubuntu−installer/i386/boot−screens/f2.txt
F3 ubuntu−installer/i386/boot−screens/f3.txt

F4 ubuntu−installer/i386/boot−screens/f4.txt F5 ubuntu−installer/i386/boot−screens/f5.txt F6 ubuntu−installer/i386/boot−screens/f6.txt F7 ubuntu−installer/i386/boot−screens/f7.txt F8 ubuntu−installer/i386/boot−screens/f8.txt F9 ubuntu−installer/i386/boot−screens/f9.txt F0 ubuntu−installer/i386/boot−screens/f10.txt

DEFAULT install

LABEL install
kernel ubuntu-installer/i386/linux
append vga=normal initrd=ubuntu-installer/i386/initrd.gz

ramdisk_size=16417 root=/dev/ram rw — LABEL linux

kernel ubuntu-installer/i386/linux

append vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw —
LABEL server

kernel ubuntu-installer/i386/linux

append base-installer/kernel/linux/extra-packages-2.6= pkgsel/install- pattern=~t^ubuntu-standard$ pkgsel/language-pack-patterns= pkgsel/install- language-support=false vga=normal initrd=ubuntu-installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw —

LABEL expert
kernel ubuntu-installer/i386/linux
append priority=low vga=normal initrd=ubuntu-installer/i386/initrd.gz

ramdisk_size=16417 root=/dev/ram rw — LABEL server-expert

kernel ubuntu-installer/i386/linux

append base-installer/kernel/linux/extra-packages-2.6= pkgsel/install- pattern=~t^ubuntu-standard$ pkgsel/language-pack-patterns= pkgsel/install- language-support=false priority=low vga=normal initrd=ubuntu- installer/i386/initrd.gz ramdisk_size=16417 root=/dev/ram rw —

LABEL rescue
kernel ubuntu-installer/i386/linux
append vga=normal initrd=ubuntu-installer/i386/initrd.gz

ramdisk_size=16417 root=/dev/ram rw rescue/enable=true —

PROMPT 1
TIMEOUT 0

Tambien miraremos si /var/lib/tftpboot tiene la siguiente estructura: 8 / 22 Creative Commons by­sa

ArdentIce Poniendo en marcha un servidor PXE 07/04/26

[email protected]:~# ls -la /var/lib/tftpboot/

total 25052
drwxr-xr-x 9 root root drwxr-xr-x 21 root root -rw-r–r– 1 root root -rw-r–r– 1 root root -rw-r–r– 1 root root -rw-r–r– 1 root root drwxr-xr-x 2 root root drwxr-xr-x 4 root root

4096 2006-12-14 19:25 .

4096 2006-12-14 15:01 ..
8315725 2006-10-21 02:42 boot.img.gz 8849408 2006-10-21 02:42 mini.iso 8381337 2006-10-21 02:42 netboot.tar.gz

13156 2006-10-21 02:44 pxelinux.0
4096 2006-12-14 19:39 pxelinux.cfg 4096 2006-12-14 16:15 ubuntu-installer

Nuestro primer test

Llego la hora de probar el primer boot mediante PXE, rearrancaremos el cliente y entraremos a la secuencia de arranque F12 (en nuestro caso) y elegiremos la opcion de bootear por red. ¿Funciona?

Felicidades, el PXE esta bien configurado.