# Memtest86

MemTest86 y Memtest86+ son programas de software de prueba de memoria diseñados para probar y hacer pruebas de estrés en la memoria de acceso aleatorio (RAM) de una computadora con arquitectura x86 en busca de errores, escribiendo patrones de prueba en la mayoría de las direcciones de memoria, leyendo los datos y comparando errores. Cada prueba trata de verificar que la RAM acepte y retenga correctamente patrones arbitrarios de datos escritos en ella, que no haya errores cuando interactúen diferentes bits de memoria y que no haya conflictos entre direcciones de memoria.

## Historia

MemTest86 fue desarrollado por Chris Brady en 1994. Después de que MemTest86 permaneció en la versión 3.0 (versión de 2002) durante dos años, Samuel Demeulemeester creó la bifurcación Memtest86+ para agregar soporte para CPU y conjuntos de chips más nuevos. A febrero de 2023, la última versión de Memtest86+ es la 6.10.
MemTest86 está escrito en ensamblador x86 y C. El código fuente de MemTest86 (versión BIOS) y de la bifurcación MemTest86+ se publican bajo la Licencia Pública General GNU (GPL). El código de arranque se derivó originalmente de Linux 1.2.1 . El programa se compila como código independiente de posición para poder moverse y probar todas las regiones de la memoria. Ambas versiones ahora son compatibles con los procesadores multinúcleo actuales y los conjuntos de chips correspondientes.
A partir de MemTest86 2.3 y Memtest86+ 1.60, el programa puede entregar una lista de regiones de RAM defectuosas en el formato esperado por el parche BadRAM para el kernel de Linux . GRUB2 puede proporcionar esta misma información en un kernel sin parchear, lo que hace innecesario el parche BadRAM. Microsoft Windows tiene una característica similar (badmemorylist/badmemoryaccess), pero se requiere una conversión manual para configurarlo.
En febrero de 2013, el MemTest86 original se vendió a PassMark. La versión de BIOS se actualizó bajo GPL hasta la versión 4.3.7. Para entonces, el conjunto de características de las dos horquillas era aproximadamente igual.
La versión 5.0 de MemTest86 (3 de diciembre de 2013) se reescribió para soportar arranque en UEFI, lo que permite la aprobación del arranque seguro y la compatibilidad con el mouse. Todas las versiones de UEFI se publican bajo una licencia patentada de software gratuito. Cuando UEFI no está disponible, la versión 5.0 (y posterior) recurre al arranque por BIOS y carga la versión anterior 4.3.7. La versión 6.0.0 (13 de febrero de 2015) agrega soporte para RAM DDR4 y una prueba de martillo en fila basada en la investigación de Yoongu Kim, et al. . La versión 10 establece solo el arranque UEFI y no arrancará en sistemas que no sean UEFI, lo que requiere una descarga por separado de la versión anterior 4.3.7 que también se mantiene en las descargas del sitio web oficial para ese propósito.
MemTest86+ 6.0 se lanzó en octubre de 2022, se reescribió para compatibilidad con UEFI, RAM DDR4 y DDR5, y es compatible con todos los conjuntos de chips y CPU AMD e Intel actuales.

## Características

Hay dos ramas de desarrollo de Memtest86. El original se conoce simplemente como MemTest86 . El otro, conocido como Memtest86+, es una bifurcación de desarrollo del MemTest86 original. Su apariencia y funcionalidad en pantalla eran casi idénticas hasta los lanzamientos de v4. Sin embargo, la versión 5 de MemTest86 agregó una interfaz gráfica de usuario (GUI) controlada por mouse y compatibilidad con UEFI.
Estos programas funcionan con casi todas las computadoras compatibles con PC desde los sistemas basados en 80386 y 80486 hasta los últimos sistemas con procesadores de 64 bits. Cada nueva versión agrega soporte para procesadores y conjuntos de chips más nuevos.
MemTest86(+) está diseñado para ejecutarse como un programa autónomo e independiente desde una unidad flash USB de arranque, CD-ROM, disquete o desde un administrador de arranque adecuado sin un sistema operativo presente. Esto se debe a que el programa debe controlar directamente el hardware que se está probando y dejar tanto espacio de RAM como sea posible para sus pruebas.
Las pruebas de MemTest86(+) son muy completas, por lo que pueden encontrar problemas ocultos en máquinas que parecen funcionar normalmente. Con muchos conjuntos de chips, MemTest86 permite contar fallas incluso en DRAM ECC de corrección de errores (sin un manejo especial, los circuitos de memoria de corrección de errores pueden enmascarar problemas con los chips de memoria subyacentes).
Algunos errores se manifiestan de manera intermitente o dependen de los bits precisos que se almacenan y no ocurren en cada paso; dichos errores pueden revelarse al ejecutar muchos pases durante un período prolongado. Algunas pruebas usan datos diferentes en cada pasada para revelar errores dependientes de los datos.

## Adopción

MemTest86+ es parte de muchas distribuciones de Linux, incluidas Debian, su derivado Ubuntu y Arch Linux . Ubuntu lo incluye como parte de la instalación predeterminada si la máquina se inicia en modo BIOS; está disponible desde el menú de selección de sistema operativo GRUB. Estas distribuciones incluyen muchos tipos de parches para mantener funcional el código base de 2013. Por ejemplo, Debian tiene parches que actualizan el archivo MAKE para la versión 5 de GCC y hacen que el programa sea compatible con Multiboot .