Movatterモバイル変換


[0]ホーム

URL:


Logo

Dev & Nightly

Archives

GitHub Official Repo

Want to contribute to Memtest86+?
Join our Official GitHub page!

Memtest86+ is constantly looking for help from software or hardware developers, distro maintainers, beta-testers...
Any contribution is welcome!

DownloadNightly Build

These binaries are built automatically every night from the last commit. They are untested and unsupported.
Memtest86+ | Nightly
Based on commit #a10664a [2025-03-19]
Icon
Windows USB Installer (32/64 bits)
8aaa976200871ee02b6a5fcfd5e6a080
Icon
Linux ISO (32 bits)
d6ce0fc80aecbf0ae8f67f58f8ff8e2c
Icon
Linux ISO (64 bits)
63f58b5a3ccab30ee8ce9094270199db
Icon
Linux ISO w/ GRUB (64 bits)
7445959afaebd06c068e5af91afe6342

Bug Report

Found a bug?
Please file a bug report!

Please give us as much information as possible about your hardware and the way to reproduce the issue. Also, please check that your bug hasn't already been submitted.

Build HowToLatest Version

Build is only tested on a Linux system, but should be possible on any systemusing the GNU toolchain and the ELF file format. The tools required are:

  • GCC
  • binutils
  • make
  • dosfstools and mtools (optional)
  • xorrisofs (optional)

To build a 32-bit image, change directory into thebuild32 directory andtypemake. The result is amt86plus binary image file which can bebooted directly by a 32-bit UEFI BIOS (if named mt86plus.efi), by a legacyBIOS (in floppy mode) or by an intermediate bootloader using the Linux 16-bitboot protocol. The image can be also booted by an intermediate bootloaderusing the Linux 32-bit or 32-bit EFI handover boot protocols.

To build a 64-bit image, change directory into thebuild64 directory andtypemake. The result is amt86plus binary image file which can bebooted directly by a 64-bit UEFI BIOS (if named mt86plus.efi), by a legacyBIOS (in floppy mode) or by an intermediate bootloader using the Linux 16-bitboot protocol. The image can be also booted by an intermediate bootloaderusing the Linux 32-bit, 64-bit, or 64-bit EFI handover boot protocols.

In either case, to build an ISO image that can be used to create a bootableCD, DVD, or USB Flash drive, typemake iso, The result is amemtest.isoISO image file. This can then be written directly to a blank CD or DVD, orto a USB Flash drive, which can then be booted directly by a legacy or UEFIPC BIOS.

Note that when writing to a USB Flash drive, the ISO image must be writtendirectly ('dumped') to the raw device, either by using thedd command orby using a utility that provides the same functionality.

When using an intermediate bootloader,mt86plus file should be storedin a disk partition the bootloader can access, and the bootloaderconfiguration should be updated to boot from that file as if it were a Linuxkernel with no initial RAM disk. Several boot command line options arerecognised, as described below. If using the 16-bit boot protocol, Memtest86+will use the display in text mode (640x400). If using the 32-bit or 64-bitboot protocols, Memtest86+ will use the display in either text mode orgraphics mode, as specified in theboot_params struct passed to it bythe bootloader. If in graphics mode, the supplied framebuffer must beat least 640x400 pixels; if larger, the display will be centred. Ifthe system was booted in UEFI mode, graphics mode must be used.

For test purposes, there is also an option to build an ISO image that usesGRUB as an intermediate bootloader. See theMakefile in thebuild32 orbuild64 directory for details. The ISO image is both legacy and UEFIbootable, so you need GRUB modules for both legacy and EFI boot installedon your build system (e.g. on Debian, the required GRUB modules are locatedin packagesgrub-pc-bin,grub-efi-ia32-bin andgrub-efi-amd64-bin).You may need to adjust some path and file names in the Makefile to matchthe naming on your system.

The GRUB configuration files contained in thegrub directory are there foruse on the test ISO, but also serve as an example of how to boot Memtest86+from GRUB.

Boot OptionsLatest Version

