NetAdminTools.com
 
SignalQ Sites:
L1G3R Information Systems - Coprolite - SpotBridge - NAW
RoboCoop - AreWeDown - SolarPower - SysAdminTools
Xfig - Gold Loaf - GeekPapa - FixGMC - FixRambler
Solar Energy - Energy Efficiency - Solar Panels
Home Energy Savings
Categories:
GNU/Linux | Homebrew designs | Perl | Ruby | Administration | Backup/Recovery | Bugs/Fixes | Certification | Database | Email | File/Print | Hardware | Information Grab Bag | Interoperability | GNU/Linux ABCs | Monitoring | Name Resolution | Network Services | Networking | Remote Control | Security | Desktop | Web | BSD | Solaris | GIAGD | ERP | REALbasic

Last 30 Days | Last 60 Days | Last 90 Days | All Articles | RSS


Categories:
·GNU/Linux
·Homebrew designs
·Perl
·Ruby
·Administration
·Backup/Recovery
·Bugs/Fixes
·Certification
·Database
·Email
·File/Print
·Hardware
·Information Grab Bag
·Interoperability
·GNU/Linux ABCs
·Monitoring
·Name Resolution
·Network Services
·Networking
·Remote Control
·Security
·Desktop
·Web
·BSD
·Solaris
·GIAGD
·ERP
·REALbasic
·All Categories


Toolbox Essentials - Memtest86
Topic:Hardware   Date: 2003-06-17
Printer Friendly: Print   

spacerspacer
<<  <   >  >>

Subject

In our experience, littered as it is with broken hardware, memory modules are second only to hard drives (with their anachronistic moving parts) in frequency of failure. Unlike the unmistakable i/o errors, bus timeouts, and eventual spin cessation of the disk failure, bad memory's symptoms can be elusive and sporadic. The system acts flaky. Applications crash. The system goes a little crazy because bits are literally getting mixed up or lost, flowing through gates which have deteriorated due to overheating, electrical surges, or simple old age.

In situations like these, the handiest tool you can possess is a Memtest86 disk. Downloads are available in a few convenient forms; compressed iso images to create bootable cdroms, a binary to make Memtest86 floppies on windows, and source code to build on linux. You can run Memtest86 off bootable floppy or cdrom, or install it as a kernel that can be loaded from lilo.

Memtest86 will test any kind of memory on intel systems. It does a number of tests, which you can read about at http://www.memtest86.com. We usually let Memtest86 do a couple of passes on our systems without errors before declaring the RAM to be good, with high confidence in the memory at that point. Occasionally errors show up because the memory is not compatable with the system, or the DIMMs are incompatable among themselves. Running Memtest86 on a system takes a while, depending on the processor speed and amount of RAM.

And now let's walk through the building of a Memtest86 floppy:


[usr-4@usr-3 rescue]$ tar xvf memtest86-3.0.tar.gz 
[usr-4@usr-3 rescue]$ cd memtest86-3.0
[usr-4@usr-3 memtest86-3.0]$ make
gcc -E -traditional head.S -o head.s
as -o head.o head.s
gcc -c -fPIC -Wall -g -O2 -fno-strict-aliasing reloc.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC main.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin test.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC init.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC lib.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC patn.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC screen_buffer.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC config.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC linuxbios.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC memsize.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC pci.c
gcc -c -Wall -march=i486 -O -fomit-frame-pointer -fno-builtin -fPIC controller.c
ld --warn-constructors --warn-common -static -T memtest_shared.lds -o memtest_shared
head.o reloc.o main.o test.o init.o lib.o patn.o screen_buffer.o config.o 
linuxbios.o memsize.o pci.o controller.o && \
ld -shared -T memtest_shared.lds -o memtest_shared head.o reloc.o main.o test.o 
init.o lib.o patn.o screen_buffer.o config.o linuxbios.o memsize.o pci.o 
controller.o
objcopy -O binary memtest_shared memtest_shared.bin
gcc -E -traditional bootsect.S -o bootsect.s
as -o bootsect.o bootsect.s
gcc -E -traditional setup.S -o setup.s
as -o setup.o setup.s
ld -T memtest.bin.lds bootsect.o setup.o -b binary memtest_shared.bin -o memtest.bin
ld -s -T memtest.lds -b binary memtest_shared.bin -o memtest

Now, to make a floppy, put a floppy in the drive:

usr-4@usr-3 memtest86-3.0]$ make install
dd <memtest.bin >/dev/fd0 bs=8192
10+1 records in
10+1 records out

Easy as pie. On Windows, just download the precompiled Memtest86, extract it, and run install.bat to make a Memtest86 floppy. If floppies aren't your style, just download the iso images mentioned above. The README that comes with the linux source code includes instructions on how to install it as a image which can be booted from lilo.

What do you do with bad memory modules? Like us, you probably discard them most unceremoniously. But it's possible to use them on linux systems. With just a little kernel patch, linux can use the bad memory addresses from Memtest86 to map only the good addresses with little degradation in performance! A great hack, experimentation with which we shall leave as an exercise for the curious. We may be Pollyannas, but have always preferred to dwell on good memories and toss the bad away.


People:
Places:
Things:
Times:





Please read our Terms of Use and our Privacy Policy
Microsoft, Windows, Windows XP, Windows 2003, Windows 2000, and NT are either trademarks or registered trademarks of Microsoft Corporation. NetAdminTools.com is not affiliated with Microsoft Corporation. Linux is a registered trademark of Linus Torvalds, and refers to the Linux kernel. The operating system of most distributions that contain the Linux kernel is GNU/Linux. All logos and trademarks in this site are property of their respective owner. Copyright 1997-2011 NetAdminTools.com