How to Backup the Xbox Hard Disk
Published in
xbox
· 7 months ago
written by Michael Steil, 8 May 2002
With the Xbox hard disk conntected to your linux computer, you can just make an image by running the following line as root:
dd if=/dev/hdc of=xbox-image.raw bs=1m
Note that you need kernel 2.5 or above and a file system that supports files bigger than 2 GB (e.g. not ext2 or FAT), because the image size will be about 10 GB. It is possible to split the image into 1 GB files:
dd if=/dev/hdc bs=1m | split -b 1024m
If you want to experiment with the image contents, it might make sense to read the partitions into single files, as described in the table below. (It might be a good idea to compress the files and backup them to a CD-R. A bzip2-compressed backup of an Xbox hard disk that has never seen a game or audio CD will only be about 250 MB.)
| No split, filesystem without 2 GB limit | Split, filesystem with 2 GB limit |
Backup | dd if=/dev/hdc of=00head.raw count=1 bs=512k dd if=/dev/hdc of=0.raw skip=1 count=1500 bs=512k dd if=/dev/hdc of=1.raw skip=1501 count=1500 bs=512k dd if=/dev/hdc of=2.raw skip=3001 count=1500 bs=512k dd if=/dev/hdc of=3.raw skip=4501 count=1000 bs=512k dd if=/dev/hdc of=4.raw skip=5501 count=9790 bs=512k dd if=/dev/hdc of=5.raw skip=15291 bs=512k
| dd if=/dev/hdc of=00head.raw count=1 bs=512k dd if=/dev/hdc of=0.raw skip=1 count=1500 bs=512k dd if=/dev/hdc of=1.raw skip=1501 count=1500 bs=512k dd if=/dev/hdc of=2.raw skip=3001 count=1500 bs=512k dd if=/dev/hdc of=3.raw skip=4501 count=1000 bs=512k dd if=/dev/hdc skip=5501 count=9790 bs=512k | split -b 1024m - 4 dd if=/dev/hdc skip=15291 bs=512k | split -b 1024m - 5
|
Compress | bzip2 -9 *.raw
| bzip2 -9 *.raw 4* 5*
|
Restore all | cat *.raw > /dev/hdc
| cat *.raw 4* 5* > /dev/hdc
|
Restore all (compressed) | bzip2 -cd *.bz2 > /dev/hdc
| bzip2 -cd *.bz2 > /dev/hdc
|
Restore single partition/s | dd if=00head.raw of=/dev/hdc bs=512k dd if=0.raw of=/dev/hdc seek=1 bs=512k dd if=1.raw of=/dev/hdc seek=1501 bs=512k dd if=2.raw of=/dev/hdc seek=3001 bs=512k dd if=3.raw of=/dev/hdc seek=4501 bs=512k dd if=4.raw of=/dev/hdc seek=5501 bs=512k dd if=5.raw of=/dev/hdc seek=15291 bs=512k
| dd if=00head.raw of=/dev/hdc bs=512k dd if=0.raw of=/dev/hdc seek=1 bs=512k dd if=1.raw of=/dev/hdc seek=1501 bs=512k dd if=2.raw of=/dev/hdc seek=3001 bs=512k dd if=3.raw of=/dev/hdc seek=4501 bs=512k cat 4* | dd of=/dev/hdc seek=5501 bs=512k cat 5* | dd of=/dev/hdc seek=15291 bs=512k
|
Restore single partition/s (compressed) | bzip2 -cd 00head.raw.bz2 | dd of=/dev/hdc bs=512k bzip2 -cd 0.raw.bz2 | dd of=/dev/hdc seek=1 bs=512k bzip2 -cd 1.raw.bz2 | dd of=/dev/hdc seek=1501 bs=512k bzip2 -cd 2.raw.bz2 | dd of=/dev/hdc seek=3001 bs=512k bzip2 -cd 3.raw.bz2 | dd of=/dev/hdc seek=4501 bs=512k bzip2 -cd 4.raw.bz2 | dd of=/dev/hdc seek=5501 bs=512k bzip2 -cd 5.raw.bz2 | dd of=/dev/hdc seek=15291 bs=512k
| bzip2 -cd 00head.raw.bz2 | dd of=/dev/hdc bs=512k bzip2 -cd 0.raw.bz2 | dd of=/dev/hdc seek=1 bs=512k bzip2 -cd 1.raw.bz2 | dd of=/dev/hdc seek=1501 bs=512k bzip2 -cd 2.raw.bz2 | dd of=/dev/hdc seek=3001 bs=512k bzip2 -cd 3.raw.bz2 | dd of=/dev/hdc seek=4501 bs=512k bzip2 -cd 4* | dd of=/dev/hdc seek=5501 bs=512k bzip2 -cd 5* | dd of=/dev/hdc seek=15291 bs=512k
|
This will result in the following files:
File Name | Size | Description |
00head.raw | 5 MB | Disk Config Area |
0.raw | 750 MB | Game Cache A (FATX) |
1.raw | 750 MB | Game Cache B (FATX) |
2.raw | 750 MB | Game Cache C (FATX) |
3.raw | 500 MB | System Files (FATX) |
4.raw or 4aa,4ab,4ac,4ad,4ae | 4895 MB | Music, Saved Games (FATX) |
5.raw or 5aa,5ab | 1896 MB | unused/empty |
If you want to extract data from the FATX partitions stored in single files using the program xboxdumper
, you will have to modify the array partitionAddresses[] at the beginning of the file main.c as follows:
u_int64_t partitionAddresses[] = { 0, 0, 0, 0, 0 };
Now always pass the corresponding image file to xboxdumper
as a parameter, for instance:
./xboxdumper list 3 3.raw