This is an old revision of the document!
Isolating and Testing RAM Sticks in Ubuntu
This guide explains how to:
- Boot using only one RAM stick (by reserving other address ranges via `memmap=`)
- Test the remaining sticks with `memtester` inside the OS
- Cycle through all sticks, including the originally “known good”
- Reset to the normal configuration afterwards
1. Finding a Bootable Stick
If you are unsure which RAM stick works:
- Power down and remove all but one stick
- Insert into the primary DIMM slot (usually nearest the CPU — see your motherboard manual)
- Attempt to boot
- If the system posts and loads an OS, mark this stick bootable
- If not, swap in another stick and repeat until one works
(For more on this isolation method, see [corsair.com](https://help.corsair.com/hc/en-us/articles/14238510858637-RAM-How-to-Test-RAM-Modules-for-Memory-Issues))
2. Determine Memory Layout
1. With only the bootable stick installed, boot Ubuntu.
2. Check stick size and slot mapping:
sudo dmidecode --type memory
3. Record:
- Size of the good stick (e.g. 8 GiB)
- Number and sizes of all sticks when installed
3. Reserve the Other Sticks’ Address Space
1. Install all sticks. 2. Edit GRUB:
sudo nano /etc/default/grub
3. In:
<code> GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" </code> append: <code> memmap=<SIZE>$<START> </code> Where: * **SIZE** = total capacity of sticks to test * **START** = address immediately after the main stick’s range
Example (8 GiB good stick, 24 GiB to test): <code> GRUB_CMDLINE_LINUX_DEFAULT="quiet splash memmap=24G$8G" </code>
4. Save, update GRUB, reboot:
<code> sudo update-grub sudo reboot </code>
Sidenote on update-grub: After editing /etc/default/grub, running update-grub ensures the new memmap parameter is written to /boot/grub/grub.cfg. Without this step, changes won’t apply on reboot.
Verification: After rebooting, check reserved memory with:
dmesg | grep -i memmap # Kernel log should show reserved regions free -h # Available RAM should reflect the exclusion
4. Verify Isolation
free -h
Should show only the good stick’s capacity as usable by the OS.
5. Test the Other Sticks In‑OS
Install and run:
sudo apt install memtester memtester <SIZE-TO-TEST>M 1
Where SIZE-TO-TEST ≈ reserved size.
Runtime note:
- `memtester` inside Ubuntu can complete a pass over a portion of RAM in minutes to under an hour, depending on size tested — it only tests memory the OS can allocate at runtime ([repair.wiki](https://repair.wiki/w/Raspberry_Pi_RAM_Test))
- `Memtest86+` at boot is much slower — several passes can take many hours or overnight ([rtech.support](https://rtech.support/docs/guides/memtest/memtest86)), but it is far more thorough
6. Cycling Through Sticks
Once a stick passes the in‑OS test:
- Shut down
- Move this passing stick into the main slot
- Move the previously main stick into the test slots
- Update the `memmap` parameters accordingly (good stick’s size / address)
- Repeat testing
This way, you can eventually test every stick, including the one you started with.
7. Restore Normal Operation
1. Edit `/etc/default/grub` and remove `memmap=…` 2. Update GRUB and reboot:
<code bash> sudo update-grub sudo reboot </code>
3. Verify all RAM is detected:
<code bash> free -h </code>
8. Tips
- ECC RAM: Check `journalctl -k | grep -i edac` for logged correctable errors
- Label defective sticks immediately
- If several sticks fail in the same slot, suspect the slot or motherboard
- See [corsair.com](https://help.corsair.com/hc/en-us/articles/14238510858637-RAM-How-to-Test-RAM-Modules-for-Memory-Issues) for more on physically testing one stick at a time