Hola Visitante

Autor Tema: Crear un liveCD debian (HOWTO)  (Leído 1695 veces)

Berni69

  • Administrator
  • *****
  • Mensajes: 25
    • Ver Perfil
Crear un liveCD debian (HOWTO)
« en: Agosto 02, 2011, 10:39:38 pm »
1. Introducción.

Live-helper es una herramienta de creación de live CD debian, se trata de un cd estándar similar a los instaladores que permite arrancar un ordenador pero a diferencia de los instaladores su finalidad es dar una utilización totalmente funcional al ordenador sin necesidad de tocar en absoluto la configuracion original del sistema instalado en el ordenador, si lo hubiera.
En la actualidad la utilización de un live CD como sistema cotidiano es muy viable, el software incluido en el es capaz de detectar todos, o al menos la mayoría, del hardware del ordenador, ya sea hardware de video, audio, red, etc. e incluso existen varias distribuciones, como knoppix, que se proveen solo en formato live CD. Estos son además una herramienta muy útil a la hora de utilizarse como sistemas de recuperación en equipos donde el sistema instalado en su disco rígido se encuentra dañado o comprometido.

El paquete está disponible a partir de la versión lenny de Debian. Anteriormente existía el paquete live-package, discontinuado actualmente. Live-helper no es el sucesor de live-packager, es un software con un desarrollo completamente aparte.

NOTA importante: En la versión de live-helper de squeeze (y suponemos que las siguientes), ya no existen los comandos lh_config, lh_bootstrap, lh_build... etc. Se engloban esos comandos en uno solo, lh y los demás entran como parámetros del primero. Por ejemplo
lh_config ahora se ejecuta así:
Código: [Seleccionar]
lh config

lh_build ahora se ejecuta así:
lh build

Sin embargo, los parámetros \"combinados\" si que mantienen el guión bajo:
lh_chroot_hosts remove se ejecuta así:
Código: [Seleccionar]
lh chroot_hosts remove
2. Instalación y comandos básicos.

Como todo en debian la instalación se reduce a la ejecución de un comando:
Código: [Seleccionar]
  # apt-get install live-helper

Los comandos básicos para la creación de un primer live cd son lh_config y lh_build
lh_config se encargara de crear en nuestro directorio de trabajo un directorio config que alojara en su interior toda la configuracion referente al cd a crear.
lh_build creara una imagen iso a partir de la configuración indicada en el directorio config, la configuración básica nos permitirá crear una imagen iso que, una vez grabada en un cd, permitirá arrancar un sistema básico.
3. Escritorios predeterminados.

El cd creado mediante el procedimiento descrito anteriormente será poco menos que inútil, el cd no contiene ningún entorno gráfico ni aplicaciones mas que las que podríamos encontrar luego de instalar un sistema base de debian en nuestro disco duro. Podemos crear un live cd con nuestro entorno de escritorio favorito, por ejemplo para crear un live con el entorno de escritorio gnome:
Código: [Seleccionar]
  # lh_config -p gnome-desktop && lh_build

Para KDE
Código: [Seleccionar]
  # lh_config -p kde-desktop && lh_build

Si quisiéramos un entorno de escritorio mas liviano que pueda correr en equipos de bajo rendimiento
Código: [Seleccionar]
  # lh_config -p xfce-desktop && lh_build

Podemos obtener la lista completa de escritorios predeterminados mirando en /usr/share/live-helper/lists
4. Ramas y arquitecturas.

Por defecto live-helper creara la imagen iso a partir de los repositorios de la rama stable, si quisiéramos obtener un live cd de otra rama no hay mas que indicarlo agregando la opción -d a la ejecución del comando lh_config, si queremos especificar una arquitectura lo hacemos con la opción -a. El siguiente ejemplo resultará en un live cd de la rama testing con escritorio gnome y para arquitecturas amd64
Código: [Seleccionar]
  # lh_config -d squeeze -a amd64 -p gnome-desktop && lh_build
5. Selección de mirrors.

Al momento de crearse la imagen para el live cd no se utilizaran los repositorios especificados en nuestro sources.list sino los repositorios oficiales de debian, en realidad los repositorios ftp.us.debian.org.
Para indicar unos diferentes podemos especificarlos al momento de ejecutar lh_config, en este punto debemos hacer la distinción entre los repositorios a utilizar por live-helper para crear el live cd, de los repositorios que serán incluidos en el source.list del live cd.

Mediante:
Código: [Seleccionar]
  # lh_config --mirror-bootstrap \"http://ftp.debian.org/debian/\"

Le indicamos a live-helper que mirror utilizar para crear el live cd, mediante:
Código: [Seleccionar]
  # lh_config --mirror-binary \"http://ftp.debian.org/debian/\"

Le indicamos que mirror agregar al sources.list del live cd, y mediante
Código: [Seleccionar]
  # lh_config --mirror-chroot-security

y
Código: [Seleccionar]
  # lh_config --mirror-binary-security

