linux – ¿Cómo incluir en la lista negra un sector de RAM defectuoso correcto de acuerdo con la indicación de error MemTest86 +?

Pregunta:

MemTest86 + (la versión incluida con Ubuntu 13.04) dice

Failing address: 002f796c48 -    759.5 MB

¿Qué debo especificar en el parámetro del kernel de memmap para omitir esta área?

Intenté ejecutar memtester 770MB y dice que todo está bien, por lo que no parece que las indicaciones de MemTest signifiquen un error en el 759.5 MB desde el principio.

¿Cómo interpretar esta indicación MemTest para configurar memmap ?

No tengo dinero para comprar RAM nueva ahora y el error parece ser único, así que espero poder anularlo.

Respuesta:

memmap

Existe este tutorial titulado: Bad Memory HowTo que trata sobre la desactivación de la memoria a través del kernel usando el argumento memmap para el kernel. De acuerdo con el cómo, tiene 2 opciones cuando se trata de memmap :

  • Apague todo después de la mala memoria – (mem=###M option)
  • Apague solo la memoria alrededor de la mala memoria – (memmap=#M$###M option)

Con la primera opción, si memtest informa que hay mala memoria a 600M, entonces puede deshabilitar la RAM desde ese punto hasta el final de la RAM con esto:

 mem=595M

Si hay mala RAM en 802M y 807M, puede deshabilitar una sección de 10M de RAM a partir de 800M de esta manera:

memmap=10M$800M

NOTA: Esto incluirá en la lista negra los 10M después de la dirección base de 800M. Debería ejecutar memtest86+ después para confirmar que este argumento es correcto.

BadRAM

Hay un parche disponible para Ubuntu llamado BadRam. Se trata muy bien aquí en esta publicación titulada: BadRAM en el sitio de la comunidad de Ubuntu.

Después de aplicar el parche al kernel utilizando los detalles de esa página, realiza modificaciones en la configuración de Grub2:

extracto de ese sitio para Grub2

El archivo de configuración de GRUB2 en Natty tiene una línea para configurar las exclusiones de RAM defectuosas del kernel. Entonces, asumiré que es la forma preferida de mapear una sección de memoria que muestra errores. La línea que establecí fue

GRUB_BADRAM = "0x7DDF0000,0xffffc000"

La forma sugerida en cada sitio web que pude encontrar fue configurar esto para ejecutar memtest86 y dejar que le muestre la configuración de BadRAM. memtest86 me dio una página de cosas que habría tenido que ingresar. Pude ver que todas las direcciones estaban en un bloque de 16K, así que solo quería mapear ese bloque de 16K fuera de acción. Así es como generé la entrada correcta.

El primer parámetro es sencillo. Esa es la dirección base de la mala memoria. En mi caso, pude ver que todas las direcciones incorrectas eran mayores que 0x7DDF0000 y menores que 0x7DDF4000. Entonces, tomé el comienzo del bloque 16K como mi dirección de inicio.

El segundo parámetro es una máscara. Pones 1 donde el rango de direcciones que deseas comparte los mismos valores y 0 donde variará. Esto significa que debe elegir su rango de direcciones de manera que solo varíen los bits de orden inferior. Mirando mi dirección, la primera parte de la máscara es fácil. Quieres empezar con 0xffff. Para el próximo bocado, lo explicaré con mapas de bits. Quiero oscilar entre 0000 y 0011. Entonces, la máscara para badram sería 1100 o una c hexadecimal. Los últimos 3 nibbles deben ser todos 0 en la máscara, ya que queremos que se mapee todo el rango. Entonces, obtenemos un resultado total de 0xffffc000.

Después de configurar esta línea en / etc / default / grub, ejecuté sudo update-grub y reinicié y mi mala memoria ya no se usaba. No se necesitan parches del kernel para mapear la memoria defectuosa utilizando este método.

Seguimiento # 1

Mirando a través de la página de wikipedia para memtest86 +, dice lo siguiente:

extracto de la página de wikipedia Memtest86

A partir de Memtest86 2.3 y Memtest86 + 1.60, el programa puede generar una lista de regiones RAM defectuosas en el formato esperado por el parche BadRAM para el kernel de Linux; Al usar esta información, un sistema Linux puede usar de manera confiable un módulo RAM incluso si tiene algunos bits defectuosos. Grub2 es capaz de suministrar esta misma información a un kernel sin parche, eliminando la necesidad del parche BadRAM.

También encontré esta página de Gentoo que especificaba memmap=... usando una dirección hexadecimal, por lo que podría especificarlo así:

memmap=5M$0x2f796c48

El 5M es solo una suposición, obviamente, podría ajustarlo más bajo o más alto dependiendo de la cantidad de RAM alrededor de esa región que desee / necesite omitir.

Finalmente, también puede especificar el tamaño en hexadecimal:

memmap=0x10000$0x2f796c48

Ignoraría los 64 KB que comienzan en la dirección 0x2f796c48.

Referencias

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım