- What is memtest86+, what do I use it for?

  Memtest86+ is a utility designed to test whether your memory is in working
  order. It repeatedly writes an enormous amount of different patterns to all
  memory locations and reads them back again and verifies whether the result
  of the read is the same as what was written to memory.

  There can be a multitude of reasons for running memtest, but foremost of all
  is of course to test whether your memory modules might be bad. Whenever you
  suspect your modules to be bad because of system crashes, lockups or reboots
  it would be nice to know whether the modules are in working order.
  Memtest86+ is a utility which tries to answer that question for you.

  Another common use exists in the overclocking scene. When overclocking a
  system you are essentially pushing your system to the limits and at some
  point it will simply give way and break. Unfortunately there isn't a clear
  cut way of deciding whether a system is still working correctly. Because of
  the complexity of a computer a system which is pushed to the limits doesn't
  just break completely when it starts to fail, instead little errors start
  showing up in many different places in the system growing more frequent and
  widespread the more the system is pushed. Each one of these little errors
  can lead to a crash of your system but can also go unnoticed for days or
  weeks in a running system. The art so to speak of overclocking is thus to
  push the system as far as it can go without introducing any such errors. As
  memory is usually one of the first places these such errors start coming up
  a memory test is very useful.

- How do I get it to run?

  There are several ways to use memtest, which are described below:

  + Run from floppydisk

    Memtest86+ is directly executable by any modern x86 compatible machine, by
    writing the bootable binary to a floppy disk one can boot from the disk to
    run memtest.

    Simply download the appropriate package, the Pre-Compiled Bootable Binary
    (.gz) package for Linux users and the Pre-Compiled package for Floppy (DOS
    - Win) for Windows users.

    For Windows, unzip the package into a directory like C:\memtest, insert a
    blank floppy into your a: disk drive and run the install.bat file. As the
    install prompts you, to use memtest directly, leave the disk in the drive
    and reboot your machine.

    For Linux, unpack the package into your home directory, insert a blank
    floppy into your floppy drive and execute 'dd if=~/memtest+-1.xx.bin.gz
    of=/dev/fd0 conv=osync' replacing 1.xx with the correct version number of
    the memtest86+ you downloaded. To run memtest immediately reboot your
    machine.

    Your machine should now boot from the disk, display the word Loading
    folowed by a series of periods and then show a screen much like the
    screenshots on the memtest86+ web page. The test is automatically started.

    If your machine simply boots back into Windows/Linux you will most likely
    have to configure your BIOS to attempt to boot from floppy disk on
    startup, refer to your computer's/mainboard's manual how to do this.

    When you are done testing simply remove the floppy and reset your
    computer, if ever you want to execure the test again simply reinsert the
    disk and reboot/start your computer.

  + Run from CD

    Memtest86+ is directly executable by any modern x86 compatible machine, by
    writing the iso to a CD one can boot from the CD to run memtest.

    Simply download the appropriate package, the Download - Pre-Compiled
    Bootable ISO (.gz) for Linux users and the Pre-Compiled Bootable ISO
    (.zip) for Windows users.

    For Windows, unzip the package into a directory like C:\memtest. You will
    now see a file called memtest86+-1.xx.iso in this directory. You will need
    to burn this file to a CD with a CD recording program. Do note however
    that you should not make a regular data CD on which you for instance write
    your text documents and holiday photographs. Instead the iso file is a so
    called image of a CD, it is a direct copy of a CD. Your CD recording
    program will most likely have a feature called burn image or something to
    that effect which you should use to burn the CD.

    For linux, unzip the package into your home directory. and execute
    'cdrecord dev=<your burner> ~/memtest86+-1.xx.iso' where you replace <your
    burner> with the scsi address of your CD burner and replace 1.xx with the
    correct version number of the memtest86+ your downloaded.

    When the burning completed your drive will most likely have ejected the CD
    and you should have a bootable memtest86+ CD. To run the test directly
    reinsert the CD and reboot your machine.

    Your machine should now boot from the CD, display the word Loading folowed
    by a series of periods and then show a screen much like the screenshots on
    the memtest86+ web page. The test is automatically started.

    If your machine simply boots back into Windows/Linux you will most likely
    have to configure your BIOS to attempt to boot from CD-ROM drive on
    startup, refer to your computer's/mainboard's manual how to do this.

    When you are done testing simply remove the CD and reset your computer, if
    ever you want to execure the test again simply reinsert the CD and
    reboot/start your computer.

  + Run from USB Flash drive

    FIXME

  + Run from boot manager

    FIXME

