GoboLinux DescargasDocumentaciónComunidadRecetasPaquetesCapturas de Pantalla


Traducciones desactualizadas. La fecha de la última modificación de la versión original de este texto es más reciente que esta traducción. La versión original (en inglés) contiene información más reciente. ¡Usted puede contribuir con una actualización!.

Personalizando el LiveCD de GoboLinux: un manual

Esta es una guía rápida para conocer los entresijos de la construcción del LiveCD de GoboLinux. Te permitirá coger habilidad con el manejo de las herramientas que crean el CD, para que puedas hacer tus propias personalizaciones. Con esto también esperamos hacer más sencilla la entrada a potenciales contibuyentes al desarrollo de la distribución.

Prerrequisitos

Este manual asume que estás usando un sistema GoboLinux, con la última versión de el paquete Scripts instalada. El núcleo necesita tener soporte para UnionFS, SquashFS y CramFS. También necesitarás el paquete SquashFS-Tools instalado. Todo esto está disponible en los repositorios de GoboLinux.

Warning Este manual también asume que todos los pasos son ejecutados con privilegios de superusuario (puedes pasar a superusuario con su o usar sudo). Esto es necesario ya que las herramientas necesitan crear ficheros especiales de dispositivos, desempaquetar archivos manteniedo sus privilegios, establecer ciertos permisos (suid bit) y montar sistemas de ficheros usando UnionFS. Como siempre, hay que tener cuidado cuando se realizan tareas como superusuario, cuando se está ejecutando software descargado de los repositorios CVS que no es estable aún y sobre todo cuando se están realizando ambas cosas como haremos aquí. Sigue los pasos de este manual bajo tu propia responsabilidad.

Las Herramientas

Para empezar, necesitas instalar el paquete BuildLiveCD. Puedes hacerlo con el comando:

 
Compile buildlivecd 

Un buen número de paquetes y herramientas de GoboLinux están implicadas en el proceso de construcción del CD, pero este paquete es el único que necesitas tener instalado en el directorio /Programs. Veremos todos estos paquetes y herramientas en detalle después, pero por el momento aquí tienes una visión general de ellos:

  • InitRDScripts - se corresponde con el paquete "Scripts", pero para el mini-entorno GoboLinux en el que es cargado el núcleo del CD.
  • LiveCD - scripts que son específicos para el entorno del LiveCD, la mayoría destinados a su inicialización.
  • ConfigTools - scripts que modifican los ficheros de configuración para adaptarse al sistema en el que están siendo ejecutados.
  • Installer - el programa de instalación actual, que copia los contenidos del CD en el disco duro.
  • AbsTK - Abstract Tool Kit: una librería de abstracción de la interfase, que permite tener al programa de instalación una interfase tango gráfica como en modo texto.

El entorno maestro del CD

Una vez que tienes BuildLiveCD instalado en tu sistema, ya puedes preparar el entorno maestro del CD. Un simple comando crea todos los directorios necesarios y descarga todos los paquetes que se necesitan: UpdateEnvironment. Ejecútalo en un directorio vacío; en nuestros ejemplos usaremos /Depot/LiveCD.

 
mkdir /Depot/LiveCD 
cd /Depot/LiveCD 
UpdateEnvironment 

Te en cuenta que esto descargará varios cientos de megabytes en paquetes, así que dale su tiempo.

Dev Info Para desarrolladores de GoboLinux: Este script descarga algunos ficheros desde el CVS y mantiene una copia local del repositorio CVS en LocalCVS/. Para facilitar el desarrollo, quizás prefieras tener una copia con la que puedas escribir al repositorio, en lugar de la copia anónima del CVS que se usa por defecto. Para hacerlo, pasale tu nombre de usuario en Savannah como parámetro adicional a UpdateEnvironment.
 
UpdateEnvironment hisham 
Si tu nombre usuario en tu máquina no es el mismo que el nombre de usuario de Savannah, puedes pasárselo como segundo argumento (como estás ejecutando el script como superusuario, el realizará un "sudo" a tu cuenta de usuario cuando ejecute cvs).

Construyendo el CD

Todo el proceso de creacción del CD es realizado por el script CompressAndBuildISO. La primera vez que lo ejecutes, lo puedes llamar sin ningún parámetro y el realizará todo el proceso:

 
CompressAndBuildISO 

