Por ahora se proponen tres maneras distintas:
No realizar el proceso en un sistema en procucción.
Se ha testado con éxito en la ubuntu server 32 bits 10.04, 10.04.2 y 10.10 y 11.04
NOTA: el instalador está en "http://www.opengnsys.es/browser/trunk/client/boot-tools/"
mv /opt/opengnsys/tftpboot/ogclient /opt/opengnsys/tftpboot/ogclient-old;
svn checkout http://www.opengnsys.es/svn/trunk/client /tmp/opengnsys_installer/opengnsys/client/;
svn checkout http://www.opengnsys.es/svn/branches/version2/ /tmp/opengnsys_installer/opengnsys2;
find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null;
/tmp/opengnsys_installer/opengnsys/client/boot-tools/ogClientGeneratorV2.sh;
DEBUG en el proceso de instalación:
Grup-pc -> instalar en dispositivo /dev/loop -> NO
Continuar sin instalar grub -> yes
Congigura el console-data
Introduce la clave pub de nuestro servidor(ejecutor del instalador) en el cliente. En el caso de que ya exista un .pub nos pregunta si generar uno nuevo o mantener (N)
Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N) -> Y
El proceso que se ha indicado a continuación, genera los elementos del cliente OpenGnsys, basados en la versión de ubuntu que tengamos instalados (mismo kernel y distribución).
/opt/opengnsys/tftpboot/ogclient/
./ogvmlinuz (el kernel)
./oginitrd.img (el initrd)
./ogclient.img (el sistema raiz, accesible como disco virtual usando schroot desde el host que lo generó, para ser actualizado)
./ogclient.sqfs (el sistema raiz, comprimido para ser usado por los clientes OpenGnsys)
NOTA: este procedimiento se ha comprobado en una ubuntu server 10.04 32bits.
export OGCLIENTBASEDIR=/var/lib/tftpboot/ogclient/;
export OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img;
export OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount;
export OGCLIENTSIZEMB=1900;
export OGCLIENTLABEL=ogClient;
mkdir -p $OGCLIENTMOUNT;
dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB;
DISKLOOP=$(losetup -f);
losetup $DISKLOOP $OGCLIENTFILE;
echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP;
losetup -d $DISKLOOP ;
PARTLOOP=$(losetup -f);
losetup -o 32256 $PARTLOOP $OGCLIENTFILE && mkfs.ext3 -b 4096 -L $OGCLIENTLABEL $PARTLOOP;
losetup -d $PARTLOOP ;
losetup -d $PARTLOOP ;
mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256;
unsquashfs -d /var/lib/tftpboot/ogclient/ogclientmount/ -f /var/lib/tftpboot/ogclient/ogclient.sqfs;
umount $OGCLIENTMOUNT;
echo "fin";
cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.`getDateTime`
cat << EOF > /etc/schroot/schroot.conf
[IMGogclient]
type=loopback
file=/var/lib/tftpboot/ogclient/ogclient.img
description=ogclient ubuntu luc IMGi
#priority=1
users=root
groups=root
root-groups=root
mount-options=-o offset=32256
root-users=root
#[IMGogclient]
#type=loopback
#file=/var/lib/tftpboot/ogclient/ogclient.img
#description=ogclient ubuntu luc IMGi
#priority=1
#users=root
#groups=root
#root-groups=root
#mount-options=-o offset=32256
#root-users=root
#[DIRogclient]
#type=directory
#directory=/var/lib/tftpboot/ogclient/ogclientmount
#description=ogclient ubuntu lucid DIR
#priority=2
#users=root
#groups=root
#root-groups=root
#root-users=root
EOF
cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.`getDateTime`
cat << EOF > /etc/schroot/mount-defaults
# mount.defaults: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
#procbususb /proc/bus/usb usbfs defaults 0 0
#/dev /dev none rw,bind 0 0
/dev/pts /dev/pts none rw,bind 0 0
/dev/shm /dev/shm none rw,bind 0 0
#/home /home none rw,bind 0 0
/tmp /tmp none rw,bind 0 0
EOF
TODO
Mirar: [wiki:GnSysLive]
TODO