GNU/Linux en un 486 con 8 Mb de memoria

Emiliano Gavilán

Introducción

Todos los que alguna vez tuvimos un PC terminamos enfrentándonos, tarde o temprano, a un dilema: la máquina que tenemos se ha vuelto obsoleta. Los sistemas operativos comerciales generalmente soportan solo "lo último" en cuanto a hardware, y sus requerimientos son solo alcanzables por máquinas de fabricación reciente.

Como consecuencia de esto, constantemente hay una gran cantidad de PCs que se van dando de baja, porque se consideran inútiles. En el caso de que las pudieramos reutilizar, las ventajas serían múltiples:

  • Podemos aprovechar una máquina antigua para variados fines, como por ejemplo un servidor de impresión, un firewall, servidores DNS, etc.
  • Nos ahorramos algún que otro dinerillo al mantener algo que queda con valor marginal cero en funcionamiento.
  • Contribuimos con la ecología al no contaminar nuestro planeta con chatarra electrónica.
  • Le demostramos al que nos quiera desafiar que no es necesario tener un PIV con 1 TB de ram para correr el "Hola mundo" :^)

La solución a esto, claro está, es instalar un sistema operativo moderno, el cual nos permita hacer todas las cosas que se consideran indispensables hoy en día, pero que tenga un requisito de potencia de hardware muy bajo para funcionar.

Los sistemas operativos candidatos para esta función son, indudablemente, dos: los SO de la familia BSD, principalmente FreeBSD, y alguna distribución de GNU/Linux que soporte hardware antiguo.

Este documento trata, pues, acerca de como instalar una distribución de GNU/Linux moderna en un PC antiguo. Cabe destacar que se instalaron FreeDOS, GNU/Linux y FreeBSD en ese orden, en misma máquina, utilizando una técnica diferente para este último.

Lo que necesitamos

