memtest86+ 是唯一可靠内存检测方案,须脱离os运行;memtester 仅限用户态初筛,无法覆盖内核保留区、硬件映射区等关键区域,易漏检真实故障。

直接上结论:Memtest86+ 是唯一值得依赖的方案,必须脱离操作系统运行;在 Linux 系统里用 memtester 只能辅助初筛,不能替代它。
为什么不能只用 memtester 在系统里测?
memtester 在系统里测?memtester 是个用户态程序,它只能测试当前内核允许它访问的那部分内存(通常不包括内核保留区、硬件映射区、UEFI 运行时内存等),而且全程受内存管理子系统、页表、缓存、中断干扰。
常见错误现象:
-
memtester 4G报 “failed to allocate” —— 不是内存坏了,是系统没给你那么多连续空闲页 - 测试通过,但机器仍蓝屏/panic —— 故障发生在
memtester根本碰不到的地址段(比如显存映射区、DMA 区) - 输出 “FAILURE: 0x…” 后程序直接 segfault —— 错误已触发内核异常,结果不可信
使用场景仅限于:
- 升级内存后快速验证是否兼容(比如插上新条,跑一轮
memtester 1G 3看有没有立即报错) - 排查是否因内存压力诱发的软故障(如 OOM killer 误杀)
GRUB 菜单里启动 memtest86+ 的实操要点
memtest86+ 的实操要点这是最快、最省事的方式,前提是你的发行版预装了它(Ubuntu/Debian/CentOS/RHEL 默认都有)。
关键操作步骤:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 重启时,在 BIOS 自检结束后立刻按住
Shift(Legacy BIOS)或Esc(UEFI) - 进入 GRUB 菜单后,不要选“Advanced options”,直接找带 “Memory test” 字样的条目(常见名称:
Memory test (memtest86+)或Ubuntu Memory Test) - 高亮后按
Enter,系统会自动重启并加载,无需任何交互
容易踩的坑:
- 某些新版 Ubuntu(22.04+)默认隐藏 GRUB 菜单,需先执行
sudo nano /etc/default/grub,把GRUB_TIMEOUT_STYLE=hidden改成menu,再sudo update-grub - UEFI 模式下若启用 Secure Boot,部分旧版
memtest86+会被拒载,此时必须换 PassMark MemTest86 免费版 ISO(签名兼容)
用 USB 启动盘离线运行 memtest86+ 的硬性要求
memtest86+ 的硬性要求当 GRUB 里没有选项,或你怀疑主板固件本身干扰测试(比如某些超频主板会禁用部分内存区域供测试),就必须用纯净 U 盘启动。
制作过程必须满足:
- 镜像来源必须是官方:PassMark 官网(
@#@#@#@#@#@#@#@#@#@0)或 memtest.org(注意区分memtest86+社区版和 PassMark 商业版) - 写入命令必须用
dd,不能用 Rufus、BalenaEtcher 等图形工具(它们可能加引导层或改分区表,导致 UEFI 下无法识别) - 正确写入示例:
sudo dd if=memtest86-usb.img of=/dev/sdX bs=4M status=progress oflag=sync(/dev/sdX必须是整块盘设备,不是/dev/sdX1)
测试中要注意:
- 启动后默认自动开始,按
F2可切换测试项,但不要跳过前 3 项(地址行走、窗口测试、移动反转)——它们对焊点虚焊、地址线短路最敏感 - 出现红色错误行(如
ERROR: 0x000000000f3a5678 - read 0xaaaaaaaa != expected 0x55555555)即确认物理损坏,错误地址可定位到具体内存槽位(结合主板手册查物理地址映射)
真正难的不是“怎么跑”,而是判断哪一段内存出问题后,如何对应到物理插槽或颗粒。Memtest86+ 报的地址是物理地址,而 Linux 的 dmesg | grep -i memory 或 dmidecode -t memory 给的是 SPD 信息,两者之间没有直接映射关系。这时候需要交叉比对主板手册里的内存通道布局,或者干脆逐条拔插复测——这个环节没人能帮你跳过。










