Live-helper es una herramienta que facilita la creación de un CD live de Debian. Los CDs live cargan un Sistema Operativo en la RAM del ordenador, por lo que ningún cambio realizado en el mismo será guardado para la próxima vez que sea cargado pero puede ser de gran ayuda a la hora de reparar algo de nuestro SO. En este tutorial intentaré mostraros como crear un CD live tanto genérico como personalizado y como portarlo a un USB (personalmente los prefiero en USB xP).
Requisitos
– Tener Debian instalado (aunque quizá se pueda con un Debian Live CD XD)
– Linux Kernel 2.6.x
– Conexión a internet (aunque esto puede ser omitible si tenemos los paquetes de los programas a instalar a mano).
– Acceso a Root
Instalación
Para hacer funcionar el Live-helper tan solo se requieren de forma necesaria los paquetes live-helper y debootstrap, el resto de paquetes como syslinux, memtest86+ y squashfs-tools, de entre otros, se instalarán automáticamente durante el proceso cuando el Live-helper deba hacer uso de ellos y, posteriormente, serán borrados. De todos modos aquí tenéis una lista de las dependencias y programas sugeridos y recomendados. Para una instalación normal, loguear como root y teclear:
# aptitude install live-helper
Uso del Live-helper
Su uso básico es bastante sencillo: tan solo hemos de crear una carpeta (para tenerlo todos los elementos ordenador), y ejecutar el comando lh_config seguido de sus argumentos (esto puede hacerse como usuario normal y recomiendo que se haga como user normal, luego explico por qué xD). Esto creará una carpeta llamada config con diversas carpetas dentro así como archivos de configuración (que tendrán algunos de sus tags diferentes si es que se han especificado en los argumentos del lh_config). Una vez realizada toda la configuración, logeamos como root y tecleamos lh_build, a partir de aquí el script se encargará de descargar los paquetes elegidos, montar el sistema de archivos y crear una imagen ISO del live, todo de forma automática. A continuación nombraré los comandos que suelo usar, aunque haciendo un lh_config –help te saldrá el listado entero.
-a # Arquitectura (i386, amd64…)
-b # Tipo de binario (iso, usb…)
-d # Distribución (lenny, squeeze, sid…)
-l # Lenguaje (es, en…)
–mirror-binary “http://ftp.fr.debian.org/debian/” # Mirror del cual se obtienen los paquetes, yo dejaría éste y los 2 siguientes iguales
–mirror-bootstrap “http://ftp.fr.debian.org/debian/”
–mirror-chroot “http://ftp.fr.debian.org/debian/”
–categories # Categorías de los paquetes (main, contrib, non-free…)
–packages # Todos los paquetes que queramos instalar
–bootappend-live “locale=es_ES bootkbd=es console-setup/layoutcode=es” # Esta es la línea mágica que añade argumentos a la hora de bootear el live para que tengamos el teclado en español. Me costó sudores conseguir tener el teclado en la distribución “es” XD
–debian-installer # Por si queremos incluir un instalador (businesscard, netinst…)
–debian-installer-distribution # Para que instale la distribución de Debian que elijamos (Tengo un Live creado con “sid” elegido en esta opción, pendiente de instalar a ver si es verdad que instala Sid directamente)
–binary-filesystem # Formato del binario (fat16, fat32…)
–bootstrap-flavour minimal –linux-flavours 486 # Omite el resto de variaciones del kernel para ahorrar espacio. Se recomienda usar “486″ para lograr una buena compatibilidad con todo tipo de PCs
–apt # Para elegir entre apt-get (”apt”) o aptitude (”aptitude”) como nuestro gestor de apquetes en el live
–binary-indices disabled # Reduce en unos 6MB la imagen resultante
–memtest # Para elegir entre memtest86+ (”memtest86+”), memtest86 (”memtest86″) o desactivarlo (”disabled”) para ahorrar unos 100KB de imagen
–apt-recommends disabled # Omite dependencias sugeridas y recomendadas
–win32-loader disabled # Omite meter un “algo” que se puede ejecutar desde Windows, nunca lo he usado pero pienso que es omitible
–bootloader # Usa Syslinux (”syslinux”), GRUB (”grub”), Yaboot (”yaboot” para bootear. Por defecto, Syslinux
Si vuelves a ejecutar el comando lh_config se sobreescribirán aquellos tags que hayas vuelto a declarar. A continuación, un ejemplo de cómo hacer un LiveCD con solo dos comandos (o 3 ):
$ lh_config -a i386 -b iso -d sid -l es --mirror-binary "http://ftp.fr.debian.org/debian/" --mirror-bootstrap "http://ftp.fr.debian.org/debian/" --mirror-chroot "http://ftp.fr.debian.org/debian/" --categories "main contrib non-free" --packages "Interte_paquetes_aquí" --bootappend-live "locale=es_ES bootkbd=es console-setup/layoutcode=es" --debian-installer businesscard --debian-installer-distribution sid --binary-filesystem fat32 --bootstrap-flavour minimal --apt aptitude --linux-flavours 486 --binary-indices disabled --memtest memtest86+ --apt-recommends disabled --win32-loader disabled --bootloader syslinux
# export LH_BOOTSTRAP_EXCLUDE="$LH_BOOTSTRAP_EXCLUDE paquete1,paquete2,paquete3" # Excluye paquetes de la instalación
# lh_build
La verdad es que más que un uso intuitivo… diría que no tienes que hacer absolutamente nada, solo elegir paquetes para instalar XD. Si en paquetes ponemos simplemente “gnome-desktop”, “kde-desktop” o “xfce-desktop”, nos instalará la suit básica de ese entorno. Por defecto se instalará Xorg como sistema de ventanas X, con un metapaquete de controladores para asegurar su funcionamiento con gran cantidad de gráficas.
Cómo configurar más aun el Live
Añadir paquetes y archivos al Live
Para muchos, quizá el uso de únicamente las 2~3 líneas anteriormente citadas se quede corto, ya sea porque quiere incluir paquetes en su binario que no se encuentren en el mirror elegido o porque quiere incluir una serie de archivos en el Live. Pues bien, tampoco es mucho más complicado hacer eso: en la carpeta “config” que se crea después de usar el comando lh_config tenemos chroot_local-includes y chroot_local-packages. La primera carpeta sirve para incluir archivos, y éstos deben tener el mismo directorio dentro de la carpeta que el que queramos tener en la build, es decir: el usuario del live, por defecto, se llama “user”, si queremos incluir archivos en su “home” tan solo hemos de crear la carpeta “home” en “chroot_local-includes”, dentro la carpeta “user” y dentro de “user” los archivos que queramos incluir. De modo que quedaría así:
- Carpeta del Live
- + config
- -+ chroot_local-includes
- –+ home
- —+ user
- —-+ Archivo 1
- —-+ Archivo 2
- —-+ Archivo 3
En la carpeta chroot_local-packages tan solo hay que meter los paquetes *.deb que queremos que se instalen teniendo en cuenta que hemos de incluir las dependencias a la hora de designar los paquetes a instalar. Aprovechando la función de la carpeta chroot_local-includes, suelo utilizar IceWM como gestor de ventanas ya que se configura a base de editar archivos de texto, así tengo un problema menos [fumando] . Si el comando lh_config lo ha ejecutado el root, solo él puede escribir archivos en esas carpetas.
Editar el Live antes de crear el binario
Probablemente, esto a muchos también se les quede corto porque por un motivo u otro no pueden configurar algo con solo meter paquetes y archivos, así que a continuación paso a explicar cómo instalar módulos al Kernel, por ejemplo:
Antes de nada, usamos lh_config con nuestra configuración y metemos los archivos y paquetes que deseemos incluir en sus carpetas correspondientes.
Luego, en vez de hacer lh_build, usaremos una serie de comandos que están comprendidos dentro del proceso de lh_build, de este modo podemos detener el proceso “a medias” y toquetear cosillas.
# lh_chroot_hosts remove && lh_chroot_resolv remove && lh_chroot_proc remove && lh_binary # Esto es la primera mitad del proceso de lh_buil
A partir de este momento, en nuestra carpeta config se crearán otras como “cache” y “chroot”. En “cache” se meterán todos los paquetes descargados y “chroot” será nuestro Live pero usando carpetas como si se tratase de un SO normal. Si hacemos un chroot a la carpeta “chroot” estaremos “logueados” como el usuario root de nuestro live, podiendo instalar paquetes, desinstalarlos, modificar archivos, etc
# chroot chroot # Pasamos a ser root utlizando "/" como esa carepta
~# aptitude install module-assistant wireless-tools ndiswrapper-common ndiswrapper-utils-1.9 ndiswrapper-source
~# m-a --kvers-list 2.6.x-x-486 prepare # No olviéis señalar el Kernel que use vuestro live, o instalará el módulo en el Live para el Kernel de vuestro SO, supongo que un "--kvers-list $(uname -r)" también funcionará, pero no lo he probado.
~# m-a a-i --kvers-list 2.6.x-x-486 ndiswrapper
~# echo ndiswrapper >> /etc/modules
~# exit
Mucho cuidado con esto, porque como os equivoquéis haciendo el chroot o algo podéis hacer mucha pupa a vuestro SO creyendo que estáis tocando el Live [mad]. Ahora introducimos el resto del script para que nos monte el binario
# lh_chroot_hosts remove && lh_chroot_resolv remove && lh_chroot_proc remove && lh_binary
Y listo, nos creará una imagen ISO (si es que hemos elegido “iso” como tipo de imagen de binario, si elegimos USB será *.img) que podremos grabar tranquilamente en un CD y provarla en nuestro PC o directamente usar una Máquina Virtual
Reducir tamaño del Live
Este mismo procedimiento de usar chroot para manipular el Live antes de ser empaquetado en un binario, también tiene otras utilidades como, por ejemplo, eliminar archivos innecesarios para que ocupe menos. Los métodos que suelo usar son utilizar deborphan para eliminar programas innecesarios* y localepurge para eliminar las locales que no vayamos a utilizar (puede ahorrar unos 60MB). El procedimiento es parecido al anterior, empezamos usando el comando chroot
# chroot chroot
~# aptitude install deborphan localepurge # Tras instalar "localepurge", nos aparecerá un asistente para seleccionar las locales que deseamos guardar. Recomiendo seleccionar "es" y todas las "es_ES", aunque también se pueden elegir "en" y todas las "en_US" para evitar posibles problemas. Se elige pulsando la barra espaciadora y se salta al OK con tabulador.
~# localepurge # Automáticamente se pone a limpiar las locales. Si nos hemos equivocado al seleccionarlas, hacemos un "dpkg-reconfigure localepurge" para volver a elegirlas.
~# deborphan --guess-all # Mostrará los paquetes que pueden ser borrados sin "problemas" (Mentira, quería borrarme el módulo del kernel de ndiswrapper xD). Si os salen muchas y soy muy vagos para hacer un "aptitude purge" a todas, podéis hacer un "for i in $(deborphan --guess-all); do apt-get remove $i; done"
~# aptitude purge deborphan localepurge # Recomiendo usar purge para no dejar "ni rastro" xP
~# aptitude clean
~# aptitude purge aptitude # Esto no lo he probado, pero si no queremos hacer nuestro Live compatible con internet puede ser una opción xD
Modificar el Live una vez creado
Es posible que una vez creado el binario lo testeemos y comprobemos que algo ha fallado o no ha salido como queríamos o que se nos ha olvidado incluir/borrar algún paquete. Hay varias opciones en el lh_clean para limpiar el directorio del live:
# lh_clean # Borra todo menos la caché y config. La carpeta "config" conserva su configuración y la carpeta "cache" conserva los paquetes descargados. Bastante útil para ahorrar tiempo volviendo a descargarlo todo.
# lh_clean --binary # Borra solo el binario. La carpeta "chroot" se mantiene y podemos seguir trasteando con ella para montar un nuevo binario.
# lh_clean --all # Borra todo menos la carpeta "config", que sigue manteniendo su configuración.
Testear el Live
Para probar el live recomiendo usar QEMU (con KQEMU si se tiene procesador de doble núcleo o más) o KVM. Yo personalmente uso KVM que también tiene opción para usar doble núclero y la verdad es que no tengo queja alguna de él . Usarlo es tan sencillo como…
# aptitude install kvm
# adduser tu_user kvm # Para que nuestro usuario pueda usar KVM con opción de aprovechar el doble núcleo.
# reboot # Hay que reiniciar para que el cambio sobre el usuario tenga efecto
$ kvm -cdrom binary.iso # Si el binario es una ISO
$ kvm -hda binary.img # Si el binario ha sido creado para USB
En QEMU los tags son idénticos, se cambia kvm por qemu y “et voilà!”, pero si se quiere aprovechar el doble núcleo, y se tiene el módulo del Kernel de KQEMU, hay que añadir el tag “-kernel-kqemu”
Instalación del Live en un CD o USB
Si es una imagen ISO usar nuestro grabador favorito o growisofs, incluido en el paquete dvd+rw-tools.
$growisofs -Z /dev/cdrom=binary.iso -speed=16 # Para CD
$growisofs -dvd-compat -Z /dev/dvd=binary.iso -speed=4 # Para DVD
Si es una imagen para USB
# dd if=binary.img of=/dev/XXX
# Donde "XXX" es el identificado del dispositivo sin número de partición
Personalmente no me gusta mucho ese método y lo que suelo hacer es crear el Live en formato ISO. Nada más se crea el binary, ya sea ISO o IMG, en la misma carpeta también se encuentra la carpeta “binary” que contiene los archivos de la ISO. Entro dentro de la carpeta, renombro “isolinux” a “syslinux”. Abro exithelp.cfg, stdmenu.cfg e isolinux.cfg y renombro todas las referencias (1 en cada uno xD) a la carpeta “isolinux” por “syslinux”. Luego renombro isolinux.cfg a syslinux.cfg. Después, esto ya es opcional, abro el live.cfg y añado una entrada (copia de la primera) añadiendo el tag “single” al “append”, para que no cargue las X (porque tengo un PC en casa en el que nunca he conseguido hacer funcionar las X a la primera, y es reacio a Lives xD). También edito el nuevo syslinux.cfg y cambio el “timeout” a 90, porque tengo un teclado inalámbrico que no funciona en la ventana del Syslinux y no puedo ni elegir opción ni darle a INTRO . Por último copio todo el interior de la carpeta “binary” al root del USB, lo desmonto y hago un:
# syslinux /dev/XXXy # Con el identificador del USB y la partición, que suele ser 1
Fuente:
Live-helper en la Wiki de EsDebian
Página oficial del proyecto Live-helper
Espero que les sirva esta información a todos los que la necesiten, para hacer su podria distro, cojiendo como padre a Debian.
Excelente post, manos a la obra.Thanks.
Justo lo que andaba buscando hace dias.
Ahora podré hacer mi Live USB Debian.