Con este método podremos usar un ordenador sin disco duro como cliente ligero. El sistema operativo se cargará via red mediante PXE y un directorio compartido en un servidor nfs.
Instalaremos un servidor dhcp y un servidor tftp. El servidor dhcp se encargará de ofrecer la configuración de red a nuestro cliente y el nombre de la imagen que debe descargar via tftp.
En nuestro servidor dhcp crearemos una entrada similar a la siguiente, siendo pxelinux.0 un fichero que debemos poner en el raíz del servidor tftp, y que bajamos de http://ftp.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/pxelinux.0
group { next-server 192.168.0.101; filenamename "pxelinux.0"; host asus { hardware ethernet 00:1D:60:DE:15:3B; fixed-address 192.168.0.127 ; } } |
Debemos crear un directorio donde se almacenará el sistema completo, que luego exportaremos vía nfs para que la pueda leer el cliente ligero. En nuestro caso /media/datos/pxeboot por hallarse en la partición más grande del servidor.
Ahora instalaremos el sistema base en ese directorio con el comando debootstrap etch /pxeroot
Posteriormente debemos editar la configuración de red de ese sistema base según el hardware del cliente ligero. También editaremos el fichero hosts y el hostname para adaptarlos a nuestras necesidades. En el fichero /etc/network/interfaces no debemos olvidarnos de configurar el dispositivo de loopback, tal como:
auto lo auto eth0 iface lo inet loopback iface eth0 inet dhcp # o estática, según el caso |
Según la tarjeta de red del cliente, puede que necesitemos especificar su driver en /etc/initramfs-tools/modules y/o cambiar eth0 por el que corresponda en /etc/network/interfaces y en /etc/initramfs-tools/initramfs.conf (parámetro "DEVICE", que en mi caso resultó ser eth2). Mediante chroot actualizaremos el initrd con el comando update-initramfs -u. Para averiguar qué interfaz nos corresponde, podemos abrir con un editor de textos el fichero initrd generado y buscar el módulo de nuestra tarjeta de red. Al lado debería especificarse el interfaz que el kernel asignará a dicha tarjeta. |
Debemos crear un fichero fstab como este:
# /etc/fstab: static filename system information. # <filename system> <mount point> <type> <options> <dump> <pass> /dev/ram0/ auto defaults 0 0 proc /proc proc defaults 0 1 tmpfs /tmp tmpfs defaults 0 1 |
Por último entraremos en el sistema vía chroot para instalar un kernel mediante apt
Ya casi terminamos. Ahora debemos copiar el kernel y el initrd que acabamos de instalar en el directorio raíz del servidor tftp, de modo que el cliente pueda descargarlos. Posteriormente crearemos una carpeta llamada pxelinux.cfg en el raíz del tftpd, y dentro pondremos el fichero default:
DISPLAY boot.txt F1 f1.txt ... DEFAULT linux LABEL linux kernel vmlinuz append vga=791 initrd=initrd.img ramdisk_size=14332 root=/dev/nfs nfsroot=192.168.0.1:/pxeroot rw -- PROMPT 0 TIMEOUT 0 |
Podemos presentar un mensaje de bienvenida mediante el fichero boot.txt y mostrar ayuda al pulsar F1 mediante F1.txt |
Ahora configuraremos el directorio compartido mediante nfs. Pondremos en /etc/exports la siguente línea:
/media/datos/pxeroot/ 192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) |
Ya solo nos queda reiniciar los servicios nfs y dhcp e iniciar el cliente...
Si nuestro cliente ligero no es capaz de montar el directorio nfs, editaremos /etc/initramfs-tools/initramfs.conf en el sistema base del cliente ligero, cambiando la línea: |
BOOT=local |
por:
BOOT=nfs |
después de lo cual debemos ejecutar "update-initramfs -u" y "mknod /dev/nfs b 0 255"