Update 01/17/2012: It seems that my internal links suffered from bit rot and broke at some point while moving my website around. I have fixed those. Also it appears that the xbox-linux.org site is borked and has been for some time. I still get emails about this process, so I have annotated some of the steps below as best I can from memory.
Below are a series of Debian packages specific for the Microsoft Xbox. Their purpose is to assist upgrades from Xebian 1.1.4, which is based on a rather old version of Debian GNU/Linux 3.0 “woody”. These packages allowed me to upgrade my Xebian installation to Debian GNU/Linux 4.0 “etch”, with some additional effort. Here is an approximation of the steps required to install Debian on an Xbox:
- Read the Getting Started Guide at the Xbox Linux Project Wiki. The exact methods that you chose depend entirely on what you have to start with and what are your goals. You may have to flash the BIOS, etc. In other words, this is where you have to hack the Xbox so that you can boot Linux. There are several ways to do it and they are documented elsewhere on the Internet. I used a mod chip and loaded Debian into the unused area at the end of the hard drive so that I could still use Xbox Live (though I never did). There are other methods that don’t require hardware mods as long as you don’t mind getting your device blacklisted on Xbox Live. Given the age of this device, I suspect you probably don’t care. One caveat is that the kernel sources below do not have the FATX patches applied. If you plan to install Xebian in the game partition, you’ll need these. I remember seeing them ported to a later kernel by someone else out there.
- You should evntually end up at the Xebian Download page. Download the Xebian 1.1.4 archive of your choice. The “basic” archive is effectively a Debian base install for the Xbox, while the “xbox” archive is a full graphical desktop. Both work on the Xbox, of course. If you are an advanced Debian user and intend to immediately upgrade to the latest stable Debian, the upgrade may be more painless by starting with the “basic” archive and adding packages after the upgrade is complete. I already had the “xbox” archive installed for several years, as it was being used as a MythTV frontend.
- Be sure to read the Xbox Linux Boot CD/DVD Burning HOWTO before burning any images. There are some caveats with the Xbox. Basically, don’t use CD+RW or and RW DVD media because the drive doesn’t like it. CD-RW media seems to work fine as do regular CD-R’s.
- Read the Xebian HOWTO all the way through. I don’t remember anything from this, but there is some information in the README that comes in the Xebian archive.
- Install and configure Xebian per the procedure outlined in the HOWTO.
Once you have Xebian installed and configured, you need to prepare for the Debian upgrade. At the time of this writing, Debian GNU/Linux 4.0 “etch” is the most recent release. This procedure has that assumption in mind. If Cromwell BIOS is used, version 2.40 or higher is required. Obviously, this is a rather old version of Debian. Debian doesn’t support skipping over stable versions, so your best bet is probably to download Etch from the archives and do the upgrade per the steps below. If you only did a base install of Xebian, you might be able to get away with skipping straight to the latest version, but I haven’t tried it.
- Configure your apt sources.list as shown here and execute “apt-get update”.
- Upgrade the kernel and modules to version 2.6 using the packages below. Due to something strange about make-kpkg, the sources may need to be untarred in “/usr/src” for the installation to succeed. This kernel is rather long in the tooth, but I never got around to making an updated one. The patched sources are below, so you can generate your own patch set from the pristine sources and try to patch a later kernel. If you have luck, I will be happy to post a newer kernel here for those who may follow.
- Install the module-init-tools package with “apt-get install module-init-tools”.
- Replace/merge your “/etc/modules” config file with this one.
- Add an entry for the new kernel to “/boot/linuxboot.cfg” as described on the Xebian-1.1.4-Kernel-2.6-Upgrade Wiki page under “Compile the Kernel -> xebian”. You will need to change the “append” line for the new kernel to “root=/dev/hda2 kbd-reset xbox=hdd”, as Xebian uses the obsolete devfs driver. Be sure to leave the entry for the old kernel in case something goes wrong. This one works with the kernel package below. Just use the config file below. It should be self-explanatory.
- Reboot the Xbox with the new kernel. You need to manually select the HDD boot device to make the kernel selection menu appear. If all goes well, add a “default” entry to “/boot/linuxboot.cfg” to make the new kernel the default.
- Now perform the Debian upgrade. There are some caveats with “etch”, so be sure to carefully follow the upgrade procedure in the Release Notes for Debian GNU/Linux 4.0 (“etch”), Intel x86. Some manual intervention is required to get the upgrades to go smoothly, including removing some old packages (hotplug and python2.3 come to mind) and browsing through various scenarios presented by the aptitude tool. This is due to old Xebian cruft. There are caveats to most Debian upgrades, so be sure to carefully read those release notes as well.
- Once the final “aptitude dist-upgrade” has been completed, reboot the Xbox to make sure it comes back up OK.
- Install the “nvxbox” driver for X.Org and place this xorg.conf as “/etc/X11/xorg.conf” to get the X server up. This is going to be a problem for later versions of Debian. If you need X, you may have some difficulty. Definitely look at the nouveau driver as they were actively trying to support the Xbox at one point.
- Replace your “/etc/lirc/lircd.conf” with this one if you were using the Xbox DVD remote with Xebian. The new lirc_atiusb module only returns one byte per code instead of the 3 byte sequence of the old driver.
- Xebian’s “blink” tool to control the Xbox LED will not work, again due to its usage of the obsolete devfs device node structure. I haven’t been able to get it to recompile yet, but a simple workaround is to create the device node manually and creating a symlink to it to emulate the devfs structure. As root (this won’t stick if you are using udev):
mknod i2c-0 c 89 0
chgrp mythtv i2c-0
ln -s ../i2c-0 i2c/0
This is a recent point-release of the 2.6.16 kernel with the Xbox patches applied and the modules for LIRC 0.8.0. Also available is the patched kernel sources that may need to be present in /usr/src when installing the kernel package. Note that FATX support has not been ported to the 2.6 kernel series yet.
This is a packaged version of the original xf86-video-nvxbox driver found in the Xbox Linux CVS. The driver itself is old, but is suitable for Debian Etch (X.Org v7.1.0) and works sufficiently well for use as a media center.
I also attempted to merge the changes from the xf86-video-nvxbox driver found in the Xbox Linux CVS into the xserver-xorg-video-nv driver for Debian Etch (X.Org v7.1.0). This seems to work for me, though it will segfault if you do not set “NoAccel” to “true” in xorg.conf. There is some breakage in the DMA support code that is not present in the older driver, however with the accel disabled the performance of the overlay is poor. It’s not suitable for use as a media center. It probably breaks support other nVidia GPUs too, so don’t try to use it for those.