Thank you for a very thorough and good report
It looks you have done everything correctly
The problem is that the detected size of the device/file is 0 bytes. The hardfile code detects the size by opening the file (device in this case), seeking to the end and checking the file position. It is possibly that this is not supported for block devices on Mac OS X, and that one needs to use ioctls to get the size of the device. I haven't got a device to test with right now (and I'm not going to try to open the root partition ;-)).