Línea 8: | Línea 8: | ||
- Generar la imagen | - 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''. | 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= | |
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= | |
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= | |
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: |
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
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.
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.
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.
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.
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.