Acá va la lista rápida de cosas a obtener:

  • Una PC vieja. Este trabajo se realizó en una 486 con 8 MB de memoria ram, aunque si no se dispone de exactamente esto, podría probar de todos modos. AL final se dá una recomendación de que hacer con una máquina que no reúna estos requisitos mínimos. Además, dicha PC debe contar con una disquetera de 3 1/2" y una lectora de CD atapi.
  • Un disquete con FreeDOS ( http://www.freedos.org )
  • Slackware 9.1, en su versión zipslack. Se puede obtener en cualquiera de los mirrors de Slackware ( http://www.slackware.org ). Se recomienda guardarlo en un CD, en la sesión primera.
  • Opcionalmente, el disco 1 de Slackware 9.1
  • Un descompresor de archivos zip para DOS. El recomendado es el de InfoZIP.
  • Paciencia, bastante ...

Lo que vamos a hacer

Previamente a los detalles, un "overview" de los pasos a seguir:

  1. Crear una partición de DOS. Para ello usamos el disco de FreeDOS.
  2. Descomprimimos el archivo zipslack.zip al directorio raiz de nuestra partición DOS, utilizando el programa unzip.exe que obtivimos de InfoZIP.
  3. Una vez que terminamos con el paso anterior, lanzamos zipslack. Esto nos dejará andando en un sistema linux pero con un sistema de archivos umsdos, el cual es más lento que los sistemas nativos.
  4. Creamos, con el espacio que nos sobra, las particiones a las que vamos a tranferir nuestro sistema.
  5. Transferimos nuestro sistema a las particiones nativas creadas.
  6. Ahora rebooteamos y relanzamos GNU/Linux desde las particiones nativas.
  7. Pasos finales: Creamos swap, instalamos lilo, borramos la partición DOS, etc.

Procedimiento

Voy a suponer que en el disco rígido no hay particiones creadas, y que hay espacio suficiente para realizar las acciones que voy a detallar. Un disco de 500 MB debería ser suficiente.

Primero que nada, booteamos la máquina con el disquette de FreeDOS. A continuación, lanzamos el programa fdisk, el cual es bastante superior al que viene con el SO que trata de clonar :^). Con este creamos una partición de DOS de 110 MB. Esto tiene que alcanzarnos para descomprimir luego el zipslack.

Creada la partición, rebooteamos, volvemos a arrancar la máquina con FreeDOS y formateamos la partición recién creada.

En este punto, ya podemos "instalar" zipslack. Ponemos en la lectora de CD el cd que tiene el archivo zipslack.zip y lo descomprimimos al disco C. Nos tiene que quedar un directorio creado c:\linux. Vale en este punto aclarar lo siguiente: El driver para lectoras de cd que viene con FreeDOS solamente puede acceder a la primer sesión grabada en el disco, por lo cual nos resulta indispensable para lograr este paso que zipslack.zip se encuentre en dicha sesión.

Cambiamos al directorio especificado y cargamos GNU/Linux. A pesar de haber un archivo linux.bat, recomiendo no usarlo, ya que este intenta cargar como directorio raíz /dev/sda1, lo cual no es apropiado en la mayoría de los casos.

Como no tenemos hasta este momento un editor a mano para modificar este archivo, lanzamos zipslack a mano:

c:\linux> loadlin vmlinuz root=/dev/hda1 rw

suponiendo, como es probable, que la partición DOS sea /dev/hda1. Si nada falló, ya estamos corriendo GNU/Linux. Entramos como root sin contraseña y, como primera medida, creamos algo de memoria swap. Logramos esto con los siguientes comandos:

root@localhost:~# dd if=/dev/zero of=swapfile bs=1M count=4
root@localhost:~# mkswap swapfile
root@localhost:~# swapon swapfile

Con esto creamos 4 MB de memoria swap, que nos alcanzará para lo que tenemos que hacer. A continuación creamos las particiones nativas. Yo use cfdisk para crear una partición /dev/hda2 de tipo ext2 de 500 MB, lo cual es más que suficiente para mis necesidades.

Ahora, lo más seguro para que se relea la tabla de particiones es reiniciar el sistema. Una vez reiniciado el sistema, y relanzado zipslack como se hicimos previamente, y cargando el archivo swap con la última línea de las intrucciones anteriores, creamos el filesystem:

root@localhost:~# mke2fs /dev/hda2

aquí opcionalmente podemos utilizar mke3fs o mkreiserfs, según deseemos utilizar sistemas de archivos ext3 o reiser con journaling. Yo elegí ext2.

Paso siguiente, transferimos nuestro sistema de /dev/hda1 corriendo en umsdos a su nueva "casa" en /dev/hda2. Lo hacemos así:

root@localhost:~# mkdir /mnt/hda2
root@localhost:~# mount -t ext2 /dev/hda2 /mnt/hda2 -o defaults
root@localhost:~# cd /
root@localhost:~# cp -a /bin /boot /dev /etc /home /lib /root /sbin 
/tmp /usr /var vmlinuz /mnt/hda2

Después de un rato de transpirar la camiseta, nos volverá el prompt y cambiaremos a nuestra nueva instalación:

root@localhost:~# chroot /mnt/hda2

Creamos el punto de montaje para el proc filesystem

root@localhost:~# mkdir /proc

Bien, ahora ya estamos trabajando en nuestro sistema ext2 (o el que hayamos elegido), pero tenemos un problema: cuando reiniciemos la máquina, no vamos a poder entrar a GNU/Linux directamente. Tenemos dos posibilidades:

  1. Seguimos cargando nuestro sistema a mano, desde la partición de FreeDOS con loadlin. Para ello, cambiamos el comando que usamos la primera vez por este otro : c:\linux> loadlin vmlinuz root=/dev/hda2 ro
  2. Instalamos lilo.

Vamos a hacer esto último. No busquemos el archivo /etc/lilo.conf porque por defecto zipslack no trae uno. Acá va el que yo creé :

boot=/dev/hda
prompt
timeout=150
read-only
menu-title=" Chatarra's menu de arranque "
default=Linux

#	 bootable kernel images:
image=/vmlinuz
label=Linux
root=/dev/hda2

#	 other operating systems:
other=/dev/hda1
label=FreeDOS

Donde, por supuesto, deberemos reemplazar /dev/hdxx por los valores que correspondan a nuestro sistema. A continuación, ejecutamos lilo:

root@localhost:~# /sbin/lilo

Si todo va bien, deberían aparecer los mensajes:

Added Linux*
Added FreeDOS

Ahora, deberemos modificar el archivo /etc/fstab para que las entradas coincidan con las de nuestro sistema. Una modificación interesante es eliminar la partición con FreeDOS para convertirla en una partición swap. Para realizar esto, deberemos utilizar cfdisk (o fdisk, a elección) para cambiar el tipo de la partición /dev/hda1 a Linux Swap (83, si la memoria no me falla :^). Luego, quitamos la entrada correspondiente a FreeDOS en el archivo /etc/lilo.conf, lo guardamos y ejecutamos lilo. A continuación, editamos /etc/fstab y le agregamos el espacio swap con la siguiente línea:

/dev/hda1    swap    swap   defaults   0   0

Finalmente, deberemos reiniciar la máquina para que relea la tabla de particiones.

Y con esto damos por concluída la "instalación". A partir de aquí cada uno deberá hacer un "fine tuning" para adaptar las cosas a sus necesidades particulares. Si se dispone del CD de Slackware 9.1, se podría montar e instalar software adicional. Yo armé un sistema con aplicaciones de consola, porque tengo un monitor hércules. Si alguno tiene monitor VGA podría instalar algunas aplicaciones que utilicen svgalib y/o framebuffer. No recomiendo instalar XFree86, porque sería una tortura para la pobre máquina y sobre todo para el rígido que hace de swap.

Algunas notas finales

O mejor dicho, una especie de PUF anticipada. Aqui van:

P: ¿Por que no instalar directamente con el instalador de Slackware o de alguna otra distro?

R: Los 8 MB de memoria, si bien son suficientes para correr GNU/Linux, no son suficientes para correr el instalador, el cual mete todo en memoria, incluído un filesystem en ramdisk. Esto hace que no se pueda utilizar directamente el instalador de Slackware.

P: ¿Porque Slackware?

R: ¿Porque no? :^). Más allá de que me gusta personalmente, hay algunas cuestiones técnicas. Muchas distros modernas vienen compiladas para micros más nuevos. Esto hace que ganen rendimiento en dichos micros, pero que no puedan correrse en micros antiguos. Otro candidato a instalar hubiera sido Debian, pero no tenía a mano los instaladores, ni conexión a la red para utilizar apt-get. Sin embargo una amiga tiene un 486 andando con 24 MB y anda de maravillas, con X y todo. ¿Alguien que quiera probar?

