Running SpinRite 6.0 on MacOS (Part 2)

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

The first part of this guide focused on running SpinRite on your Mac to scan an external drive. However, what if you want to run SpinRite on your Mac’s internal drive? If you’re running a fairly modern Mac your storage will be soldered to the motherboard making it impossible to remove. So much for removing the drive so that you can run SpinRite on another computer! This post will guide you through the process of running SpinRite on your Mac’s internal storage using your Mac!

In order to proceed with this you will need an external hard drive or USB drive with at least 20 GB of space available on it. This is because you will be installing MacOS onto an external drive and booting your Mac from it. The faster this storage, the better! USB 3.1 (and USB C) and Thunderbolt drives will work best.

As with Part 1 this guide is aimed at more advanced users. I highly recommend making a backup of your system before starting (assuming your hard drive isn’t so far gone you can’t do that). I also recommend reading Part 1 to familiarise yourself with the process that will be followed here, though it is not identical it is similar.

I would also like to thank Miguel from the comments section of Part 1 for the inspiration for Part 2.

Installing MacOS on an external drive

The first part of this guide is to install MacOS onto an external drive. Start by opening the App Store and searching for MacOS High Sierra and proceeding to download it.

While that is downloading plug in your external drive and open Disk Utility. In the View menu make sure Show All Devices is selected.

DiskUtilityShowAllDevices

When selecting your external storage make sure you select the top level item (in my example below this is JetFlash Transc… rather than Transcent below it) and click Erase. Give it any name you wish and make sure the format is Mac OS Extended (Journaled) and the Scheme is set to GUID Partition Map.

DiskUtilityErase

Once that is done wait for the MacOS High Sierra download to complete. Once it has the installer will launch automatically. On the first screen of the installer click Next and then accept the EULA. On the disk selection screen click Show All Disks… and then select your external drive.

MacOSDiskSelect

Click Install and you will be prompted to enter your password in order to install a helper. Enter your password and click Add Helper and the installation will begin. Once the first part of the install is done your Mac will reboot and continue installing. Allow this process to complete.

MacOSInstalling

When this is done you will need to run through the first startup process, setting your language and keyboard options. Go through it as minimally as possible (for example you don’t need to sign in with your Apple ID). You should connect to WiFi or ethernet as you will need to install VirtualBox and will need a way to transfer your SpinRite.ISO to this install of MacOS.

Running SpinRite on your Mac’s internal storage

All steps in this part of the guide need to be done from your new MacOS install running from your external storage. If you need to return to your regular MacOS install simply restart your Mac and remove the external storage from your Mac.

The first step 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. You also need to transfer your copy of SpinRite to the new MacOS install (you need the ISO, read the first section in Part 1 of this series for details on getting that).

If your internal Mac storage is encrypted with FileVault MacOS will prompt you for the password to unlock it every time the drive mounts. You can click Cancel any time this prompt appears as it is not necessary to unlock the drive to run SpinRite on it.

With VirtualBox installed and your SpinRite.ISO at the ready, let’s begin!

Start by opening Terminal and running diskutil list. A list of disks attached to your Mac will be returned and the one we are looking for is your internal disk. Look for the one with a type of Apple_HFS or Apple_APFS. In my example this is /dev/disk0.

DiskUtilList

The next thing to do is unmount this drive. This is done by typing in diskutil unmountdisk /dev/disk0. Remember to change this disk to the one that is correct for you.

UnMountDisk

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 your Mac’s internal drive. This is done using the following command:

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

If you get an error stating VERR_RESOURCE_BUSY make sure /dev/disk0 is not mounted (rerun the command diskutil unmountdisk /dev/disk0 if necessary). When you run the command you will be prompted for your password, enter it and press enter.

CreateVMDK

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/disk0.

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/VirtualBox.app/Contents/MacOS/VirtualBox

launchVirtualBox

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.

NewVM

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

VMmemory

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.

SelectexistingHD

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.

SelectMacHD

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 /dev/disk0 haven’t been mounted again (check using diskutil list and fix using the same diskutil unmountdisk command as before).

SelectRawDisk

As soon as you click Open MacOS will remount the disk. This must be rectified again by using the command the same way as before. In my case it is  diskutil unmountdisk /dev/disk0. 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.

NewVMHDSelected

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.

SelectSpinRiteISO

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. It is recommended that you only run SpinRite on Level 2 for SSD storage.

SpinRiteRunning

And that’s it! You may wish to hold on to your external MacOS install for future use as it is quite a hassle getting one of those set up and it is good practise to run SpinRite on your drive on a fairly regular basis.

 

5 thoughts on “Running SpinRite 6.0 on MacOS (Part 2)”

  1. Thanks for doing Part 2: just what I needed. A quick note on my experience following these instructions on a File Vault encrypted volume (in my case, it was an external spinning drive). I couldn’t get beyond the VERR_RESOURCE_BUSY error no matter how many times I used the diskutil unmountdisk command, so I tried diskutil eject /dev/disk. That seemed to remove the barrier, and I was able to follow the rest of your instructions with no problem. Cheers!

  2. Kevin, any thoughts on running on the two internal drives in an iMac that make up a Fusion Drive? I’ve got a 3TB Fusion drive with ongoing S.M.A.R.T. errors and I would love to run Spinrite. Could I just run it twice; once on the SSD and once on the HDD?

    1. Hey Randy,

      That’s a really interesting question that I hadn’t thought about! Doing a bit of research it does appear that the SSD and HDD portion of the Fusion Drive appear as two separate disks when you run diskutil list. On my Mac I see disk0 which is 121 GB and disk1 which is 1.0 TB, which roughly makes up my 1.1 TB Fusion Drive. I’m not sure what the precise split is for a 3 TB Fusion Drive but it seems a key identifier is to look for GUID_partition_scheme as the type (for me both disk0 and disk1 have this type listed).

      Once you’ve identified them I think you are correct that running SpinRite on both disk0 and disk1 would cover the whole Fusion Drive and hopefully help solve the S.M.A.R.T issue for you. 🙂

      1. Yep. It ALMOST worked. Your directions worked perfectly, and both drives appear in the diskutil list. Spinrite worked perfectly on the SSD on Level 2, but I ran into an unknown (to me) size limit in Spinrite. Spinrite apparently has a drive size limit of about 2.2TB, so it wouldn’t run at all on the 3TB drive. That’s a Spinrite issue, your directions for running on an internal drive are great! I hope Steve Gibson will fix that in version 6.1

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s