Windows 7 can't read old FAT32/Windows 95 HDD


Not really a gaming thing, but it is technology and I could use some help, so here goes.

I’ve got two old hard drives lying around here - one, a Windows XP drive last used in 2005 or so, the other a Windows 95 drive that’s almost 21 years old. They’re both IDE.

I picked up an IDE-to-USB adapter a while ago to see if I could get into the drives to recover data from them, and I’m getting mixed results. On my desktop computer, I can’t get into either drive. On my dad’s laptop, I can get into the XP drive, but not the 95 one.

I’ve tried accessing it on my own computer (Windows 7), my dad’s laptop (Windows 7), and by launching into Ubuntu, and they all have the same result - the drive appears in Disk Manager with the correct capacity, but it’s shown as unallocated. I know for a fact this can’t be right, because I can launch into Windows 95 safe mode (regular startup complains about a protection error) by plugging it into an old computer I have here.

This leaves me with a conundrum - I want to recover the data off of both drives. The XP drive, I can get into through my dad’s laptop if worst comes to worst, but the 95 drive is isolated - I’ve tried launching into the XP drive on that old computer and hooking up the 95 drive to access it, but again, it doesn’t get read properly (IIRC XP just doesn’t see the drive at all, for some reason). The 95 drive has a capacity of around 850MB, but the only USB drive I have on hand (actually a microSD USB adapter) isn’t recognized by Windows 95 (I’m guessing either because the drive itself is too large - 2GB - or because I have to launch in safe mode).

While I’d really like to get into the drive’s contents to see what 5-year-old me was up to at the time, I don’t have the money to get a professional data recovery service to look at it. Does anyone know of any way I could get into the drive, or at least get the data off of it onto something else? Thanks.



First of all, be careful.
Every time you do something with this drive, you risk damaging it (mechanically, or having one of the other operating systems write some junk over the seemingly-unallocated space).

Next, Windows 95 originally did not support USB at all. The OSR2.1 update, available only with some computers, added some minimal support for dis new-fangled thing, but I’m not sure if it ever included support for USB storage devices. So that solution is out.

I’d recommend for you to make an image of this drive first - easiest option, considering you have ubuntu, would be to open a privileged (root) terminal, and run the following command:

dd if=/dev/sdX of=/some/path/my-disk-master-copy.bin bs=512 with sdX being how the whole drive shows up in Linux (probably sdb or sdc), and /path/to/file.bin being where you want to save the copy of the full disk. 850MB of space on the “normal” shouldn’t be a problem for you, I hope.

Be extremely careful to not mix up the if= and of= parameters - they stand for “input file” and “output file” - it should error out with nonexistent input file of course, but I wouldn’t want to be responsible for you accidentally overwriting that old drive with junk.
Also note that this command will take a long(ish) time - however much is required to read 100% of this ancient drive, end-to-end. You can watch the output file’s size in a different window and see it grow until it reaches the 850 MB size.

After the image is done, you make a second copy of it.
Then you can start using various on the “second copy” and even maybe the original drive, knowing you have a good master-copy backup to restart from if something goes wrong.

Sticking with Linux - as that is just more “rich” in such tools out of the box, you’d need to download 3rd party tools on Windows - next step would be to check what fdisk says about that image.


/sbin/fdisk /some/path/my-disk-working-copy.bin

You may or may not get a couple of lines of welcome text (depends on version), then a prompt asking for a command. Tell it “p”, and press Enter to see partition info. Next tell it “q” and press Enter to quit.

If you saw something like this:

[code]Command (m for help): p

Disk example-image.img: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders, total 41943040 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: 0x000664e8

        Device Boot      Start         End      Blocks   Id  System

example-image.img1 * 63 40001849 20000893+ 83 Linux
example-image.img2 40001850 41929649 963900 82 Linux swap / Solaris

Command (m for help): q[/code]except of course saying the 850 MB size, and something like “W95 FAT32” as type, great - the partition table is intact, we should be able to just extract the data off the drive.

If you get a message like:

Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x8945ee48.on start, or a blank/weird list of partitions in response to the “p” command, not so good, but we can work with it.

Post me what you got from fdisk, and I will help you go further with this - it may take a bit for me to reply, depending on your hours, but I’m glad to for once be useful around here.
Same, of course, if you get any errors.

Good luck!



It’s possible that the BIOS of your old computer used a different drive (CHS, cylinder-head-sector) geometry, and that’s why your Windows 7 computer isn’t detecting the partitions. Or the MBR/partition table might be damaged.

My favorite Linux distro for this sort of work is Grml, although it’s been a while since the stable build was updated.

There’s a nifty Windows tool called OSFMount that can mount raw drive image files (.img, .dd).

You can create the images with the dd command in Linux. If you prefer a Windows based solution, you’ll need a 3rd party tool. One such tool I’ve used in the past is “Disk Explorer for NTFS”. You can download it from here: It’s a 30 day trial version, so most of the data recovery features are disabled, but not the drive imaging part.

To create the image:

  1. Connect your drive via the IDE-to-USB interface.
  2. Run Disk Explorer NTFS and click “File -> Drive” and select your source drive from the list. Make sure you select the drive in the “Physical Drives” list (for example: “2nd hard drive 466GB (HD129 :slight_smile: - WDC …”), and not from the “Logical Drive” list.
  3. Click “Tools -> Create image file…”. A dialog box will open where you can specify the destination image file. Make sure to uncheck “Compressed” and “Multi file” as we don’t want the image to be compressed or split into multiple files. Also, make sure that “Range” says “entire drive”.
    When image creation has finished, you can try mounting the image file with OSFMount.

If OSFMount can’t find any partitions in the drive image file, it’s possible that the MBR/partition table has been damaged or it’s because of drive geometry issues. You could try repairing the image with TestDisk. TestDisk is available in many Linux distros, including Grml, but there’s a Windows build available. I recommend making a second copy of the image file before running TestDisk on it.



I kept putting this off for a while, oops. Anyways.

Tried this - Ubuntu gave me an I/O error before getting anywhere with making the image. I’m guessing that’s not good. Didn’t try fdisk or anything else, because a lot of this stuff is completely new to me and I don’t want to wreck the drive by mistake.

I also tried looking into ddrescue based on Google search suggestions, but I couldn’t get it to work or install for some reason.

I burnt a Grml disk and quickly found out that it’s a bit beyond me at the moment, heh.
I also tried looking into both Disk Explorer for NTFS and Disk Explorer for FAT (because hey, why not?) and neither of them got anywhere either - they both gave I/O errors, though I forget the exact wording at the moment.

I’m… guessing I’m pretty much boned now, right…?



I/O errors are not good and that probably means it’s a hardware issue. Could be a buggy or faulty IDE-to-USB interface, but the Windows 95 protection error you mentioned earlier is probably a symptom of the same problem: The drive is failing or has developed bad sectors, and this is causing read (or write) errors.

Did Ubuntu give you the I/O error before you even typed the dd command?

Ubuntu will try to automount hard drives and thumb drives at startup or when they are being plugged in. That’s not ideal when trying to recover data from a drive. There’s a guide for how to disable automount here:

But apparently that doesn’t work in recent versions of Ubuntu. There’s another method here:

I don’t have a Ubuntu install available to test.

You can check the drive’s health by using the Disks utility, or smartmontools/gsmartcontrol.

Also, check the system log file for (I/O) error messages:

$ sudo less /var/log/syslog

(or use the graphical Log File Viewer).

The package is called gddrescue in Ubuntu. It’s in the “Universe” repository. You’ll need to enable the repository first. Then install the package:

$ sudo apt-get install gddrescue

In the most recent Ubuntu version (15.10) there’s a graphical viewer for GNU ddrescue map files (previously called log files), which shows you a graphical view of the blocks that have been read, which are bad and which haven’t been tried yet.

$ sudo apt-get install ddrescueview

There’s a GUI for ddrescue available here:

I haven’t tried the GUI myself, so I can’t tell you much about it.

Install guide:

The ddrescue home page:

[ EDIT: After re-reading your original post, it occurred to me that you may have been launching into a Ubuntu LiveCD session (you didn’t explicitly say). If that’s the case, any installed packages and/or configuration changes are lost after a reboot, unless you have set up persistent file storage on a USB stick. Also, the askubuntu answer I linked to, which explained how to disable automount via adding a udev rule, said a reboot was required. If you don’t have persistent storage set up, a reboot will of course be pointless. However, I’m not sure a reboot is necessary. I believe changes in udev rule files should be detected automatically, at least in recent versions of Ubuntu (if not try one or more of these commands: [tt]sudo service udev restart[/tt], [tt]sudo udevadm control --reload-rules[/tt], [tt]sudo udevadm trigger[/tt]). Whether disabling automount works or not, use the [tt]df[/tt] command to check that no filesystem on the drive you are going to image is mounted before you run ddrescue. If you see it in the mounted filesystem list, unmount it with the command [tt]udisks --unmount /dev/sdb1[/tt] or [tt]sudo umount /dev/sdb1[/tt] (replace [tt]/dev/sdb1[/tt] with the actual device name for the drive/partition on your system). ]

Yeah, sorry about that. I should probably have warned you. It requires a bit of command-line fu to use. Its “barebones” nature is one of the reasons I like it. It has tools like ddrescue included, and doesn’t automount drives. It also has a “forensic” mode, which sets all block devices to read-only at boot, thus reducing the risk of overwriting data accidentally.

If you want to practice Linux commands in a safe environment, I highly recommend using virtualization software, like the free VirtualBox, where you can set up virtual machines (VMs) on which you can install OS’s on virtual hard drives, try out Linux live CDs, etc.

If you check the Windows event log, you’ll probably see a bunch of Disk errors.

Well, it’s not looking good. It looks like your hard drive is bad or failing, or has developed a number of bad sectors. But if it’s just a few bad sectors, there might still be good chance of recovering some or most of the data.

You should first see if you can get an idea of the condition of the hard drive, maybe run a HDD diagnostic tool by using the tool from the HDD manufacturer (but you will need to run it on the computer with the native IDE interface, because they rarely work over USB interfaces). But be careful not to run anything that erases the drive!

If you have trouble finding a tool that supports your drive (since the drive is obviously very old), there’s a bunch of them on the Ultimate Boot CD.

First, just run a quick or short test. If there are a lot of bad sectors, a full scan might take a while to finish. It might be better to just skip the full or long scan/test and go ahead and try the ddrescue tool. But I should warn you that it can take ages to finish if there are a lot of bad sectors. And the longer you keep stressing the drive, the greater the chance of it failing completely.

Good luck!

EDIT: Does your old computer have a network card with an ethernet interface? If yes, one solution could be to hook up the drive to that computer and image it over the network to your main computer. This can be done by mounting a NFS share or a Windows shared folder (via Samba). Although, it might take a bit of setting up, and it depends on whether you can get a Linux Live CD working with the old hardware in your old computer.



Deer lord.
Sorry, I’ve been AWOL for last two weeks. Courtesy of cough my employers.

I am not sure, now, if I have somewhat overestimated your Linux skills, and e.g. you tried literal “sdX” path instead of the correct a/b/c/d/e/f/… final letter, or is there something else going on.
You did mention that you have tried the graphical “explorer” type applications, so I guess you do know the proper sdX number.

If Linux says “I/O error”, followed by sector numbers or similar, then it’s quite definitely bad, yes. And again my fault for telling you to use the “standard” dd instead of ddrescue.
The latter is designed specifically for making emergency backups of problematic drives, and knows how to skip over bad sectors and so on, in attempt to extract as much data as possible from in between the faults.
(And yes, Flavrans is correct - in Ubuntu, you need to install “gddrescue” package to obtain the program named “ddrescue”. Long boring story.)

Said that… I’d appreciate if you’d try to show the partition table list with fdisk. This program doesn’t change anything unless you’ll explicitly tell it to save changes.
I wanted you to do that because in the original/old PC some parts of the drive, including partition table, must be readable because Win95 was starting to boot.
If the new PC you’re trying to use for extraction can’t see even that, then it may be that the drive requires some reconfiguration (eg. adjustment of jumpers from master or c/sel to standalone drive), or simply is something funky and old enough that your adapter cannot handle it properly.

Good luck indeed!



Yes, the jumper configuration is something you should check first.

Make sure the drive is configured to “Single”, or “Master” if the drive doesn’t have a separate “Single” setting. The CS or CSEL (Cable Select) setting may not be supported by the IDE-to-USB interface you are using.

Usually, you’ll find a description of the jumpers on the label at the top of the hard drive, or on a label at the back side near the jumpers/IDE connector.



Haha, no worries, I know about the whole sd* thing. IIRC, the drive showed up as either sdb or sdc.

Hey, no big deal. When it comes to ddrescue - yes, I neglected to mention it earlier, I’m booting into a LiveCD Ubuntu session. Can I actually install the gddrescue package while on LiveCD, or do I have to be booting into a full install? I did try getting the package and enabling the Universe repository, but I couldn’t seem to get it to work.

I did try playing around with the jumpers a bit earlier on, yeah. Wasn’t able to get Windows 7 to detect the drive that way, but I didn’t actually try playing with them under Ubuntu, from what I recall. I’ll keep that in mind when I take another look at the drive.

Thanks, both of you!



This procedure should work (tested on Ubuntu 15.10 Destop CD):

  1. Main menu: System Settings -> Software & Updates. Tick the “Community-maintained free and open-source software (universe)” option and then click the “Close” button. A dialog box will appear saying the information about available software is out-of-date. Click the “Reload” button.
  2. Open a terminal window and type: [tt]sudo apt-get install gddrescue[/tt]
    Keep in mind that in a LiveCD session, the root filesystem is mounted on a ramdisk, so there isn’t a whole lot of free space available for installing packages.