Uefi

是否有與 UEFI 配合使用的 memtest86+ 的免費(自由)開源替代品?

  • February 6, 2022

鑑於memtest86+ 不能與 UEFI 一起使用,是否有開源替代方案或我可以從 grub 使用的東西來測試記憶體?

是的,有PCMemTest,它是對 Memtest86+ 的重寫,可以從 UEFI 啟動。從 UEFI 啟動時它仍然有一個限制:如果未啟用 CSM,則無法使用鍵盤,這意味著無法更改配置。

或者,Linux 核心本身包含一個記憶體測試工具:該memtest選項將執行最多 17 種模式的記憶體檢查(目前)。如果您添加memtest到核心啟動參數,它將在啟動時執行所有測試,並保留任何失敗的地址以便它們不被使用。如果您想要更少的測試,您可以指定模式的數量(memtest=8例如)。

這不像 Memtest86+ 的測試那麼廣泛,但它仍然給出了相當不錯的結果。

一些發行版核心不包含此功能;CONFIG_MEMTEST您可以通過在核心配置中查找來檢查它是否可用(嘗試/boot/config-$(uname -r))。如果您指定,核心不會抱怨memtest但它不支持它;當它執行時,您應該會看到類似的輸出

[    0.000000] early_memtest: # of tests: 17
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern 4c494e5558726c7a
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern 4c494e5558726c7a
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern 4c494e5558726c7a
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern eeeeeeeeeeeeeeee
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern dddddddddddddddd
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern dddddddddddddddd
[    0.000000]   0x000000000500d000 - 0x0000000007fe0000 pattern dddddddddddddddd
[    0.000000]   0x0000000000010000 - 0x0000000000099000 pattern bbbbbbbbbbbbbbbb
[    0.000000]   0x0000000000100000 - 0x0000000003800000 pattern bbbbbbbbbbbbbbbb
...

在核心啟動時(或稍後在其啟動日誌中)。

你可以使用 QEMU 來感受一下:

qemu-system-x86_64 -kernel /boot/vmlinuz-$(uname -r) -append "memtest console=ttyS0" -nographic

(或任何qemu-system-...適合您的架構的),並尋找“early_memtest”。要在核心崩潰後退出 QEMU,請按Ctrl``a, c, q, Enter

引用自:https://unix.stackexchange.com/questions/439674