h1

Uso de badram en Ubuntu Feisty

22 mayo 2007

Badram es un parche para el nucleo de Linux que nos permite utilizar algunos módulos de memoria RAM averiados. Si nuestra memoria tiene averiadas algunas direcciones fijas, es posible decirle al núcleo de Linux que no escriba nada en esas direcciones. Por desgracia, y hasta que se incluya el badram en el núcleo de Linux, no nos queda mas remedio que usarlo como parche. Aquí va una pequeña explicación sobre como parchear el núcleo y usar badram. Está centrado en Ubuntu Feisty, aunque debería de ser extrapolable facilmente. De todas formas, y puesto que lo que vamos a hacer aquí no es un proceso trivial, y nos llevará un buen rato, no puedo dejar de recomendar una lectura de la página de badram antes de decidirnos a hacer nada. Por último, quiero advertir que esto no es una guia exhaustiva ni sobre badram ni sobre la compilación del kernel, sino una pequeña recetilla que escribo con la esperanza de que pueda ayudar a alguien, y sin ofrecer ninguna garantía. Un consejo, si alguien quiere hacer lo que aquí explico, que investigue un poco antes, y sobre todo, que se lea esto enterito antes de hacerlo. Para saber lo que puede esperar.

1. En primer lugar debemos detectar que posiciones de nuestra memoria están averiadas. Para ello empleamos el programa memtest86+ que viene incluido por defecto en Ubuntu. En otras distribuciones debería ser sencillo de instalar mediante el sistema de paquetería que cada una use. Una vez estemos ejecutando memtest86+ debemos decirle que muestre los resultados como cadenas para badram (“badram patterns”). Cuando el memtest lleve un rato funcionando copiaremos con mucho cuidado el resultado (o mejor aún, le tiraremos una foto a la pantalla si podemos). Necesitaremos esas notas mas adelante. Puesto que el memtest86+ genera varias líneas, creo (y es lo que me funciona) que basta con anotar la última.

Badram

2. Una vez hecho esto, necesitamos instalar unos cuantos paquetes, y para ello necesitamos arrancar el ordenador. Para hacer esto, conviene conocer el parámetro mem. Me explico. En la foto se vé que la primera posición de mi memoria que está averiada está en los 130 megas. Es decir, que los primeros 130 megas de mi RAM funcionan bien. En el arranque podemos decirle a linux que no use toda la memoria disponible, sino una cantidad que le indiquemos nosotros. Por ejemplo, si yo quiero usar solo 128 megas de RAM, le pasaré al kernel el parámetro mem=128M

La manera de hacerlo paso a paso es:

- Pulsamos ESC cuando veamos que el GRUB está cargando (lo veremos, en inglés, al poco de encender el ordenador). Con esto hemos sacado el menú de GRUB

- Una vez en ese menú, veremos una lista con varios núcleos y el memtest86+ Nos quedamos sobre el núcleo que está seleccionado y pulsamos e (editar)

- Una vez pulsado esto, nos saldrán varias líneas. Nos ponemos sobre la que empieza por “kernel” y pulsamos e

- Nos saldrá una línea larga. Avanzamos hasta el final de la línea y añadimos mem=128M (o lo que sea en cada caso). Pulsamos intro y después b

3. Una vez arrancado el sistema, vamos a instalar paquetes.

En primer lugar, las fuentes del nucleo. Podemos ver la versión del nucleo que estamos ejecutando con uname -r En mi caso 2.6.20-15-generic. Esto significa que debo instalar el paquete llamado linux-source-2.6.20

sudo apt-get install linux-source-2.6.20

Aparte de este, vamos a instalar unos cuantos paquetes mas para poder compilar el núcleo.

sudo apt-get install build-essential bin86 kernel-package

sudo apt-get install libqt3-headers libqt3-mt-dev

Y por último, bajamos de la web de badram el parche correspondiente a nuestra versión del núcleo.

Una vez instalados los paquetes, en primer lugar, vamos a /usr/src y extraemos las fuentes del nucleo que acabamos de instalar:

cd /usr/src

sudo tar jxvf linux-source-2.6.20.tar.bz2

Y después creamos un enlace simbolico, de forma que el directorio /usr/src/linux apunte a las fuentes que acabamos de instalar, en mi caso, esto es:

sudo ln -s /usr/src/linux-source-2.6.20 /usr/src/linux

4. A continuación vamos a aplicar el parche que acabamos de descargar. Lo copiamos a /usr/src/linux y lo aplicamos. En mi caso, lo que tengo que hacer es:

