Uefi
是否有與 UEFI 配合使用的 memtest86+ 的免費(自由)開源替代品?
鑑於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
。