domingo, 10 de agosto de 2008

Instalar livecd de ubuntu sobre pendrive para eeePC

Esto que deseo conpartir son las instrucciones para montar una live persistente de linux, la que se desee, de la familia debian (la verdad que ni idea si engancharia otra familia) de una manera sencilla aunque a traves de la línea de comandos, supongo que el gparted seria capaz de hacer esto igual pero de momento lo explicare asi. El tutorial surge de la necesidad de meterle ubuntu a un eeePC surf de 2GB ya que de serie se queda a unos 200MB de que le entre la estandar asique la idea era meterle la alternative y no instalar todos los paquetes, solo los que vaya a usar su usuario principal, en este caso mi madre. Ella me pidio que le instalase ubuntu porque con windows se lia y le resulta demasiado complicado y se que demasiado fanatico del tio bill anda suelto pero reconoced que para una persona que empieza un sistema basado en gnome esta mil veces mas accesible, mejor explicado y mejor distribuido que cualquier windows. Empecemos, perdonad los HOYGANS que seguro que mas de uno aparece.


bien empezamos con un simple comando que nos listará las unidades de disco conectadas al equipo

sudo fdisk -l

entre la informacion podemos observar un trozo como este:

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sdb1 1 249 2000061 6 FAT16

hmm ya tenemos victima, mi pendrive de 2GB, mas que suficiente, para los que no estes muy en el tema linux solo decir que sdb1 quiere decir que es la particion 1 del disco sdb y que tambien puede ser sdc, sdd y asi sucesivamente, que me corrija alguien si me equivoco pero los discos hdX eran los que tenian un bus IDE y los que son del tipo sdX tenian un bus SATA, este es USB pero me imagino que el HUB USB ira conectado a la placa base de esta manera, bueno es simplemente anecdotico no os vayais a liar, es algo que no es imprescindible saberlo.

Editamos la tabla de particiones:

sudo fdisk /dev/sdb

y eliminamos una a una todas las particiones que existan en este momento, esto en gparted por ejemplo se haria presionando la tecla supr sobre cada particion y luego aplicar los cambios, pero ya que estamos por consola seria la opcion d:

desktop7@winchester:~$ sudo fdisk /dev/sdb

Orden (m para obtener ayuda): d
Se ha seleccionado la partición 1

Orden (m para obtener ayuda):

He querido dejar la linea con el anterior comando para que veais claramente por donde va la ejecucion, yo solo tengo una particion por lo que la selecciona automaticamente, en caso de varias particiones os pide que le indiqueis el numero de particion y repetis el comando de "d" con cada una de las particiones hasta que no quede ninguna particion.

bien, a partir de aqui la explicacion continua al estilo de los chicos de pendrivelinux, todo esto dentro de el programa fdisk del mismo modo que al eliminar las particiones:

* Pulsa n para crear una nueva particion
* Pulsa p para que sea una particion primaria

* Pulsa 1 para hacerla la particion principal
* Pulsa para que use el primer cilindro
* Escribe +800M para crear la particion de ese tamaño
* Pulsa a para hacer una particion activa
* Pulsa 1 para seleccionar la particion 1, que acabamos de crear
* Pulsa t para cambiar el sistema de archivos de la particion
* Pulsa 6 que es el valor que corresponde al sistema de archivos fat16

Bien sin salir del fdisk vamos a crear una segunda particion que nos sirva como pendrive, como un disco duro a parte cuando estemos en la sesion de la distribucion que vamos a crear, en mi caso con la alternative iba a servir de bien poco, pero si que habra gente a la que sirva de utilidad

* Pulsa n para crear una nueva particion
* Pulsa p para que sea una particion primaria

* Pulsa 2 para hacerla la particion principal
* Pulsa para que use el primer cilindro
* Pulsa denuevo para que ocupe el tamaño restante

Y ahora lo mas importante de todo pulsamos w para escribir la nueva tabla de particiones. Desmontamos ambas particiones, sudo umount /dev/sdb1 y sudo umount /dev/sdb2. A continuación ahora que tenemos la tabla de particiones creada formateamos las particiones en los sistemas de archivos correspondientes, sudo mkfs.vfat -F 16 -n usb /dev/sdb1 para el primero y sudo mkfs.ext2 -b 4096 -L casper-rw /dev/sdb2 para el segundo por ejemplo.

