Lihuen
RSSRSS AtomAtom

Diferencia entre revisiones de «Modificando debian-installer»

Línea 8: Línea 8:
 
- Generar la imagen
 
- Generar la imagen
  
==Instalar dependencias incumplidas de ''debian-installer''==
+
=Instalar dependencias incumplidas de ''debian-installer''=
 
Antes que nada, para poder usar ''debian-installer'' sin conflictos, debemos correrlo desde un sistema que use repositorios inestables, como lo es ''sid''.
 
Antes que nada, para poder usar ''debian-installer'' sin conflictos, debemos correrlo desde un sistema que use repositorios inestables, como lo es ''sid''.
 
Debemos utilizar el comando ''dpkg-checkbuilddeps'' en el directorio raíz de ''debian-installer''. Esto comprobará los paquetes instalados en el sistema con una lista de las dependencias de nuestro paquete. Luego mostrará en pantalla las dependencias incumplidas.
 
Debemos utilizar el comando ''dpkg-checkbuilddeps'' en el directorio raíz de ''debian-installer''. Esto comprobará los paquetes instalados en el sistema con una lista de las dependencias de nuestro paquete. Luego mostrará en pantalla las dependencias incumplidas.
Línea 15: Línea 15:
 
Lo que resta ahora es completar el paquete ''debian-installer'' con los udebs requeridos para cada imagen. Simplemente hay que correr el comando ''dpkg-buildpackage'' en el directorio raiz del instalador. Este proceso puede tardar varios minutos, dependiendo de la conexión a Internet.
 
Lo que resta ahora es completar el paquete ''debian-installer'' con los udebs requeridos para cada imagen. Simplemente hay que correr el comando ''dpkg-buildpackage'' en el directorio raiz del instalador. Este proceso puede tardar varios minutos, dependiendo de la conexión a Internet.
  
==Configurar repositorios personalizados==
+
=Configurar repositorios personalizados=
 
Cuando compilemos nuestra imagen, por defecto ''debian-installer'' generará un archivo ''sources.list.udeb'', el cual estará basado en el ''sources.list'' de nuestro sistema.
 
Cuando compilemos nuestra imagen, por defecto ''debian-installer'' generará un archivo ''sources.list.udeb'', el cual estará basado en el ''sources.list'' de nuestro sistema.
 
Si nuestra intención es generar una imagen con una versión diferente a la instalada, es posible especificar los repositorios de donde se desea descargar los paquetes. Para ello tendremos que crear un archivo ''sources.list.udeb.local'' en el directorio ''build/''. Vale aclarar que, aunque hayamos creado el ''sources.list.udeb.local'', cuando generemos la imagen el archivo ''sources.list.udeb'' igualmente será creado, pero no utilizado.
 
Si nuestra intención es generar una imagen con una versión diferente a la instalada, es posible especificar los repositorios de donde se desea descargar los paquetes. Para ello tendremos que crear un archivo ''sources.list.udeb.local'' en el directorio ''build/''. Vale aclarar que, aunque hayamos creado el ''sources.list.udeb.local'', cuando generemos la imagen el archivo ''sources.list.udeb'' igualmente será creado, pero no utilizado.
  
==Generar la imagen==
+
=Generar la imagen=
 
Una vez instaladas las dependencias y elegidos los repositorios deseados, lo que queda es generar la imagen. Para ello se debe tener en cuenta la arquitectura (i386, amd64,etc.) y el tipo (cdrom, netboot, floopy, etc.).
 
Una vez instaladas las dependencias y elegidos los repositorios deseados, lo que queda es generar la imagen. Para ello se debe tener en cuenta la arquitectura (i386, amd64,etc.) y el tipo (cdrom, netboot, floopy, etc.).
 
Para obtener una lista de todas las posibles combinaciones de arquitecturas y tipos, basta con utilizar el comando ''make'' en el directorio ''build/''. Una vez elegidas las opciones, hay que generar la imagen usando uno de los ''build_targets'' (build-netboot, all_build, etc.).
 
Para obtener una lista de todas las posibles combinaciones de arquitecturas y tipos, basta con utilizar el comando ''make'' en el directorio ''build/''. Una vez elegidas las opciones, hay que generar la imagen usando uno de los ''build_targets'' (build-netboot, all_build, etc.).
Línea 25: Línea 25:
 
