Sunday, January 14, 2007

Creating a FreeDOS bootdisk on OS X

The BIOS on my Promise Ultra133 TX2 IDE card is a version not listed on the Promise support site (2.20.0050.10). So it seemed sensible to update to something half-recent (2003 - 2.20.0.15 *crazy versioning scheme*). Of course such an upgrade requires a DOS bootdisk. The 2 floppies I found in my room are >5 yrs old, and refused to play ball. So how hard could it be to make a Boot-CD -- on my CD-burning machine, a Mac?! *sigh* Several coasters later...

Anyone else banging their head against BIOS-hell:

[You need to go through this as .iso images are read-only.]
1) Download a FreeDOS disk image -- we just need the floppy boot image, in this case named fdboot.img.
2) Create a directory [cd-dir], and place this boot-disk image into it.
3) Add the DOS BIOS flash utility and anything else you need to [cd-dir].
4) In the terminal:
cd [cd-dir]
hdiutil makehybrid -o ../foo -eltorito-boot fdboot.img -iso .
hdiutil burn ../foo.iso
5) Boot up off the disk, Drive X:\ is probably the CD drive (rather than A: which is the disk image fs...)

*phew*

3 comments:

Unknown said...

Fantastic information, I just used this technique to upgrade the bios on my rocketraid 2310 raid controller using a cd build on my mac min.

rexpo said...

Has the hdiutil makehybrid command changed in 10 years? I spent the whole evening making virtual coasters with known working bootable floppy images (including a freshly downloaded freedos) but none of them would boot. In the end I had to use WinISO.

I got the job done, my HP server's BIOS is now up to date, but I'd rather be able to do this on my Mac on the command line using built-in tools.

Anyone get this to work lately?

wad said...

I managed to get a FreeDOS bootable ISO containing my BIOS updates by using mkisofs (in homebrew). Instead of the FreeDOS floppy image, I extracted the ISOLINUX folder of FreeDOS 1.2 CDROM installer (FD12CD.iso), then copied my BIOS firmware files and ran:

mkisofs -b ISOLINUX/ISOLINUX.BIN -no-emul-boot -boot-info-table -iso-level 3 -l -N -V BIOS -v -x .DS_Store -x build.sh -o ../BIOS.iso .

instead of the hdiutil makehybrid command at step 4.