Nota: A la hora de escribir este tutorial me dio un pequeño fallo al intentar formatear la particion sdb2, seguramente problemas de un pendrive que ha sido reescrito demasiadas veces, si lo mismo os ocurre desconectais fisicamente la unidad la volveis a conectar, desmontais lo que se os haya montado y repetis los mkfs, no falla ;-).


Vamos a hacer arrancable el pendrive, instalamos los programas necesarios para ello.

sudo aptitude install mbr syslinux

Lo primero que vamos a hacer es escribir el mbr para que arranque como tiene que ser y de paso comprobamos que este todo correcto:

sudo install-mbr /dev/sdb

E instalamos syslinux en la particion que estamos preparando, syslinux arrancara la distribucion que le metamos posteriormente

sudo syslinux /dev/sdb1

Bien, llegado este punto, si deseais comprobar que todo ha ido correctamente introducimos el pendrive y tratamos de arrancar el ordenador, deberiamos ver un mensaje similar a este:

MBR
SYSLINUX 3.53 Debian-2007-12-11 EBIOS Copyright (C) 1994-2008 H. Peter Anvin
Could not find kernel image. linux
boot:

En caso contrario nos hemos saltado un paso, debemos borrar las particiones y empezar de nuevo :-(.

A continuación vamos a cargar un loader, usaremos el de debian porque creo que sera mas generico que el propio de ubuntu aunque lo podemos usar igual.

desktop7@winchester:~$ wget http://ftp.cl.debian.org/debian/dists/etch/main/installer-i386/current/images/hd-media/boot.img.gz

desktop7@winchester:~$ gunzip boot.img.gz

desktop7@winchester:~$ mkdir a
desktop7@winchester:~$ sudo mount -o loop boot.img ./a

desktop7@winchester:~$ sudo cp ./a/* /media/usb/

desktop7@winchester:~$ sudo umount ./a
desktop7@winchester:~$ sudo rm -r ./a

Una vez terminada esta secuencia si probamos a arrancar de nuevo desde el pendrive veremos el splash de debian aunque no será capaz de arrancar porque no lo hemos provisto de ningún kernel.

Descargamos el kernel de hardy heron, la ubuntu actual, en caso de querer arrancar una anterior o una posterior cambiariamos todo lo que diga hardy por feisty o por intrepid y asi sucesivamente. Este kernel *DEBE* coincidir con el de la imagen que introduciremos posteriormente si no lo mas probable es que no arranque. El kernel que vamos a introducir a continuación nos servirá para arrancar ubuntu, kubuntu, fluxbuntu, eeebuntu, etc basicamente todas las versiones de ubuntu puesto que todas ellas montan esta version de kernel, claro esta siempre que todas sean hardy heron. Para arrancar una debian descargariamos la version del kernel que monte esa misma live de debian.

desktop7@winchester:~$ wget http://cl.archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/hd-media/initrd.gz
desktop7@winchester:~$ wget http://cl.archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images/hd-media/vmlinuz

desktop7@winchester:~$ sudo cp initrd.gz /media/usb/initrd.gz
desktop7@winchester:~$ sudo cp vmlinuz /media/usb/linux

Una vez terminado esto solo necesitamos introducir en la particion(/media/usb/) la imagen de la distribucion, nada de pasar los archivos, pasamos la imagen *.iso directamente al directorio y el la detectara automaticamente. Podemos incluso pasar varias imagenes de disco y hacer un arranque multiple de varias versiones de linux, aunque para ello deberiamos haber hecho la partición algo mas grande (actualmente 800M).

El final del pobre eeePC fue el siguiente, para aumentar la simplicidad de cara a un usuario poco avanzado elimine los paneles y utilizé awn para localizar los programas usados. Tuve algunos problemas porque no instalaria algún modulo en la ubuntu alternative y no me reconocia la tarjeta de red, la única solución que se me ocurrió fue instalar pasando los debs el built-essentials y compilar la última versión de madwifi que hecho a andar al atheros y me conecte a una wifi. Final feliz ubuntu termino entrando en menos de 2GB :-).



Un saludo.


[1]http://www.pendrivelinux.com/2008/05/15/usb-ubuntu-804-persistent-install-from-linux/
[2]http://foros.ubuntu-cl.org/viewtopic.php?t=4987

No hay comentarios: