LINUX CHICO

Como poner un linux moderno en un P75 con 16MB de RAM o La Historia del elefante y la hormiguita

Por diversos motivos que no viene al caso mencionar, incluyendo ser más porfiado que mula vasca, encaré la completamente innecesaria tarea de convertir un pentium 75 con 800MB de disco y 16 MB de RAM en una estación de trabajo moderna y que pueda hacer las tarea habituales:

* Navegación web en modo gráfico * Correo electrónico * mp3 * GNUtella * Video mpeg (sí, en serio )

Y, digamos, cada cosa que se me iba apareciendo a medida que la usaba.

Por supuesto, no se puede pretender que ande RÁPIDO, pero aspiro a una performance... adecuada.

LA DISTRIBUCIÓN

Por diversos problemas de instalación (es una notebook), Debian resultó ser la distribución que pude instalar primero. Dado que el apt-get me gusta, decidí ignorar los otros problemas (no encuentro ni una herramienta para configurar la red!) y seguir con ella. en particular estoy usando debian testing, que está (mucho) más actualizada que stable pero no es tan loca como unstable.

Es posible que tendría mucho menor consumo de memoria y CPU usando una distribución muy vieja, por ejemplo un slackware 96. Después de todo, la he usado en 486 con 16MB y funcionaba razonablemente, por lo que me acuerdo.

Pero... el navegador web sería Netscape 2.0, y no había reproductores mp3, así que, olvídalo.

Resultado: Debian/testing

OPTIMIZACIÓN DE HARDWARE

Importantísimo: hdparm. Esta utilidad configura diversas cosas del disco rígido (uso de DMA, transferencias de 32 bits, etc). Como esta es una computadora veterana, la mayor parte de las cosas no están soportadas, pero con un poco de maña consguí subir la velocidad de transferencia de 1.7MBps a 4.7MBps, que es más o menos lo que da una máquina moderna de escritorio sin optimizar ). Se puede ver una breve explicación de como funciona hdparm en AcelerarDisco.

INICIO DEL SISTEMA

Obviamente, si hay poca memoria, no la desperdiciemos corriendo cosas que no necesitamos. Acá apliqué esa regla con fervor talibán.

Paso 1: limpiar el /etc/inittab 6 consolas virtuales? mejor dejemos 2. login gráfico? pibe, esta máquina la uso yo sólo. Con esta línea hago que arranque un X pero como usuario ralsina:

sx:2:respawn:/bin/su - ralsina -c exec xinit >/dev/null 2>&1

El "exec" evita que quede un shell corriendo, y usar xinit en vez de startx ahorra un programa (startx llama a xinit, de todos modos).

Paso 2: servicios

Solamente corre al inicio el apmd y el klogd (en una de esas lo saco).

KERNEL

Kernel 2.2.20, compilado a mano, soporte sólo para los módulos que necesito, sin soporte de firewall, ni PCI, ni casi nada.

X WINDOW SYSTEM

Nuevamente, XFree 3.3.6 usa menos memoria (creo), pero no pude hacerlo funcionar, por lo tanto, XFree 4.1!

Para ahorrar memoria, se pueden quitar diversos módulos. Lo primero es sacar el xfs (X Font Server) y hacer que X mismo cargue las fuentes.

Luego, se quita soporte para tipos de fuente speedo y type1, dejando sólo fuentes True Type (uso las "core fonts" de Microsoft).

Con esos dos simples cambios se logra un ahorro de memoria de aproximadamente 2MB.

También se pueden quitar extensiones como XRENDER, XVideo, etc, pero creo que involucra recompilar el Xserver. hay una opción tentadora en la compilación, que se llama Xtiny, usada en palms y cosas similares, que queda pendiente para un futuro.

El X server lo configuré para 16bpp, no 24 ni 32. Eso ahorra memoria cuando se crean pixmaps offscreen, ya que tienen la cantidad de colores del display. Esto provoca un enorme ahorro de memoria al, por ejemplo, abrir una página web.

El ahorro sería aún mayor si pudiera usar 8bpp, pero se ve horrible.

Se puede ahorrar mucho espacio en disco borrando pedazos de X que no se usan. Por ejemplo el programa xieperf.

WINDOW MANAGER

Olviden KDE. Olviden GNOME. Olviden hasta Window Maker. Hay que pensar CHICO.

Hay algunos window managers que son chicos, pero engañan al poner gran parte de su funcionalidad en programas adicionales. Yo buscaba un window manager que fuera chico, pero que permitiera asignar atajos de teclado, tuviera un menú para lanzar aplicaciones y una barra de tareas.

Soporte para applets de diversos tipos es un plus.

La respuesta: fluxbox. Usa menos de 500KB de memoria residente!

APLICACIONES

SHELL

Una aplicación gordita es el shell: bash usa cerca de 2MB de RAM! En esta máquina el shell por defecto (/bin/sh) es ash: usa alrededor de 450KB, el 25%.

Obviamente ash no es un shell interactivo muy cómodo, pero al ser /bin/sh un link a /bin/ash, los scripts de sistema usan ash, y corren más rápido.

Un detalle: cuando el window manager arranca una aplicación, en realidad arranca un shell, y el shell arranca la aplicación. Ese shell intermedio se mantiene en memoria por toda la vida de la aplicación!

Para ahorrar memoria en eso, el shell del usuario también lo cambié a ash. Y si quiero usar bash, lo abro.

