Suprmicro BIOS Upgrade Using PXEBoot

Posted by blogadmin on September 3, 2015

SuperMicro provides DOS based BIOS upgrade utilities. These utilities are not bootable making it difficult to apply BIOS update remotely. Being a Linux guy I have different flavors of PXE bootable Linux images for Debian, Centos, RedHat, etc. Did not try to PXEboot DOS yet so here it is.

The Problem: Supermicro BIOS update utility is  nonbootable. The FreeDOS image is of size 1.5MB and we need more than 16MB of space to copy BIOS update tools.

The Solution:

Download FreeDOS image  from  this link 

1. I am assuming you are using Debian Linux. Install Fat filesystem tools.

aptitude install dosfstools

2. We will be creating a 32MB Dos image. Latter we will copy BIOS update tools in it.

Create FAT12 Dos image of size 32MB

mkdosfs -v -I -C -F 12 supermicro.img 32768
mkdosfs 3.0.9 (31 Jan 2010)
supermicro.img has 64 heads and 32 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 65536 sectors;
file system has 2 12-bit FATs and 32 sectors per cluster.
FAT size is 32 sectors, and provides 2044 clusters.
There are 32 reserved sectors.
Root directory contains 512 slots and uses 32 sectors.
Volume ID is eb24a995, no volume label.

3. Mount both images and copy content from Free Dos Image to newly created image

mount -o loop supermicro.img /mnt/supermicro
mount -o loop fdboot.img /mnt/fdboot
cp -a /mnt/fdboot/* /mnt/supermicro/

Lets umount both images

umount /mnt/supermicro
umount /mnt/fdboot

4. Our supermicro image is still not bootable. Let us copy the boot sectors from FreeDos first 11 sectors.

dd if=fdboot.img of=supermicro.img bs=1 count=11 conv=notrunc
11+0 records in
11+0 records out
11 bytes (11 B) copied, 2.6938e-05 s, 408 kB/s

5. 11 to 64 Sectors contains information like Volume Lable, Sectors per track, etc. We don’t want to overwrite these, nut want bootstrap code of 450 bytes

dd if=fdboot.img of=supermicro.img bs=1 skip=62 seek=62 count=450 conv=notrunc
450+0 records in
450+0 records out
450 bytes (450 B) copied, 0.000463815 s, 970 kB/s

6. Modify your pxelinux default file as below
pxelinux.cfg/default

LABEL msdos
 KERNEL memdisk
 APPEND initrd=supermicro.img

7. Boot your system in to FreeDOS and choose option 4
Option 4. FreeDOS Live CD With HIMEM Only

Now to start BIOS update run

 A:\> AMI.BAT boardnumber.xxx

8. When done power cycle.

Share Button

Filed under System Administration

Tagged , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>