› Foros › PC › Software libre
Está siendo trasladado a Crear un Live CD de Debian con live-helper
# aptitude install live-helper
-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"
--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
$ 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
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 . Si el comando lh_config lo ha ejecutado el root, solo él puede escribir archivos en esas carpetas.
- Carpeta del Live
- + config
- -+ chroot_local-includes
- --+ home
- ---+ user
- ----+ Archivo 1
- ----+ Archivo 2
- ----+ Archivo 3
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 . 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
# 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
# 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.
# 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
$growisofs -Z /dev/cdrom=binary.iso -speed=16 # Para CD
$growisofs -dvd-compat -Z /dev/dvd=binary.iso -speed=4 # Para DVD
# dd if=binary.img of=/dev/XXX # Donde "XXX" es el identificado del dispositivo sin número de partición
# syslinux /dev/XXXy # Con el identificador del USB y la partición, que suele ser 1
blackgem escribió:De todas formas esto queda aun muy avanzado para mi hasta que le dedique al menos 1 o 2 horas de lectura para entender el sistema y hacer alguna practica, pero asi ya me he hecho una vision general que anima a uno a hacerlo uno mismo ^^. Tal vez para Debian 6.0
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 "paquete1 paquete2 paquete3" --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
blackgem escribió:P.D.: ¿carpeta "chroot_local-paclages"?, ¿por logica no seria "chroot_local-packages"?, cosa mas rara :S
#!/bin/bash
# Copyright 2007 Franklin Piat ; License GPL + LGPL ; Modified by Kaitos
# Configuramos las opciones
ARQUITECTURA="i386" # Para mayor compatibilidad, dejar por default
KERNELIMAGE="486" # Para mayor compatibilidad, dejar por default
BINARIO="iso" # iso, net, tar, usb-hdd
BINARIOFS="fat32" # fat16, fat32
DISTRIBUCION="sid" # lenny, squeeze, sid
IDIOMA="es"
AUTOR="Debian live-helper"
BOOTLOADER="syslinux" # grub, syslinux, yaboot
TIMEOUT="9"
BOOTAPPEND="locale=es_ES bootkbd=es console-setup/layoutcode=es"
MIRROR="http://ftp.fr.debian.org/debian/"
MIRRORSEC="http://security.eu.debian.org/"
CATEGORIAS="main contrib non-free"
PAQUETES="gdm xfce4"
APT="apt" # apt, aptitude
RECOMENDADOS="disabled" # enabled, disabled
MEMTEST="memtest86+" # memtest86+, memtest86, disabled
INSTDEBIAN="businesscard" # enabled, cdrom, netinst, netboot, businesscard, live, disabled
DISTINSTALLER="sid" # lenny, squeeze, sid
OTROS="--bootstrap-flavour minimal --packages-lists minimal --win32-loader disabled --binary-indices disabled"
# Configuramos el Live-Helper
lh_config -a $ARQUITECTURA --linux-flavours $KERNELIMAGE -b $BINARIO --binary-filesystem $BINARIOFS -d $DISTRIBUCION -l $IDIOMA --bootloader $BOOTLOADER --syslinux-timeout $TIMEOUT --bootappend-live "$BOOTAPPEND" --mirror-binary $MIRROR --mirror-bootstrap $MIRROR --mirror-chroot $MIRROR --mirror-chroot-security $MIRRORSEC --mirror-binary-security $MIRRORSEC --categories "$CATEGORIAS" --packages "$PAQUETES" --apt $APT --apt-recommends $RECOMENDADOS --memtest $MEMTEST --debian-installer $INSTDEBIAN --debian-installer-distribution $DISTINSTALLER --iso-preparer "$AUTOR" --iso-publisher "$AUTOR" $OTROS
# Meter archivos y paquetes
if [[ $1 == '-deldir' ]]; then rm -Rf config/chroot_local-includes/*; fi
mkdir -m 777 Base
mkdir -m 777 Paquetes
echo "Mete los directorios del Live en la carpeta Base y los paquetes en Paquetes."
read -p "Pulsa INTRO para continuar."
cp -Rf Base/* config/chroot_local-includes
cp -Rf Paquetes/* config/chroot_local-packages
# Scripts CHROOT
# Script de limpieza de locales y paquetes huérfanos (el script se detendrá cada vez que intente borrar algo)
cat <<CHROOTLOCALHOOKS01 > config/chroot_local-hooks/script-01.sh
#!/bin/sh
# Remover locales y dependencias huérfanas
apt-get install localepurge deborphan -y
cat <<LOCALENOPURGE > /etc/locale.nopurge
MANDELETE
DONTBOTHERNEWLOCALE
SHOWFREEDSPACE
#en
#en_US
#en_US.ISO-8859-15
#en_US.UTF-8
es
es_ES
es_ES@euro
es_ES.UTF-8
LOCALENOPURGE
localepurge
echo locales hold | dpkg --set-selections
for i in $(deborphan --guess-all); do apt-get remove --purge $i; done #Añadir "-y" para que no pregunte
apt-get remove --purge localepurge deborphan dselect -y
apt-get autoremove
apt-get clean
CHROOTLOCALHOOKS01
chmod +x "config/chroot_local-hooks/script-01.sh"
cat <<CHROOTLOCALHOOKS02 > config/chroot_local-hooks/script-02.sh
#!/bin/sh
# Borramos módulos del Kernel no útiles
#rm -Rf /lib/modules/*/kernel/drivers/isdn
#rm -Rf /lib/modules/*/kernel/drivers/media
#rm -Rf /lib/modules/*/kernel/drivers/net/wireless
CHROOTLOCALHOOKS02
chmod +x "config/chroot_local-hooks/script-02.sh"
cat <<CHROOTLOCALHOOKS03 > config/chroot_local-hooks/script-03.sh
#!/bin/sh
# Realizamos cambios en el sistema de archivos. Unos ejemplos:
# rm -Rf /var/cache/apt/*
# rm -Rf /usr/share/man/*
# echo "alias montar='bash /sbin/diskmounter.sh -w'" >> /root/.bashrc && echo "alias ls='ls --color=auto'" >> /root/.bashrc && echo "alias dir='dir --color=auto'" >> /root/.bashrc && echo "alias xterm='xterm -fn 8x16'" >> /root/.bashrc
CHROOTLOCALHOOKS03
chmod +x "config/chroot_local-hooks/script-03.sh"
# Excluimos paquetes del Live
#export LH_BOOTSTRAP_EXCLUDE="wget,vim-tiny,ed"
# Remover carpeta /boot del Live (se crea sola al inicio)
export MKSQUASHFS_OPTIONS="-e boot"
# Da comienzo el proceso de cosntrucción. "nice ionice -c2" es para que no chupe mucha CPU
nice ionice -c2 lh_build --debug
Snakefd99cb escribió:Está bien redactado, pero una cosa por si no lo sabías, los lh-config los abres y creas uno propio con los paquetes que quieres, resolviendo el todo.
Snakefd99cb escribió:Si no te sabe mal, explicare unos pequeños trucos más.
Kaitos escribió:Snakefd99cb escribió:Está bien redactado, pero una cosa por si no lo sabías, los lh-config los abres y creas uno propio con los paquetes que quieres, resolviendo el todo.
¿Te refieres a crear tu lista de paquetes en /usr/share/live-helper/lists y elegirlas con el tag "--packages-lists nombre_de_la_lista"? o,oSnakefd99cb escribió:Si no te sabe mal, explicare unos pequeños trucos más.
Claro que no me sabe mal, es más, seguro que aun hay muchas pequeñas opciones que son curiosas y aun no las he descubierto xD. Adelante con esos trucos
Saludos!
PD: Siento haber tardado en contestar, voy un poco de cabeza con los deberes de vacaciones y preparándome para las recuperaciones de septiembre . En acabar todo eso, completo un poco más el tuto y lo porto a la Wiki
Kaitos escribió:Estoy migrando el Tuto a la Wiki de EOL para que cualquiera pueda contribuir editándolo . Entre hoy y mañana (más mañana que hoy ) a ver si lo tengo terminado, porque también quiero testear la versión 2 del LH.
PS1 escribió:Tambien se puede hacer en Ubuntu (El paquete esta Hardy hasta Lucid)
http://packages.ubuntu.com/search?lang=es&searchon=names&keywords=live-helper
¿Digo yo q en cualquier distribucion basada en Debian se puede hacer no?
JanKusanagi escribió:Por cierto, del LH 2 no esperes mucho... externamente es casi igual. bueno, ahora es siempre el ejecutable "lh" con "config", "build" y demas como parametros, pero basicamente no creo que notes mucho