P: ¿No hay una forma menos rebuscada de lograr esto?

R: Seguro !!!!. Saquen el rígido, móntenlo en una máquina moderna, e instalen directamente ahí. Pero seguro que no se van a divertir tanto ...

P: Mi disco rígido es muy pequeño para hacer esto

R: Estás frito, angelito :^). Fuera de broma, lo que se podría hacer, aunque no lo he probado, es ejecutar pkgtool la primera vez que ingresamos a zipslack y eliminar software que viene por defecto y que no es necesario. Por ejemplo, se podría eliminar todo el software que tenga que ver con el sonido, como mpg123, oggutils, cdrecord y sus parientes, etc, con todas sus librerías asociadas. También se podría eliminar la parte documentación, la cual es voluminosa. Van a tener que probar si este es el caso. Luego podría eliminarse la partición de FreeDOS y reutilizarla para, por ejemplo, swap y /home.

P: ¿Y que acerca de FreeBSD?

R: Yo tengo los instaladores de una versión un tanto antigua (4.4), los cuales clamaban que con 5 MB de memoria podía instalarse. Si bien el instalador arranca sin problemas, en mi máquina se "tildaba" cuando empezaba a copiar archivos. Desconozco porqué este comportamiento. De todos modos lo instalé llevando el rígido a otra máquina y anda de perlas una vez instalado. Ahora conseguí los instaladores de la nueva versión 5.2, los cuales siguen clamando que puede instalarse con 5 MB de memoria. Cuando tenga tiempo los probaré.

P: Tengo una máquina más vieja, con menos memoria, etc. ¿La tiro?

R: No, para nada !!!!. Se puede perfectamente hacer una terminal. Yo estoy escribiendo estas líneas desde una terminal 386 con 4 MB de ram, con un disco de 100 MB, aunque, en teoría, debería funcionar con una vieja XT. ¿Como hago esto? Sencillo, con FreeDOS y kermit, un emulador de terminal que anda muy bien. Además tuve que construírme un cable para conectar las máquinas por puerto serie. Busquen las instrucciones de como hacer esto en http://lucas.hispalinux.es , en la sección COMO's, un documento llamado "Terminal-Serie-COMO". El software kermit ( http://www.columbia.edu/kermit/mskermit.html ), si bien no es software libre, tampoco es comercial. Como ventaja adicional, puede decirse que ni siquiera se necesita que el terminal tenga disco rígido. FreeDOS+kermit entran en un solo disquette. Pruébenlo, es una buena forma de aprovechar un "trasto inútil", además de divertirse un rato.

This document was generated using AFT v5.09

Distribuir contenido

Office OpenXML (OOXML) no debe ser ISO 29500