sudo patch -p1 < Nombre_del_parche.patch

5. Como paso previo a la configuración de nuestro núcleo, copiamos la configuracón actual a la raiz de las fuentes del nucleo, es decir:

sudo cp /boot/config-2.6.20-15-generic /usr/src/linux/.config

6. Ya estamos listos, basta con ponernos en /usr/src/linux y hacer sudo make xconfig para configurar nuestro nuevo nucleo. Para confirmar que hemos aplicado el parche correctamente, vamos a “Processor type and features” y comprobamos que “Work around bad spots in RAM” está activado.

7. Una vez hecho esto, y todo lo que hayamos querido tocar en la configuración del nucleo, una última cosa que tuve que hacer yo para lograr tener una consola de alta resolución. Antes de compilar debemos tocar el archivo /etc/initramfs-tools/modules
y añadir vesafb y fbcon, así conseguiremos que el framebuffer de la consola siga funcionando.

8. Por último, para compilar basta con ir a /usr/src/linux y hacer

sudo make-kpkg clean

y por último

make-kpkg --append-to-version=.XXXX --initrd kernel_image

Las XXXX las podeis sustituir por algún nombre para identificar el kernel. Yo he puesto badram2

Para una explicación mas detallada de este paso, os remito a está página

9. Tras esperar un buen rato, tendremos nuestro kernel compilado. Ya queda poco. Nos habrá quedado en /usr/src, así que vamos allí y lo instalamos:

sudo dpkg -i linux-image-2.6.20.3-ubuntu1.badram2_2.6.20.3-ubuntu1.badram2-10.00.Custom_i386.deb

10. Una vez instalado, debemos pasarle a nuestro nuevo nucleo la linea que nos dió memtest86+ Esto lo hacemos editando el archivo /boot/grub/menu.lst En ese archivo buscamos la sección que tenga exactamente el nombre del kernel que acabamos de instalar (en mi caso es Ubuntu, kernel 2.6.20.3-ubuntu1.badram2, puedo identificarlo gracias al badram2 del nombre). Dentro de esa sección buscamos la línea que comienza con kernel, y al final añadimos la linea del memtest86+. En mi caso, esto es:

badram=0x08284f28,0xfd7dfffc,0x08274f28,0xfd77fffc,0x08200f28,0xfff83ffc,0x0aa80f28,0xfffe7ffc,0x0aaf0f28,0xfffffffc,0x0aad0f28,0xffffbffc,0x0aa80f28,0xfff9fffc,0x082b0f28

11 Y ya está. Reiniciamos y arrancamos con el nuevo kernel. Para comprobar que badram está funcionando, basta con hacer:

dmesg | grep BadRAM

Que me devuelve la siguiente línea:

[ 30.121477] Memory: 601976k/655280k available (2018k kernel code, 52020k reserved, 895k data, 328k init, 0k highmem, 264k BadRAM)

12. Un último comentario. Como tengo una tarjeta NVIDIA y estoy usando los drivers propietarios, al reiniciar, me encuentro con que las X no arrancan. Para arreglar esto, basta con instalar el paquete nvidia-kernel-source, descomprimir el archivo que nos instala en /usr/src, entrar al directorio que nos crea, compilar con make module e instalar.

h1

Conectar a redes WPA-PSK en debian etch

15 mayo 2007

Unas mini instrucciones, deberían valer para cualquier distribución, con algunos ligeros cambios:

1º Instalar wpasupplicant:

apt-get install wpasupplicant

2º Crear y editar el archivo /etc/wpa_supplicant.conf poniendo lo siguiente:

network={
ssid="nuestra_ssid"
scan_ssid=1
key_mgmt=WPA-PSK
psk="nuestra_clave"
}

3º Editar el archivo /etc/network/interfaces añadiendo la siguiente sección. En mi caso, la interfaz de red se llama ath0, generalmente suele ser wlan0, depende del caso.

iface ath0 inet dhcp
pre-up wpa_supplicant -Bw -Dwext -i ath0 -c /etc/wpa_supplicant.conf
post-down killall -9 wpa_supplicant

4º Y listo, con hacer /etc/init.d/networking restart deberiamos tener conexión

h1

Instalando Debian Sarge en un Texas Instruments Extensa 650CD

29 marzo 2007

Introducción

