Diciembre
2005
¿Cómo hacer una metadistro? ACTUALIZADO
Antes de empezar me gustaría decir que este tipo de artículo es lo que llevaba pensando hacer un buen tiempo, pero por varios motivos (uno de ellos es pulir un poco el calzador) no lo he hecho hasta hoy.
El fruto de este trabajo se llama soleupix, puedes descargar una pequeña iso (aún en estado de pruebas) desde aquí.
Este artículo se distribuye bajo licencia CC, como el resto de mi blog, así que si lo vas a copiar en otra web acuérdate de ponerme un enlace.
Vamos a empezar.
NOTA IMPORTANTE: Hacer una metadistro conlleva unos conocimientos mínimos de shell scripts, el kernel de linux, módulos y dependencias y bastante soltura en comandos de consola. Si no cumples estos requisitos, antes de empezar usa google para documentarte sobre ello.
(Sigue ....)
ACTUALIZACIÓN (16 Dic 2005 23:19): Después de sufrir un pequeño efecto barrapunto, el servidor sigue vivo, se me ha olvidado lo más importante que es dar las gracias a Juanje y los desarrolladores que colaboran con metadistros y Guadalinex sin los cuales todas estas novedades no serían posibles.
ACTUALIZACIÓN (19 Dic 2005 10:27): Este fin de semana el server ha estado caido, no por el efecto barrapunto sino por una metida de gamba y el kernel 2.6.14 que no le dió la gana arrancar. Siento mucho las molestias. Ahora SOLEUPIX está basada en el kernel 2.6.14-2-386 ( el de debian ) he compilado aparte el módulo squashfs y unionfs para no necesitar un kernel raro. Esto es un gran avance y funciona mucho mejor.
ACTUALIZACIÓN (31 Dic 2005 12:40): He corregido algunos fallos o incoherencias en el artículo y borrado la forma vieja (lo que dejé tachado).
ACTUALIZACIÓN (24 Ene 2006 09:20): Añadido enlaces para descargar kernel 2.6.14-2-386 que ha desaparecido en debian
ACTUALIZACIÓN (20 Feb 2006): Articulo actualizado al kernel 2.6.15-1-486 el 2.6.14 tiene algún problema y ha desaparecido de debian.
Este artículo está basado en debian, para basarla en ubuntu deberás usar los paquetes de ubuntu/guadalinex de genlive e initramfs-tools. Los paquetes se pueden descargar del svn de guadalinex.
Una metadistro es una distribución hecha a medida por un grupo determinado de usuarios, con un objetivo concreto. El fin último de una metadistro es que sea instalada, ya sea durante el arranque como desde el escritorio por medio de un instalador. El hecho de funcionar en modo Livecd no es más que un paso intermedio para el fin. METADISTRO NO ES LO MISMO QUE LIVECD.
El objetivo del proyecto metadistros es ser un espacio de colaboración entre gente que desarrolla distribuciones (para un público determinado, con un objetivo determinado) y no duplicar esfuerzos.
Con esta base podemos decir que una metadistro es la plataforma para personalizar una distribución GNU/Linux a un entrono de trabajo concreto, por ejmplo una distribución universitaria, para un colegio, para un bufete de abogados, para una empresa de transportes, etc...
Una metadistro consta de dos partes:
El calzador es un conjunto de scripts, módulos del kernel y aplicaciones (busybox, por ejemplo) que preparan el entorno, montan el sistema de archivos en RAM y autoconfiguran el sistema para que el usuario final no tenga más que poner el cdrom en su equipo y esperar a que cargue.
Hace un tiempo el calzador de metadistros estaba basado en un kernel antíguo (2.4.27) con varios parches, y tenía una configuración bastante a medida, esto hacía bastante complicado una posible actualización a kernel más modernos (2.6.x) ya que se necesitaba configurar de manera especial el kernel para que por ejemplo el sistema de archivos, soporte SCSI, y soporte para chips de placas estuviera dentro del kernel y no como módulo. Como digo afortunadamente las cosas han cambiado bastante, y hoy con la nueva estructura del calzador que se está implementando para Guadalinex y la próxima Ubuntu, el calzador se ha integrado en un fichero de arranque. El antiguo calzador de metadistros puede encontrarse aquí.
Sistema actual del calzador
El sistema actual se basa en initramfs-tools, el cual genera una imagen comprimida de un sistema linux mínimo el cual es el encargado del arranque de la distro live o la distro instalada (de hecho se usa , junto con yaird, en los kernel => 2.6.13). Dentro de esta imagen tenemos una serie de bash scripts que montan varios sistemas de archivos especiales (proc sys tmp dev) hacen un reconocimiento de hardware bastente básico con udev, montan la imagen SQUASH y preparan el sistema para que transparentemente cualquier directorio del sistema se pueda escribir gracias a al módulo unionfs.
De este modo y sin tener en cuenta la velocidad un livecd (velocidad de lectura de un cdrom o dvd inferior a un disco duro) una vez arrancado y en el escritorio tiene un funcionamiento similar a un sistema instalado. El initramfs-tools que vamos a usar es el initramfs-tools (>0.44) de debian o ubuntu. Es aconsejable que tengas instalado yaird como gestor de imágenes de arranque de kernel instalados ya que initramfs-tools puede no generar correctamente imágenes arrancables, o al menos sin editar la conf por defecto. He separado los scripts para crear la metadistro en otro paquete llamado initramfs-tools-metadistros, además contiene los parches para soporte directo de tarjetas gráficas ATI o NVIDIA en modo live.
Para hacer un livecd podemos remasterizar uno que ya exista (knoppix, morphix, ubuntu, etc..) o crearlo desde cero. La decisión de uno u otro depende de la pericia que tengamos sobre la distribución que usemos como base, así como unos conocimientos básicos de scripting y la facilidad para remasterizar la distro objetivo. En mi caso tome la decisión de usar debian como distribución base por la gran cantidad de paquetes y porque a mi modo de ver es más flexible/configurable que ubuntu.
Necesitamos instalar la distribución que se convertirá en metadistro en nuestro sistema local ya sea en una partición separada como en un directorio del sistema de archivos, las diferencias de uno u otro es que en una partición podremos arrancarla si la vamos a personalizar mucho. Yo he creado la distribución en un directorio ( /media/distro/sources ) mediante la aplicación de debian debootstrap (instalarla si procede):
# cd /media/distro
# deboostrap etch /media/distro/sources http://idefix.eup.uva.es/debian
Para ubuntu:
# cd /media/distro
# deboostrap breezy /media/distro/sources http://idefix.eup.uva.es/ubuntu
El primer parámetro es la rama de debian/ubuntu, el segundo es el directorio (o partición montada sobre ese directorio) donde vamos a instalar ese debian/ubuntu y el tercero, opcional, es el mirror de donde descargaremos los paquetes, sino se pone usará el mirror principal de la distribución.
Al ejecutarlo se conectará al mirror, bajará el sistema base, instalará y configurará los paquetes. Una vez en este punto tendremos una distribución debian/ubuntu a medio configurar. Esta distro necesita unos paquetes necesarios para que al arrancar reconozca nuestro hardware y si procede arranque un entorno gráfico, un escritorio, y las aplicaciones que necesitemos. Para su modificación usaremos el comando chroot que nos «enjaula» dentro de ese directorio como si estuvieramos en el sistema. Antes de empezar a instalar cosas configuraremos lo que ya está instalado:
# chroot /media/distro/sources
# nano /etc/fstab
Debemos editar el fstab para poder montar los sistemas de archivos proc para que la isntalación de los paquetes no falle. Así lo he dejado yo:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
Tenemos que configurar más cosas:
deb http://idefix.eup.uva.es/debian etch main contrib non-free
deb http://idefix.eup.uva.es/debian sid main contrib non-free # ya no hace falta sid
deb http://idefix.eup.uva.es/soleup soleupix main java games openoffice
deb http://idefix.eup.uva.es/debian-marillat etch main
deb http://soleup.eup.uva.es/repos ./
deb http://idefix.eup.uva.es/paquetes/testing ./
Para ubuntu USAR LOS SOURCES CORRESPONDIENTES.
echo APT::Default-Release "testing"; >> /etc/apt/apt.conf
Con esto evitamos que nuestra metadistro se vuelva demasiado unstable :P...
Como se puede ver, contiene un mirror oficial de debian y varios mirror extra de donde descargaremos algunas cosas que NECESITAMOS.
No es necesario un kernel especial, vamos a usar linux-image-2.6.15-1-486 con los módulos que he compilado aparte. Actualmente este kernel está en sid. Tanto el kernel como las headers se pueden descargar desde uno de los repos que tenemos en el sources.list. Para ubuntu puedes usar el kernel linux-image-2.6.12-9-386 (incluye soporte squashfs). Ni que decir tiene que puedes usar el kernel que quieras pero es recomendable al menos uno superior o igual al 2.6.12 ya que udev no funciona en kernel anteriores. (Si haces tu metadistro basada en debian sarge puedes usar el 2.6.8 y el udev de sarge)
Eso sí, si usas otro kernel tendrás que compilar e instalar los módulos correspondientes a unionfs y squashfs (sino estuviera ya)
NOTA: Es posible que la generación del initrd dentro del chroot de un error del tipo que no se puede crear porque no hay partición / definida en el fstab, la forma de arreglarlo es montar por medio de «bind» nuestro /dev dentro de la jaula..
Ejecutar desde FUERA del chroot (desde otra shell):
# mount -o bind /dev /media/distro/sources/dev
(esto montará dev dentro del chroot y no dará errores al instalar el kernel)
# mount sys
# mount proc
# apt-get update
# apt-get upgrade
# apt-get install grub linux-image-2.6.15-1-486 discover udev
Con esto ya tendremos un sistema mínimo pero funcional. Ahora es cuando tenemos que instalar el escritorio y las X.
# apt-get install x-window-system-core gdm gnome-core
Con esto instalamos un gestor de acceso (GDM) las aplicaciones indispensables de XORG, y las aplicaciones indispensables de gnome. En este punto puedes instalar lo que quieras siempre y cuando no te pases de 2 Gigas (más o menos)
Yo estoy trabajando en un instalador (ruby gtk2) llamado YAMI, puedes ver más info en el enlace que hay encima de mi foto del blog, Guadalinex está trabajando en otro instalador mucho más completo llamado ubuntu-express, en el svn de Guadalinex o aquí puedes conseguirlo
Antes de salir debemos hacer un poco de limpieza.
# apt-get install localepurge deborphan
Seleccionamos las locales QUE NO QUEREMOS BORRAR y ejecutamos de nuevo:
# localepurge
Deborphan busca bibliotecas del sistema que no son necesarias:
# apt-get remove --purge $(deborphan)
Lo que hacemos es desinstalar los paquetes que indica la salida del comando deborphan.
Borramos ( mejor dicho VACIAMOS cat /dev/null > /var/log/xxxxx ) los log de /var/log, borramos el contenido de /tmp/ y /var/tmp/
# umount sys
# umount proc
Es muy importante antes de salir del chroot, desmontar sys y proc ya que sino nuestro sistema linux ocupará bastante (proc ocupa lo mismo que la memoria RAM que tenemos)
# exit
# umount /media/distro/sources/dev
La generación de la imágen squash la hace el paquete genlive, que no es más que un script que genera el initramfs, copia los ficheros arrancables isolinux en el directorio del cdrom y crea la ISO.
# echo "deb http://soleup.eup.uva.es/repos ./" >> /etc/apt/sources.list
# echo "deb http://idefix.eup.uva.es/metadistros/SOLEUPIX/ ./" >> /etc/apt/sources.list
# apt-get update
# apt-get install linux-image-2.6.15-1-486 unionfs-modules-2.6.15-1-486 squashfs-modules-2.6.15-1-486
# depmod -a 2.6.15-1-486
NOTA: depmod -a es para actualizar las dependencias de los módulos instalados, si no se pone versión del kernel actualiza las dependencias del kernel que tenemos corriendo, si ponemos versión actualiza las dependencias de otro kernel. (man depmod)
ACTUALIZACIÓN: Se necesitan los repositorios de sid hasta que 2.6.15 entre en testing, hazlo de la misma manera que con las sources del livecd.
Ahora instalaremos algunas cosas que se necesitan para crear tanto el initramfs como la imagen comprimida squashfs:
# apt-get install genlive
Por dependencias debería instalar:
Se pueden descargar los paquetes e instalarlos con dpkg -i desde aquí.
Cosas a modificar:
Ya estamos acabando:
# genlive -h
Muestra la ayuda. Las opciones más usadas son:
# genlive
Genera el squashfs (tarda un rato), el initramfs, y la iso
# genlive -x
Genera el initramfs y la iso (el squash no) Útil para cuando hacemos sólo cambios en el calzador
# genlive -x -y
Genera sólo la iso.
Ahora o bien la grabamos en un regrabable o cd normal o usamos algún emulador como qemu (muy lento) o vmware.
Espero que con estos pasos básicos, al menos sepais que hay detrás de un livecd (tipo metadistros) y os animeis a hacer el vuestro.
/bin/sh: can't access tty; job control turned off
Si no da un kernel panic nos habrá dejado en un shell muy básico (dentro del initramfs), si da un kernel panic podemos arrancar con la órden «linux break» o «linux break-init» que nos dejará en un shell al final del proceso initramfs pero no dentro del sistema final donde podemos hacer varias cosas:
Estoy trabajando en modificaciones del calzador que dentro de poco publicaré para añadir otro método de arranque que seguro que os gustará!!!!!
El fruto de este trabajo se llama soleupix, puedes descargar una pequeña iso (aún en estado de pruebas) desde aquí.
Este artículo se distribuye bajo licencia CC, como el resto de mi blog, así que si lo vas a copiar en otra web acuérdate de ponerme un enlace.
Vamos a empezar.
NOTA IMPORTANTE: Hacer una metadistro conlleva unos conocimientos mínimos de shell scripts, el kernel de linux, módulos y dependencias y bastante soltura en comandos de consola. Si no cumples estos requisitos, antes de empezar usa google para documentarte sobre ello.
(Sigue ....)
ACTUALIZACIÓN (16 Dic 2005 23:19): Después de sufrir un pequeño efecto barrapunto, el servidor sigue vivo, se me ha olvidado lo más importante que es dar las gracias a Juanje y los desarrolladores que colaboran con metadistros y Guadalinex sin los cuales todas estas novedades no serían posibles.
ACTUALIZACIÓN (19 Dic 2005 10:27): Este fin de semana el server ha estado caido, no por el efecto barrapunto sino por una metida de gamba y el kernel 2.6.14 que no le dió la gana arrancar. Siento mucho las molestias. Ahora SOLEUPIX está basada en el kernel 2.6.14-2-386 ( el de debian ) he compilado aparte el módulo squashfs y unionfs para no necesitar un kernel raro. Esto es un gran avance y funciona mucho mejor.
ACTUALIZACIÓN (31 Dic 2005 12:40): He corregido algunos fallos o incoherencias en el artículo y borrado la forma vieja (lo que dejé tachado).
ACTUALIZACIÓN (24 Ene 2006 09:20): Añadido enlaces para descargar kernel 2.6.14-2-386 que ha desaparecido en debian
ACTUALIZACIÓN (20 Feb 2006): Articulo actualizado al kernel 2.6.15-1-486 el 2.6.14 tiene algún problema y ha desaparecido de debian.
Notas
Este artículo está basado en debian, para basarla en ubuntu deberás usar los paquetes de ubuntu/guadalinex de genlive e initramfs-tools. Los paquetes se pueden descargar del svn de guadalinex.
¿Qué es una metadistro?
(Gracias a Juan Jesús Ojeda por la aclaración)Una metadistro es una distribución hecha a medida por un grupo determinado de usuarios, con un objetivo concreto. El fin último de una metadistro es que sea instalada, ya sea durante el arranque como desde el escritorio por medio de un instalador. El hecho de funcionar en modo Livecd no es más que un paso intermedio para el fin. METADISTRO NO ES LO MISMO QUE LIVECD.
El objetivo del proyecto metadistros es ser un espacio de colaboración entre gente que desarrolla distribuciones (para un público determinado, con un objetivo determinado) y no duplicar esfuerzos.
Con esta base podemos decir que una metadistro es la plataforma para personalizar una distribución GNU/Linux a un entrono de trabajo concreto, por ejmplo una distribución universitaria, para un colegio, para un bufete de abogados, para una empresa de transportes, etc...
¿Cómo funciona una metadistro?
Una metadistro consta de dos partes:
- El calzador.
- Una copia del sistema de archivos GNU/Linux comprimido => Imagen Squashfs.
El calzador
El calzador es un conjunto de scripts, módulos del kernel y aplicaciones (busybox, por ejemplo) que preparan el entorno, montan el sistema de archivos en RAM y autoconfiguran el sistema para que el usuario final no tenga más que poner el cdrom en su equipo y esperar a que cargue.
Hace un tiempo el calzador de metadistros estaba basado en un kernel antíguo (2.4.27) con varios parches, y tenía una configuración bastante a medida, esto hacía bastante complicado una posible actualización a kernel más modernos (2.6.x) ya que se necesitaba configurar de manera especial el kernel para que por ejemplo el sistema de archivos, soporte SCSI, y soporte para chips de placas estuviera dentro del kernel y no como módulo. Como digo afortunadamente las cosas han cambiado bastante, y hoy con la nueva estructura del calzador que se está implementando para Guadalinex y la próxima Ubuntu, el calzador se ha integrado en un fichero de arranque. El antiguo calzador de metadistros puede encontrarse aquí.
Sistema actual del calzador
El sistema actual se basa en initramfs-tools, el cual genera una imagen comprimida de un sistema linux mínimo el cual es el encargado del arranque de la distro live o la distro instalada (de hecho se usa , junto con yaird, en los kernel => 2.6.13). Dentro de esta imagen tenemos una serie de bash scripts que montan varios sistemas de archivos especiales (proc sys tmp dev) hacen un reconocimiento de hardware bastente básico con udev, montan la imagen SQUASH y preparan el sistema para que transparentemente cualquier directorio del sistema se pueda escribir gracias a al módulo unionfs.De este modo y sin tener en cuenta la velocidad un livecd (velocidad de lectura de un cdrom o dvd inferior a un disco duro) una vez arrancado y en el escritorio tiene un funcionamiento similar a un sistema instalado. El initramfs-tools que vamos a usar es el initramfs-tools (>0.44) de debian o ubuntu. Es aconsejable que tengas instalado yaird como gestor de imágenes de arranque de kernel instalados ya que initramfs-tools puede no generar correctamente imágenes arrancables, o al menos sin editar la conf por defecto. He separado los scripts para crear la metadistro en otro paquete llamado initramfs-tools-metadistros, además contiene los parches para soporte directo de tarjetas gráficas ATI o NVIDIA en modo live.
Imagen SQUASH
Para hacer un livecd podemos remasterizar uno que ya exista (knoppix, morphix, ubuntu, etc..) o crearlo desde cero. La decisión de uno u otro depende de la pericia que tengamos sobre la distribución que usemos como base, así como unos conocimientos básicos de scripting y la facilidad para remasterizar la distro objetivo. En mi caso tome la decisión de usar debian como distribución base por la gran cantidad de paquetes y porque a mi modo de ver es más flexible/configurable que ubuntu.
Instalación de distribución objetivo
Necesitamos instalar la distribución que se convertirá en metadistro en nuestro sistema local ya sea en una partición separada como en un directorio del sistema de archivos, las diferencias de uno u otro es que en una partición podremos arrancarla si la vamos a personalizar mucho. Yo he creado la distribución en un directorio ( /media/distro/sources ) mediante la aplicación de debian debootstrap (instalarla si procede):
# cd /media/distro
# deboostrap etch /media/distro/sources http://idefix.eup.uva.es/debian
Para ubuntu:
# cd /media/distro
# deboostrap breezy /media/distro/sources http://idefix.eup.uva.es/ubuntu
El primer parámetro es la rama de debian/ubuntu, el segundo es el directorio (o partición montada sobre ese directorio) donde vamos a instalar ese debian/ubuntu y el tercero, opcional, es el mirror de donde descargaremos los paquetes, sino se pone usará el mirror principal de la distribución.
Al ejecutarlo se conectará al mirror, bajará el sistema base, instalará y configurará los paquetes. Una vez en este punto tendremos una distribución debian/ubuntu a medio configurar. Esta distro necesita unos paquetes necesarios para que al arrancar reconozca nuestro hardware y si procede arranque un entorno gráfico, un escritorio, y las aplicaciones que necesitemos. Para su modificación usaremos el comando chroot que nos «enjaula» dentro de ese directorio como si estuvieramos en el sistema. Antes de empezar a instalar cosas configuraremos lo que ya está instalado:
# chroot /media/distro/sources
# nano /etc/fstab
Debemos editar el fstab para poder montar los sistemas de archivos proc para que la isntalación de los paquetes no falle. Así lo he dejado yo:
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
Tenemos que configurar más cosas:
- /etc/resolv.conf
(los dns de conexión, puedes copiar el del tu sistema) - /etc/network/interfaces
(poniendo una ip fija o dejándolo como dhcp, no importa mucho ya que el livecd generará este archivo durante el arranque) - /etc/adjtime
(zona horaria GMT o no, puedes copiar el archivo de tu distro o ejecutar «tzconfig») - Poner en /etc/skel/ todos aquellos archivos y configuraciones que queremos que tenga el usuario creado durante el arranque (plantillas).
- Debemos editar /etc/apt/sources.list para descargar los paquetes que necesitemos. Mi sources.list:
deb http://idefix.eup.uva.es/debian etch main contrib non-free
deb http://idefix.eup.uva.es/debian sid main contrib non-free # ya no hace falta sid
deb http://idefix.eup.uva.es/soleup soleupix main java games openoffice
deb http://idefix.eup.uva.es/debian-marillat etch main
deb http://soleup.eup.uva.es/repos ./
deb http://idefix.eup.uva.es/paquetes/testing ./
Para ubuntu USAR LOS SOURCES CORRESPONDIENTES.
echo APT::Default-Release "testing"; >> /etc/apt/apt.conf
Con esto evitamos que nuestra metadistro se vuelva demasiado unstable :P...
Como se puede ver, contiene un mirror oficial de debian y varios mirror extra de donde descargaremos algunas cosas que NECESITAMOS.
No es necesario un kernel especial, vamos a usar linux-image-2.6.15-1-486 con los módulos que he compilado aparte. Actualmente este kernel está en sid. Tanto el kernel como las headers se pueden descargar desde uno de los repos que tenemos en el sources.list. Para ubuntu puedes usar el kernel linux-image-2.6.12-9-386 (incluye soporte squashfs). Ni que decir tiene que puedes usar el kernel que quieras pero es recomendable al menos uno superior o igual al 2.6.12 ya que udev no funciona en kernel anteriores. (Si haces tu metadistro basada en debian sarge puedes usar el 2.6.8 y el udev de sarge)
Eso sí, si usas otro kernel tendrás que compilar e instalar los módulos correspondientes a unionfs y squashfs (sino estuviera ya)
NOTA: Es posible que la generación del initrd dentro del chroot de un error del tipo que no se puede crear porque no hay partición / definida en el fstab, la forma de arreglarlo es montar por medio de «bind» nuestro /dev dentro de la jaula..
Ejecutar desde FUERA del chroot (desde otra shell):
# mount -o bind /dev /media/distro/sources/dev
(esto montará dev dentro del chroot y no dará errores al instalar el kernel)
# mount sys
# mount proc
# apt-get update
# apt-get upgrade
# apt-get install grub linux-image-2.6.15-1-486 discover udev
Con esto ya tendremos un sistema mínimo pero funcional. Ahora es cuando tenemos que instalar el escritorio y las X.
# apt-get install x-window-system-core gdm gnome-core
Con esto instalamos un gestor de acceso (GDM) las aplicaciones indispensables de XORG, y las aplicaciones indispensables de gnome. En este punto puedes instalar lo que quieras siempre y cuando no te pases de 2 Gigas (más o menos)
Yo estoy trabajando en un instalador (ruby gtk2) llamado YAMI, puedes ver más info en el enlace que hay encima de mi foto del blog, Guadalinex está trabajando en otro instalador mucho más completo llamado ubuntu-express, en el svn de Guadalinex o aquí puedes conseguirlo
Antes de salir debemos hacer un poco de limpieza.
# apt-get install localepurge deborphan
Seleccionamos las locales QUE NO QUEREMOS BORRAR y ejecutamos de nuevo:
# localepurge
Deborphan busca bibliotecas del sistema que no son necesarias:
# apt-get remove --purge $(deborphan)
Lo que hacemos es desinstalar los paquetes que indica la salida del comando deborphan.
Borramos ( mejor dicho VACIAMOS cat /dev/null > /var/log/xxxxx ) los log de /var/log, borramos el contenido de /tmp/ y /var/tmp/
# umount sys
# umount proc
Es muy importante antes de salir del chroot, desmontar sys y proc ya que sino nuestro sistema linux ocupará bastante (proc ocupa lo mismo que la memoria RAM que tenemos)
# exit
# umount /media/distro/sources/dev
La generación de la imágen squash la hace el paquete genlive, que no es más que un script que genera el initramfs, copia los ficheros arrancables isolinux en el directorio del cdrom y crea la ISO.
Generación de la iso
Antes de lanzarnos a generar la imagen iso debemos instalar en nuestro sistema instalado, al menos, el mismo kernel , el módulo squashfs para este kernel y el paquete del módulo unionfs. Si no queremos que sea nuestro kernel por defecto puedes editar el menu.list de grub para que te cargue otro kernel.# echo "deb http://soleup.eup.uva.es/repos ./" >> /etc/apt/sources.list
# echo "deb http://idefix.eup.uva.es/metadistros/SOLEUPIX/ ./" >> /etc/apt/sources.list
# apt-get update
# apt-get install linux-image-2.6.15-1-486 unionfs-modules-2.6.15-1-486 squashfs-modules-2.6.15-1-486
# depmod -a 2.6.15-1-486
NOTA: depmod -a es para actualizar las dependencias de los módulos instalados, si no se pone versión del kernel actualiza las dependencias del kernel que tenemos corriendo, si ponemos versión actualiza las dependencias de otro kernel. (man depmod)
ACTUALIZACIÓN: Se necesitan los repositorios de sid hasta que 2.6.15 entre en testing, hazlo de la misma manera que con las sources del livecd.
Ahora instalaremos algunas cosas que se necesitan para crear tanto el initramfs como la imagen comprimida squashfs:
# apt-get install genlive
Por dependencias debería instalar:
- initramfs-tools version>=0.44 (la de debian)
- busybox version>=1.01-4 (la de debian)
INSTALAR A MANO: - initramfs-tools-metadistros version>=0.44-soleupix9
Se pueden descargar los paquetes e instalarlos con dpkg -i desde aquí.
Cosas a modificar:
- Archivo /etc/mkinitramfs/initramfs.conf
IMPORTANTÍSIMO: Editamos la variable BOOT=local a BOOT=live
Editamos/creamos la variable USERNAME=liveuser (es el usuario que se crea durante el arranque de la live, SIN ESPACIOS NI CARACTERES RAROS) - Archivo /media/distro/version
La coletilla con la que se nombrarán los archivos iso, ejemplo «soleupix-beta-0.0.1.iso» (dejarlo sólo en una línea NO meter un enter al final) - Archivo /usr/sbin/genlive
Es el script que genera el initramfs, el squash y la iso.
KERNEL="2.6.15-1-486" # El kernel que llevará el calzador (initramfs)
VOLUMENAME="Soleupix Live System" # Nombre de volumen de la ISO ( nombre del cd )
OUTPUTIMAGE=${ISOS}/soleupix-beta-${VERSION}.iso # archivos iso creados en /media/distro/isos
Ya estamos acabando:
# genlive -h
Muestra la ayuda. Las opciones más usadas son:
# genlive
Genera el squashfs (tarda un rato), el initramfs, y la iso
# genlive -x
Genera el initramfs y la iso (el squash no) Útil para cuando hacemos sólo cambios en el calzador
# genlive -x -y
Genera sólo la iso.
Ahora o bien la grabamos en un regrabable o cd normal o usamos algún emulador como qemu (muy lento) o vmware.
Espero que con estos pasos básicos, al menos sepais que hay detrás de un livecd (tipo metadistros) y os animeis a hacer el vuestro.
ANEXO: ¡No arranca! ¿Cómo depurar el arranque?
Tenemos muchas papeletas para que la primera iso generada no arranque dando errores del tipo:/bin/sh: can't access tty; job control turned off
Si no da un kernel panic nos habrá dejado en un shell muy básico (dentro del initramfs), si da un kernel panic podemos arrancar con la órden «linux break» o «linux break-init» que nos dejará en un shell al final del proceso initramfs pero no dentro del sistema final donde podemos hacer varias cosas:
- Ver el archivo log de arranque:
cat /tmp/initramfs.log
(las últimas líneas pueden darnos una pista de porqué no arranca) - Intentar lanzar los scripts a mano para saber donde falla.
Es un proceso de chinos, pero cuando no sabemos a que puede ser debido el error puede dar alguna pista. Hay que cargar la configuración, las funciones y ejecutar los scripts de arranque:
(ver sistemas montados)
mount o cat /proc/mounts
(cargar módulos a mano)
modprobe squashfs
dmesg|tail
modprobe unionfs
dmesg|tail
(no deberiamos obtener errores)
(reintentar el arrnque)
. /conf/initramfs.conf
. /scripts/functions
. /scripts/live
(o ejecutar cada línea del script live hasta que casque) - Si con todo esto tampoco va deberíamos mirar algunas variables de entorno:
echo $BOOT (debería valer «live»)
ls /scripts/ (deberían estar varios directorios, entre ellos live-bottom live-premount)
ls /mnt (deberían estar dev/ e image/ que es donde se monta el cdrom y el squashfs respectivamente)
Estoy trabajando en modificaciones del calzador que dentro de poco publicaré para añadir otro método de arranque que seguro que os gustará!!!!!
creo todos los pasos como dices pero a la hora de hacer qemu -m 256 nombre.iso me dice que no es bootable :( en mi /boot/ tengo todo initrd vmlinuz ... pero pk pasa eso?
uso el script genlive y sin problemas
pues ese problema residia en que la version del qemu no era buena :) pero al arrancar con el cd tostado me da un kernel panic por no poder leer /conf/initranfs-meta.conf a ver de donde se puede solucionar eso
alguien me podria pasar el calzador-current.tar.bz pk el calzador es imposible localizarlo en la web oficial :(
Si quieres hacer tu distro sobre ubuntu HAZLA, no pongas el repositorio de debian:
NO
deboostrap etch /media/distro/sources http://idefix.eup.uva.es/debian
SI
deboostrap breezy /media/distro/sources http://idefix.eup.uva.es/ubuntu
Para el error que te da sobre el arranque que no puede leer un archivo, edita /usr/share/initramfs-tools/init y borra la linea:
. /conf/initramfs-meta.conf o mejor actualizas el paquete porque en la última versión ese error ya está corregido.
En cuanto al calzador-current, yo lo borre hace tiempo, en sourceforge, proyecto x-evian, puedes descargar algo parecido a lo que era el calzador, en un ftp de la universidad de canarias estaba colgado pero siempre fallaba mucho.Las url creo que estan en el wiki de metadistros:
http://metadistros.software-libre.org
Cuando me dices que actualize dices que actualize el genlive? o a que te refieres??? mirare de todas formas la linea que me comentas :)
lo del calzador te lo comento porque no lo encuentro y el ftp de software-libre lleva 1 semana caido :(
Bueno gracias! a ver que se puede hacer
Hola mario Hablas de que en realidad no es necesario un kernel especial pero acabas escogiendo el del repositorio sid. ¿Es posible hacer el cd-live con el kernel 2.6.8 del repositorio stable?
Por cierto aunque restauren la página oficial de metadistros el enlace al calzador de la universidad de las palmas es inaccesible. Por lo visto han restringido el servidor a los propios estudiantes.
Puedes poner los pasos que seguiste para hacer tu metadistro uzando ubuntu????
Tengo algunos problemitas y he googleado y no lo resuelvo
Pues he mirado /tmp/init*, y lo que me dice es lo siguiente:
...
Mounting tmpfs
Loading isofs
Loading ext3
Loading vfat
Mounting sda1
Not found META in sda1
Loading modules squashfs loop unionfs
Something wrong with the image mounting
ctl: LOOP_SET_FD: Bad file descriptor
mount: Could not setup loop device
SETUP_IMAGE: ERROR -> image non mounted
No sé si habrá algún problema con el ramdisk, o tendrá que ver con que la estoy probando con VMWare. Soy novato en esto de los ramdisks, agradecería cualquier ayuda u orientación.
Sigo tus pasos para la creación de metadistros. Creo que usas depmod para que se utilice el kernel 2.6.14 en lugar del que tienes intalado en tu sistema (en mi caso 2.6.12). Supongo que debe haber una errata en la opción y debe ser -v en -a.
¿Es así o depmod cumple otra función?. ¿Se podría simplemente haber reiniciado y elegido el kernel en el grup?
Saludos
Hola Mario,
Mi distro dede momento ya arranca en modo de línea de comando.NO carga kde. Mirando el log veo que hay un problema con /dev/input/mice. Dice que no existe pero eso se encuentra en la partición. Otra cosa, el xorg.conf de la distribución de mi partición difiere de la de la cd-live ¿Se gebera un genérica?
¿Se te ocurre algo para solucionar lo de /dev/input/mice? En la partición acaba arrancando pero no así en el cd-live.
UPS, para eso esta el paquete discover para intentar detectar el hardware. Además a mi se me había olvidado descargar udev. Bueno ahora sale más o menos aunque con errores.
Hola Mario,
Por fin el cd-live funciona auqnue con algunos errores que habrá que depurar.
Al entrar en el kde sale una ventana de error cone l mensaje:
Autenthicated 'nombre del usuario creado'.
A critical error ocurred.
Me envia a mirar el log de kdm
(==) Log file: "/var/log/Xorg.0.log", Time: Tue Jan 3 12:33:36 2006
(==) Using config file: "/etc/X11/xorg.conf"
Skipping "/usr/X11R6/lib/modules/extensions/libGLcore.a:m_debug_clip.o": No symbols found
Skipping "/usr/X11R6/lib/modules/extensions/libGLcore.a:m_debug_norm.o": No symbols found
Skipping "/usr/X11R6/lib/modules/extensions/libGLcore.a:m_debug_xform.o": No symbols found
(EE) Failed to load module "synaptics" (module does not exist, 0)
Skipping "/usr/X11R6/lib/modules/libfb.a:fbmmx.o": No symbols found
(EE) No Input driver matching `synaptics'
Warning: font renderer for ".pcf" already registered at priority 0
Warning: font renderer for ".pcf.Z" already registered at priority 0
Warning: font renderer for ".pcf.gz" already registered at priority 0
Warning: font renderer for ".snf" already registered at priority 0
Warning: font renderer for ".snf.Z" already registered at priority 0
Warning: font renderer for ".snf.gz" already registered at priority 0
Warning: font renderer for ".bdf" already registered at priority 0
Warning: font renderer for ".bdf.Z" already registered at priority 0
Warning: font renderer for ".bdf.gz" already registered at priority 0
Warning: font renderer for ".pmf" already registered at priority 0
QImage::convertDepth: Image is a null image
QImage::smoothScale: Image is a null image
SetClientVersion: 0 9
Muy crítico no debe ser el error cuando puedo acceder al KDE. Este módulo synaptic me aparecía la principio en xorg.conf y era para un InputDevice de Touchpad.
Instala xfree86-driver-synaptics para poder usar el touchpad, y revisa el nombre de usuario que pusiste en la conf del initramfs
Autenthicated 'nombre del usuario creado'.
Esto no me huele bien, como USERNAME no pondrías «nombre del usuario creado», ¿verdad? prueba con USERNAME=liveuser o algo así (una palabra, sin espacios ni caracteres raros)
Tras las vacaciones vuelvo al ataque con el LiveCD basado en Ubuntu. En cuanto solucione todos los problemillas pongo los pasos que yo he dado. Mi último problema (por el momento) es el tema de las X. He comprobado que todos los dispositivos están bien y he descubierto el fallo. Parece ser que no funciona bien la configuración de las X ya que me mete siempre el mismo modulo para la tarjeta gráfica (i810) independientemente de la tarjeta que sea. Lo he probado tanto en vmware como con qemu y el resultado ha sido el mismo. Si corrijo yo la configuración a mano, usando el driver de vesa por ejemplo, las X funcionan sin ningún problema. ¿Alguna pista de por donde ataco el problema?. Estoy usando las últimas versiones publicadas en el SVN de Guadalinex actualizadas a día de hoy (03-01-2005)
tengo el mismo problema como lo solucionaste o alguien sabe cual es el problema y como se puede solucionar o algun tip?
muchas gracias
Tengo el mismo problema que se comenta aca arriba alguien sabe como se puede solucionar????
desde ya muchas gracias.
David
Mi problema fue despistarme y no instalar el paquete discover. Quizás te hayas saltado algun paso sin darte cuenta.
Hola Mario,
Ya se ha solucionado lo del touchpad instalando el módulo de synaptic pero la autenticación de usuario persiste. No me había dado cuenta pero al entrar al KDE entro con el usuario que cree en la partición del disco duro. ¿Debería poner entonces ese usuario en el conf del initramfs?. Pensaba que el usuario que se crease en el sistema base no importaba nada y que la liveCD crearía uno.
Otro de los problemas con el KDE es ya un aviso acerca del driver de sonido.
Error while initializing the sound driver.
device: default can't be opened for playback (no such device)
the sound server will continue, using the null output device.
Falta instalar un driver de sonido. Ya miraré por ahí.
Hola a todos
Enhorabuena Mario, es genial este currazo
bueno lo del calzador creo que esta en http://linux-gnu.com/
hay varias cosas mas del proyecto metadistro.
otra idea en la que se basa slax y xarnoppix (cuya página esta caida o algo) es http://www.linux-live.org/
Felices Reyes a todos
Hola Mario, cuando escribo el comando
root@quijote:~# chroot /mnt/src/sources/
me da el siguiente error
chroot: cannot run command `/bin/bash': Permission denied
la verdad es que no conozco como solucionar ese problema, me podrias ayudar? :-D
Salu2
Quidam-