viernes, 5 de septiembre de 2008

Ubuntu en un IBM 760XL

Hace unos meses rescaté del olvido un viejo portátil que compré hace algunos años de segunda mano, y decidí darle una segunda vida instalándole algo más moderno que el Windows 98 que llevaba. Al tener tantos años sus prestaciones no son precisamente el último grito:

- Procesador Pentium MMX a 166 Mhz
- 64 Mb de RAM
- 9 Gb de disco duro



¿Se le podría instalar un sistema operativo de última generación? Y no me estoy refiriendo a Windows Vista, por supuesto :-) Probemos con Ubuntu...


El arranque

El primer problema es cómo arrancar la instalación. El equipo dispone de un lector de CD-ROM pero no tiene la capacidad de arrancar desde un CD (eso lo inventaron allá por el año 1998, este portátil es anterior). La única forma de hacerlo es desde disquete, pero la instalación de Ubuntu y la mayoría de distros actuales no permiten iniciar la instalación arrancando con ellos.

Tras googlear un poco doy con la solución, que resulta que viene en el mismo CD de instalación de Ubuntu: Se trata de una utilidad llamada Smart Boot Manager (SBM), que es un disquete desde el que es posible arrancar a su vez el CD, aunque el ordenador no esté preparado para ello. La imagen del disquete está en el directorio install del CD de Ubuntu, con unas instrucciones que se resumen en que para generarlo basta ejecutar algo como:

dd if=sbm.bin of=/dev/fd0

Una vez se consigue iniciar el ordenador con el CD, ya se puede hacer la instalación del resto del sistema de la manera habitual... o casi.


Elección del sistema

El Ubuntu para escritorio al que estamos acostumbrados es muy bonito, muy fácil de instalar y tiene todo el software que se puede necesitar, pero en nuestro caso ese es precisamente su mayor problema: No quiero entorno gráfico ni software como OpenOffice o K3B, solo que arranque y después ya instalaré por red lo que vaya haciendo falta.

Con las versiones de escritorio no se puede elegir una instalación así, pero en cambio la versión de servidor sí que lo permite (la instalación de un sistema mínimo) y además se puede hacer en modo consola (sin entorno gráfico). Así que, paradójicamente, instalo la versión más potente en el equipo más humilde.


Instalación

No hay mucho que decir. Se copian los ficheros al disco duro, detecta la tarjeta de red PCMCIA que tengo pinchada en el portátil, y todo va como la seda. Tras finalizar el proceso se reinicia y configuro el ssh para conectarme desde otro equipo y continuar configurándolo de forma más cómoda. Antes de hacer nada más aplico las últimas actualizaciones con aptitude update; aptitude upgrade y reinicio para que arranque con el último kernel.


Problema al arrancar

Para mi horror, depués de actualizar el kernel y reiniciar el proceso se interrumpe con un mensaje de error:

"ALERT! /dev/disk/by-uuid/xxxxxxxxxxx Does not exist, dropping to a shell"

...y aparece un shell reducido cuyo prompt es

(initramfs)

Así que toca googlear para averiguar qué significa y cómo arreglarlo. Parece ser que cuando, tras actualizar el kernel, se genera el disco ram de inicio no se cargan ciertos drivers para dispositivos IDE muy antiguos y por esa razón cuando arranca da el error de que no encuentra el disco duro.
Para solucionarlo en el shell reducido del ramfs hay que cargar los módulos ide, montar el sistema y regenerar el disco ram (el initrd):

Cargamos los módulos IDE:

(initramfs) modprobe ide-disk

(initramfs) modprobe ide-generic


Creamos un directorio y montamos en él la partición raiz:

(initramfs) mkdir /mnt
(initramfs) mount -t ext3 /dev/hda1 /mnt

En vez de /dev/hda1 habrá que poner el nombre de la partición raiz de tu sistema. En el comando mount hay que especificar el sistema de ficheros (ext3) ya que al ser una versión reducida no es capaz de averiguarlo por sí misma.

Convertimos el directorio que acabamos de montar en el nuevo raiz.

(initramfs) chroot /mnt

Al hacer esto se me quedaba congelado el shell y no continuaba. Si ocurre esto, se puede interrumpir con CTRL+D y ejecutarlo de nuevo indicando el comando a ejecutar con ese nuevo raiz, que será el intérprete bash para que podamos seguir introduciendo comandos: chroot /mnt bash

Montamos /proc y /sys:

# mount /proc
# mount /sys

Vamos a /boot, borramos el initrd de nuestra versión de kernel y lo regeneramos con el comando yaird. Si tenemos el /boot en una partición separada habrá que montarlo también.

# cd /boot
# rm initrd.img-2.6.24-19-generic
# /usr/sbin/yaird -o initrd.img-2.6.24-19-generic

Se generará el fichero del initrd, y además veremos que tiene bastante menos tamaño que el original. Reiniciamos, y cuando arranque ya no volverá a salir el error. Lo malo es que cuando se actualice de nuevo la versión del kernel, probablemente volverá a ocurrir lo mismo.

Y ahora que ya funciona el ordenador y arranca ¿para qué se puede usar con su limitada potencia? Bueno, diría que eso es casi lo de menos, lo divertido es hacerlo funcionar, pero lo he estado usando para capturar tráfico de redes wifi vecinas con fines puramente educacionales ;-)

No hay comentarios: