sábado, 27 de junio de 2009

Portable Ubuntu Remix, linux en un pendrive

Ya todos conocemos, o al menos deberíamos, a Cygwin. Me cito a mí mismo:

"Es algo así como un traductor, de forma que todas las llamadas del API de Linux son trasladadas y ejecutadas como llamadas del API de Windows. El componente principal lo conforma la libreria cygwin1.dll, la cual es responsable de proporcionar dicha traducción y, por lo tanto, permitir la ejecución de programas Linux en un sistema Windows".

También todos conocemos, o de nuevo, deberíamos, a VMware Server. Se trata de un hypervisor de tipo 2 que nos permite lanzar casi cualquier sistema operativo que se nos ocurra virtualizado sobre nuestra instalación física de Windows/Linux.

Cada una de las opciones anteriores tiene sus ventajas y sus desventajas, así como cada uno cubre los distintos "campos de batalla". Pues ahora le ha tocado el turno a Portable Ubuntu Remix, que no sea por falta de opciones.

¿Y qué es portable ubuntu?

Pues es una distribución Ubuntu linux, la cual utiliza el kernel Colinux, un servidor grafico Xming y el servidor de sonido PulseAudio. Y lo mejor de todo es que puede lanzarse directamente desde Windows, además de que resulta muy, pero que muy portable. Tan portable que podemos llevarla preparada para ejecutarla desde un pendrive.

Pero lo mejor es que la probemos, así que vamos a ello.

Accedemos al sitio oficial, y utilizando cualquiera de los enlaces disponibles nos descargaremos la primera release, un paquete 7zip autoextraible de unos 440 MB. Hacemos doble click sobre el fichero, seleccionamos el destino, esperamos unos minutos y obtendremos un nuevo directorio, Portable_Ubuntu, con el contenido de la distro.

Para lanzarla haremos doble click sobre el fichero run_portable_ubuntu.bat. Si estamos en Windows Vista tendremos que iniciar una consola con privilegios de Administrador, desplazarnos al directorio donde se encuentra el fichero anterior y lanzarlo desde allí, porque si no, tendremos problemas con el path.

Aparecerá un 'tray icon' junto al reloj, con forma de flecha y color verde, un banner con el logotipo del programa y, si estamos en Windows Vista, varios mensajes preguntándonos si se debe bloquear o desbloquear algunos de los "demonios" utilizados por la aplicacion. En breves instantes tendremos una nueva barra de tareas en la parte superior de nuestro monitor, que a los que hayan usado ubuntu en alguna ocasión sin duda les resultará familiar.

Primer contacto

El sistema trae un usuario definido por defecto, pubuntu, cuya contraseña es '123456'. Para ejecutar cualquier aplicación como root, y tal y como viene siendo habitual en ubuntu, tendremos que utilizar el comando sudo:

$ sudo comando

e introducir la contraseña asignada al usuario pubuntu. Como a mí eso del sudo no me gusta mucho lo primero que hago siempre es definir una contraseña para root. Para ello 'Applications, Accesories, Terminal', y desde mi querida consola:
$ sudo passwd root

[sudo] password for pubuntu:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

La primera, la contraseña del usuario pubuntu, y las dos siguientes la nueva contraseña para root, por dos veces. Llamame maniático pero, ahora sí, cuando quiero ejecutar algo como root me basta con un:
$ su -

Password:

para tener todo el poder bajo mis manos :-)

Ahora curiosidades relacionadas con la configuración de red. El sistema pubuntu ha obtenido por DHCP, que supongo que será interno dado que no tengo ninguno corriendo en mi red, una dirección 10.0.2.15. Si intento hacer un ping a Google veo que el sistema resuelve la IP, pero el ping no responde. Si intento hacer un ping a mi Windows Vista el comando funciona perfectamente, pero no así a la inversa. Sin preocuparme mucho lanzo el navegador Firefox integrado en la barra de tareas de pubuntu y descubro que puedo navegar sin problemas.

Portable Ubuntu Remix trae, por defecto, un servidor ssh instalado en el sistema, al cual puedo acceder perfectamente desde mi Windows Vista utilizando, por ejemplo, el cliente Putty y la dirección destino asignada a Windows (la de loopback tambien me sirve). Si quiero acceder desde cualquiera del resto de equipos en el mismo segmento que mi instalación de Vista, y siempre que no esté activado el firewall o la excepción correspondiente en la configuración, bastará con indicar como dirección destino la de mi máquina Windows.

Ampliando los dominios de pubuntu

Vamos a ver de cuanto espacio disponemos en la instalación por defecto:
# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/cobd0 1.8G 1.3G 466M 74% /
varrun 126M 84K 126M 1% /var/run
varlock 126M 0 126M 0% /var/lock
udev 126M 132K 126M 1% /dev
devshm 126M 12K 126M 1% /dev/shm
/dev/cobd2 248M 2.1M 234M 1% /tmp
cofs0 60G 40G 20G 68% /etc/portable_ubuntu
cofs1 60G 40G 20G 68% /mnt/C
gvfs-fuse-daemon 1.8G 1.3G 466M 74% /home/pubuntu/.gvfs

La primera curiosidad que se desprende del resultado anterior es que la unidad C de mi sistema Windows Vista está disponible desde Linux a través del directorio /mnt/C. ¡Muy interesante!

