My cousin has a 4 year-old iBook G4 that died recently... When I took a look at it, it was pretty evident that it was a hard disk failure. My cousin didn't have a backup and the iBook wouldn't boot at all, so I held Command+S to boot in single user mode and see what was recoverable. Everything seemed fine.
The longer I used the iBook, the more "ls" and "cd" hung... That's never a good sign. I plugged in my USB disk and tried to dd the iBook's disk over, which did work but at 5KB/s. That comes to roughly 72 days to copy the entire 60GB disk! I've heard the stories about people freezing their hard drives to get some data off, so figured at this point there was nothing to lose and it was worth a try. I stuck the Mac in the fridge for an hour and went to buy a 6-to-6pin Firewire cable.
When I got back, the Mac was nice and cold. I connected the iBook to a working Mac with the Firewire cable, connected my USB disk to the working Mac and finally, booted the iBook while holding "T" (for target disk mode - it makes the iBook act as an external disk).
To my surprise, not only did the iBook turn on (screen working and all), but the working Mac I had connected the iBook to recognized the iBook's hard internal disk! I was able to start running dd and then thought "that's great and all, but who says it's not going at 5KB/s again?" Well, a quick
kill -s SIGINFO $! revealed that it was copying at over 5MB/s... Not bad!
The verdict? The freezer myth is true. I kept a ziplock filled with ice cubes around the area where the disk drive is on the iBook, and it kept up the 6MB/s rate for over 8 hours now, save for a few spots where there were bad sectors or funnily enough, when the ice melted! If you'd like to try this procedure, here's the condensed version:
- Make sure you have a partition that supports large files (ie, FAT32 won't cut it - we're making a disk image the size of the hard disk you're recovering). In my case, I used a 100GB HFS+ volume.
- Place the dead Mac in the fridge for an hour.
- Connect the dead Mac to a working one with a Firewire cable, and boot the dead Mac while holding "T" on it's keyboard. You should see the Firewire logo appear on it's screen after a moment.
- On the functional Mac, open Disk Utility again and you'll see the "Macintosh HD" volume from the dead Mac on the left pane. Select it and do File > Get Info to determine the partition identifier. It should be diskXsY, where X and Y are typically numbers under 10.
- Open a Terminal (Applications > Utilities > Terminal) and enter:
dd if=/dev/diskXsY of="/Volumes/VOLNAME/dd.img" bs=512 conv=noerror & pid=$!;while true;do kill -s SIGINFO $pid;sleep 15;done
Remember to replace diskXsY with the identifier we found for the dead Mac's Macintosh HD. Replace VOLNAME with the volume name of drive you'd like to save the image to. It could be a networked, internally, or externally attached volume. For example, I used a volume on my external USB disk which had the name BACKUPS. I used the following:
dd if=/dev/disk1s2 of="/Volumes/BACKUPS/dd.img" bs=512 conv=noerror &
These commands will clone the dead Mac's hard disk partition, effectively creating a .dmg disk image of the dead Mac's drive. Once dd has finished, you'll find the image saved as
dd.img on the volume you selected. dd will skip any bad sectors it encounters, so some data may be lost but if you're lucky you'll be able to get a good chunk out (in this case I was able to recover ~90% of the data). Statistics about the transfer progress are printed every 15 seconds - Once the disk copy is done, you can hit <ctrl+c> and quit the terminal to stop printing them. I hope this is able to help someone who needs data off their Mac!