Actualización: 27 Mayo 2012 . Aplico formato a la entrada para que se lea mejor.
Después de tanto probar distribuciones, y por motivos del Super Grub Disk (estoy haciendo un paquete)
estoy casi decidido a pasarme a Debian.
De hecho en mi menú multiarranque esta es la opción de arranque por defecto: Debian.
En mi portátil aún conservo Ubuntu 9.04 (que era mi sistema principal hasta ahora) y
tengo también Ubuntu 9.10 que tenía para unas pruebas.
El tema es que quiero escribir mis posts del blog con kblogger, y por lo visto aún no hay paquete oficial
de kblogger en Debian. Podría buscar un paquete no oficial del Kblogger y eso pero, qué demonios, esta manera
de funcionar me servirá para muchos otros paquetes y le dará un poco de vida a mi Ubuntu 9.04.
Este howto está basado en este:
http://www.debian-administration.org/articles/356
No se trata de ejecutar aplicaciones de 32 bits en sistemas de 64 bits porque en mi caso ambos sistemas
son de 32 bits porque no me gusta privarme de ningún software.
Pues nada, espero que sea la última vez que uso el kwrite para escribir estos posts.
1.- Preparación del chroot
Este paso suele consistir en hacer un deboostrap y demás cosas para preparar el sistema dónde hacer el chroot.
Yo ya tengo mi Ubuntu que funciona muy bien y con el Kblogger ya instalado. Así pues este paso consistirá en
averiguar en qué partición tenemos el sistema raíz del Ubuntu y decidir dónde lo queremos montar.
Yo tengo mi Ubuntu 9.04 en /dev/sda2 y quiero montarlo en /mnt/ubuntu904.
Así que creo el directorio:
sudo mkdir /mnt/ubuntu904
A continuación lo voy a montar por defecto en /mnt/ubuntu904. Para ello añado la siguiente linea
al fstab. Para que se ejecute de forma inmediata ejecuto: mount -a después de la edición del fstab.
/dev/sda2 /mnt/ubuntu904 ext3 defaults 0 3
2.- Librerias
Este paso yo nunca lo hacía de forma manual y los programas del chroot funcionaban.
Ahora justo después de probar el howto y reiniciar he visto que mi Kde4 no llegaba a arrancar bien.
Así que al no ser que tengais un sistema amd64 y el del chroot sea de 32 bits os aconsejo que paséis al punto siguiente.
Se trata de que nuestro sistema al ejecutar el programa si no encuentra las
librerias que necesita en nuestro debian las pueda encontrar en las rutas de las librerias asociadas a su sistema.
Así que editamos el fichero /etc/ld.so.conf y añadimos las siguientes lineas:
# chroot Ubuntu system libs
/mnt/ubuntu904/lib
/mnt/ubuntu904/usr/lib
/mnt/ubuntu904/usr/X11R6/lib
/mnt/ubuntu904/usr/local/lib
En este paso aconsejaban hacer:
cd /lib
ln -s /mnt/ubuntu904/lib/ld-linux.so.2 ld-linux.so.2
pero yo ya tengo un ld-linux.so.2 en mi Debian (porque, claro, ya es de 32 bits).
Así que omitiremos crear este enlace.
Y ejecutamos: ldconfig como root para actualizar las referencias a las librerias
que habíamos editado en /etc/ld.so.conf.
3.- Montar el resto del sistema
Para que los programas del Ubuntu se encuentren a gusto necesitaremos proporcionarles
algo del sistema de nuestro Debian: La partición /home si queremos que escriban ahí (yo sí),
la partición temporal (dónde encontrarán ficheros relativos a las Xorg y algunas cosas más),
/proc y /dev (por si necesitan acceder a los dispositivos reales que ha detectado el Debian).
Veamos qué lineas hemos de añadir al fstab:
# Ubuntu 9.04 chroot
/home /mnt/ubuntu904/home none bind 0 0
/tmp /mnt/ubuntu904/tmp none bind 0 0
/proc /mnt/ubuntu904/proc proc defaults 0 0
/dev /mnt/ubuntu904/dev none bind 0 0
A continuación hacemos mount -a para que ya las tengamos montadas.
Recordaremos lo que decía el howto original. Si uno hace un borrado recursivo de /mnt/ubuntu904 por la razón
que fuera, gracias al bind del home, oh, sorpresa!, borraría su /home. Así que mejor ni pensarlo. En todo caso
probar con rmdir. Rmdir sólo borra los directorios cuándo están vacios, en nuestro caso sería
cuando estuviera desmontado.
4. Mejorar el Ubuntu.
Este paso es opcional. Si quisieramos instalar algún paquete extra en el Ubuntu o cualquier cosa
podríamos hacer
chroot /mnt/ubuntu904
y podríamos trabajar como si hubieramos arrancado con el Ubuntu 9.04 (a excepción del entorno gráfico,
aunque también se puede levantar aúnque no es motivo de este howto).
De hecho para ir bien los usuarios, grupos y demás deberían ser iguales. A mí me da igual porque siempre en Ubuntu
y en Debian creo mi usuario el primero y siempre consigue uid 1000 y gid 1000. Si estuvieramos hablando
de algún paquete que hiciera de servidor habría que mirar este punto con más detenimiento.
Quizás para el caso de un paquete servidor, como indican en el howto original habría que copiar /etc/passwd,
/etc/shadow, /etc/hosts y /etc/group pero yo no lo haré como ya he indicado antés.
5. Hacer funcionar la aplicación de forma transparente.
Esta es la parte que más me gusta porque yo normalmente hago las cosas más a mano y me gustaría,
esta vez, hacerlo de forma elegante.
5.1. Primero instalamos dchroot
apt-get install dchroot
5.2. Editamos /etc/dchroot.conf (En mi caso tuve que crearlo)
# Ubuntu 9.04 chroot
ubuntu904 /mnt/ubuntu904
5.3. Probamos la aplicación chroot.
dchroot -c ubuntu904 -d kblogger
Oh! Funciona!
5.4. Añadimos un wrapper para facilitar la llamada del programa.
Es decir, poder llamarlo por su nombre directamente.
El script se llamará do_chroot y se guardará en /usr/local/bin.
Para que se pueda ejecutar le damos permisos 755.
chmod 755 /usr/local/bin/do_chroot
#!/bin/sh
ARGS=""
for i in "$@" ; do
ARGS="$ARGS '$i'"
done
exec dchroot -c ubuntu904 -d -q "`basename $0`" "$ARGS"
5.5. Finalmente tendremos que crear un enlace simbólico con el nombre del programa.
Con el nombre del programa que queremos llamar que apunte al do_chroot dentro del mismo /usr/local/bin/do_chroot.
cd /usr/local/bin
ln -s do_chroot kblogger
6. Si ejecutamos kblogger ahora debería arrancarnos.
Quedaría añadirlo al menú de Kde, Gnome u otro… pero eso ya no es motivo de este howto.