pingüinos comprimidos – El sueño del mono loco
El sueño del mono loco Saliva, cinismo, locura, deseo…

pingüinos comprimidos

¡Por fín! Después de casi tres semanas e innumerables pruebas, he conseguido meter una distribución Linux en un disco USB de 128 MB. Hasta ayer había probado practicamente todas las distribuciones de un par de listas (aquí y aquí) sin conseguir nada, incluida la infalible knoppix en la versión reducida (para usb).

Al final, desanimado, me dí por vencido. Hasta ayer, que encontré un howto memorable, de los que se hacen para todos y que me ha devuelto la sonrisa. Explica cómo llevar a cabo la misión con SLAX, la versión live-cd de Slackware y las instrucciones originales están aquí. Yo, por mi parte, voy a traducirlo al español (con ciertas licencias) y a aportar ciertos detalles.

  1. Necesidades
    • Disco USB de 128 MB
    • SLAX Popcorn
    • syslinux 3.11 o superior. Se puede descargar desde el firefox, una vez hallamos arrancado el live-cd y desde el modo gráfico. En cualquier caso, supondremos que lo hemos dejado en el directorio del root (~root/syslinux-3.11.tar.gz).
  2. El proceso

Primero, debemos bajar la distribución y copiarla a un CD (regrabable si se puede, que hay que ahorrar). En cuanto esté, arrancaremos el equipo desde dicho CD y conectaremos la llave USB.

Primero, preparamos syslinux en el directorio temporal. Abrir un terminal y teclear:

tar xvfz /root/syslinux-3.11.tar.gz -C /tmp

A continuación nos metemos con el disco USB. Preparamos la partición que alberará al sistema, en este caso deberá ser de tipo ext2. Otra vez suponemos que el sistema operativo detecta nuestro disco USB en /dev/sda.

cfdisk /dev/sda

En este punto tenemos que crear una partición primaria, asignarne el tipo 83 (partición Linux), asignarle el flag de arranque (bootable), escribir los datos y salir.

Es el momento de asignar un sistema de ficheros, el ext2, a la recién creada partición /dev/sda1:

mkfs.ext2 /dev/sda1

Montamos nuestro nuevo sistema de ficheros mediante el comando

mount /dev/sda1 /mnt/

y copiamos todo el contenido del CD de SLAX Popcorn al USB. El contenido del CD, antes de ser descomprimido y expandido para formar el live-cd está en el directorio /boot del mismo.

cp -r /boot/* /mnt/

A continuación, lo hacemos arrancable, copiando el contenido del directorio boot del USB al raíz del mismo:

cp /mnt/boot/* /mnt/

El comando nos indicará que el directorio DOS no se puede copiar (cp: omitting directory `/mnt/boot/DOS’) del que hacemos caso omiso. Esta órden sitúa el kernel (vmlinuz) y el fichero initrd(initrd.gz) en el directorio raíz del dispositivo USB.

Para que funcione correctamente el bootsplash de SLAX, debemos editar el fichero splash.cfg (es un fichero binario) y modificarlo. Lo abriremos con:

mcedit /mnt/splash.cfg

y modificaremos la primera línea, borrando únicamente la palabra «boot/» (con la barra y sin comillas). A continuación salvaremos los cambios y salimos (el menú de la parte inferior muestra cómo hacerlo — F2 guarda, F10 sale).

Ahora crearemos el fichero de configuración de extlinux que, una vez ejecutado, permitirá arrancar desde el dispositivo USB:

mcedit /mnt/extlinux.conf

y añadimos lo siguiente (se recomienda encarecidamente el copy+paste):

display splash.cfg
prompt 1
timeout 40
F1 splash.txt
F2 splash.cfg
default slax
label slax
kernel vmlinuz
append root=/dev/ram0 rw initrd=initrd.gz init=linuxrc max_loop=255 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444
label memtest
kernel memtest

Salvamos los cambios y salimos (de nuevo el menú de la parte inferior ayudará).

Finalmente, ejecutamos el comando extlinux para hacer el USB arrancable mediante la configuración anterior. Nótese que la configuración está ligada al seguimiento de las órdenes. Si se cambia una localización o se añade un directorio intermedio, habría que modificar la configuración del extlinux.

cd /tmp/syslinux-3.11/extlinux/
./extlinux /mnt/

Desmontamos el dispositivo y reiniciamos:

cd
umount /mnt
shutdown -r now

Ahora, si hemos habilitado el arranque para dispositivos USB en la BIOS del equipo, debería mostrarse el bootsplash de SLAX.

Puede suceder que nos de un error relaccionado con el Master Boot Record (MBR) durante el proceso de arranque, parecido a éste:

MBR
Boot error

En ese caso, hay que volver a arrancar desde el CD-ROM y, haciendo uso de syslinux, ejecutar lo siguiente.

cat /tmp/syslinux-3.11/mbr.bin > /dev/sda
cat /tmp/syslinux-3.11/mbr.bin > /dev/sda1

Este error suele darse si, como yo, tratas de instalar una distribución en el disco USB e instalas GRUB, syslinux y lilo un número indeterminado de veces. Se soluciona restaurando un MBR en blanco, que es la operación que se realiza mediante el comando anterior.

Basado en el trabajo de flux.

Actualización (23/08/2006)

Según este documento de la propia página de slax, no es necesario ejecutar todo este documento y bastaría con ejecutar dos órdenes desde el CDRom de Slax:

cd /boot/
./make_disk.sh /dev/sda1 # si el disco USB está en sda

También he actualizado el link a la imagen ISO, que estaba roto.

5 ideas sobre “pingüinos comprimidos”

Los comentarios están cerrados.