Especificamos los mirrors de repositorios de seguridad utilizar en los casos antes descritos.
Estas opciones son particularmente interesantes si se cuenta con un mirror local, ya que la creación de un live cd consume buena parte de su tiempo en la descarga de paquetes.
6. Funcionamiento en equipos de bajo rendimiento.

En general cualquier live cd podrá funcionar de modo medianamente razonable en un equipo de 256 MB de RAM, debe saber también que su live cd utilizara, siempre que sea posible, cualquier partición del tipo swap que pudiera haber presente en el equipo, aunque no sea el caso si utilizamos un escritorio xfce por ejemplo se lo podrá utilizar en equipos de 128 MB sin mayores inconvenientes, sin embrago para un equipo con apenas 64 MB de RAM que no cuente en el disco rígido con una partición swap utilizable por le live cd no será posible arrancar ningún cd live que cuente con entorno de escritorio.
Esto se debe a que el live intenta ejecutar el entorno de escritorio automáticamente durante el arranque, si esto no fuera así el live podría arrancarse incluso en equipos de solo 48 MB de RAM sin swap (verificado), para lograr que nuestro live con entorno de escritorio pueda iniciar solo en modo texto deberemos hacer un live CD mas personalizado.
7. Personalizar el live.

La personalización del live cd se la puede hacer editando y/o agregando archivos a nuestro directorio config, todas las modificaciones anteriormente descritas pueden hacerse también de este modo editando los archivos correspondientes.
7.1. Agregar paquetes extra.

Para agregar paquetes extra a nuestro live podemos hacerlo de varias formas, una es mediante la opción --pakages a la ejecución de lh_config, por ejemplo:
Código: [Seleccionar]
# lh_config -p gnome-desktop --packages \"mplayer mc\"

Otra forma es crear un archivo de texto, el nombre es irrelevante, con el listado de los paquetes a incluir y agregar tal archivo a ./config/chroot_local-packageslists.

Una tercer forma es agregar los archivos .deb al directorio ./config/chroot_local-packages, estos se instalaran automáticamente durante la creación del iso, esta opción es particularmente útil si se desean agregar paquetes que no están en ningún repositorio.

Una cuarta forma, menos recomendable, es crear el live cd hasta la etapa de chroot y una vez hecho esto instalar los paquetes mediante un chroot en el directorio chroot creado en nuestro directorio de trabaja tras la ejecución de lh_build
Esto seria del siguiente modo:
Código: [Seleccionar]
# lh_config
# lh_bootstrap
# lh_chroot
# lh_chroot_hosts install
# lh_chroot_resolv install
# lh_chroot_proc install

Luego, dentro de un chroot, mediante
Código: [Seleccionar]
# chroot chroot

Instalamos los paquetes que deseamos, una vez hecho esto salimos del chroot con exit y continuamos la creación del iso
Código: [Seleccionar]
# lh_chroot_hosts remove
# lh_chroot_resolv remove
# lh_chroot_proc remove
# lh_binary


Como se puede ya suponer lh_build no hace mas que ejecutar los comandos mencionados anteriormente en el orden adecuado.
7.2. Agregar archivos al live.

--- Requiere edicion ---
7.3. Seleccionar un gestor de arranque.

Por defecto la imagen iso se creara con syslinux como arranque, se puede especificar que se utilice por ejemplo grup editando el parametro LH_BOOTLOADER=\"grub\" en el archivo ./config/binary
7.4. Editar la estructura de directorios del iso y reconstruirlo a partir del binary.

Usted puede, como se vio antes, personalizar su imagen iso a gusto, en realidad lo que esta haciendo es personalizar la estructura de directorios del squashfs, un sistema de archivos contenido en un archivo dentro del live cd y que al momento de utilizarse respaldará en memoria cualquier modificación que usted realice en el.
La estructura de directorios del live cd que usted creará es totalmente diferente, si usted quisiera modificar por ejemplo el menu.lst de su live cd se encontrará con que este archivo no se encuentra en el directorio ./config/chroot/boot/grub, ya que el directorio chroot contiene la estructura de directorios del squash, la estructura de directorios del iso se encuentra, una vez creado este, en el directorio binary, si ingresamos a este nos encontraremos con nuestro archivo /boot/grub/menu.lst.
Si quisiéramos por ejemplo acceder a los archivos que anteriormente agregamos al live en el punto 7.2 tendremos la necesidad de arrancar el live cd ya que estos archivos estarán alojados en el squash.

Dado el caso en que queremos poder acceder a esos archivos simplemente ingresando el cd live en nuestra lectora de cd, entonces deberemos agregarlos a las estructura de directorios del iso y no al squash. Para esto agregaremos tales archivos al directorio binary en la ubicacion que nos parezca conveniente y volvemos a generar el iso a partir de este, en este paso se asume que la generacion del iso ya se ha hecho anteriormente y que resulto de modo correcto. Una vez copiados nuestros archivos ejecutamos:
Código: [Seleccionar]
  # lh_binary_iso --force

