Join us at Super Computing 2011!We invite you to visit us at the SC2011 conference in Seattle, Nov 14-17 at Booth #2040 See first-hand how we are enabling research discovery with Dell HPC solutions.
IntroductionIf you find yourself having to update any firmware on your servers via DOS, instead of walking to each server and using a USB drive, or booting to a USB floppy, try it via PXE. In most cases we have a Linux based update package, so you can avoid updating in this manner.I am assuming that you have a functioning cluster at this point. In this example, we'll take a look at updating CPLD firmware on a PowerEdge M610. Hardware
Software
ProcessGet Freedos and customize the image:1. Go to the freedos site and grab the fdboot.img 1.44MB file here:http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/2. Create a freedos/fdimg directory and mount the .img file, place the M610 CPLD code in the freedos directory# mkdir -p freedos/fdimgNow your directory structure should look like this - after you place the fdboot.img and M610 CPLD code in the right places:# tree freedos/freedos/|-- M610-CPLD-external-release-file.zip|-- fdboot.img`-- fdimgMount the fdboot.img and make changes# file fdboot.imgfdboot.img: DOS floppy 1440k, x86 hard disk boot sector# mount -t msdos -o loop fdboot.img fdimg/# cd fdimg/; lscommand.com driver fdconfig.sys freedos kernel.sysNow you are in a state where you can start modifying the image and putting your DOS executables on the image3. Unzip the M610-CPLD-external-release-file.zip file and copy both M610-PLD.exe and M610-PLD.jed file to the image.# cd freedos# unzip M610-CPLD-external-release-file.zipArchive: M610-CPLD-external-release-file.zipinflating: M610-PLD.exeinflating: M610-PLD.jedextracting: M610-CPLD-ver102-checksum.txtinflating: M610-CPLD-ver102-release-note.txt# lsfdboot.img M610-CPLD-external-release-file.zip M610-CPLD-ver102-release-note.txt M610-PLD.jedfdimg M610-CPLD-ver102-checksum.txt M610-PLD.exe# cp -a M610-PLD.exe M610-PLD.jed fdimg/.4. Modify the fdauto.bat so it calls the CPLD update# vi fdimg/freedos/fdauto.batThis is what the last 3 lines will look likeecho.a:\M610-PLD -force:END5. Unmount the image and rename for reference# umount fdimg/# mv fdboot.img DELL_CPLD.imgFinish configuring the TFTP server1. Copy these two files into /tftpboot/kusu/dosUpdates
# locate memdisk /usr/lib/syslinux/memdisk# mkdir -p /tftpboot/kusu/dosUpdates# cd /tftpboot/kusu/dosUpdates/.# lsDELL_CPLD.img memdisk2. Change into the /tftpboot/kusu/pxelinux.cfg and move all the config files into a different directory# cd /tftpboot/kusu/pxelinux.cfg/; mkdir backup; mv 0* backup/.3. Create a "default" file in the /tftpboot/kusu/pxelinux.cfg/ directory with these contents:# cat /tftpboot/kusu/pxelinux.cfg/defaultdefault CPLDUpdateprompt 0label localdisklocalboot 0label CPLDUpdatekernel dosUpdates/memdiskappend initrd=dosUpdates/DELL_CPLD.img4. Reboot your nodes and they will PXE boot, pull the DELL_CPLD.img file and update automatically and reboot.5. Once all the nodes are updated, you'll need to put the environment back to the way it was before:# rm -rf /tftpboot/kusu/pxelinux.cfg/default; cp /tftpboot/kusu/pxelinux.cfg/backup/* /tftpboot/kusu/pxelinux.cfg/.So, you can add additional firmware and just modify the fdauto.bat file, and re-roll the image and do your updates.Caveats
-- Scott Collier