Backup your original Hard Drive
The Phoem method may be superceded by Engadget's. Please consider doing a complete ~40GB backup of your original drive.
Phoem's Fast DD Method (OS X)
This will allow you to make copies of your AppleTV system partitions in case you need to restore them to a virgin state. This has only been tested on MacOS X.
NOTE: These instructions assume /dev/disk2 is your AppleTV drive.
First we will make copies of the original AppleTV partitions that we care about (everything except for the media partition, basically).
Lets copy the partitions onto your local drive:
dd if=/dev/disk2 of=Partition.img bs=1024k count=100 dd if=/dev/disk2s1 of=EFI.img dd if=/dev/disk2s2 of=OS.img dd if=/dev/disk2s3 of=OSBoot.img
Now lets put it back in place onto the new drive:
dd if=Partition.img of=/dev/disk2 bs=1024k count=100 dd if=EFI.img of=/dev/disk2s1 dd if=OS.img of=/dev/disk2s2 dd if=OSBoot.img of=/dev/disk2s3
Now use iPartition demo to find out the size if you were to grow the partition completely; using up the free space.
Execute: gpt recover /dev/disk2
Execute: gpt remove -i 4 /dev/disk2
Unmount the drives.
Execute: 'gpt add -s 309849759 -i 4 /dev/disk2 5A8 '
NOTE: 309849759 represents the # of blocks iPartition mentioned.
Finally, open diskutility and format just the media partition. (erase)
For a full disk image execute (approx 40GB space required):
dd if=/dev/sdc of=appletv-full-disk.bin bs=1024
For a compressed disk image execute (approx 2.5GB, roughly 1-3hrs):
dd if=/dev/sdc bs=1024 | gzip > appletv-full-disk.bin.gz
For partition-specific backups execute:
dd if=/dev/sdc0 of=Partition.img bs=1024 count=100 dd if=/dev/sdc1 of=EFI.img dd if=/dev/sdc2 of=OS.img dd if=/dev/sdc3 of=OSBoot.img dd if=/dev/sdc4 of=Media.img
To perform a full drive restore (takes a long time, 18 hours in one case, but a sure thing from a whole disk), execute:
dd if=appletv-full-disk.bin of=/dev/sdc bs=1024
Note: sdc represents your AppleTV 2.5" notebook drive. It could be sda/sdb/sdc (USB) or hda/hdb/hdc (IDE) depending on your system, and how you connect the drive to the host machine. The number that sometimes but not always follows it is the partition id. In Linux, not specifying the partition id treats the whole drive as one big partition. This can be useful for backups and restores.
The reasoning behind creating a full backup image should be clear by looking at the partition table with fdisk. The minor partitions are 5A8 wrapped in one large meta-partition!
Disk /dev/hdc: 40.0 GB, 40007761920 bytes 255 heads, 63 sectors/track, 4864 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device | Boot | Start | End | Blocks | Id | System /dev/hdc1 1 4864 39070076 ee EFI GPT
Update: Linux can see the partitions and can mount them (although journaling is not supported), if the following options are compiled in the kernel. (not sure if you need all of them)
Filesystems -> Partition Types -> Advanced partition selection (CONFIG_PARTITION_ADVANCED=y) Filesystems -> Partition Types -> Macintosh partition map support (CONFIG_MAC_PARTITION=y) Filesystems -> Partition Types -> EFI GUID Partition support (CONFIG_EFI_PARTITION=y) Filesystems -> Miscanelous filesystems ->Apple Extended HFS file system support (CONFIG_HFSPLUS_FS=m or y)
Partitions can be mounted forcefully. Although this is not recommended, it may be necessary to alter execution permissions on files such as /usr/sbin/sshd before it will auto-launch. Forceful mounts can be done with:
mount -t hfsplus -o force /dev/sdc3 /mnt/appletv
Linux Method With Compression
To back up the whole raw disk image takes 40 GB of drive space on the destination drive. Most of the source disk is empty howev
This allows for the creation of a smaller image by piping dd to gzip while imaging the drive.
dd if=/dev/sdc bs=1024 | gzip > wholedrive.img.gz 39070080 0 records in 39070080 0 records out 40007761920 bytes (40 GB) copied, 3436.62 seconds, 11.6 MB/s
Note: This will take about an hour depending on your machine!
In the end, this results in a file that's about 2.4GB on the destination disk. Not a bad compression ratio!
Update: dd if=/dev/sdc bs=1024 | bzip2 -9 > wholedrive.img.bz2 Will take approx twice as long, and result in a 2.2GB file. FYI.
Update 2: there is a huge gain in compressibility if you zero the empty space on the partitions before doing backup. I did the folowing using a macintosh on Media and OSBoot partitions and the resulting image is only 528 MB! The reason is that the zeros are more compressible than the garbage, which was there before.
dd if=/dev/zero of=/Volumes/Media/big_file_full_of_zeros bs=1024 rm /Volumes/Media/big_file_full_of_zeros sudo umount /Volumes/Media/
Maybe the same effect can be obtained using macintosh Disk Utility -> Erase -> Erase Free Space ... -> Zero Out Deleted Files