Among my delayed little tasks from cleaning out my grandparents'/uncle's house was seeing what I could recover from old hard drives. While there, I stripped 8 drives from 5 desktops (the historical progression of PCs since 1994), recycled the machines, and brought the drives home for possible data retrieval.
Was this necessary? Of course not. It's data-hoarding. I probably won't really go through this data in any meaningful way. Certainly not all the old copies of Win 3.1, Netscape, and Paint Shop Pro. But, hey, data's so cheap...
I've had a little handy USB to IDE/Notebook-IDE/SATA adapter in my kit for a while, but the external 120v -> 4 pin Molex power adapter had died. Ebay got me a replacement one of those for $5.
This first drive is a bit interesting. 8ish GB Maxtor circa 1998. However, this was in a 1993/4-era machine, upgraded to Win95, this hard drive added in 1998/9, and probably retired 2001.
So, this is in that overlap era where the 2GB limit in DOS/pre-Win95-OSR2 was a common limit, but 4-8GB drives were getting common.
So, got her plugged in. And after the expected groans, clacks, and tick-tick-tick-ticks of a 17-year-old drive that's been sitting in a garage for about 14 years... it shows up!
Disk /dev/sdi: 8455 MB, 8455200768 bytes 16 heads, 63 sectors/track, 16383 cylinders, total 16514064 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Device Boot Start End Blocks Id System /dev/sdi1 * 9 16513055 8256523+ 54 OnTrackDM6
Hmm. So, the trickery here was a little 63-sector program (OnTrack) that sat as a DOS TSR and translated every hard drive call by -63 sectors. Great, but the day of using OnTrack has passed.
Searching around, there used to be a Linux driver option of "hdx=remap63" up to the 2.6 era. That's gotten cleaned out of the kernel cruft, and probably all for the best.
My first attempt was to mount directly. And it worked.
# mount -o ro,loop,offset=64512 -t vfat /dev/sdi /mnt
That's 126 sectors in (63 for DM6, 63 for the original partition table). And, hey, I see data.
However, I only saw 2GB of data. After copying that down I looked into a different method.
# umount /mnt # losetup /dev/loop0 /dev/sdi -o 32256 # fdisk -l /dev/loop0 Disk /dev/loop0: 8455 MB, 8455168512 bytes 255 heads, 63 sectors/track, 1027 cylinders, total 16514001 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000
Device Boot Start End Blocks Id System /dev/loop0p1 * 63 4128704 2064321 6 FAT16 /dev/loop0p2 4192965 16434494 6120765 5 Extended /dev/loop0p5 4193028 8385929 2096451 6 FAT16 /dev/loop0p6 8385993 12578894 2096451 6 FAT16 /dev/loop0p7 12578958 16434494 1927768+ 6 FAT16
Hey spiffy. There's my other three 2GB partitions. (Extended contains the other three, if you don't remember partitioning)
Now I could try to double-loop mount. Because that's sane. And find the device numbers for /dev/loop0p5 or whatever. Or...
First... get the calculator warmed up. Because the start values above are sectors. So (4193028+63)*512 = ?
# losetup -d /dev/loop0 # losetup -o 2146862592 /dev/loop0 /dev/sdi # mount -t vfat /dev/loop0 /mnt
Copy the data off and repeat for partitions p6 and p7.