|
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
|