- How long does memtest86+ run? How do I stop it?

  Memtest86+ runs indefinately unless you stop it. It does however repeat the
  same tests over and over again. Memtest86+ contains a number of different
  tests which each take different approaches in trying to expose any errors in
  your memory. In the top right of your screen you can see the progress of
  each test in the lower of the two progress bars. The topmost progress bar
  shows the progress of a pass, each pass consists of all the tests in the
  memtest suite.

  Thus all tests are executed in one pass, so does that mean that no errors
  will show after the first pass if that pass didn't reveal any errors? Well
  no, there are several reasons why errors might only show up after a number
  of passes. Firstly as of this writing, the latest version of memtest also
  includes a test which uses random test patterns, each pass these patterns
  will of course be different. Secondly some types of errors simply don't show
  up until the system has been running for a while or are very critical on a
  certain timing condition, or other such conditions.

  To conclude, one successful pass of memtest will give you a pretty good idea
  that your memory is ok, only in rare cases will there be errors showing
  after the first pass. To be sure though simply have the test run overnight
  or even for a couple of days depending on the level of importance of the
  system.
  
- How many errors are acceptable?

  No errors are acceptable. Even if there is just one error, something is
  amiss which can cause your system to crash. Of course what the cause of the
  errors is you will still have to determine.

- What do I do when I get errors?

  Firstly, don't start drawing any conclusions. You only know that memtest86+
  is giving your errors, not what the cause is. Unfortunately it is not a
  straightforward exercise to decisively test the memory in an actual system.
  This is because a computer is not just built up of some memory, but also
  includes many other elements such as a memory controller, cache, a cache
  controller, algorithmic and logic units, etc, all of which contribute to the
  machine. If there are faults in any of these other parts of the computer you
  will likely also see errors showing up in memtest.

  So what to do? First verify that the BIOS settings of your machine are
  correctly configured. Look up the memory timing settings applicable to the
  brand and type of memory modules you have and check they match your BIOS
  settings, correct them if they don't and run memtest again
  
  Ok, you have all the settings correctly set and you're still getting errors.
  Well of course a very likely cause are the memory modules and the logical
  course of action is to look into them further.

  If you are well stocked, have a few other machines at your disposal, or just
  want to spend the cash for some new modules the best way to test if the
  cause are your memory modules is just to replace them and test again. If you
  are less fortunate though there is still something you can do.

  If you have more then one module in your system, test them one by one, if
  one is consistently giving errors and another is consistently showing no
  errors it's a pretty good bet that the module giving the errors is simply
  defective. To exclude the possibility that a defective slot is throwing your
  results, use the same slot to test each different module.
  
  If each module by itself shows no errors, but when you place two or more
  modules into the machine at the same time you do get errors, you are most
  likely stuck with a compatibility issue and unfortunately there isn't a
  whole lot you can do about it. Be sure to check your computer/motherboard
  manual to see if the setup you are trying is allowed, some boards require
  special restrictions in the sizes of modules, the order of modules, the
  placement of double sided and single sides modules and more of such things.

  If you have only one module in your system, or all modules are giving
  errors, there are only very few options left. The only thing you can do
  really is to try the module(s) in another slot. Finally simply try out
  different orders of the memory modules, although your manual might not
  mention anything on the matter sometimes there simply exist timing or other
  issues which can be resolved by changing the order of your modules.  And of
  course test each slot by putting a single module into that slot and running
  memtest on it.

  In the end if you still have not been able to localize the problem you will
  have to find a replacement module to establish whether the problem lies in
  your modules. See if you can borrow a module from someone else.

  When you have replaced the memory by new memory and the errors still
  persist, first check if you can rule out any compatibility issues or timing
  issues. If you are sure the memory should work in the system the cause of
  the errors must obviously lie someplace else in the system.
  
  The only way to find out where, is by trial and error really. Simply start
  replacing and/or removing parts of your computer one by one, running memtest
  each time you changed anything, until the errors are resolved.