Una manera de evitar esa ejecución extra de un shell por parte del window manager es decir, por ejemplo, que en vez de iniciar rxvt inicie exec rxvt.

El "exec" hace que el shell sea reemplazado por el ejecutable, evitando tener un programa más en RAM.

El cambio de bash a ash provoca un cierto ahorro de memoria, pero, mucho más importante: las aplicaciones abren más rápido, y la máquina bootea MUCHO más rápido.

EMULADOR DE TERMINAL

Los cargué todos, los medí todos: rxvt.

REPRODUCTOR DE MP3

mp3blaster. Pequeño, poderoso, y tiene las opciones -2 y -8 para que use menos CPU. Ningún otro reproductor pudo reproducir sin saltos.

Tal vez deba probar los parches de baja latencia, a ver que pasa

REPRODUCTOR DE VIDEO MPEG

Acá hay uno solo que anda en esta clase de máquinas: MPegTV?. Es shareware, y la versión "linda" (ejecutable mtv) usa demasiada RAM.

Peeeero, la versión de línea de comando, mtvp, me dá video en 320x240 a 12fps!!! Siempre que no haya sonido. Si tiene sonido se pone mucho más lento.

CLIENTE GNUTELLA

Probé uno solo, me gustó y lo dejé: mutella

NAVEGADOR WEB

Me quedé con dos:

Opera para trabajar en gráfico. Recomendación: modo fullscreen para que no se vean los avisos

Links para trabajar en modo texto. Rápido, frames, tablas, múltiples downloads. Una joyita.

RESULTADO FINAL

Dejo que mi sistema hable por mí. Ésta es una sesión normal, navegando por la web, bajando cosas de gnutella, editando este archivo, conectado via ssh con otro servidor, todo dentro de X excepto el editor de texto.

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 1304 124 ? S 10:06 0:04 ini
root 2 0.0 0.0 0 0 ? SW 10:06 0:01 [kflushd]
root 3 0.0 0.0 0 0 ? SW 10:06 0:02 [kupdate]
root 4 0.2 0.0 0 0 ? SW 10:06 0:37 [kswapd]
root 5 0.0 0.0 0 0 ? SW 10:06 0:00 [keventd]
root 133 0.0 0.0 1632 0 ? SW 10:06 0:01 [klogd]
root 136 0.0 0.0 1292 0 ? SW 10:06 0:03 [apmd]
root 181 0.0 0.0 1420 0 ? SW 10:06 0:00 [cardmgr]
root 190 0.0 0.7 1684 112 ? S 10:06 0:00 /usr/sbin/cron
root 425 0.0 0.0 2748 0 ? SW 10:24 0:09 [sshd]
ralsina 611 0.0 0.0 1368 0 tty1 SW 10:47 0:01 [ash]
ralsina 827 0.0 0.0 2220 0 ? SW 11:09 0:00 [xinit]
root 829 2.6 12.1 17556 1780 ? S< 11:09 6:29 X :0
ralsina 832 0.3 2.2 3416 324 ? S 11:09 0:47 /usr/bin/fluxbox
ralsina 834 0.0 1.6 2512 236 ? S 11:09 0:01 wmtuxtime
root 1235 0.0 0.0 1476 0 ? SW 11:50 0:00 [pump]
ralsina 1236 0.0 1.0 2560 148 ? S 11:50 0:09 rxvt -e ash
ralsina 1241 0.0 0.0 1352 0 pts/0 SW 11:50 0:00 [ash]
ralsina 1242 0.0 1.2 2940 180 pts/0 S 11:50 0:11 ssh master.kde.org
ralsina 1413 0.0 0.0 2576 0 ? SW 12:53 0:04 [rxvt]
ralsina 1414 0.0 0.0 1352 0 pts/2 SW 12:53 0:00 [ash]
ralsina 1415 0.0 19.3 16124 2844 pts/2 S 12:53 0:00 mutella
ralsina 1416 0.0 19.3 16124 2844 pts/2 S 12:53 0:00 mutella
ralsina 1417 0.0 19.3 16124 2844 pts/2 S 12:53 0:04 mutella
ralsina 1418 0.0 19.3 16124 2844 pts/2 S 12:53 0:04 mutella
ralsina 1419 4.7 19.3 16124 2844 pts/2 S 12:53 6:26 mutella
ralsina 1420 0.3 19.3 16124 2844 pts/2 S 12:56 0:26 mutella
ralsina 1500 0.0 0.0 1352 0 ? SW 13:21 0:00 [sh]
ralsina 1501 3.2 16.0 16420 2364 ? S 13:21 3:31 /usr/X11R6/bin/opera
ralsina 1503 0.0 16.0 16420 2364 ? S 13:22 0:00 /usr/X11R6/bin/opera
ralsina 1721 0.0 0.0 1352 0 tty1 SW 14:22 0:00 [sfte]
ralsina 1733 1.0 4.1 2816 612 tty1 S 14:22 0:30 /tmp/sfte linux16.txt
ralsina 1742 3.1 3.0 1364 452 tty2 S 15:10 0:00 -ash
ralsina 1744 0.0 7.5 2968 1108 tty2 R 15:10 0:00 ps aux

total used free shared buffers cached
Mem: 14708 14144 564 4644 816 5304
-/+ buffers/cache: 8024 6684
Swap: 47992 18880 29112

SOBRA MEMORIA

-- RobertoAlsina - 06 Mar 2002

 


Hosted by www.Geocities.ws

1