La mayoría de las imágenes creadas por ''debian-installer'' están listas para ser usadas. Las excepiones son las imágenes CD/DVD, que solo contendran la base (initrd y kernel). El paquete usado para completar las imágenes CD/DVD es ''debian-cd''. Aunque por otro lado, si lo que se desea es que la imagen solo tenga el instalador, se puede crear una imagen mini-ISO con solo el netboot initrd en ella. Por ejemplo, el comando ''make build_netboot'' creará una imagen en ''build/dest/netboot/mini.iso'', usando isolinux.
 
La mayoría de las imágenes creadas por ''debian-installer'' están listas para ser usadas. Las excepiones son las imágenes CD/DVD, que solo contendran la base (initrd y kernel). El paquete usado para completar las imágenes CD/DVD es ''debian-cd''. Aunque por otro lado, si lo que se desea es que la imagen solo tenga el instalador, se puede crear una imagen mini-ISO con solo el netboot initrd en ella. Por ejemplo, el comando ''make build_netboot'' creará una imagen en ''build/dest/netboot/mini.iso'', usando isolinux.
  
==Automatización de la instalación==
+
=Automatización de la instalación=
  
 
Una excelente forma de automatizar ''debian-installer'' es usar la preconfiguración. La preconfiguración ofrece un mecanismo para responder a preguntas realizadas durante la instalación sin tener que introducir manualmente las respuestas mientras ésta se ejecuta. Esto hace posible que se automaticen la mayoría de las instalaciones e incluso ofrece funcionalidades que no están disponibles durante una instalación normal. Para ello se crea un archivo ''preseed.cfg'', en el cual se incluirán todas las opciones a automatizar.
 
Una excelente forma de automatizar ''debian-installer'' es usar la preconfiguración. La preconfiguración ofrece un mecanismo para responder a preguntas realizadas durante la instalación sin tener que introducir manualmente las respuestas mientras ésta se ejecuta. Esto hace posible que se automaticen la mayoría de las instalaciones e incluso ofrece funcionalidades que no están disponibles durante una instalación normal. Para ello se crea un archivo ''preseed.cfg'', en el cual se incluirán todas las opciones a automatizar.
Línea 32: Línea 32:
  
 
El método que explicaremos a continuación se basa en modificar el ''initrd''.
 
El método que explicaremos a continuación se basa en modificar el ''initrd''.
 +
 +
==Modificando el initrd==
  
 
Dado que las imágenes ISO no se pueden modificar (directamente) una vez creadas, precisamos montarla en un directorio, y luego copiar su contenido a otro. Entonces, como ''root'', ingresamos en la consola:
 
Dado que las imágenes ISO no se pueden modificar (directamente) una vez creadas, precisamos montarla en un directorio, y luego copiar su contenido a otro. Entonces, como ''root'', ingresamos en la consola:

Revisión de 10:38 4 jul 2008

Como su nombre lo indica, debian-installer es el instalador de Debian. Usualmente se pueden presentar situaciones en las que sea necesario modificar el paquete, como es el caso de Lihuen, para adaptarlo a diferentes usos y necesidades. En cualquier caso, debemos seguir los siguientes pasos para lograr que la creación de la imagen ocurra con éxito:

- Instalar dependencias incumplidas de debian-installer.

- Configurar repositorios personalizados.

- Generar la imagen

Instalar dependencias incumplidas de debian-installer

Antes que nada, para poder usar debian-installer sin conflictos, debemos correrlo desde un sistema que use repositorios inestables, como lo es sid. Debemos utilizar el comando dpkg-checkbuilddeps en el directorio raíz de debian-installer. Esto comprobará los paquetes instalados en el sistema con una lista de las dependencias de nuestro paquete. Luego mostrará en pantalla las dependencias incumplidas. La lista de dependencias de debian-installer se encuentra por defecto en debian/control, pero también es posible especificar otra lista mediante su path. Para más información, usar man dpkg-checkbuilddeps. Una vez obtenida la lista, se debe proceder a instalar los paquetes. Para hacerlo basta con correr el comando apt-get install <paquete1> <paquete2> <paquete3>, siendo paqueteX alguno de los paquetes mostrados en la lista que imprimió dpkg-checkbuilddeps. Lo que resta ahora es completar el paquete debian-installer con los udebs requeridos para cada imagen. Simplemente hay que correr el comando dpkg-buildpackage en el directorio raiz del instalador. Este proceso puede tardar varios minutos, dependiendo de la conexión a Internet.

