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.
|
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.
|
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.
|
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
|
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
|
|