I needed to run a BIOS flash utility that was only available for DOS. To complicate matters, the server I needed to run it on doesn't have a floppy or CD-ROM drive. I figured I'd hop on the Internet and download a bootable USB flash drive image. Right? Wrong.
I found a lot of instructions for how to make such an image if you already have a running Windows or Linux desktop, but they weren't very helpful for me and my Mac. After some trial and error, I managed to create my own homemade bootable USB flash drive image. It's available at http://www.mediafire.com/?aoa8u1k1fedf4yq if you just want a premade ready-to-download file.
If you want a custom version, or you don't trust the one I've made - and who'd blame you? I'm some random stranger on the Internet! - here's how you can make your own bootable image under OS X:
- There are a lot of steps, but they're easy! I wanted to err on the side of being more detailed than necessary, rather than skipping "obvious" steps that might not be quite so easy for people who haven't done this before.
Download VirtualBox and install it
- Download VirtualBox. I used version 4.1.4. The version available to you today might look different but should work mostly the same way.
- Open the "VirtualBox-[some-long-number]-OSX.dmg" disk image.
- Double-click the "VirtualBox.mpkg" icon to run the installer.
- Click "Continue".
- Click "Continue".
- Click "Install".
- Enter your password and click "Install Software".
- When it's finished copying files, etc., click "Close".
Download FreeDOS and create a virtual machine for it
- Download the FreeDOS "Base CD" called "fdbasecd.iso". Note: the first mirror I tried to download from didn't work. If that happens, look around on the other mirrors until you find one that does.
- Open your "Applications" folder and run the "VirtualBox" program.
- Click the "New" button to create a new virtual machine. This launches the "New Virtual Machine Wizard". Click "Continue" to get past the introduction.
- Name your new VM something reasonable. I used "FreeDOS", and whatever name you enter here will appear throughout all the following steps so you probably should, too.
- Set your "Operating System" to "Other", and "Version" to "DOS". (If you typed "FreeDOS" in the last step, this will already be done for you.) Continue.
- Leave the "Base Memory Size" slider at 32MB and continue.
- Make sure "Start-up Disk" is selected, choose "Create new hard disk", and continue.
- Select "File type" of "VDI (VirtualBox Disk Image)" and continue.
- Select "Dynamically allocated" and continue.
- Keep the default "Location" of "FreeDOS".
- Decision time: how big do you want to make your image? The full install of FreeDOS will take about 7MB, and you'll want to leave a little room for your own files. On the other hand, the larger you make this image, the longer it'll take to copy onto your USB flash drive. You certainly don't want to make it so large that it won't actually fit on your USB flash drive. An 8GB nearly-entirely-empty image will be worthless if you only have a 2GB drive. I splurged a little and made my image 32MB (by clicking in the "Size" textbox and typing "32MB". I hate size sliders.). Click "Continue".
- Click "Create".
- Make sure your new "FreeDOS" virtual machine is highlighted on the left side of the VirtualBox window.
- On the right-hand side, look for the section labeled "Storage" and click on the word "Storage" in that title bar.
- Click the word "Empty" next to the CD-ROM icon.
- Under "Attributes", click the CD-ROM icon to open a file chooser, select "Choose a virtual CD/DVD disk file...", and select the FreeDOS Base CD image you downloaded at the beginning. It'll probably be in your "Downloads" folder. When you've selected it, click "Open".
- Back on the "FreeDOS - Storage" window, click "OK".
- Back on the main VirtualBox window, near the top, click "Start" to launch the virtual machine you just made.
- A note about VirtualBox: when you click the VM window or start typing, VirtualBox will "capture" your mouse cursor and keyboard so that all key presses will go straight to the VM and not your OS X desktop. To get them back, press the left [command] key on your keyboard.
- At the FreeDOS boot screen, press "1" and [return] to boot from the CD-ROM image.
- Hit [return] to "Install to harddisk".
- Hit [return] to select English, or the up and down keyboard arrow keys to choose another language and then [return].
- Hit [return] to "Prepare the harddisk".
- Hit [return] in the "XFDisk Options" window.
- Hit [return] to open the "Options" menu. "New Partition" will be selected. Hit [return] again. "Primary Partition" will be selected. Again, [return]. The maximum drive size should appear in the "Partition Size" box. If not, change that value to the largest number it will allow. Hit [return].
- Do you want to initialize the Partition Area? Yes. Hit [return].
- Do you want to initialize the whole Partition Area? Oh, sure. Press the left arrow key to select "YES", then hit [return].
- Hit [return] to open the "Options" menu again. Use the arrow keys to scroll down to "Install Bootmanager" and hit [return].
- Press [F3] to leave XFDisk.
- Do you want to write the Partition Table? Yep. Press the left arrow to select "YES" and hit [return]. A "Writing Changes" window will open and a progress bar will scroll across to 100%.
- Hit [return] to reboot the virtual machine.
- This doesn't actually seem to reboot the virtual machine. That's OK. Press the left [command] key to give the mouse and keyboard back to OS X, then click the red "close window" button on the "FreeDOS [running]" window to shut it down. Choose "Power off the machine" and click "OK".
- Back at the main VirtualBox window, click "Start" to re-launch the VM.
- Press "1" and [return] to "Continue to boot FreeDOS from CD-ROM", just like you did before.
- Press [return] to select "Install to harddisk" again. This will take you to a different part of the installation process this time.
- Select your language and hit [return].
- Make sure "Yes" is selected, and hit [return] to let FreeDOS format your virtual disk image.
- Proceed with format? Type "YES" and hit [return]. The format process will probably finish too quickly for you to actually watch it.
- Now you should be at the "FreeDOS 1.0 Final Distribution" screen with "Continue with FreeDOS installation" already selected. Hit [return] to start the installer.
- Make sure "1) Start installation of FreeDOS 1.0 Final" is selected and hit [return].
- You'll see the GNU General Public License, version 2 text. Follow that link and read it sometime; it's pretty brilliant. Hit [return] to accept it.
- Ready to install the FreeDOS software? You bet. Hit [return].
- Hit [return] to accep the default installation location.
- "YES", the above directories are correct. Hit [return].
- Hit [return] again to accept the selection of programs to install.
- Proceed with installation? Yes. Hit [return].
- Watch in amazement and how quickly the OS is copied over to your virtual disk image. Hit [return] to continue when it's done.
- The VM will reboot. At the boot screen, press "h" and [return] to boot your new disk image. In a few seconds, you'll see an old familiar "C:\" prompt.
- Press the left [command] key to release your keyboard and mouse again, then click the red "close window" icon to shut down the VM. Make sure "Power off the machine" is selected and click "OK".
Convert the VirtualBox disk image into a "raw" image
- Open a Terminal.app window by clicking the Finder icon in your dock, then "Applications", then opening the "Utilies" folder, then double-clicking "Terminal".
Copy this command, paste it into the terminal window, then hit [return]:
/Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/VBoxManage internalcommands converttoraw ~/"VirtualBox VMs/FreeDOS/FreeDOS.vdi" ~/Desktop/freedos.img
This will turn your VirtualBox disk image file into a "raw" image file on your desktop named "freedos.img". It won't alter your original disk image in any way, so if you accidentally delete or badly damage your "raw" image, you can re-run this command to get a fresh, new one.
Prepare your USB flash drive
- Plug your USB flash drive into your Mac.
If your Mac can't the drive, a new dialog window will open saying "The disk you inserted was not readable by this computer." Follow these instructions:
- Click "Ignore".
Go back into your terminal window and run this command:
You'll see a list of disk devices (like "/dev/disk2"), their contents, and their sizes. Look for the one you think is your USB flash drive. Run this command to make sure, after replacing "/dev/disk2" with the actual name of the device you picked in the last step.
diskutil info /dev/disk2
Make sure the "Device / Media Name:" and "Total Size:" fields look right. If not, look at the output of
diskutil listagain to pick another likely candidate and repeat the step until you're sure you've picked the correct drive to complete eradicate, erase, destroy, and otherwise render completely 100% unrecoverable. OS X will attempt to prevent you from overwriting the contents of drives that are currently in use - like, say, your main system disk - but don't chance it. Remember the name of this drive!
If your Mac did read the drive, it will have automatically mounted it and you'll see its desktop icon. Follow these instructions:
Go back into your terminal window and run this command:
Look for the drive name in the output of that command. It will have the same name as the desktop icon.
- Look for the name of the disk device (like "/dev/disk2") for that drive and remember it (with the same warnings as in the section above that you got to skip).
Unmount the drive by running this command:
diskutil unmount "/Volumes/[whatever the desktop icon is called]"
This is not the same as dragging the drive into the trash, so don't attempt to eject it that way.
Copy your drive image onto the USB flash drive
- Go back to your terminal window.
Run these commands, but substitute "/dev/fakediskname" with the device name you discovered on the previous section:
cd ~/Desktop sudo dd if=freedos.img of=/dev/fakediskname bs=1m
After the last command finishes, OS X will automatically mount your USB flash drive and you'll see a new "FREEDOS" drive icon on your desktop.
Add your own apps to the image
- Drag your BIOS flasher utility, game, or other program onto the "FREEDOS" icon to copy it onto the USB flash drive.
- When finished, drag the "FREEDOS" drive icon onto the trashcan to unmount it.
- You're finished. Use your USB flash drive to update your computer's BIOS, play old DOS games, or do whatever else you had in mind.
- Keep the "freedos.img" file around. If you ever need it again, start over from the "Prepare your USB flash drive" section which is entirely self-contained. That is, it doesn't require any software that doesn't come pre-installed on a Mac, so even if you've uninstalled VirtualBox you can still re-use your handy drive image.