Configurar repositorios personalizados

Cuando compilemos nuestra imagen, por defecto debian-installer generará un archivo sources.list.udeb, el cual estará basado en el sources.list de nuestro sistema. Si nuestra intención es generar una imagen con una versión diferente a la instalada, es posible especificar los repositorios de donde se desea descargar los paquetes. Para ello tendremos que crear un archivo sources.list.udeb.local en el directorio build/. Vale aclarar que, aunque hayamos creado el sources.list.udeb.local, cuando generemos la imagen el archivo sources.list.udeb igualmente será creado, pero no utilizado.

Generar la imagen

Una vez instaladas las dependencias y elegidos los repositorios deseados, lo que queda es generar la imagen. Para ello se debe tener en cuenta la arquitectura (i386, amd64,etc.) y el tipo (cdrom, netboot, floopy, etc.). Para obtener una lista de todas las posibles combinaciones de arquitecturas y tipos, basta con utilizar el comando make en el directorio build/. Una vez elegidas las opciones, hay que generar la imagen usando uno de los build_targets (build-netboot, all_build, etc.). Una vez finalizado el proceso, la imagen será generada en el directorio build/dest. La mayoría de las imágenes creadas por debian-installer están listas para ser usadas. Las excepiones son las imágenes CD/DVD, que solo contendran la base (initrd y kernel). El paquete usado para completar las imágenes CD/DVD es debian-cd. Aunque por otro lado, si lo que se desea es que la imagen solo tenga el instalador, se puede crear una imagen mini-ISO con solo el netboot initrd en ella. Por ejemplo, el comando make build_netboot creará una imagen en build/dest/netboot/mini.iso, usando isolinux.

Automatización de la instalación

Una excelente forma de automatizar debian-installer es usar la preconfiguración. La preconfiguración ofrece un mecanismo para responder a preguntas realizadas durante la instalación sin tener que introducir manualmente las respuestas mientras ésta se ejecuta. Esto hace posible que se automaticen la mayoría de las instalaciones e incluso ofrece funcionalidades que no están disponibles durante una instalación normal. Para ello se crea un archivo preseed.cfg, en el cual se incluirán todas las opciones a automatizar.

Se pueden utilizar tres métodos de preconfiguración: modificando el initrd para que incluya el archivo preseed.cfg, llamando al archivo preseed.cfg especificando una ruta, o solicitando el archivo preseed.cfg vía red.

El método que explicaremos a continuación se basa en modificar el initrd.

Modificando el initrd

Dado que las imágenes ISO no se pueden modificar (directamente) una vez creadas, precisamos montarla en un directorio, y luego copiar su contenido a otro. Entonces, como root, ingresamos en la consola:

# mkdir -p loopdir
# mount -o loop <tu imagen.iso> loopdir
# rm -rf cd 
# mkdir cd
# rsync -a -H --exclude=TRANS.TBL loopdir/ cd
# umount loopdir

En caso de que no reconozca alguno de los comandos, debemos instalarlo. Por ejemplo:

# apt-get install rsync

El paso siguiente es modificar el initrd. Para ello, ingresaremos la siguiente secuencia de comandos:

# mkdir irmod
# cd irmod
# gzip -d < ../cd/initrd.gz | cpio --extract --verbose --make-directories --no-absolute-filenames
# cp ../<tu preseed.cfg> preseed.cfg
# find . | cpio -H newc --create --verbose | gzip -9 > ../cd/initrd.gz
# cd ../
# rm -fr irmod/

Luego, para que el directorio cd/ quede listo para convertirse en una imagen ISO, tendremos que actualizar el md5sum.txt

# cd cd
# md5sum `find -follow -type f` > md5sum.txt
# cd ..

Lo que resta ahora es generar la imagen ISO, y que esta sea booteable.

# mkisofs -o test.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux.bin -c boot.cat ../cd

Si todo salió bien, tendremos un archivo test.iso en el directorio cd/, el cual contendrá nuestro archivo preseed.cfg dentro del initrd.