wiki:Version2/Desarrollo/OGLive

Version 7 (modified by adelcastillo, 8 years ago) (diff)

--

NOTA

Esta nueva versión de OGLive sólo ha sido probada con Kubuntu 10.10 para generar un cliente Ubuntu 10.04 mínimo. Si se encuentran errores comprobar tickets y enviar la incidencia.

Instalar live-build

Ubuntu/Debian?

Con Ubuntu 10.10 es suficiente:

$ apt-get install live-build

Otros linux

Si no se tiene una distribución con live-build se puede probar a instalar directamente desde los repositorios oficiales de debian.

Con esa versión funcionan correctamente el proceso. Si tu Ubuntu o Debian no tiene está versión o superior, o usas otra distribución, siempre podemos instalarla manualmente:

$ git clone git://live.debian.net/git/live-boot.git
$ cd live-boot
$ sudo make install
$ cd ..
$ git clone git://live.debian.net/git/live-build.git
$ cd live-build
$ sudo make install
$ cd ..
$ git clone git://live.debian.net/git/live-config.git
$ cd live-config
$ sudo make install

Con esto ya debería suficiente para poder generarla. Siempre se puede desinstalar con un:

# sudo make uninstall

En cada directorio.

Uso

Para generar un cliente hay que irse al directorio source:branches/version2/live. En ese directorio ejecutar:

lb config && lb build

Esto generará un binary-net.tar.gz. En su interior podremos encontrar un dos directorios, el tftpboot y el ubuntu-live. El tfptpboot trae todo lo necesario para por red el live generado. En la carpeta ubuntu-live se encuentra el sistema de ficheros que arrancará por red. La carpeta hay que compartirla por red como veremos más adelante.

Si por algún casual diera algún error, o simplemente quieres cambiar la configuración del cliente y generarlo de nuevo, lo mejor es:

lb clean && lb config && lb build

Con el lb clean se borrarán todo excepto la cache de los paquetes descargados. Si tienes dudas de que no realiza exactamente lo que se pide aconsejamos borrar todo y volver a probar; a veces soluciona los problemas.

Configuración

Hay que realizar varios pasos para el arranque por red. El primero es compartir la carpeta ubuntu-live. Por ahora sólo hemos conseguido que funcione en NFS. Luego hay que configurar el NFS/SAMBA, el DHCP, el TFTP y el cliente.

NFS

Nosotros para compartir la carpeta ubuntu-live la renombramos y la movemos a /opt/opengnsys/live. Hay que instalar un servidor NFS y configurarlo. Un ejemplo de fichero /etc/exportfs lo puedes encontrar en source:branches/version2/live/server/exportfs. Cuando te asegures de que el cliente puede montar las tres carpetas en su sistema operativo normal podemos continuar.

SAMBA

TODO

DNSMASQ

El mejor servidor DHCP, que además ofrece TFTP, que nos ha resultado ha sido DNSMASQ. Como antes encontramos un fichero de ejemplo de /etc/dnsmasq.conf que habrá que adaptar a las necesidades particulares en source:branches/version2/live/server/exportfs. Luego asegurarse que arranca y que el cliente, de nuevo con su sistema operativo normal recibe DHCP del repositorio.

TFTP

Habréis notado que en el fichero de configuracion del dnsmasq el tftp apunta a /opt/opengnsys/tftpboot. Ahí es donde debemos colocar la otra carpeta que nos generó el live-build. Un fichero que hay que retocar es /opt/opengnsys/tftpboot/debian-live/i386/bootscreens/live.cfg. Encontramos otro de ejemplo en source:branches/version2/live/server/live.cfg.

Tecnologías

Se hace uso principalmente del programa live build de Debian. El conocimiento de esta herramienta podría ser importante para mejorar el proceso de generación de OGLive.

Código

El código se encuentra en source:branches/version2/live. En éste hallamos los scripts que generan una distribución Ubuntu live mínima incluyendo el software necesario para ejecutar el cliente de OpenGnSys:

  • auto: directorio usado por live-build, en la que comprueba si existen los ficheros build, clean y config antes de ejecutarse. Se usa para configurar el cliente tal como lo necesitamos nosotros y automatizar tareas repetitivas como pasar los hooks, includes, packages_lists y pressed al directorio que crea lb config.
  • hooks: contiene scripts que se ejecutarán dentro del live antes de ser generado definitivamente. Puedes añadir nuevos para añadir, configurar o eliminar cosas de manera sencilla.
    • install_ogr: instala todo lo necesario para opengnsys: ogr, engine, job_executer y browser.
    • client_init: para modificar el proceso init y arrancar opengnsys al arranque.
    • remove_unused_casper_init: para eliminar procesos de arranque del initrd.
    • remove_unused_init: para eliminar procesos innecesarios del init.
  • packages_lists: contiene ficheros que tienen dentro una lista de paquetes que serán instalados en el live automáticamente. Sería bueno que hubiera distintas listas según la necesidad de instalar esos paquetes, por ejemplo para el que funcione el engine, el browser, etc.
  • preseed: ficheros para configurar los paquetes deb que se instalan en el cliente.
  • options: fichero de configuración. Se puede editar para crear otras arquitecturas u otras versiones.
  • server: encontraremos ficheros de configuración que pueden ser útiles para configurar los servicios necesarios para arrancar el cliente que son por ahora: NFS, DHCP, SAMBA y TFTP. Se da la alternativa de usar dnsmasq solamente o dhcpd3 con tftpd.

Modificar el cliente

Hay dos maneras principales de hacerlo. En auto/config encontramos un script que además de configurar añade herramientas de OpenGnSys al sistema. Otra manera es añadiendo hooks para que añada usuarios o elimine scripts de arranque.

VirtualBox

Para hacer las pruebas se puede configurar VirtualBox para el arranque en red de las máquinas virtuales y probar más rápidamente las distros generadas. Para ello sólo hay que seguir los siguientes pasos: http://www.tolaris.com/2009/03/05/using-host-networking-and-nat-with-virtualbox/

Información adicional

Muy útil para cuando vayamos a hacer que OGLive permita arrancar de la cache, que es el manual de casper que tiene funciones incorporadas para hacer eso:

http://www.linuxcertif.com/man/7/casper/

En el manual de lb_config vienen todos los parámetros que son configurables desde live-build:

$ man lb_config