Es importante saber que no puede crear enlaces simbolicos sino que debe agregar los archivos al directorio binary.
7.5 Agregar un instalador al live.

El ejemplo anterior nos da la pauta de que podríamos por ejemplo agregar los archivos de un instalador debian a nuestro live cd y, modificando las opciones de arranque de grub, poder seleccionar si arrancar el live cd o arrancar el instalador, esto es posible y realmente sencillo.
Lo primero sera extraer los archivos de la imagen iso de un instalador debian, por ejemplo un instalador netinst, y copiarlos al directorio binary dentro de, por ejemplo, un directorio install creado previamente.
Lo siguiente será ubicar el kernel y el disco ram del instalador, generalmente se encontrarán en ./binary/install/install.386/, y agregar las rutas respectivas junto a una nueva entrada para nuestro grub, esto será editando /binary/boot/grub/menu.lst y agregando, por ejemplo:
Código: [Seleccionar]
  title      Debian GNU/Linux - install i386
  kernel     /live/install/install.386/vmlinuz
  initrd     /live/install/install.386/initrd.gz


Ahora debemos hacer algo mas, cuando se ejecute el instalador nos veremos en el inconveniente que éste espera encontrarse en la raiz del disco, pero en realidad se encuentra en /install, lo que podemos hacer es, o bien copiar los archivos a la raiz del disco, o bien crear enlaces simbólicos en la raiz del disco hacia los directirios que sabemos que el instalador esperaría que se encuantren ahí, estos serán debian, dists y pool
Código: [Seleccionar]
  ln -s ./install/ debian         # En realidad /install/debian es en si un enlace a /install
  ln -s ./install/dists dists
  ln -s ./install/pool pool


Y finalmente creamos nuestra imagen iso a partir del binary modificado
Código: [Seleccionar]
  # lh_binary_iso --force

que es ahora capaz de arrancar tanto un live cd como instalador debian netinst.
7.6. Probando la imagen iso.

Para verificar el correcto funcionamiento de nuestra iso sin necesidad de quemar un cd podemos hacer:
Código: [Seleccionar]
  $ qemu -cdrom binary.iso

Si cuenta con kqemu instalado
Código: [Seleccionar]
  $ gemu -cdrom binaty.iso -kernel-kqemu
7.7. Ejemplo de live cd personalizado

Teniendo en cuenta el inconveniente mostrado en el punto \"Funcionamiento en equipos de bajo rendimiento\" se ejemplifica la creación de un live cd con un escritorio xfce de la rama testing, sin display managger por lo que las x deben iniciarse mediante startx, el cual puede ejecutarse en equipos con memoria RAM limitada y al que se han incluido, entre otros, aplicaciones de uso cotidiano que a mi parecer minimizan el consumo de recursos y herramientas de administración del sistema de modo de facilitar la recuperacion de sistemas dañados. Incluye además un arranque para instalación netinst.

Primero se ejecuta lh_config con las opciones adecuadas:
Código: [Seleccionar]
  lh_config -d lenny --mirror-binary \"http://ftp.debian.org/debian/\"

Se agrega un archivo conteniendo la siguiente lista:
Código: [Seleccionar]
# Entorno y X
menu xfce4 xserver-xorg

# Aplicaciones gráficas
abiword gnumeric mousepad brasero dnsutils file-roller gftp gparted gqview
iceweasel iceweasel-l10n-es-es pidgin xpdf

# Consola
lynx mc mplayer nano python2.5 rdesktop smartmontools sudo

# Otras
dhcp3-client tar gzip zip unzip bzip2 smbfs sshfs libfuse2 ntfs-3g
openssh-client openssh-server smbclient


Al directorio config/chroot_local-packageslists.

Se modifica la linea LH_BOOTLOADER=\"grub\" en el archivo ./config/binary para seleccionar grub como gestor de arranque.

Se crea el iso
Código: [Seleccionar]
  # lh_build

Se modifica la estructura del iso agregando los archivos del instalador netinst dentro del directorio binary/install y los enlaces necesarios mediante:
Citar
  ln -s ./install/ debian
  ln -s ./install/dists dists
  ln -s ./install/pool pool

Se modifica las opciones de arraque del grub, quedando del siguiente modo:
Código: [Seleccionar]
default 0
color cyan/blue white/blue
splashimage /boot/grub/splash.xpm.gz

title Debian GNU/Linux - live
kernel /live/vmlinuz-2.6.24-1-486 boot=live hostname=debianlive union=aufs
initrd /live/initrd.img-2.6.24-1-486

title Debian GNU/Linux - install i386
kernel /install/install.386/vmlinuz
initrd /install/install.386/initrd.gz

title Debian GNU/Linux - expert - install i386
kernel /install/install.386/vmlinuz priority=low
initrd /install/install.386/initrd.gz

title Other:
root

title memtest86+
kernel /live/memtest

Y se crea finalmente el iso de nuestro live cd:
Código: [Seleccionar]
  # lh_binary_iso --force

http://www.esdebian.org/wiki/live-helper