El script se compone de unas pocas fases -- cuando cambies algo que sólo afecta a alguna de las últimas fases, puedes pasarle un argumento para evitar que se ejecuten las fases previas, ahorrando de este modo tiempo. Las fases que lo componen son:

  • rolayer - Construye el árbol de directorios con el contenido del LiveCd: desempaqueta los programas dentro de /Programs, los ficheros en /Files y crea un directorio con los ficheros de sistema y enlaces simbólicos necesarios en /System.
  • squashfs - Comprime el nuevo sistema creado en varias imágenes SquashFS: una para /Files, unas pocas para diferentes secciones de programas que hay en /Programs y otra para el resto (/System, /Mount, /Users...). Se hace de esta manera para que modificaciones en parte del sistema no requieran la generación de una imagen SquashFS de todo el sistema (tarea que lleva varios minutos incluso en una máquina con más de 2 Ghz de frecuencia de procesador).
  • initrd - Como el sistema actual se almacena en el CD en un formato comprimido, su contenido no puede ser accedido directamente por el programa de arranque del sistema, así que el programa de arranque inicia en su lugar una imagen InitRD ("initial RAM-disk"), un mini-sistema GoboLinux cuya finalidad es únicamente mantener el núcleo que se cargará, montar el sistema de ficheros SquashFS y arrancar en el. Esta fase de CompressAndBuildISO crea la imagen CramFS de esde mini-sistema GoboLinux que será usada como InitRD.
  • iso - En la fase final, la imagen ISO 9960 es generada, conteniendo el programa de arranque, el núcleo la imagen InitRD y los ficheros SquashFS.

Un paseo por el proceso de arranque del LiveCD

El programa de arranque del CD

Aún no escrito

El entorno InitRD

Por completar

El entorno InitRD es un mini-sistema GoboLinux creado por el script MakeInitRDTree, que es llamado cuando ejecutas CompressAndBuildISO. Lo puedes encontrar en el directorio Output/InitRD.

No modifiques Output/InitRD directamente: su contenido es creado cuando CompressAndBuildISO ejecuta la fase initrd. Para modificar los scripts InitRD, modifica en su lugar la copia local del CVS de InitRDScripts, que está en LocalCVS/InitRDScripts.

Actualmente, esta parte del entorno de construcción del CD no es muy amigable con el proceso de personalización del CD. Si quieres mantener un versión propio del InitRD, necesitas reeplazar LocalCVS/InitRD con tu propia copia antes de ejecutar UpdateEnvironment.

Dev Info Para desarrolladores de GoboLinux: Para que tus cambios sean permanentes, hay varios lugares donde estos cambios deben ser aplicados:
  • Los cambios en /Programs/InitRDScripts deberían de ser enviados al repositorio CVS de GoboLinux. Si tu copia de LocalCVS/ fue creada en modo de escritura al repositorio, es sólo cuestion de ejecutar cvs commit.
  • Otras entradas en /Programs son recogidas desde el repositorio initrd-packages/ (echa un ojo a MakeInitRDTree para más detalles).
  • La estructura de directorios y otros ficheros de configuración son generados por MakeInitRDTree, así que si modificas algo de esto, modifica el script para que cuando se ejecute de nuevo cree los ficheros y la estructura que deseas.
  • .

Dentro de la imagen SquasFS

Por completar

El entorno principal del LiveCD (la estructura de directorios que ves una vez que el LiveCD ha sido arrancado) es almacenado en una serie de imágenes SquashFS. Estas imágenes son contruidas en 2 capas: una que es de sólo lectura y que forma el sistema de ficheros actual, (Programs, Files, System, etc.), y otra sobre la que se puede escribir, que se sitúa encima para propósitos de depuración, que contiene los ficheros que se pueden haber creado mientras estas dentor del sistema usando ChrootEnvironment.

span class="dir">Output/ROLayer. Esta es creada a partir de los paquetes listados en Archives/Packages que son combinados para construir /Programs, ficheros adicionales bajo Archives/Ext que son desempaquetados a sus correspondientes localizaciones, más una serie de ficheros y directorios que son generados al vuelo por el script BuildRoot. BuildRoot es llamado por CompressAndBuildISO durante la fase rolayer.

Ten en cuenta que cuando haces modificaciones que alteran el propio entorno del LiveCD, necesitas regenerar la imagen SquashFS. Para hacerlo, pasa un argumento adicional a CompressAndBuildISO:

 
CompressAndBuildISO squashfs 
Dev Info Para desarrolladores de GoboLinux: Para que tus cambios sean permanentes, necesitas consultar tus cambios en Output/RWLayer y aplicarlos a las recetas que generarán los nuevos paquetes.

El conjunto de paquetes para el CD esta actualmente en el repositorio livecd-packages (mira UpdateEnvironment para conocer los detalles). Cuando modifiques el conjunto de paquetes , necesitarás actualizar los ficheros en /Programs/BuildLiveCD/Current/Data/Packages-List-*.

Después de modificar los paquetes, es necesario reconstruir todo completamente, empezando por rolayer, para mantener directorio Output sincronizado con el repositorio de paquetes:
 
CompressAndBuildISO rolayer