Esta guía no está completa, porque estoy obteniendo un error muy extraño. Quise cambiar desde mi UML debian a Ubuntu por distintas razones. Estos son los pasos que seguí.
Generalmente, si se quiere montar un UserMode Linux (UML), se utilizan las imágenes disponibles en el sitio oficial. Una distribución Debian es una buena opción, pero yo quería migrar bet (bet.juancri.com) a Ubuntu. Lo primero que hice fue crear los archivos para el filesystem root y la swap:
# Crear archivo de 5000MB para root
dd if=/dev/zero of=root_fs bs=1M seek=5000 count=0
# Crear archivo de 512MB para swap
dd if=/dev/zero of=swap bs=1M seek=512 count=0
# Dar formato (ReiserFS)
mkreiserfs root_fs -f
# Crear swap
mkswap swap
Luego para instalar Ubuntu, lo mejor es usar debootstrap desde una máquina que ya esté corriendo Ubuntu, así:
# Montando root_fs
mkdir temp
sudo mount -o loop root_fs temp
# Instalando Ubuntu Edgy
sudo debootstrap edgy temp
Una vez que esté instalado, podemos usar chroot para entrar e instalar más paquetes necesarios:
# Montar /proc (es necesario para algunas operaciones)
sudo mount -t proc none temp/proc
# Chroot para pararnos en el nuevo sistema
sudo chroot temp /bin/bash
Aquí ya vamos a estar parados en el nuevo sistema. Para poder utilizar la red no es necesario configurarla, pero sí configurar resolv.conf para tener resolución de nombres (podemos copiar el contenido de /etc/resolv.conf de la máquina real). Si queremos instalar más software, además tendremos que configurar /etc/apt/sources.list y a continuación instalar algo de software necesario:
# Instalar reiserfsprogs, necesario para tener fsck y otras utilidades
apt-get install reiserfsprogs
# Instalar ssh, si queremos tener SSH
apt-get install ssh
# ...etc...
Ahora viene algo importante. Necesitaremos instalar un kernel dentro. Aunque bootearemos con UML, es necesario tener /lib/modules/VERSIONKERNEL y otras cosas importantes. Así es que, como voy a usar UML 2.6.18 y Ubuntu sólo tiene 2.6.17, voy a bajar las fuentes desde kernel.org:
# Instalar wget
apt-get install wget
# Bajar imagen del kernel
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.tar.bz2
# Descomprimir
tar xvfj linux-2.6.18.tar.bz2
# Entrar al directorio
cd linux-2.6.18
# Ahora instalamos algunos paquetes necesarios para compilar el kernel
apt-get install make gcc libc6-dev libncurses5-dev
# Configurar
make menuconfig
Aquí no hacemos nada, salimos guardando la configuración y luego tipeamos:
# Compilar e instalar módulos
make modules_install
Como sólo necesitamos los modulos (y depmod), no necesitamos compilar la imagen del kernel. Ya está. Ahora podemos salir del ambiente chroot y desmontar.
# Salir de chroot
exit
# Desmontar
sudo umount temp/proc
sudo umount temp
Finalmente necesitamos editar fstab y configurar los filesystems:
# Instalar nano
apt-get install nano
# Editar fstab
nano /etc/fstab
Este es el código de mi fstab:
/dev/ubda / auto defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults,size=768M 0 0
/dev/ubdb none swap defaults 0 0
Además necesitamos configurar /etc/network/interfaces, /etc/hostname y /etc/hosts (con los datos necesarios para tener la interfaz local (lo).
Si hicimos este proceso en un Ubuntu y queremos mover la imagen a la máquina definitiva, es el momento de hacerlo. Una vez que ya estamos en el sistema final, debemos realizar la configuración de dependencia de módulos.
Para lanzar UML, generalmente hacemos esto:
linux udb0=root_fs ubd1=swap mem=64m
Donde 64m es la cantidad de memoria en megabytes. La primera vez inciiamos con single, de esta manera:
linux udb0=root_fs ubd1=swap mem=64m single
Al partir aparece esto:
Press enter for maintenance
(or type Control-D to continue):
Presionamos [ENTER] y luego escribimos:
depmod -a
passwd
poweroff
Hice un passwd para darle una contraseña al root. Hasta aquí está todo bien. Sólo que cuando intento arrancar el sistema, sucede esto:
* Mounting local filesystems...
* Configuring network interfaces...
* Setting up console font and keymap...
* Starting system log...
* Starting kernel log...
* Starting OpenBSD Secure Shell server...
* Running local boot scripts (/etc/rc.local)
Aquí se detiene la ejecución. Más información cuando encuentre una respuesta. Por ahora, vuelvo bet a su UML original con debian.