using a large floppy image with memdisk

By thomas, 13 September, 2012

I ran into a snag when trying to update the bios on my PE R210ii, the Bios update is 8MB, too large to fit on a floppy image, so I needed to make a floppy image large enough for the file. I tried increasing the size of the Dell floppy image and that didn't work, so I had to start from scratch with a boot floppy made from windows. Funny enough the first link that came back in my google search was that of my coworker.

Here are the steps I took to get the large boot floppy working with PXE.

  • create boot floppy from Windows Server 2008 in a vm. I suspect using a boot image from bootdisk.com would work just as well.
  • expand the floppy image using newmkfloppyimg.sh. I chose to make a 20MB floppy.

    sudo ./newmkfloppyimg.sh 20 bigfloppy.img floppy.img

    This script requires you have mkdosfs, dd and mktemp, you need root to be able to mount the old and new floppy images and copy the contents. The key here is that it uses mkdosfs to make a new larger filesystem image (mkdosfs -I -v -C newfile size). Then it mounts the filesystem, copies the files from the old image to the new one. Finally it copies the boot sector from the original to the new using dd (that's the part I figured out manually before finding the script :-( )


    dd if=$OLDIMAGE of=$NEWIMAGE bs=1 count=10 conv=notrunc 2>/dev/null
    dd if=$OLDIMAGE of=$NEWIMAGE bs=1 skip=61 seek=61 conv=notrunc count=451 2>/dev/null

  • next I mounted the new image and copied the 8MB dell bios upgrade file onto the filesystem.


    [thomas@install: ~] $ mkdir /tmp/bigfloppy
    [thomas@install: ~] $ sudo mount -o loop bigfloppy.img /tmp/bigfloppy
    [thomas@install: ~] $ ls -lh PER210II_020005.exe
    -rw-rw-r-- 1 thomas thomas 8.2M Sep 13 08:47 PER210II_020005.exe
    [thomas@install: ~] $ sudo cp PER210II_020005.exe /tmp/bigfloppy/
    [thomas@install: ~] $ sudo umount /tmp/bigfloppy

  • Install syslinux and copy memdisk into the tftpboot directory.
  • Create a menu entry in our pxelinux config file.


    MENU BEGIN Bios
    MENU PASSWD superdupersecretpasswordnoguessing
    LABEL per20ii
    MENU label PE-R210ii
    kernel memdisk
    initrd bios/r210ii.img
    append floppy
    MENU END

    You can append to the "append floppy" line the number of cylinders, heads and sectors but my memdisk was able to guess them properly so I didn't.

  • PXEBoot the machine, select the Bios menu and enter the superdupersecret and you are off to the races.

My PowerEdge R210ii wouldn't boot with a QLogic 8GB Fibre channel card installed (just a cursor in the corner). After applying this Bios update the card is working great.