¡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.
- 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).
- 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”
Hola Diego.
Estupendo artículo, pero ya sabes que a mi me gusta trabajar poco ;). Así que antes de intentar tu método, encontré un articulillo en internet (lo siento, no me acuerdo dónde) explicando cómo hacerlo con otra distribución (Feather, basada en Knoppix y con una pequeña versión preparada para pendrive). La distribución que utilicé cabe perfectamente en un pendrive de 128 Mb y utiliza Fluxbox como gestor de ventanas.
Tuve suerte y me ha funcionado a la primera sin tantos pasos. Eso si, no dispongo de sistema de ficheros linux. Utilizo el vfat que ya venía en el pendrive de 128 Mb que tenía estropeado (es verdad, conseguí arreglarlo simplemente con un fsck :D).
De modo que me puse manos a la obra. Conseguí en poco tiempo un escritorio linux arrancable desde un pendrive de 128 Mb haciendo lo siguiente:
1. Descargarme la distribución Feather para dispositivos usb (ftp://ftp.berlios.de/pub/featherlinux/feather-0.7.4-usb.zip).
2. Instalar syslinux (no lo tenía instalado). La versión disponible en kubuntu es la 2.11.
# sudo aptitude install syslinux
3. Limpiar la partición del pendrive usb.
# sudo rm -r /media/sdb1/*
4. Descomprimir la distribución en el pendrive
# cd /media/sdb1
# unzip -x /path/to/feather-0.7.4-usb.zip
5. Desmontar el pendrive
# sudo umount /media/sdb1
6. Utilizar syslinux para instalar el arranque en el pendrive.
# syslinux /dev/sdb1
Y ya está, al reiniciar el portátil y arrancar desde el pendrive ya tenemos el linux en marcha :).
Un saludo,
bebé
Hola ¿bebé? 😉
como puse al principio del artículo, estuve un mes intentando instalar una distro en 128 megas y, para ello, usé de todo. Feather Linux, Damn Linux, knoppix, slackware, debian netinstall, etc…
En barrapunto hay un hilo en que se listan una gran cantidad de live-cds y distribuciones y te puedo decir que, si cabía la más mínima posibilidad de meterlas en 128 megas, lo probé.
En concreto, Feather Linux (la primera distro que probé; tiene fama) me daba problemas con el arranque y traté de usar syslinux (por defecto) y grub, sin éxito ninguno. Al cabo de un tiempo ví que habían actualizado la versión y estuve tentado de intentarlo pero, de pronto, me sentí terriblemente cansado y desistí.
En fin, ¡felicidades! Me alegra ver que no soy el único que tiene estos intereses en Emerita Augusta ;).
PD Tu apodo quedará entre nosotros 😛
Si esta forma te parece muy complicada o no te ha funcionado, todo puede pasar, prueba en esta dirección.»http://espada.blogia.com/2007/020801-usb-de-inicio-con-s.o.-linux.php», no te lamentarás
Creo que esto último que ha hecho el tal Damocles se llama autobombo
Alguien debería enseñarte a añadir etiquetas html a los comentarios… Y sí, es un autobombo claro. Pero bueno, se trata de Damocles, está empezando, tiene ganas de sacar la cabeza y figurar, donde sea, pero figurar. ¿Nadie te ha dicho que el clavo que sobresale se lleva el martillazo? 😉
Luego te comento que opino de tu jautú…