Copy Link
Add to Bookmark
Report

How to Backup the Xbox Hard Disk

xbox's profile picture
Published in 
xbox
 · 20 Feb 2024

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 limitSplit, 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 NameSizeDescription
00head.raw5 MBDisk Config Area
0.raw750 MBGame Cache A (FATX)
1.raw750 MBGame Cache B (FATX)
2.raw750 MBGame Cache C (FATX)
3.raw500 MBSystem Files (FATX)
4.raw
or
4aa,4ab,4ac,4ad,4ae
4895 MBMusic, Saved Games (FATX)
5.raw
or
5aa,5ab
1896 MBunused/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

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT