Cómo crear tu propia ISO Live basada en Debian (Trixie) paso a paso


¿Quieres tu propia distro “TomasOS” lista para instalar y usar en live? En esta guía fabricamos una ISO live híbrida (BIOS/UEFI) con XFCE, idioma español, zona horaria de Madrid, firmware no libre (wifi/gráficas), y utilidades básicas. Todo con live-build (la herramienta oficial de Debian).

Requisitos

  • Host: Debian/Ubuntu/Linux Mint (amd64).
  • Espacio libre: ≥ 10 GB.
  • Conexión a Internet.
  • Terminal con sudo.

1) Instalar herramientas

sudo apt update
sudo apt install -y live-build xorriso squashfs-tools git wget curl

2) Crear la estructura del proyecto

mkdir -p ~/tomasos && cd ~/tomasos
mkdir -p auto config/package-lists config/hooks config/includes.chroot

3) Configurar live-build (¡evita recursión con noauto!)

Importante: lb config ejecuta auto/config. Si dentro de auto/config llamas a lb config sin noauto, entras en bucle. Usa lb config noauto.

cat > auto/config <<'EOF'
#!/bin/sh
set -e
lb config noauto \
  --distribution trixie \
  --architectures amd64 \
  --binary-images iso-hybrid \
  --archive-areas "main contrib non-free non-free-firmware" \
  --apt-recommends true \
  --debian-installer live \
  --mirror-bootstrap http://deb.debian.org/debian/ \
  --mirror-chroot-security http://security.debian.org/debian-security \
  --mode debian \
  --bootappend-live "boot=live components quiet splash locales=es_ES.UTF-8 keyboard-layouts=es timezone=Europe/Madrid username=tomas user-fullname='Tomas GD' hostname=TomasOS"
EOF
chmod +x auto/config

4) Elegir escritorio y paquetes

Escritorio XFCE y utilidades

cat > config/package-lists/desktop.list.chroot <<'EOF'
task-xfce-desktop
lightdm lightdm-gtk-greeter
network-manager network-manager-gnome
pulseaudio pavucontrol
xfce4-goodies
EOF

Aplicaciones básicas (sin neofetch → usa fastfetch)

cat > config/package-lists/apps.list.chroot <<'EOF'
sudo vim git htop fastfetch gparted gnome-disk-utility
xfce4-terminal thunar-archive-plugin zip unzip p7zip-full
vlc firefox-esr curl wget
EOF

Firmware habitual

cat > config/package-lists/firmware.list.chroot <<'EOF'
firmware-misc-nonfree
firmware-iwlwifi
firmware-realtek
firmware-amd-graphics
intel-microcode
amd64-microcode
EOF

5) Idioma y zona horaria dentro del live (hook chroot)

cat > config/hooks/010-locales-timezone.chroot <<'EOF'
#!/bin/bash
set -e
echo "es_ES.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
update-locale LANG=es_ES.UTF-8
ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
EOF
chmod +x config/hooks/010-locales-timezone.chroot

6) Autologin del usuario tomas (opcional)

mkdir -p config/includes.chroot/etc/lightdm/lightdm.conf.d
cat > config/includes.chroot/etc/lightdm/lightdm.conf.d/50-autologin.conf <<'EOF'
[Seat:*]
autologin-user=tomas
autologin-user-timeout=0
EOF

7) Construir la ISO

sudo lb clean --purge       # limpieza total por si ya hiciste pruebas
./auto/config               # aplica la configuración
sudo lb build | tee build.log

Al terminar verás Build completed successfully y tendrás live-image-amd64.hybrid.iso en el directorio.

Verificación rápida:

ls -lh live-image-amd64.hybrid.iso
sha256sum live-image-amd64.hybrid.iso

8) Probar la ISO con QEMU/KVM

8.1 Instalar QEMU/KVM en Debian/Ubuntu/Mint

sudo apt update
sudo apt install -y qemu-kvm qemu-utils virt-manager libvirt-daemon-system bridge-utils ovmf cpu-checker
sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt,kvm "$USER"

Cargar módulos (según CPU):

sudo modprobe kvm
sudo modprobe kvm_intel || sudo modprobe kvm_amd
ls -l /dev/kvm || echo "No hay /dev/kvm (revisa BIOS/UEFI VT-x/AMD-V o Secure Boot)"
kvm-ok || true

Si estás dentro de una VM (VirtualBox, etc.), KVM suele no estar disponible:

systemd-detect-virt

8.2 Arrancar (con KVM si está disponible)

Solo live:

qemu-system-x86_64 -enable-kvm -m 4096 -smp 2 -cdrom live-image-amd64.hybrid.iso

Con disco virtual para instalar dentro de la VM:

qemu-img create -f qcow2 TomasOS.qcow2 20G
qemu-system-x86_64 -enable-kvm -m 4096 -smp 2 \
  -drive file=TomasOS.qcow2,if=virtio \
  -cdrom live-image-amd64.hybrid.iso -boot d -nic user,model=virtio

8.3 ¿No tienes /dev/kvm? Ejecuta sin KVM (más lento, pero funciona)

qemu-system-x86_64 -m 4096 -smp 2 -cdrom live-image-amd64.hybrid.iso

9) Probar la ISO con VirtualBox

