ESTADO ALFA
El sistema actual se basa en un initrd vitaminado que consigue tener un sistema lo suficientemente bueno como para poder ejecutar OpenGnSys. Para conseguir poder añadir más programas y configuraciones al initrd se consigue montando un directorio por NFS.
Problemas:
Estas pruebas se realizan suponiendo (y por tanto no demostrado):
Para ello usamos:
Dependencias nuevas:
sudo apt-get install debootstrap nbd-server
Generación del cliente:
mkdir -p /tmp/nbdroot
cd /tmp/nbdroot
dd if=/dev/zero of=nbdroot.img bs=1M count=1024
mkfs.xfs nbdroot.img
mkdir mnt
mount nbdroot.img mnt -o loop
debootstrap --arch i386 lucid mnt
Esto crea un cliente básico. Ahora es cuando podemos hacerle todas las modificaciones necesarias al cliente para prepararlo de OpenGnSys. Por ejemplo instalarle todas los paquetes deb OpenGnSys. Como se observará es mucho más fácil de instalar cosas nuevas que en el actual sistema y además es muchísimo más flexible. Ya hemos eliminado dos de los inconvenientes que hablamos al principio. Seguimos:
sudo chroot mnt
# Ahora estamos dentro de la jaula
passwd # Por si una vez arrancado queremos probar algo ponemos contraseña al root
apt-get install nbd-client linux-image # Instalamos el kernel image y le añadimos soporte de nbd-client
# Nos preguntará si queremos que cuando pare el servicio de nbd-client pare todas las unidades. Le decimos que no!!
exit
Ya hemos instalado lo necesario que no instala el debootstrap básico ¡¡en ARCHLINUX!! Esto podría variar con Ubuntu. En ArchLinux otras distribuciones Ubuntu como karmic el cliente es muchísimo más básico y no tiene instalado nada de sistema de ficheros. Se comenta más abajo. Ficheros que hay que copiar para el pxelinux son el mnt/initrd.img mnt/vmlinuz. Además otros cambios necesarios son:
echo Lucid > mnt/etc/hostname
echo 127.0.0.1 localhost.localdomain localhost >> mnt/etc/hosts
mnt/etc/network/intefaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface, commented out for NFS root
#auto eth0
#iface eth0 inet dhcp
iface eth0 inet manual
mnt/etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
none /tmp tmpfs defaults 0 0
none /var/run tmpfs defaults 0 0
none /var/lock tmpfs defaults 0 0
none /var/tmp tmpfs defaults 0 0
Con esto tenemos un sistema que una vez arrancado funciona perfectamente. Para terminar como un comando para servir la imagen (¡¡RECORDAR DESMONTAR LA IMAGEN!!) (también se puede hacer modificando su fichero de configuración y haciendo /etc/init.d/nbd-server restart) y los argumentos para pxelinux para arrancar:
sudo umount mnt
nbd-server -c 2345 /tmp/nbdroot/nbdroot.img
PXELinux
kernel vmlinuz
append initrd=initrd.img nbdsrv=192.168.2.2 nbdport=2345 nbdroot=192.168.2.2,2345 root=/dev/nbd0 ip=192.168.2.3::192.168.2.2:255.255.255.0::eth0: rootdelay=1
Tan sencillo como hacer:
dd if=/dev/nbd0 of=/dev/sda4
Instalado todo en la partición de cache. Si queremos Grub, montas /dev/sda4 y como ya tiene el paquete instalado pues solo hay que ejecutar los comandos para instalarlo en el MBR.
De servidor un Atom y de arranque un ordenador portátil de la Universidad con procesador T2XXX, no muy potente, tarda en el arranque 10 segundos, sin contar el paso del kernel ni el de initrd y con partición tipo ext3 (tarda algo más que xfs). Además tiene la ventaja de que con el mismo kernel e initrd podemos arrancar también por disco duro simplemente cambiando el parametro root. Con NFS eso sería mucho más complicado porque mkinitramfs diferencia el arranque local del arranque por nfs. NBD lo considera local porque necesita los módulos del sistema de ficheros. El arranque de este mismo sistema por disco duro en un Atom el tiempo baja hasta 6 segundos en total. Por lo que se podría plantear intentar arrancar siempre desde la cache...
No hace falta implementarlo todo, lo más necesario es crear paquetes deb de los componentes indispensables (engine, clientadmin, etc) para poder instalar y poco a poco intentar personalizar el arranque con más paquetes deb que modifiquen el init y que creen otros initrd. Para hacer una idea el initrd de Lucid es el casi el doble de grande que el de Karmic, con debootstrap e instalando nbd-client solamente: 7,5MB frente 3,8MB.