Running SpinRite 6.0 on MacOS (Part 1)

Running SpinRite 6.0 on MacOS (Part 1)
Running SpinRite 6.0 on MacOS (Part 2)

SpinRite is an excellent disk maintenance and recovery tool provided by Steve Gibson over at There are many success stories from its use provided by Steve frequently on his Security Now! podcast.

There are various guides online for running SpinRite on a Mac but none that I found worked exactly as described, so this is my guide based on how I got SpinRite to work on my Mac. The basic principle is to set up a virtual machine on your Mac and give it raw block access to the disk and then run SpinRite as normal within the VM.

This guide is written using the following versions of software so your experience may differ if you are using different versions:

MacOS Sierra 10.12.6 (also works with MacOS High Sierra 10.13)
SpinRite 6.0
VirtualBox 5.1.26 r117224
PlayOnMac 4.2.12

This guide is designed for more advanced users as granting anything raw block access to a disk can be dangerous, especially if you select the wrong disk! Please be careful while following these steps.

This guide does rely on you connecting the hard disk up to your Mac via USB using a caddy. It may be that the disk is so far gone that it will not mount in MacOS and if that is the case you will not be able to use this guide. However it may still be possible to run SpinRite on it by connecting it directly to the motherboard of another computer via SATA or IDE.

Creating an ISO from the SpinRite.exe provided

When you first purchase and download SpinRite you are given the file SpinRite.exe to run which you can use to install locally or create an ISO to boot from. The easiest way to get the ISO is to run SpinRite.exe on any Windows system you have available, or even a Windows VM running on your Mac and copy the SpinRite.iso file across to your Mac. However if that simply is not possible for you an alternative way is to run SpinRite.exe in Wine on your Mac. I prefer the implementation provide by PlayOnMac so I will be using that in this guide. If you can create the ISO in Windows skip ahead to the next section.

The first step is to download and install PlayOnMac. Once you have it, launch it and select Install a program. In the new window that comes up click on Install a non-listed program.

Click Next on both “Please read this” windows then Next again when the Manual Installation wizard comes up. Select Install a program in a new virtual drive and click Next. Give it a name (SpinRite will do) and click Next. Do not tick any of the before installation options and click Next. Select 32 bits windows installation and click Next. Click Cancel on any additional installations that Wine prompts you about (such as Wine Gecko) until you reach the select set-up file to run screen.

Click Browse and select your SpinRite.exe file.


When you click Next SpinRite will launch!


Click Create ISO or IMG File and then Save a Boot Image File. When the folder structure appears select Users > your username > Desktop to save the SpinRite.iso file to the desktop on your Mac. Once that has been successfully created exit SpinRite and PlayOnMac.

Running SpinRite on your Mac in a VirtualBox VM

The first step here is to download and install VirtualBox. There is nothing special about the installation so just follow the wizard through without changing any of the options.

Attach the hard disk you want to run SpinRite on by connecting it to a USB caddy and plugging the USB into your Mac. Unplug any other external drive you may have connected. Next, open Terminal and enter the command diskutil list to see the disks attached to your Mac. The disks prefixed with external will be the one you have connected up, followed by physical or virtual. In my example these are /dev/disk4 (physical) and /dev/disk5 (virtual). You may have multiple virtual entries depending on how many partitions are on the disk. You can also use the size of the disk to verify it is the correct one. Write down each of the disk identifiers that relate to the external drive.


The next step is to unmount the virtual disk partitions, but not the physical disk. In my case that means unmounting /dev/disk5. To do this type diskutil unmountdisk /dev/disk5. Repeat this for any other virtual disk partitions your drive has.


Now you need to create a vmdk file that will be attached to the virtual machine. This vmdk will direct all input and output to the physical disk you have connected. This is done using the following command:

sudo /usr/local/bin/VBoxManage internalcommands createrawvmdk -filename RawDisk.vmdk -rawdisk /dev/disk4

Note that for this command you must use the disk identifier for the physical disk and not any of the virtual disks. In my case this is /dev/disk4. If you get an error stating VERR_RESOURCE_BUSY make sure have you have unmounted every virtual disk. When you run the command you will be prompted for your password, enter it and press enter.


This will create a file RawDisk.vmdk in the root of your home directory. This will also re-mount the disk. Unmount it again using diskutil unmountdisk /dev/disk5 (virtual ones again).

Now you need to launch VirtualBox as root which can also be done using Terminal. This is required to allow read and write access to a raw device. Launch VirtualBox using the following command:

sudo /Applications/


Do not close this Terminal window. As VirtualBox was launched through Terminal you must keep Terminal open throughout the rest of the process and while using SpinRite.

Create a new VM by clicking New, give it a name, select Other under Type and under version select DOS, then click Continue.


Under Memory size the default of 32 MB is more than enough so accept that and click Continue.


Under Hard disk select Use an existing virtual hard disk file and click on the little folder icon next to it to bring up the file selection prompt.


As you are running VirtualBox under root you will be taken to the folder structure for the root user account. However the RawDisk.vmdk file is saved in your user area. At the top of the file selection window click on the drop down box and select Macintosh HD (or whatever your Mac’s hard drive is called). From there select Users > your username.