- I'm getting errors in test #x, what doest that mean?

  Interpreting memtest results is as scientific an endeavour as testing
  whether a person is a witch by the methods used in Monty Python's Holy
  Grail. In short, don't even start, it's not going to get you anywhere. Just
  interpret any error as you should any other and use the methods descibed in
  the previous question to determine the cause.

- I'm getting errors in test #5 and/or #8 and have read a lot about it.

  Yes there are just about enough discussions on the topic to fill a book, but
  it all boils down to the answer given above. The only thing that can be said
  is that many a times, when memory latencies are incorrectly set in the BIOS
  you will experience errors in test #5 and #8. (Though #8 does not exist
  anymore as of version 1.40 and might be reinstated as a different test in a
  later version.) This does however NOT mean that errors in these tests are
  always the cause of incorrect settings, your memory might just as well be
  defective.

- I'm getting errors in memtest on one machine, but not when I put the same
  memory in another, what does that mean?

  It can mean one of two things:
    - The machine that is giving the errors is defective. Errors don't just
      orginate from the memory module itself, but can also be caused by
      defects in the cpu, chipset, motherboard, PSU and even by timing issues
      introduced by any other component in the machine.
    - The machine giving the errors is imposing stricter timing than the other
      which the memory module simply can't cope with. If the module should
      work with the machine according to its specifications then it most
      likely is defective.

- Which memory is tested?

  As much as possible of the system memory is tested. Unfortunately memtest86+
  can usually not test all of the memory. The reason for this is that todays
  processors have become so complex that they require a small amount of memory
  to keep accounting data of the processor state. If memtest were to write
  over these areas the state of the processor becomes invalid and it's
  behaviour unpredictable. Alas it is also impossible to relocate these areas
  in the memory.

  This means that a small area of your memory can not be tested by memtest. If
  this part of the memory is defective you will know soon enough though as the
  processor, or parts of the processor simply won't work correctly if this
  part of your memory is defective. Do realise though that in very rare cases
  memtest will show no errors even though the module is defective, not because
  memtest can't detect the error, but because memtest can't test the area the
  error is located in.

- When I select BIOS-ALL I get many errors / my machine crashes.

  This is normal. With todays computers this option should never be selected.
  See the previous question about the reason for the errors.

- I want to use memtest on a multiboot CD, how do I do this?

  This is of course very dependent on which boot loader you use for your CD.
  Below is a description of how to set up a multiboot CD including memtest+
  with isolinux, if you have experience with any other bootloader(s) please
  consider writing a small description of using memtest with that bootloader
  for the FAQ.

  -isolinux
    
    For general instructions on how to make a bootable CD with isolinux see
    the syslinux website and the manual. What you need to do to get memtest
    working is as follows.

    Download the Pre-Compiled Bootable Binary, the .gz if you are working
    under linux, the .zip if you are working under windows. Unpack the file
    from the package and rename it to an 8.3 filename with an extension other
    than .bin, renaming to memtest. (without an extension) is a good choice.

    Put the file somewhere in your CD directory structure, for example in
    images/memtest and edit your config file to include the following:

    label memtest
        kernel /images/memtest

    If you want to boot memtest automatically insert or change a line at the
    top to:

    default memtest

    If you want to display a prompt from which you can start memtest add or
    change the lines at the top to: (Change the timeout to suit your needs)

    prompt 1
    timeout 200

- If memtest86+ shows no errors does that mean my memory is not defective?

  Of course no answers are definitive, no matter how good memtest86+ will
  eventually become there is always the possibility that a particular type of
  error will go unnoticed. As long as you are having no problems with the
  system it will be pretty safe to say that the modules are good. If you are
  having problems with the system however you will just have to check by trial
  and error, ie swapping the modules for new ones and/or testing with modules
  of a different brand/type.

- When I run install.bat it doesn't write anything to floppy.

  You most likely have unpacked the memtest+-2.xx.floppy.zip file into a
  folder with a long pathname and/or containing + and - signs. It seems
  rawrite doesn't like that. Just move the files you unpacked to a directory
  like c:\memtest and execure it from there.