En principio no hay muchas razones para, en pleno 2006, intentar instalar una distribución moderna de GNU/Linux en un ordenador tan antiguo y limitado. Pero cosas como estas casi me las tomo como un reto personal, y, teniendo en cuenta que el ordenador es de un amigo que lo quiere para editar en TeX, pienso que el esfuerzo ha merecido la pena (y que me habré ganado una cerveza por el esfuerzo).

extensa1.jpg

Instalando Debian

En principio yo pretendía instalar Debian Sarge usando tres diskettes de arranque y la instalación por FTP. Por desgracia, el instalador de Sarge advierte de que requiere 24 MB de RAM para funcionar correctamente, y, aunque puedo continuar la instalación, ocurren errores casi aleatorios que impiden que se pueda instalar correctamente. Tras varios intentos con configuraciones extrañas, me decidí a bajar el primer CD de la anterior versión de Debian (Woody) e instalar desde ahí. Una vez instalada una woody básica, configuré la red e hice “apt-get dist upgrade” para tener Sarge instalada. La instalación de Woody funciona sin ningún problema, arrancando desde el CD-ROM.

Configurando

Pcmcia y red

A pesar de que según el instalador de Debian la parte de PCMCIA estaba correctamente configurada, al intentar cargar el módulo de mi tarjeta de red (8139too) me aparecía un bonito error. La solución fue cargar el módulo yenta_socket antes de arrancar PCMCIA. Es decir.

-Descargar los módulos PCMCIA con /etc/init.d/pcmcia stop
-Cargar el módulo yenta_socket
-Reconfigurar PCMCIA haciendo dpkg-reconfigure pcmcia-cs

Haciendo esto ya es posible cargar el módulo de la tarjeta de red. Para hacer que el cambio sea definitivo basta con editar el archivo /etc/modules y añadirle una línea con yenta_socket. Con esto ya es posible actualizar de Woody a Sarge, haciendo apt-get dist upgrade.

Compilando un nuevo núcleo

Teniendo un equipo tan limitado parece fundamental exprimir todo lo que sea posible el hardware. El primer paso parece ser compilar nuestro propio núcleo. Si es posible, lo mejor es usar un ordenador más rápido para compilar, porque hacerlo en este pequeño ordenador tiene que ser un dolor. No voy a extenderme en esto, porque es algo que está muy documentado (y también porque no tengo demasiada idea). Solo comentar que, conociendo lo que tenía el ordenador quité cosas a lo bestia (es decir, cosas como USB, Firewire, etc…. eliminadas enteras). Al final se trata de generar un paquete .deb que pasamos al portatil.

Servidor X (Pantalla y ratones)

Bastante problemático. El módulo de XFree que necesitamos es el “chips” aunque también funciona el “vesa”. Con el vesa y las opciones por defecto es posible funcionar a 800×600 y 16 bits de color. Sin embargo, usando el módulo de “chips” no había manera de arrancar a 800×600@16. Solo se podía usar a 800×600@8 o a 640×480@16. Tras bastante googlear encontré una “modeline” que, aún sin ser de este modelo exacto, funciona. Es:

#800x600@56hz
Modeline "800x600" 35.00 800 840 968 1056 600 601 605 628

Esta línea se añade dentro de la sección “Monitor”

Aquí, aparte del touchpad incluido con el portatil, tengo un ratón serie (a pesar de que el ordenador tiene un puerto PS/2). La idea es usar siempre el touchpad, y, si el ratón serie está conectado, que ambos se usen simultaneamente. Configurar el touchpad es muy facil, al instalar el servidor X no hay más que especificarle el dispositivo /dev/psaux y como protocolo “auto” o “ps/2″.

Para configurar el segundo ratón se debe añadir una nueva sección “InputDevice”

Section "InputDevice"
Identifier "Raton serie"
Option "SendCoreEvents" "true"
Driver "mouse"
Option "Device" "/dev/ttyS0"
Option "Protocol" "auto"
Option "Emulate3Buttons" "false"
EndSection

Y una línea en la sección “ServerLayout”

InputDevice "Raton serie" "CorePointer"

El XF86Config completo es:

# XF86Config-4 (XFree86 X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the XF86Config-4 manual page.
# (Type "man XF86Config-4" at the shell prompt.)
#
# This file is automatically updated on xserver-xfree86 package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xfree86
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following commands as root:
#
# cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.custom
# md5sum /etc/X11/XF86Config-4 >/var/lib/xfree86/XF86Config-4.md5sum
# dpkg-reconfigure xserver-xfree86