Por otra parte sólo nos quedan 466 MB en el directorio raíz. Muy poco para tener un sistema funcional al que poder agregarle nuestros juguetes. Un rápido vistazo al tutorial disponible en el sitio oficial y los siguientes pasos para ampliar dicho espacio disponible.

Con pubuntu apagado, ejecutando una línea de comandos como Administrador, y situados en el directorio 'Portable_Ubuntu\images' ejecutamos:
fsutil file createnew more_space.img 4294967296

El archivo more_space.img está creado

Con esto obtendremos un fichero vacío de unos 4Gb de tamaño. Si queremos más o menos sólo tendremos que modificar la cantidad indicada en el comando anterior.

Ahora juntaremos el fichero de pubuntu y el recientemente creado en uno único:
copy /b rootfs.img+more_space.img rootfs_.img

rootfs.img
more_space.img
1 archivos copiados.

Cuando termine tendremos 3 archivos. Ejecutaremos el siguiente comando para eliminar los que no nos interesan y adecuar el que sí utilizaremos:
del rootfs.img more_space.img

move rootfs_.img rootfs.img
Se han movido 1 archivos

Una vez terminado el proceso anterior volvemos a lanzar pubuntu, y desde un terminal con privilegios de root ejecutaremos:
# resize2fs -f /dev/cobd0

resize2fs 1.40.8 (13-Mar-2008)
Filesystem at /dev/cobd0 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/cobd0 to 1520435 (4k) blocks.
The filesystem on /dev/cobd0 is now 1520435 blocks long.

Como rápidamente advertiremos la cosa ha cambiado bastante:
# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/cobd0 5.8G 1.3G 4.3G 23% /
varrun 126M 84K 126M 1% /var/run
varlock 126M 0 126M 0% /var/lock
udev 126M 132K 126M 1% /dev
devshm 126M 12K 126M 1% /dev/shm
/dev/cobd2 248M 2.1M 234M 1% /tmp
cofs0 60G 44G 16G 75% /etc/portable_ubuntu
cofs1 60G 44G 16G 75% /mnt/C
gvfs-fuse-daemon 5.8G 1.3G 4.3G 23% /home/pubuntu/.gvfs

Quiero verlo todo

En mi caso particular tengo particionado el disco de mi portátil en dos unidades, utilizando la segunda de ellas a modo de almacén. Como me gustaría poder acceder también a esta segunda unidad (D:) desde pubuntu, realizaré las siguientes modificaciones.

Primero, y con pubuntu apagada, editaré el fichero de configuración, portable_ubuntu.conf dentro del directorio config, y agregaré una nueva entrada para mi segunda unidad:
cofs2=d:\ #Para tener acceso a la unidad D:

Ahora arrancaré pubuntu y modificaré el fichero /etc/fstab para que se produzca, automágicamente, el montaje de mi segunda unidad:
cofs2   /mnt/D    cofs   user,dmask=0777,fmask=0666 0 0

Por último sólo me quedará crear el directorio utilizado como punto de montaje y reiniciar el sistema:
# mkdir /mnt/D

# reboot

Minituning de pubuntu

Ahora unas últimas personalizaciones para dejarlo todo a mi gusto.

Lo primero, ¿quién necesita "entorno grafico"? Me gustaría que la aplicación fuera lo menos pesada posible, además que la mayoría de las veces únicamente utilizaré un terminal linux. Así que a comentar las últimas líneas del fichero de configuración de pubuntu:
#exec0="Xming\Xming.exe :0 -notrayicon +bs -wm ..."

#exec1=pulseaudio-0.9.6\pulseaudio.exe # Ejecuta al ...

A partir de este momento utilizaremos el script portable_ubuntu.bat, lanzándolo desde una línea de comandos como Administrador, la cual no se cerrará finalizada la carga de pubuntu y nos dejará una bonita shell y diferentes ttys, cada uno en su correspondiente ubicación (Alt + F2).

Supongamos ahora que hemos instalado Pyflag sobre nuestra flamante pubuntu, al cual queremos poder acceder desde cualquier PC de la red local, no sólo desde el anfitrión (Windows Vista, en mi caso). Para ello agregaremos una nueva redirección en el fichero de configuración de portable ubuntu tal que así:
eth0=slirp,00:ff:75:39:D3:C1,tcp:22:22/tcp:8000:8000

Addendum 28/06/09:

Después de estar jugando un poquito más con pubuntu me he dado cuenta que, siguiendo los pasos indicados no se desactiva totalmente el inicio gráfico. Ésto sumado a que la fecha y hora no coinciden con la local y que el layout del teclado no está en castellano han motivado este "añadido".

El primer paso será reconfigurar las locales:
$ cd /usr/share/locales

$ ./install-language-pack es
$ sudo dpkg-reconfigure locales

Ahora modificaremos la configuración del mapa de teclado mediante:
$ sudo dpkg-reconfigure console-setup

Una vez tenemos nuestro querido teclado español modificaremos el script de inicio para el usuario pubuntu desactivando por completo, ahora sí, el entorno gráfico:
$ vim /home/pubuntu/.profile

...
#if [ `ps -u pubuntu| grep gnome-panel | wc -l` = 0 ]; then
# dbus-launch panel.sh
#fi

Y por último sólo queda modificar la configuración de fecha y hora:
$ sudo dpkg-reconfigure tzdata

Y esto ha sido todo, en breve más, y mejor, espero.