Si, asà es, seguro alguna vez te toco encontrarte con una memoria rota. Bueno, si usas GNU/Linux considerate afortunado, porque las memorias que contienen sectores defectuosos pueden utilizarse sin ningún tipo de problemas. ¿Cómo?, simple, al kernel le podemos decir que no utilice los sectores defectuosos de la misma, por lo que el resto de la memoria puede utilizarse sin problemas.
Lo primero que tenemos que hacer es detectar los sectores defectuosos, para esto utilizamos el memtest86+, cuya instalación en Debian simplemente se reduce a hacer un
apt-get install memtest86+Luego editamos el /boot/grub/menu.lst y descomentamos la siguiente lÃnea
# memtest86=true
Guardamos y corremos lo siguiente
update-grubEso actualizará nuestro grub, y agregará la opción de memtest a éste.
El paso siguiente es reiniciar la máquina y elegir memtest86+ en el grub, con lo que empezamos a correr el testeo de memoria. Entre las opciones que debemos configurar en el memtest, esta el como informa los errores que encuentra, necesitamos que muestre los errores en el formato BadRam, el que luego veremos porque. Para esto simplemente nos vamos a la parte de opciones (presionamos la “c”), de ahà nos vamos “Error Report Mode ” (presionamos 5 ), y por últimos seleccionamos la opción “BadRam Patterns”. Listo, dejamos correr el test, en cuanto al tiempo que este debe correr, digamos que mientras más mejor, pero bueno, para tener un número les digo que serÃa bueno dejarlo corriendo unas 10 hs, por ejemplo toda una noche.
Pasadas estas 10hs de test, anotamos le reporte de errores, el que luego utilizaremos para decirle al kernel, que direcciones no utilice. En mi caso solo apareció un solo sector defectuoso, y el reporte solo tenÃa lo siguiente:
badram = 0x01c751f4,0xfffffffcTomamos nota de esto y presionamos escape para reiniciar (el test nunca termina, nosotros decidimos cuando es suficiente).
Ahora que ya tenemos el reporte, lo que tenemos que hacer es aplicarle un patch al kernel, y si señores, lamentablemente tendremos que compilar el kernel
, pero no se desanimen, que es una tarea emocionante
.
Antes de continuar, les digo que no es recomendable compilar el kernel en la misma máquina que tiene las memorias defectuosas, por lo que serÃa bueno que los pasos siguientes se realizaran en otra máquina, y luego de que generemos el .deb con la imagen customizada del kernel y con el patch en cuestión, copiemos este .deb a la maquina con problemas, y lo ejecutemos allÃ.
El patch en cuestión se llama badram, y en Debian el paquete que lo contiene se llama kernel-patch-badram, por lo que hacemos
apt-get install kernel-patch-badramLuego de instalar este paquete, debemos instalar los fuentes del kernel al cual le aplicaremos el patch, en mi caso uso el último disponible, el linux-sources-2.6.22, asà que hacemos
apt-get install linux-source-2.6.22Configuramos el kernel, para que trabaje en base a nuestro hardware, por lo que ya saben,
cd /usr/src tar -xvfj linux-source-2.6.22.tar.bz2 cd linux-source-2.6.22 make xconfigElegimos las opciones que más se adecuen a nuestro hardware, entre las que estan el tipo de arquitectura y el procesador. No voy a entrar en detalle sobre esto, porque serÃa demasiado extenso, el tÃo google sabe un montón de esto, asà que cualquier consulta sobre como elegir las opciones de configuración del kernel, estarán más que contestadas
.
Después de que seleccionamos las opciones de nuestro kernel, pasamos a compilarlo, para lo que vamos a utilizar la herramienta make-kpkg, la que compilará y empaquetará el kernel nuevo (generará un .deb con el kernel que compilamos).
apt-get install kernel-packageluego ejecutamos
cd /usr/src/linux-source-2.6.22 make-kpkg –append-to-version=custom`date +%d%m%y` –initrd –added-patches badram kernel_imageNOTA: el `date +%d%m%y` es para que ponga la fecha de hoy, es a libre elección esto, yo prefiero ponerle fecha para después acordarme cuando lo compile.
Bueno, esperamos a que termine de compilar y empaquetar y listo, ya tenemos en /usr/src el paquete con nuestro kernel compilado, emparchado y empaquetado, en mi caso el .deb se llama linux-image-2.6.22.151007_2.6.22.151007-1.0.Custom_i386.deb.
Copiamos este .deb a la maquina con problemas, y lo instalamos simplemente haciendo
dpkg -i linux-image-2.6.22.151007_2.6.22.151007-10.00.Custom_i386.debDespués editamos el archivo /boot/grub/menu.lst y a la lÃnea del kernel nuevo le agreamos lo que nos genero el memtest86+, o sea, badram=0x01c751f4,0xfffffffc. En definitiva, la sección del kernel nuevo nos queda de la siguiente manera:
title Debian GNU/Linux, kernel 2.6.22.151007 root (hd0,4) kernel /boot/vmlinuz-2.6.22.151007 root=/dev/hda5 ro badram=0x01c751f4,0xfffffffc initrd /boot/initrd.img-2.6.22.151007 savedefaultListo, reiniciamos y elegimos el nuevo kernel, y ya estaremos usando solo la memoria sanaSi es asÃ, felicitaciones!!!, reciclaste una memoria
.
Bueno espero que les sirva, y como siempre, se aceptan crÃticas, comentarios y mejoras.
[...] Recuperar un Memoria RAM [...]
yo tengo 2 gigas de ram y si se me rompen pongo 4 gigas i.e 2 de 2 gigas. Si no tenes ingenio tenes que tener plata. ese es mi caso
como asiduo utilizador de windows prefiero tener 512 mb de ram menos pero poder jugar a todos los juegos y no morirme esperando que salga la verison gratis
“el loco”, es verdad lo que decÃs, pero pensa en el caso donde tengas una pc que tiene un solo slot de 1Gbyte, y que el mismo se le rompió “una” sola dirección de memoria. No se justifica tirarla…
A parte… lo anterior sirve para aprender un montón de cosas… yo lo aplique para investigar un poco por esos lados, siempre es bueno aprender probando.
Al tÃo “bill gamer”; le respondo que no se a donde va su comentario…. y que si prefiere windows q lo use, a mà no me molesta. Respecto de morirme esperando que salga la versión gratis de un juego para linux, no creo que yo sea de ese tipo de personas… en todo caso preferirÃa morirme esperando la versión free…
Saludos y gracias por sus comentarios
Hola Maxi, o debo decirte killer…, muy bueno el blog.
Te comento de mi problema, tengo una PIII con 512 de ram que hace poco empezó con problemas, lo noté porque los daba en linux, si fuera en winchot, ni me preocupo. Le corri el memtest y me largo 38 errores luego de casi 10 hs. ¿Qué me conviene hacer:
1º compilar el kernel con el badram?, o
2º comprarme ram nueva?
Respecto al primer punto, te comento que solo pude ver 10 de los 38 errores que me largo, no tengo idea de como ver o guardar los otros…
Con el segundo, el problema es que puede ser dificil conseguir ram, ya que es un poco vieja, pero no imposible.
Un abrazo y nos vemos en el UrT, asà te hago comer algunos tiros…
Se-Bash como va! . Mira la decisión es tuya … yo utilizarÃa BADRAM, dado que solo tenés que seguir los pasos que deje posteado acá, no hay mas vuelta que esa, y seguis usando la mem como si estarÃa nueva
.
Respecto de que solo podes ver 10 de los 38 errores, no te preocupes, no necesitas ver los 38 errores, si seguÃs los pasos que puse en el post, el memtest te va a dar la lÃnea que tenés que poner en el archivo menu.lst del grub, para que el kernel no use las direcciones de memoria rotas. No es mucha ciencia, solo seguà los pasos al pie de la letra, y cualquier cosa me consultas. Saludos y suerte.
[...] al kernel que no escriba en errores defectuosos) en windows no. Te recomiendo esta pagina: http://maximilianoboscovich.wordpres…s-pero-utiles/ Se que existen instrucciones de como hacer que un programa no se escriba en direcciones especificas [...]
Mentira boludo!!! me sirve un banda esto!! mil gracias amigo!!!!!