DOS

From flashrom
Jump to: navigation, search

HOWTO: Using precompiled binaries

Howto use flashrom with FreeDOS instead of Linux (because of half broken bios or any other reasons):

  1. Get a USB memory drive with at least 1GB of memory available (or any other memory device you can boot from)
  2. Download FreeDOS Image form http://downloads.joelinoff.com/fdos11.tar.bz2 (more information here: http://joelinoff.com/blog/?p=431 )
  3. Extract the image
  4. Use dd to put the image on your prefered memory device (example: dd if=/extracted/image/fdos11.img of=/dev/sdX bs=4M)
  5. After it have been written to the usb device, remove it once and put it back again into your computer
  6. Download latest precompiled flashrom from here: http://buildbot.flashrom.org/buildresults/latest-build/dos/flashrom.exe
  7. Copy latest precompiled flashrom dos exe to the main directory of the usb device
  8. Download CWSDPMI.EXE from http://www.flashrom.org/File:Csdpmi7b.zip and extract it
  9. copy bin/CWSDPMI.EXE to your usb device
  10. Download your bios file you would like to flash and copy it to the main directory of the usb device
  11. Unmount the USB drive and you can now boot from it and use flashrom as described here:

Compilation

To cross-compile on Linux for DOS:

  1. Get packages of the DJGPP cross compiler and install them:
    • djgpp-filesystemdjgpp-gcc
    • djgpp-cpp
    • djgpp-runtime
    • djgpp-binutils
    As an alternative, the DJGPP web site offers packages for download as well:
    • djcross-binutils-2.29.1-1ap.x86_64.rpm
    • djcross-gcc-7.2.0-1ap.x86_64.rpm
    • djcrx-2.05-5.x86_64.rpm
    The cross toolchain packages for your distribution may have slightly different names (look for packages named djgpp).
    Alternatively, you could use a script to build it from scratch: https://github.com/andrewwutw/build-djgpp
  2. You will need the libpci and libgetopt library source trees and their compiled static libraries and header files installed in some directory say libpci-libgetopt/, which will be later specified with LIBS_BASE parameter during flashrom compilation. Easiest way to handle it is to put pciutils, libgetopt and flashrom directories in one subdirectory. There will be an extra subdirectory libpci-libgetopt created, which will contain compiled libpci and libgetopt.
  3. Download pciutils 3.5.6 and apply File:Pciutils-3.5.6.patch.gz
  4. Compile pciutils, using following command line:
    make ZLIB=no DNS=no HOST=i386-djgpp-djgpp CROSS_COMPILE=i586-pc-msdosdjgpp- \
    PREFIX=/ DESTDIR=$PWD/../libpci-libgetopt \
    STRIP="--strip-program=i586-pc-msdosdjgpp-strip -s" install install-lib
  5. Download and compile with 'make' File:Libgetopt.tar.gz
  6. Copy the libgetopt.a to ../libpci-libgetopt/lib and getopt.h to ../libpci-libgetopt/include
  7. Enter the flashrom directory.
    make CC=i586-pc-msdosdjgpp-gcc STRIP=i586-pc-msdosdjgpp-strip LIBS_BASE=../libpci-libgetopt/ strip
  8. If you like, you can compress the resulting executable with UPX:
    upx -9 flashrom.exe
  9. To run flashrom.exe, download File:Csdpmi7b.zip and unpack CWSDPMI.EXE into the current directory or one in PATH.