├── Dockerfile ├── README.md └── xboxdash ├── Makefile └── main.c /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | RUN apt-get update && apt-get upgrade -y 3 | ENV PACKAGES sudo unzip genisoimage 4 | RUN apt-get -y install $PACKAGES 5 | RUN dpkg -l $PACKAGES | sort > /packages.txt 6 | ENV FEATURES clang pyyaml 7 | RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo 8 | USER docker 9 | CMD /bin/bash 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Copyright-Free Xbox HDD Image 2 | ============================= 3 | 4 | This repository serves as a way to document how to create an Xbox HDD image, 5 | mostly for use with [XQEMU](http://xqemu.com), free of any copyrighted content. 6 | 7 | Download 8 | -------- 9 | If you're in a hurry, you can [download a pre-built image here](https://github.com/xqemu/xqemu-hdd-image/releases). 10 | 11 | Do It Yourself 12 | -------------- 13 | If you would like to create an image for yourself, containing your own files, 14 | you can follow these instructions. It's a bit hands-on, but if you've read this 15 | far you're probably okay with that. This will involve building a dummy 16 | dashboard, using [XboxHDM](https://www.reddit.com/r/originalxbox/wiki/xboxhdm#wiki_using_xboxhdm) 17 | to create a helper bootable ISO, and a QEMU VM to run the ISO and create the 18 | drive. 19 | 20 | You may want to start by building the dummy dashboard using 21 | [nxdk](https://github.com/xqemu/nxdk). Make sure to update the Makefile with the 22 | path to your nxdk install. Otherwise, copy your desired dashboard and optionally 23 | and "E drive" files you want on the drive over to this directory. 24 | 25 | Next you'll want to run the `make-iso-*.sh` script that comes with **XboxHDM 26 | v1.9**. This script will create a bootable ISO image. You can run XboxHDM 27 | natively on Linux or Windows (not tested by me), but I chose to simply run it 28 | inside of a Docker container: 29 | 30 | docker build -t xboxhdm . 31 | docker run --rm -it -v ${PWD}:/work xboxhdm 32 | 33 | Create a working directory: 34 | 35 | mkdir /tmp/xboxhdm 36 | pushd /tmp/xboxhdm 37 | 38 | Unzip XboxHDM: 39 | 40 | unzip /work/xboxhdm_v1.9.zip 41 | cd xboxhdm 42 | 43 | Now copy over the dummy dash and create the empty `TDATA` and `UDATA` folders: 44 | 45 | cp /work/xboxdash.xbe linux/C/ 46 | mkdir -p linux/E/TDATA linux/E/UDATA 47 | 48 | Finally, run the tool and copy over the resulting file: 49 | 50 | ./make-iso-lin.sh 51 | cp linux.iso /work 52 | 53 | Now we should have a file called "linux.iso" in this directory. You could burn 54 | this to a CD, and run it on your PC after connecting a real HDD, but we aren't 55 | going to do that. Instead, to create a virtual disk image, we will use a virtual 56 | machine: QEMU! 57 | 58 | But before we can boot it, we need to create a virtual hard disk. Use `qemu-img` 59 | to create an 8G qcow2 formatted image: 60 | 61 | qemu-img create -f qcow2 xbox_hdd.qcow2 8G 62 | 63 | Now you have an empty virtual drive. Let's fire up our virtual machine: 64 | 65 | qemu-system-i386 \ 66 | -drive index=0,media=disk,file=xbox_hdd.qcow2 \ 67 | -drive index=1,media=cdrom,file=linux.iso 68 | 69 | Next follow the on-screen instructions, which basically go as follows: 70 | - Enter 2 to boot in text mode 71 | - Type xboxhd at the command prompt to start the helper script 72 | - Enter 'yes' to confirm 73 | - Enter 1 to "build a new Xbox HD from scratch" 74 | - Continue to confirm through the warnings 75 | - Confirm building a new partition table, formatting partitions, and copying files 76 | - 8 to quit 77 | - Type `poweroff` at the command prompt 78 | 79 | You should finally have a freshly minted, copyright-free Xbox hard disk image! 80 | -------------------------------------------------------------------------------- /xboxdash/Makefile: -------------------------------------------------------------------------------- 1 | XBE_TITLE=xboxdash 2 | SRCS = $(wildcard $(CURDIR)/*.c) 3 | NXDK_DIR = $(CURDIR)/../../nxdk 4 | include $(NXDK_DIR)/Makefile 5 | -------------------------------------------------------------------------------- /xboxdash/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include "stdio.h" 5 | 6 | void main(void) 7 | { 8 | int i; 9 | 10 | if (pb_init()) { 11 | XSleep(2000); 12 | XReboot(); 13 | return; 14 | } 15 | 16 | pb_show_debug_screen(); 17 | debugPrint("Please insert an Xbox disc...\n"); 18 | while(1) XSleep(1000); 19 | pb_kill(); 20 | XReboot(); 21 | } 22 | --------------------------------------------------------------------------------