Section "Files"
FontPath "unix/:7100" # local font server
# if the local font server has problems, we can fall back on these
FontPath "/usr/lib/X11/fonts/misc"
FontPath "/usr/lib/X11/fonts/cyrillic"
FontPath "/usr/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/Type1"
FontPath "/usr/lib/X11/fonts/CID"
FontPath "/usr/lib/X11/fonts/Speedo"
FontPath "/usr/lib/X11/fonts/100dpi"
FontPath "/usr/lib/X11/fonts/75dpi"
EndSection
#
Section "Module"
Load "GLcore"
Load "bitmap"
Load "dbe"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "record"
Load "speedo"
Load "type1"
Load "vbe"
EndSection
#
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc104"
Option "XkbLayout" "es"
EndSection
#
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/psaux"
Option "Protocol" "auto"
Option "Emulate3Buttons" "true"
Option "ZAxisMapping" "4 5"
EndSection
#
Section "InputDevice"
Identifier "Raton serie"
Option "SendCoreEvents" "true"
Driver "mouse"
Option "Device" "/dev/ttyS0"
Option "Protocol" "auto"
Option "Emulate3Buttons" "false"
EndSection
#
#
Section "Device"
Identifier "Generic Video Card"
Driver "chips"
Option "no_stretch"
Option "lcd_center"
Option "HWcursor"
EndSection
#
Section "Monitor"
Identifier "Generic Monitor"
HorizSync 31.5-40
VertRefresh 50-70
Option "DPMS"
#
#800x600@56hz
Modeline "800x600" 35.00 800 840 968 1056 600 601 605 628
EndSection
#
Section "Screen"
Identifier "Default Screen"
Device "Generic Video Card"
Monitor "Generic Monitor"
DefaultDepth 16
SubSection "Display"
Depth 1
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 4
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 15
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "800x600" "640x480"
EndSubSection
EndSection
#
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse" "CorePointer"
InputDevice "Raton serie" "CorePointer"
EndSection
#
Section "ServerFlags"
Option "AllowMouseOpenFail" "false"
EndSection

Section "DRI"
Mode 0666
EndSection

Sonido

Personalmente me gustan más los módulos de ALSA, pero tras haber compilado nuestro núcleo, parece mejor usar los drivers "normalitos". Usar el chip de sonido de este portatil es tan sencillo como añadir estas líneas a /etc/modules

sound
soundcore
sb
sb_lib

APM

El funcionamiento es un verdadero desastre, y lo suyo sería desactivar todo si se pudiese. No es posible cambiar de consola virtual con "CTRL"+"ALT"+"Fn" porque con eso se activan las teclas especiales del portatil. En modo consola se puede hacer con "ALT"+"Fn" pero, estando en X solo es posible cambiar a terminales virtuales cuya F no corresponda a ninguna tecla especial. Al bajar la pantalla el ordenador se suspende, y cuando volvemos a levantarla nos lo encontramos colgado. No me he esforzado mucho con todo esto, y no parece que tenga una solución sencilla.

Optimizando el rendimiento

Usar una distribución tan moderna como Sarge en un ordenador tan viejo puede resultar un verdadero dolor con las opciones por defecto, así que es necesario hacer algunos trucos para acelerar el ordenador. Todo lo que hice fue basandome en este magnífico artículo. Gracias a él he conseguido un rendimiento que, sin ser espectacular, es suficiente para la tarea que va a realizar.

Pendiente

Aunque me dejaré algunas cosas, encuentro de especial importancia el tema de los infrarrojos. Tras instalar los paquetes relacionados con el tema, el programa findchip reporta esto:


reg=0x010
Found NSC PC87338 Controller at 0x2e, DevID=0x0b, Rev. 1
SIR Base 0x2f8, FIR Base 0x2f8
IRQ = 0, DMA = 3
Enabled: yes, Suspended: no
UART compatible: yes
Half duplex delay = 0 us

Con lo cual, debería ser tan sencillo como cargar el módulo nsc-ircc. Pero aún no soy capaz de hacerlo.

h1

Comencemos

8 febrero 2007

He abierto este blog por una razón muy sencilla, pillar mi nombre en wordpress.com por si algún dia me puede ser util. Además, si consigo cargar la base de datos de mi antiguo blog, tal vez hasta lo recupere. Quien sabe.

h1

El examen

25 enero 2006

Mañana tengo el examen práctico de conducir. Veremos si es verdad que es tan dificil. Yo me veo preparado y tal, aunque un poco justito, pero de todas maneras, en esto influye muchísimo también el azar. Espero tener suerte, que las clases prácticas valen muchísima pasta.

