Nearest PC equivalent to Mac Target Disk Mode? [closed]

Mac firmware has a special boot mode that allows you to offer its internal hdd to another computer as an external disk (you just connect the two machines via an IEEE 1394 cable). Only the second machine needs a functioning OS installed.

Any good suggestions for something similar on the PC side of things? Block level access isn't important to me, I'd just like to be able to copy files off it. It doesn't matter to me if it uses Ethernet, IEEE 1394, or wifi - I just like having a quick way to access files on a client PC.

Is there any single-purpose Linux distro specially designed to do this? It'd be nice to have something super simple, quickbooting, and small that I could install on a USB drive. I used to use Knoppix, but it's overkill as a Target Mode replacement.


Solution 1:

Sadly, no. There's no longer any excuse for the lack, given the availability of USB OTG and EFI firmwares, but nobody is implementing it.

Your best bet is booting a mini Linux distro off CD or USB key that loads entirely into RAM, enumerates storage devices, and exposes them over iSCSI or NBD over Ethernet, and/or via FireWire SDB2 host mode if you have a FireWire port. I'm not aware of any canned distro to do this, but it should be pretty easy to rig up on top of SysRescCD with a custom init script.

I just wrote a big rant about this topic, which boils down to "FFS, with EFI firmwares and USB OTG there's no excuse not to offer target disk anymore; even without OTG Micro-AB ports offering Target Disk over Ethernet with iSCSI or ATAoE wouldn't be unreasonable."

Seriously, look at what Intel AMT (vPro) can do. In comparison to that level of firmware capability (which is made possible by EFI, by the way) target disk mode is nothing.

Solution 2:

Target disk mode is a feature of the Mac firmware. I've never heard of this being implemented in a PC manufacturers BIOS.

Solution 3:

A long time ago you could use a special parallel cable or null modem cable to connect two computers. That is completely worthless though given the speed and ammount of data you probably need to transfer.

You can use a special usb cable to connect to computers. Several vendors sell a cable that allow you to connect two computers via usb.

If both computers have ethernet then of course you can setup a network between the two. You may need a cross-over cable. I don't know of any off the top of my head, but it sure seems like it would be really easy to build a live cd/usb that simply boots, mounts every possible device and shares it all out via smb, nfs, ssh and starts a dhcp server.

Solution 4:

I don't think there is anything on the market to do it.

If you're really devoted to making it happen and have time & programming skill, you could probably take a look at one of the Firewire DMA exploits and figure out how they work. There was one written in Python last year whose code was very readable.

Firewire gives you direct memory access, so you can bootstrap a minimalist kernel and do whatever you want via the connection. If you're worried about full-disk encryption, it's a major risk that you need to account for, as someone could plug a Firewire device into a laptop that's asleep (vs. hibernated or powered down) and compromise the encryption key.