Comunidad Linux en español

GNU/Linux en un 486 con 8 Mb de memoria


Imagen de amp

By amp- Publicado27 Febrero 2004


GNU/Linux en un 486 con 8 Mb de memoria

Autor: Emiliano Gavilán <egavilan at eie.fceia.unr.edu.ar>

La versión más reciente de este artículo se
encuentra en la biblioteca de www.lugro.org.ar.

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.

Relacionado con GNU/Linux en un 486 con 8 Mb de memoria