Macos – Get rid of “Resource Busy” message on Mac OS X

file-recoverymacospartition-recoveryunix

I am trying to repair a lost HSF+ partition table an iMac by running the i command inside of sudo pdisk /dev/rdisk1. Once I try running the i command, I get an error message saying that the resource is busy:

pdisk: can't open file '/dev/rdisk1' for writing (Resource busy)

i command in pdisk /dev/rdisk1

I get the same result when using /dev/disk1, /dev/rdisk2, and /dev/disk2.

I also tried running sudo gpt /dev/(r)disk(1-3). Interestingly enough, the I only get a result from /dev/rdisk3:

sudo gpt /dev/(r)disk(1-3). /dev/rdisk3 gives a result

So, I try to see what is using the resource by running sudo lsof /dev/rdisk1, as well as sudo lsof /dev/disk1. Nothing shows up:

lsof on /dev/disk1 and /dev/rdisk1

I've also tried unmounting the device by running sudo umount /dev/disk1 as well as sudo umount /dev/rdisk1. I get a message saying that the device is not currently mounted:

unmounting /dev/rdisk1 and /dev/disk1

Here's a list of all of the disks connected to the computer, found by running sudo DiskUtil list:

DiskUtil list command

/dev/disk0 – The disk of the computer that the iMac is connected to.

/dev/disk1 – The HDD of the iMac.

/dev/disk2 – The SSD of the iMac.

/dev/disk3 – I don't know what this is. I would assume it is the combined HDD and SSD of the iMac.

/dev/disk4 – An external hard drive.

/dev/disk5 – I have no clue what this is either. Maybe utilities for /dev/disk4?

The iMac has a fusion drive, and /dev/disk1 is the HDD. I've tried with the SSD, /dev/disk2, but I get the same result.

I have the iMac plugged into another computer via thunderbolt, and by holding t when the iMac started up, the Macintosh HD showed up as an external device on the other computer.

How could I get rid of this message? I've tried restarting both the iMac and the computer that it is connected to.

Best Answer

First off, the pdisk command is used to modify drives that are partitioned using an Apple Partition Map. Only PowerPC-based Macs use those.

Secondly, your umount commands above are failing because /dev/disk1 and /dev/disk2 are not mounted. Typically only partitions are mounted (e.g. /dev/disk0s3), although in your case, you have a Fusion Drive. You are absolutely correct that /dev/disk3 is not a 'real' disk. It is the combined capacity of /dev/disk1s2 and /dev/disk2s2. If you type umount /dev/disk3, that should work. Of course, nothing is mounted on /dev/disk1 or /dev/disk2, so you will have to issue a diskutil unmountdisk /dev/diskN for those. That should free them up so the gpt command will stop giving you the resource busy error.

Fusion Drives use Apple CoreStorage partitions as containers, which is sort of analogous to Microsoft's Dynamic Disks. Unfortunately, they make manipulating the partitions more difficult, and take many disk/partition recovery products off the table.

However, aside from the issues above, I'm not exactly sure what the problem is. You mention that the partition table is lost, but the output from diskutil list suggests your partition tables seem to be OK.

Can you elaborate a little more about the problem you were having?

Related Question