Enable SSH Without Opening the Apple TV
Parts Needed
- External USB drive
- boot.efi from appletv
- licensed copy of os x for intel
- usb hub w/ external power
Instructions
THE METHOD DESCRIBED BELOW ASSUMES THE USB DRIVE OR IPOD YOU ARE INSTALLING TO IS EMPTY AND HAS NO DATA THAT YOU CARE ABOUT. PLEASE USE CAUTION
Step 1
Install full Mac OS X onto the iPod, using semthex's kernel and instructions detailed here: Apple TV Hacks - Mac OS X running on Apple TV
Step 2
Modify the AppleFileSystemDriver, add this text to the file /System/Library/Extensions/AppleFileSystemDriver.kext/Contents/Info.plist in the IOPropertyMatch array section
<dict> <key>Content Hint</key> <string>5265636F-7665-11AA-AA11-00306543ECAC</string> <key>Leaf</key> <true/> </dict> <dict> <key>Content Hint</key> <string>Apple_Recovery</string> <key>Leaf</key> <true/> </dict>
Very special thanks to Turbo for this patch. If you skip this step then OSX wont boot and will complain that it is waiting for the root device
Step 3
Now we are going to change the partition info to that of a recovery system (THIS PART VARIES ON EACH SYSTEM) Using the command: sudo gpt show /dev/disk1 You should get results such as:
start size index contents 0 1 PMBR 1 1 Pri GPT header 2 32 Pri GPT table 34 6 40 409600 1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B 409640 116538416 2 GPT part - 48465300-0000-11AA-AA11-00306543ECAC 116948056 262151 117210207 32 Sec GPT table 117210239 1 Sec GPT header
Where index 1 is the EFI partition and index 2 is the Mac OS X installation.
Now do this to set it up to work as recovery partition:
THIS ASSUMES /dev/disk1 is your external drive you can break your system if it isnt
gpt remove -i 2 /dev/disk1
Then take the numbers from above and plug them in respectively, for me the start point is 409640 and the size is 116538416
gpt add -b 409640 -i 2 -s 116538416 -t 5265636F-7665-11AA-AA11-00306543ECAC /dev/disk1
Now unmount the drive and connect it to the Apple TV, and boot up with menu and -
Make whatever changes you want, you will want to use a USB hub so you can hookup a keyboard as well. I used appletv-install.sh to copy the necessary files (gdb will probably fail, that is ok you can ignore it). Be sure to enable ssh on your Mac OS X install before you run this script so that it copies the ssh.plist file that has sshd enabled and not disabled.
The below is redundant, apparently you can also use mount_hfs to mount your partition, but I have documented success using the below method also - MrZ
If you mess up and want to mount your "repair" partition again, you can just reverse the steps, but change
gpt add -b 409640 -i 2 -s 116538416 -t 5265636F-7665-11AA-AA11-00306543ECAC /dev/disk1 to gpt add -b 409640 -i 2 -s 116538416 -t 48465300-0000-11AA-AA11-00306543ECAC /dev/disk1
The repair partition shows up again on your machine, and you can edit it.