In this folder you should find RawDisk.vmdk. Click on Open.

If you get an error VERR_RESOURCE_BUSY when trying to open RawDisk.vmdk make sure that the external virtual disks haven’t been mounted again (check using diskutil list and fix using the same diskutil unmountdisk command as before).


As soon as you click Open Mac OS will actually remount the disk – how annoying! This must be rectified again by using the command the same way as before. In my case it is  diskutil unmountdisk /dev/disk5. You will have to do this in a new Terminal window as you can no longer interact with the one you launched VirtualBox from until you close VirtualBox.

Once that is done click Create.


Open Settings for the VM and go to Storage and select the CD icon underneath RawDisk.vmdk. Next to Optical Drive click on the small CD icon and use the file explorer that pops up to select your SpinRite.iso file. Once that is done click on OK.


Power on the VM and it should automatically boot from the CD and launch SpinRite! Assuming you already know how to use SpinRite make your way through the menu and select the disk you have attached to your Mac.


Start the SpinRite process and let it do its magic!


That’s it for running SpinRite on your Mac. Phew! … Bring on the future releases of SpinRite 6.x and 7.0 for better Mac compatibility!


Buy Me A Coffee

26 thoughts on “Running SpinRite 6.0 on MacOS (Part 1)”

  1. Thank you for this report! I just purchased, downloaded, and installed SpinRite to perform a Level 1 scan of new drive before installing into my MacBook pro. Your tutorial worked exactly as you described.

  2. Thanks for ‘giving back to the Internet!’ Your instructions assume running SpinRite on an external drive. How would they change to run it on the internal drive? Boot from an external drive and proceed as described?

    1. No problem! 🙂 I think this would be hard to do for two reasons: You would have to get SpinRite (which runs on top of the operating system FreeDOS) to boot natively on your Mac somehow (this may be possible using some trickery with Bootcamp) but even if you managed that Mac’s use EFI rather than BIOS and I don’t believe SpinRite 6.0 works with that. The easiest option here would be to remove the hard drive from your Mac and attach it, either internally or externally, to another PC and run SpinRite on it from there.

    2. I’m pretty sure you can scan your internal drive by booting a macOS that you have installed to an external drive. I’ve done it on a Mac but with Linux as the host OS instead.

      Good luck!

  3. Thanks for the great guide! Just like you say, most of the other once out there don’t work anymore, when using them exactly as described. I actually found yours while looking for updated instructions on how to run Spinrite on the Bootcamp partition on my internal drive. I have done this before, but it’s almost 2 years ago and due to Mac OS and virtual box updates it doesn’t seem to work exactly the same way anymore.

    What I did back in the day was booting into Mac OS, run virtual box with raw access to just the Bootcamp partition on the internal drive and then run Spinrite on it. I have to use Bootcamp a lot for bigger work projects, so 80% of my internal drive are occupied by Bootcamp. I figured running Spinrite on 80% of the drive is better than not running it at all. Back in the day this worked well, but now I can’t get it to work anymore.

    I tried using your instructions with some minor adjustments to get it to run on the Bootcamp partition, but terminal doesn’t seem to respond to any commands anymore once I have used it to start virtual box with root access, which means I can’t run the diskutil unmountdisk command anymore, which I believe could be the issue.

    At the moment I can start Spinrite, but it gets stuck when it is looking for mass storage devices – I suspect because it still doesn’t get access to the Bootcamp partition. Any suggestions?

    1. Have you tried opening a second Terminal window and running the unmountdisk command again in that? Hopefully the problem is just what you think it is; that the disk has mounted again. If you try that before you boot the VM perhaps Spinrite will be able to see the partition.

  4. Does spinrite need to be installed on the disk you are going to scan? Could I install it on a small USB flash drive and then run spinrite from that (after booting from an internal or cloned external HDD) and having done so, can I scan any of the connected drives?

    Thanks for such an awesome walkthrough. I’ve been wanting one of these for ages.

  5. Kevin,

    Great article and Steve Gibson referred me here himself.

    For some reason I am not able to create the VMDK. I’ve included the target drive below as shown by diskutil list, followed by the sudo command for disk1, then the multiple errors. Can you tell me what might be wrong here? Thanks.


    /dev/disk1 (external, physical):
    0: GUID_partition_scheme *2.0 TB disk1
    1: EFI EFI 209.7 MB disk1s1
    2: Apple_HFS Backup 1 2.0 TB disk1s2

    MM:~ polymer$ sudo /usr/local/bin/VBoxManage internalcommands createrawvmdk -filename RawDisk.vmdk -rawdisk /dev/disk1
    VBoxManage: error: VMDK: could not open raw disk file ‘/dev/disk1’
    VBoxManage: error: Error code VERR_RESOURCE_BUSY at /Users/vbox/tinderbox/5.1-mac-rel/src/VBox/Storage/VMDK.cpp(3428) in function int vmdkCreateRawImage(PVMDKIMAGE, const PVBOXHDDRAW, uint64_t)
    VBoxManage: error: Cannot create the raw disk VMDK: VERR_RESOURCE_BUSY
    VBoxManage: error: The raw disk vmdk file was not created
    MM:~ polymer$

    1. Hey Leo, did you try running diskutil unmountdisk /dev/disk1 before running the command to create the VMDK (MacOS seems to remount the disk several times during this process)? If that doesn’t work, one of the other people who commented on this mentioned that the command diskutil eject /dev/disk1 worked for them. Hopefully one of those helps!

      1. Hi Kevin,

        I’m getting the same error as Leo but your reply mention running the diskutil unmountdisk command for the external physical disk /dev/disk1 but in your article it state not to unmount the physical disk.

        Should I run the diskutil unmountdisk command for my external physical drive?

        Note I didn’t have any virtual disk.

        Thanks for your help and clear instructions.

  6. Great write-up, thanks! I used VMWare Fusion in my case but it worked well…sort of. It’s a GPT drive from a Windows 8 laptop so SpinRite isn’t quite equipped to deal with it yet. Come on 6.1!

  7. I would like to add. For a truely damaged disk, MAC OS will attempt to mount and then unmount which means you can never use the disk. Which is odd because in my case it was an NTFS disk and really it is of no use in Mac OSX. In any event I solved this by using a program called disk arbitrator. It blocked auto mount and you don’t need to go through the fuss of unmount. Run this here before you follow these great steps:

  8. Hi Kevin, Excellent tutorial, love it. I too got the same issues at Leo, word for word. So thought i would give your suggestion a go to unmount the physical disk. That being:

    diskutil unmountdisk /dev/disk2
    (my physical external drive was labelled disk2)

    This unmounted the drive lovely. However, despite following your instructions to create a vmdk file, i couldn’t find it anywhere on my drive! So i altered the creation path to:

    sudo /usr/local/bin/VBoxManage internalcommands createrawvmdk – filename /Users/[myusername]/RawDisk.vmdk -rawdisk /dev/disk2

    This of course, remounted the drive automatically, so simply unmounted again with the above command. Then i was able to easily find the raw disk with Virtual Box inside my user folder. Then ‘Start’ the virtual machine and boom, SpinRite ran, detected my external hd, and then as if by magic, started it’s work! Fantastic!

  9. Just one more thing! After spending HOURS on a Windows 10 machine trying all different ways to get SpinRite to scan a USB thumb drive without success (DOS boot discs with USB drivers, selecting a USB filter within VirtualBox, diskpart doesn’t work on removable drives etc.) I simply followed the same method as above, and now it’s currently doing its thing on a USB stick, truly amazing! The wonders of MacOS!

  10. Kevin, Thanks a million for the post.

    I have an iMac and don’t want to risk trying to remove the internal drive. I have a MacBook Pro which has VirtualBox on it. Do you think I can use it by connecting the iMac in Target Mode? I’m tempted to try. 🙂
    Thanks much,

      1. Kevin,
        After several days of effort mostly in learning VirtualBox and getting compatible cables and such, I’ve concluded that using Mac’s Target Disk Mode will probably work fine for Spinrite in VirtualBox on the host Mac. I failed to finish because my target drive is a fusion drive. I explain here.

        I was stopped short by the fact that my target is an iMac with fusion drive, and I read that I must split the fusion drive into its SSD and spinning components to run spinrite BUT that operation would erase all data including the hidden recovery disk partition. In a pinch I could save off the latter and save my data with the SuperDuper clone which I made, but for now point I decided to take the iMac to the Apple store to have the disk analyzed. I’ll let you know if I later come back and complete the operation by splitting the fusion.

        But the good news is that in Target Disk Mode I was able to see the partition on the target disk using diskutil as you did above. BTW, I found the easiest way to put the iMac in target disk mode was to shut it off, then hold T during startup. I removed all external drives on both computers before connecting and from the host Mac Mini my diskutil list output is summarized here:

        Host Mini:
        disk0 (internal, physical) Internal MacHD MINI

        Target iMac:
        disk2 (target iMac) (external, physical) SSD 121.3 GB of fusion

        disk3 (target iMac) (external, physical) Spinning 3 TB of fusion

        disk5 (target iMac) (synthesized) Combination fusion drive seen as iMac internal drive: MacHD IMAC

        (I have no idea why there’s no disk1 nor disk4. UNIX ???)

        On a non-fusion target I believe this should work fine with spinrite. But I failed here trying to create the RawDisk.vmdk, the command producing the error message VERR_RESOURCE_BUSY apparently because of the combined fusion drive arrangement. I tried the command on disk3 first and then disk5 (with some trepidation) but always got VERR_RESOURCE_BUSY.

        If I get brave enough to split the fusion drive then I believe that I will be able to create RawDisk.vmdk on disk3 and then run spinrite on it.

        Any thoughts?

  11. Thank you for this post! Works exactly as described and I’m now able to help a friend SpinRite his sons disks but on my Mac! Thank you do much! 🤘

  12. Just got this setup! I used to use Spinrite wayyyyyyy back in the day and found it useful. Just trying to run it on an external USB drive and it get about a third of the way into scanning and comes back with a red error scren sating Division Overflow Error! Have you ever come across this?

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s