An intermediate bootloader may pass a boot command line to Memtest86+. Thecommand line may contain one or more options, separated by spaces. Eachoption consists of an option name, optionally followed by an= sign andone or more parameters, separated by commas. The following options arerecognised:

  • nosmp
    • disables ACPI table parsing and the use of multiple CPU cores
  • nobench
    • disables the integrated memory benchmark
  • nobigstatus
    • disables the big PASS/FAIL pop-up status display
  • nosm
    • disables SMBUS/SPD parsing, DMI decoding and memory benchmark
  • nomch
    • disables memory controller configuration polling
  • nopause
    • skips the pause for configuration at startup
  • keyboard=type
    • wheretype is one of
      • legacy
      • usb
      • both
  • dark
    • change the default background colour from blue to black
  • screen.mode=wxh (EFI framebuffer only)
    • wherewxh is the preferred screen resolution (e.g. 1024x768)
  • screen.mode=bios (EFI framebuffer only)
    • uses the default screen resolution set by the UEFI BIOS
  • screen.rhs-up (graphics mode only)
    • rotates the display clockwise by 90 degrees
  • screen.lhs-up (graphics mode only)
    • rotates the display anti-clockwise by 90 degrees
  • efidebug
    • displays information about the EFI framebuffer
  • usbdebug
    • pauses after probing for USB keyboards
  • usbinit=mode
    • wheremode is one of
      • 1 = use the two-step init sequence for high speed devices
      • 2 = add a second USB reset in the init sequence
      • 3 = the combination of modes 1 and 2
  • console=ttySx,y
    • activate serial/tty console output, wherex is one of the following IO port
      • 0 = 0x3F8
      • 1 = 0x2F8
      • 2 = 0x3E8
      • 3 = 0x2E8
    • andy is an optional baud rate to choose from the following list
      • 9600
      • 19200
      • 38400
      • 57600
      • 115200 (default if not specified or invalid)
      • 230400
  • console=x,y
    • activate MMIO UART console, wherex is the MMIO stride (reg. width)
      • mmio = 8-bit MMIO
      • mmio16 = 16-bit MMIO
      • mmio32 = 32-bit MMIO
    • andy is the MMIO address in hex. with0x prefix (eg: 0xFEDC9000)

AcknowledgmentsContributors

Memtest86+ v6.0 was based on PCMemTest, developed by Martin Whitaker, whichwas based on Memtest86+ v5.01, developed by Samuel Demeulemeester, which inturn was based on Memtest86, developed by Chris Brady with the resources andassistance listed below:

  • The initial versions of the source files bootsect.S, setup.S, head.S andbuild.c are from the Linux 1.2.1 kernel and have been heavily modified.

  • Doug Sisk provided code to support a console connected via a serial port.(not currently used)

  • Code to create BadRAM patterns was provided by Rick van Rein.

  • The block move test is based on Robert Redelmeier's burnBX test.

  • Screen buffer code was provided by Jani Averbach.(not used by Memtest86+ v6.0)

  • Eric Biederman provided all of the feature content for version 3.0plus many bugfixes and significant code cleanup.

  • Major enhancements to hardware detection and reporting in version 3.2, 3.3and 3.4 provided by Samuel Demeulemeester (from Memtest86+ v1.11, v1.60and v1.70).

In addition, several bug fixes for Memtest86+ were imported fromanphsw/memtest86.

Developer's GuideREADME_DEVEL.md

This is the developer's guide to the Memtest86+ source code. The user's guidecan be found in the README.md file in the top level directory.

Code Organisation

The source code is divided into the following categories, each contained in asubdirectory of the same name:

  • app

    The main application and framework for running the memory tests.

  • boot

    The code that runs from the BIOS or bootloader entry point to thestart of the main application.

  • lib

    The subset of the C standard library that is used by Memtest86+ plus otherhardware-independent low-level support functions.

  • system

    Low-level support functions that interface to the hardware.

  • tests

    The individual memory tests.

The boot code is mostly written in AT&T syntax x86 assembly language. Theremaining code is written in C with a smattering of inline assembly code.

Each category is further subdivided into multiple source files, splitting thecode into small units of closely related functionality. For the C code, theAPI for each unit is defined in a header (.h) file and the implementation(if required) is found in the correspondingly named source (.c) file.

Code Documentation

Doxygen can be used to automatically generate HTML documentation for the APIfor each code unit from the comments in the C header files. To regenerate thedocumentation, change directory into thedoc subdirectory and rundoxygen.

Coding Conventions

C Code

Macro names and enumeration values are written in upper case separated byunderscores. All other identifiers are written in lower case separated byunderscores. Both excessive length and excessive abbreviation are avoided.

Line length is normally limited to 120 characters.

Indentation is 4 spaces. No hard tab characters are used.

Opening braces for function bodies are put on a new line. Other opening bracesare put on the same line as the construct that introduces them.

The C11 dialect is used. In particular, variable declarations and statementsare interspersed and loop variables are declared within thefor loopconstruct.

Assembly Code

Labels are written in lower case separated by underscores. Op-codes andregister names are written in lower case.

Line length is normally limited to 120 characters.

Indentation is 8 spaces using hard tab characters.

The C preprocessor is used for defining constant values and expressions.Macro names are written in upper case separated by underscores.


[8]ページ先頭

©2009-2025 Movatter.jp