Raúl conduciendo su coche

h1

A mi me gusta el humor amarillo

23 enero 2006

La cadena del malvado Polanco ha decidido reponer una de las “series” clásicas de toda una generación (la mia, en concreto). Nada menos que Humor Amarillo. Aquí en 20 minutos está la noticia. Realmente merece la pena echarle un vistazo a los comentarios de la gente, muchos están aún mas entusiasmados que yo.

Nací en 1984, así que yo era un poquito pequeño cuando se emitía este programa. Así, apenas recuerdo nada del jodido programa, salvo que era bastante divertido. Las opiniones del resto de la gente de mi entorno eran (antes de esta noticia) parecidas a las mias, a todo el mundo le encantaba. E imagino que ahora habrá un gran entusiasmo. Espero que se cumplan las expectativas.

Confieso que he hecho trampas. A pesar de que el programa lleva tantisimo tiempo sin emitirse, yo he podido ver un episodio gracias a cierto programa de ordenador. Y con eso, tengo cierta ventaja, y sé lo que tengo que esperar. El ver a los concursantes ahostiarse es relativamente gracioso (algo que consigue cualquier programa genérico de tortazos). Lo realmente descojonante son los comentarios de los dos dobladores españoles. No recuerdo ninguno en concreto (salvo el del chino cudeiro) pero de verdad que son graciosos, y me reí un buen rato. Y aquí es donde veo el problema que puede haber.

Y es que los comentarios, eran bastante políticamente incorrectos. Solo el principio es un poema. Recordemos: Una monja: “A mi me gusta el humor blanco” Un negro: “A mi me gusta el humor negro” Un guardia civil: “A mi me gusta el humor verde” Y por último una oriental (china, japonesa o lo que sea) dandoles una lección a todos: “El mejor es el humor amarillo”. ¿Gracioso no? Pues bien, lo que me estoy temiendo es que algunos colectivos de esos tan sensibles que hay ahora encuentren que este doblaje “clasico” ofensivo contra los derechos humanos, o de los picoletos o algo. Ya pasó, por poner un ejemplo, con el anuncio de “Rodilla”. Y me temo, que para evitar susceptibilidades se doble de nuevo, pero de acuerdo con la mojigatería de nuestros dias. Realmente espero que no sea así, porque me van a derribar un mito.

Por cierto, si alguien está impaciente, en la red edonkey solo hay un capítulo, el especial “padres e hijos”. Los demás no están en castellano, y no molan. Este que digo, merecería la pena solo por recordar como era la televisión en los primeros noventa. En fin, solo pedirle a Polanco que no profane un clásico.

=Actualización de urgencia=
Algún alma generosa puso en los comentarios de 20 minutos este enlace Un poco lento, pero merece la pena.

h1

Año nuevo

10 enero 2006

Pues eso, y con muchísimo retraso (mea culpa). Feliz año a todos

h1

The Freaks are allright

2 diciembre 2005

En Ciudad Universitaria……

vigilia

Este camión lo pagaba un arzobispado o algo así. Desde luego, son unos cachondos.

h1

Conduciendo

15 noviembre 2005

Pues sí, hoy he empezado a llevar el coche de la autoescuela. ¡Que tensión!. A pesar de que ya había conducido alguna vez (en sitios despejados, que conste) el estar moviendome en calles de verdad ha sido una novedad.

¿Qué decir? Iba tan concentradisimo que apenas me acordaba de usar el intermitente ni de mirar por los retrovisores ni nada de eso. Simplemente, miraba hacia adelante, a ver lo que me encontraba. Espero mejorar eso, claro.

En fin, lo que veo es que tantisimo tiempo con videojuegos no me ha servido para gran cosa. Esto es distinto.

Y mañana más.

h1

SPAM

11 noviembre 2005

Hoy me he encontrado con una sorpresita en el blog. Un montón de comentarios basura en los que se repiten docenas de veces enlaces hacia páginas de poker online o de venta de viagra, que sin duda habrán sido publicados por un simpático robot. ¿Que he hecho? Pues instalar una herramienta antispam que, de momento me ha dado una muy buena impresión, ha borrado toda esa basura de un plumazo. ¿Problemas? Tal vez la herramienta se equivoque, asi que tal vez podría haber problemas con los comentarios en un futuro (aunque confío que no). De todas formas, ahora entiendo porque se pide en algunos sitios que introduzcas un texto o un numerito. Y es que cada dia se aprende algo nuevo.

Seguir

Get every new post delivered to your Inbox.