I needed to update the firmware on several of the infamous Seagate Barracuda 7002.11 drives with the buggy "SD15" firmware.
Seagate offers a Windows executable or an ISO file to create a bootable CD. However, I had only a Mac, a Linux notebook without a CD drive, and a Windows notebook with neither a CD nor any possibility to attach SATA drives.
After some googling, it looked like the Intel Mac could be booted from such a DOS CD, and that might have worked ... but I didn't even have a blank CD.
But wouldn't it be possible to boot from an .iso file on the hard disk?
As it turns out, it is. And this will probably prove quite handy to boot various Live CDs.
My notebook has Ubuntu, with the standard Grub boot loader. Grub cannot boot from an iso file, but another boot loader called grub4dos can. And Grub can boot that smart cousin of his... Yes, it's a sort of weird setup, but it worked for me.
There are also ways to do that on a Windows system. But here is the Linux version:
- Get grub4dos from sourceforge or gna.org
- Extract grub.exe from the zip file and copy it to your /boot directory.
- Also put the .iso you want to boot into your /boot directory.
- Edit your /boot/grub/menu.lst file and add these lines:
title == Use grub4dos for the following entries: == title 1: Reload this menu using grub4dos to enable booting the next entries kernel /boot/grub.exe title 2: boot the Seagate firmware ISO file map --mem /boot/MooseDT-SD1A-3D4D-16-32MB.ISO (hd32) map --hook chainloader (hd32)
(Adapt the "title 2: ..." line, and of course the "map --mem /boot/name-of-your.iso" line with the right file name. Note that it is case-sensitive)
When booting, you will first be in your standard grub, where you select the "1: ..." entry to load grub4dos. It will do just like grub, find the same menu.lst file, and display it again. Now you can select the .iso entry, which grub4dos will understand.
It is probably also possible to store the iso files on other partitions, but that is "left as an exercise to the reader" ...