wiki:ClienteInitrdDSGenerarlo
close Warning: Failed to sync with repository "ogBrowser-Git": (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\xA6 I...' for column 'message' at row 1"); repository information may be out of date. Look in the Trac log for more information including mitigation strategies.

Version 10 (modified by adv, 14 years ago) (diff)

info proceso de generacion boot-tools compatible con og2

TOC(heading=Índice)?

Por ahora se proponen tres maneras distintas:

  • Utilidad debootstrap con schroot ( OpenGnsys 1.0 )
  • Utilidad live-helper ( OpenGnsys 2.0)
  • Instalación limpia de Ubuntu.

OpenGnsys version 1.0 - Debootstrap, schroot y squashfs -

Instalación

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)

Las fases de la instalación

  • Fase 1. Instalación en el equipo donde se ejecuta la instalación de software necesario.
  • Fase 2. Asignación de valores, como la versión del kernel, basados en los datos del S.O que ejecuta el instalador, que serán utilizados para generar el cliente.
  • Fase 3. Creación del sistema raiz (ogclient.img). Primero se crea un disco duro virtual, y se particiona -ogCleint2nFile()-. En la primera partición se genera un sistema operativo con la herramienta deboobstrap -ogClient2ndFs()-, con parametros basados en la fase2.
  • Fase 4. Se configura el acceso al sistema raiz (ogclient.img) para ser usado con la herramienta schroot -ogClientSchrootConf()-
  • Fase 5. Se configura o se incluyen los elementos especiales de opengnsys (engine, QTEmbbedbed, pci.ids, browser, ogAdmClient). -ogClient2ndSVN()-
  • Fase 6. Ampliación del sistema raiz -- instalación de software con apt, compilación de algunas herramientas, importación de la clave ssh desde el SO que lo generó.
  • Fase 7. Generación del initrd.
  • Fase 8. Generación del sistema raiz en sqfs.

Incorporación del fichero .sqfs (proceso instalación de OpenGnsys) en un fichero .img para su posterior modificación

NOTA: este subapartado no está terminado de documentar

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 /opt/opengnsys/tftpboot/ogclient/ogclientmount/ -f /opt/opengnsys/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
[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


A través de live-helper

TODO

Mirar: GnSysLive

Generarlo realizando una instalación limpia de Ubuntu

TODO