GUI (lo más simple):

  1. Crear VM Linux 64-bit, 4 GB RAM, 2 vCPU.
  2. (Opcional) Activar EFI.
  3. En Almacenamiento, montar live-image-amd64.hybrid.iso como unidad óptica.
  4. Iniciar.

CLI (VBoxManage):

VM_NAME="TomasOS"
ISO="$HOME/tomasos/live-image-amd64.hybrid.iso"

VBoxManage createvm --name "$VM_NAME" --register
VBoxManage modifyvm "$VM_NAME" --memory 4096 --cpus 2 --vram 128 --ioapic on --graphicscontroller vmsvga --nic1 nat
# EFI opcional:
# VBoxManage modifyvm "$VM_NAME" --firmware efi

VBoxManage createmedium disk --filename "$HOME/VirtualBox VMs/$VM_NAME/$VM_NAME.vdi" --size 20000
VBoxManage storagectl "$VM_NAME" --name "SATA" --add sata --controller IntelAhci
VBoxManage storageattach "$VM_NAME" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "$HOME/VirtualBox VMs/$VM_NAME/$VM_NAME.vdi"
VBoxManage storagectl "$VM_NAME" --name "IDE" --add ide
VBoxManage storageattach "$VM_NAME" --storagectl "IDE" --port 1 --device 0 --type dvddrive --medium "$ISO"
VBoxManage startvm "$VM_NAME" --type gui

Nested virtualization en VirtualBox (para intentar KVM dentro de una VM): en el host, con la VM apagada:

VBoxManage modifyvm "NombreDeTuVM" --nested-hw-virt on

Aun así, lo más práctico es arrancar la ISO directamente en VirtualBox, o usar QEMU sin KVM.


10) Grabar la ISO en USB (modo live)

⚠️ Sustituye /dev/sdX por tu USB (no pongas partición tipo /dev/sdX1).

sudo dd if=live-image-amd64.hybrid.iso of=/dev/sdX bs=4M status=progress conv=fsync

Persistencia en el USB (opcional)

# Deja espacio libre al final o crea una partición nueva para persistencia:
sudo parted /dev/sdX --script mkpart persistence ext4 100
sudo mkfs.ext4 -L persistence /dev/sdX3   # ajusta el número de partición
sudo mkdir -p /mnt/persist && sudo mount /dev/sdX3 /mnt/persist
echo "/ union" | sudo tee /mnt/persist/persistence.conf
sudo umount /mnt/persist

En el menú de arranque del live, elige la opción con persistence (o añade el parámetro persistence).


11) Variantes y personalización

Cambiar de escritorio (KDE/Plasma o GNOME)

# KDE Plasma
printf "task-kde-desktop\nsddm\n" | tee config/package-lists/desktop.list.chroot

# GNOME
printf "task-gnome-desktop\ngdm3\n" | tee config/package-lists/desktop.list.chroot

Repos backports dentro del live

mkdir -p config/archives
cat > config/archives/backports.list.chroot <<'EOF'
deb http://deb.debian.org/debian trixie-backports main contrib non-free non-free-firmware
EOF

Fondo de pantalla y branding (ejemplo)

mkdir -p config/includes.chroot/usr/share/backgrounds
cp ~/Imagenes/mi_fondo.png config/includes.chroot/usr/share/backgrounds/tomasos.png

(Después, puedes ajustar el fondo por defecto con un pequeño script en config/hooks que copie/edite el dconf/xfconf.)


12) Limpieza y reconstrucción

sudo lb clean --purge   # borra cachés y artefactos
./auto/config
sudo lb build | tee -a build.log

13) Errores frecuentes y solución rápida

  • tr: Argument list too long / bucle en auto/config:
    Tu auto/config llamaba lb config sin noauto. Solución: usar lb config noauto, limpiar (sudo lb clean --purge) y reconstruir.
  • E: Unable to locate package neofetch:
    En Trixie, neofetch ya no está. Sustituye por fastfetch.
    Ejemplo: sed -ri 's/\bneofetch\b/fastfetch/g' config/package-lists/apps.list.chroot
  • Could not access KVM kernel module:
    No hay /dev/kvm. O bien ejecutas QEMU sin -enable-kvm, o habilitas VT-x/AMD-V en BIOS/UEFI y cargas kvm_intel/kvm_amd.
    Si estás en una VM de VirtualBox, usa VirtualBox para arrancar la ISO, o activa nested en el host (rendimiento limitado).
  • Faltan firmware o wifi no funciona:
    Asegúrate de tener non-free-firmware en --archive-areas y añade los paquetes de firmware que necesites (vista en el paso 4).

14) ¿Y ahora qué?

  • Añade Calamares o personaliza el instalador (opcional).
  • Crea metapaquetes propios, scripts de postinstalación y tu branding.
  • Publica la ISO con checksums y notas de versión.

Conclusión

Con live-build tienes control total para fabricar tu distro basada en Debian de forma limpia y reproducible. Este flujo (listas de paquetes, hooks y includes) te permite iterar rápido, mantener la ISO y añadir tus mejoras cuando quieras.

¿Quieres que lo empaquete en un repo Git con README y script build.sh para automatizarlo aún más? Te lo dejo listo para clonar.

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

¿Atascado con tu proyecto? Presupuesto GRATIS

X
error: Content is protected !!
Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad