I recently found myself faced with a 2.5″ NTFS formatted laptop hard drive from a 5 year old laptop that wouldn’t cooperate and would constantly fail so I decided to try and recover what I could from the drive by running SpinRite, a great application from Steve Gibson of Gibson Research that I have used successfully many times in the past to recover damaged or unreadable magnetic based media. The last time I actually used it was about 12 years ago over the course of several days to recover a failing HD. Computing and hard drive technology has changed a lot since then but they are still very much part of our day-to-day IT lives. When I encounter a problem that needs extensive evaluation I would just run SpinRite on the x86 based PC from which the hard drive came. However, after creating a bootable CD and USB key with SpinRite for use on the 5 yo laptop neither one would work so I decided to take a different route. Without another PC handy I decided to assess my options… My daily laptop is a MacBook Pro, doesn’t (thankfully) have an internal 2.5″ SATA bay and is sealed tighter than the sub in the Hunt for Red October… So what’s a Mac user to do with an NTFS formatted magnetic HD that can’t be read, an old Laptop that won’t boot SpinRite, and no other PC’s within easy reach? Try to run SpinRite from a Virtual Machine on a Mac of course….
Now for those of you who don’t know SpinRite was written in assembly and does very low level reads and writes against a computers magnetic mass storage drives. FreeDOS has been incorporated into SpinRite distribution to allow it to boot to a bare-metal PC and mount any connected drives so you can exercise the individual bits of 1’s and 0’s stored on the drive, exercising it enough to get a magnetic drive in as good a working condition as the physical hardware will allow. With any luck it will operate just well enough to get your information to a readable state and backed up before you have complete hardware failure… Running SpinRite from a VM was a bit more involved to configure via VMWare Fusion on a Mac and I wasn’t completely sure it would work… so I thought I would share my experiences.
I created a spinrite.iso file from another Windows VM I use. I then created a new MS-DOS based VM mounting the SpinRite.iso created from the SpinRite.exe file. It booted to a familiar screen without any issues.
Now the challenge was to get the physical hard drive mounted to the VM… Looking through the settings there was no way to get RAW access to a physical HD. I used a SATA to USB adapter and had to connect the drive to my Macbook Pro ensuring it was mounted to the Mac not the VM.
I needed to create a Raw Disk vmdk to make the RawDisk accessible to the VM so I did the following:
From a Mac terminal (I prefer iTerm) type:
In my case the 160GB HD came up as /dev/disk2 but your particular configuration may be different.
Next from the terminal run the following command to list the partitions that rawdiskCreator can see:
/Applications/VMware Fusion.app/Contents/Library/vmware-rawdiskCreator print /dev/disk#
Note: Ensure that the last entry /dev/disk# is changed to the drive you are targeting for raw access. In my case it was /dev/disk2
What you should see next is your drive partitions… My particular drive was split into two partitions (#1 was very small and #2 made up the bulk of my 160G HD)
With your partitions known and visible by the rawdiskCreator tool you can create the vmdk file that refers to the physical hard disk you are trying to mount and make it available to the existing SpinRite VM you created earlier. You will need to know the location of the Disk and the partitions you want to mount from the previous command, which in my case is /dev/disk2 1,2 which says it’s disk2 and both partitions 1 & 2. You will also need the path to the actual SpinRite .vmwarevm Virtual Machine that you created earlier (in my case ~/Documents/Virtual Machines/SpinRite.vmwarevm/rawDiskFile). Now I used rawDiskfile but this is the name of your vmdk file and can be called whatever you like. Make sure to include the ide designator at the end so the VM knows how to mount the drive.
/Applications/VMware Fusion.app/Contents/Library/vmware-rawdiskCreator create /dev/disk2 1,2 ~/Documents/Virtual Machines/SpinRite.vmwarevm/rawDiskFile ide
After you execute this command successfully you can option click the SpinRite.vmwarevm file and choose Show Contents. Here you should see the files that makeup the .vmwarevm file including the new .vmdk file (if that’s what you named it) for each partition you listed above (1,2). In my case it was rawDiskFile.vmdk & rawDiskFile-pt.vmdk
If you boot the VM now you won’t see the additional drive so you have to manually edit the configuration file for the VM to recognize the drive. With the VMWare file contents still being displayed in finder you need to edit the .vmx virtual machine configuration file. In my case it was called SpinRite.vmx because SpinRite is what I named my VM… You should probably back up this file incase there is a problem and you need to start over. Use your favorite editor (BBEdit, TextWranger, TextEdit, etc…) to edit the .vmx configuration file. You want to insert the following lines to your configuration file being careful not to duplicate an existing ide#:# entry:
ide0:1.present = “TRUE”
ide0:1.fileName = “rawDiskFile.vmdk”
ide0:1.deviceType = “rawDisk”
suspend.disabled = “TRUE”
If the VM already has in its .vmx configuration ide0:1, use another port such as ide1:1. It is also possible to use scsi#:# or sata#:# if the VM is somehow configured to use a SATA or SCSI controller. The suspend.disabled=”TRUE” entry prevents the VM from suspending and being out of sync with the attached HD. Important since most of SpinRite’s scans can take a long time to run.
The last step is to power on the VM and select your HD… You may be prompted to enter your administrators password to get RAW access to the HD as the VM powers up.
If you run into trouble it may be necessary to unmount the HD from your Mac by ejecting or un-mounting from Disk Utility prior to turning the VM on.
I won’t go into detail on how to use SpinRite as the tool is pretty self explanatory but the 160GB HD partition did appear in the interface ready to begin SpinRite’s operations.
Again this certainly isn’t an ideal setup as SMART access to the HD wasn’t available from within SpinRite menu options because, and I’m guessing here, of the SATA to USB setup but it might work in a pinch. Hopefully it proves useful to your IT Toolkit and helps you extend the life of your SpinRite license which is worth every penny…
Update: I tried a couple of drives and while it worked for one drive there was an error that completely stopped SpinRite and the VM in it’s tracks… It only occurred on a specific section of the hard drive where there was clearly an issue…