JuanCri.com

viernes 2 de febrero, 2007 a las 01:06
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.

Creative Commons License
Blog JuanCri.com por Juan Cristóbal Olivares licenciado bajo la Creative Commons Attribution 2.0 Chile License.
Mono PostgreSQL

JuanCri.com