Version: work in progress, 18.07.2003, Author: Roland Lezuo
Diese HOWTO versucht die Schritte zu erklären die nötig sind um ein Linux auf einer Microsoft XBox zu installieren. Alle dabei verwendeten Hilfsmittel sind ebenfalls unter Linux zu benutzen, und sind reine Softwaretools, es ist keine Hardwaremodifikation (sprich ModChip) notwendig.
Alle Copyrights gehören ihren Eignetüern
Ich konnte das alles bis jetzt nur auf einer XBox versuchen, weitere Erfahrungen, Ergänzungen oder Korrekturen bitte an mich
Ich kann natürlich keinerlei Garantie oder Haftung für den hier aufgezeigten Weg übernehmen, Sie sind für alles was sie machen selbst verantwortlich
Öffnen Sie Ihre XBox von der Unterseite, dazu muss man 6 Schrauben entfernen, 2 sind in der Mitte der langen Seiten unter Klebern versteckt, die restlichen 4 sind unter der Gumminoppen welche die rutschfesten Fuuml;sse der XBox darstellen versteckt, diese einfach abreissen. Danach den Deckel weg und vorsichtig die Festplattenhalterung entfernen TODO:sind hier noch Schrauben? Ziel ist es die Festplatte der XBox abgesteckt in der Hand zu halten. Bei unserem Model handelte es sich hier um eine 10GB Festplatte der Marke Seagate, Standard ATA66/100 TODO:Modelnummer, es gibt aber auch Varianten mit 8GB
Wir haben sehr viel Zeit damit verbracht das zum Laufen zu
bekommen, darum so genau wie möglich unsere Hardwarekonfiguration
des PC's:
Alle CD Laufwerke vom IDE Bus genommen, und nur eine
Festplatte im System (auf dieser das später beschrieben Linux).
Diese Festplatte sollte am primären Kanal des IDE Kontrollers
hauml;ngen und als Slave gejumpert sein (sprich: /dev/hdb). Wichtig: Der
2te Stecker des bei uns 100pologen IDE Kabels sollte so liegen dass man
leicht eine 2te Festplatte daran anstecken kann, ohne den PC ausschalten zu
müssen ;)
Bei uns führte folgendes zum Ziel: eine vanilla kernel 2.4.20 (wie man ihn von www.kernel.org bekommt) und die XBox Patches für ebendiesen von www.sf.net/projects/xbox-linux. Diese Patch trug die Versionnummer 0.7.0
den Kernel auspacken, dazu den kernel ins Verzeichnis
/usr/src kopieren und mit "tar jxf linux-2.4.20.tar.bz2" auspacken. Das
Verzeichnis mit "mv linux-2.4.20 linux-2.4.20-fatx" umbenennen sodass
man später weiss was da drinnen ist. ACHTUNG wenn schon ein
Verzeichnis mit dem Namen /usr/src/linux-2.4.20 existiert wird das
überschrieben, und das will man nicht!
Den XBox Kernel Patch in das Verzeichnis
/usr/src/linux-2.4.20-fatx kopieren und mittels "zless TODO:genauer
Dateiname | patch -p1" anwenden, sollte keine Fehler geben.
Falls sie schon eine konfigurierten kernel auf dem System
besitzen können sie jetzt dessen .config Datei in dieses
Verzeichnis
kopieren und sich so einige Konfigurationsarbeit sparen. Wenn dieses
konfigurierte Kernel im Verzeichnis /usr/src/linux liegt dann heisst der
Befehl "cp /usr/src/linux/.config .". Neuere kernel legen ihre
Konfigration manchmal als /proc/config ab, auch das könnte einen
Versuch wert sein. Manche Distibutoren packen diese Datei auch nach
/boot/kernel-version-config oder ähnlich. Nur wenn sie eine solche
Datei gefunden haben hilft ein "make oldconfig", wenn er was fragt einfach ENTER ruecken, wir
konfigurieren dann nochmals grafisch nach ;)
Egal ob "make oldconfig" oder nicht, jetzt ein "make menuconfig"
(Sie können auch make config verwenden, nur wozu lesen sie das dann
überhaupt ;). Kontrollieren sie ob alle Einstellungen passen, als
erfolgreicher "make oldconfig" Mensch können sie das meiste wohl
überfliegen, wichtig sind folgende Unterstüzungen: in "File
Systems" "FATX" und im Unterpunkt "Partition Types" "Advanced partition
selection" sowohl "PC BIOS" (wir wollen ja noch booten) und "XBox
Partitioning". ACHTUNG: Im "Processor Type and Feature" TODO:stimmt
dieses Menu nicht den XBox Support aktivieren, da dieser Kernel den PC
booten soll, nicht die XBox
WICHTIG: aktivieren sie im den "file systems" auch das
devfs
"make dep bzImage modules modules_install" macht den kernel,
darf meine Fehler geben, sonst hilft vielleicht ein "make mrproper" und
anschliessendes neukonfigurieren des kernels :(
"cp arch/i386/boot/bzImage /boot/xboxkernel" bringt den Kernel
wohin er soll (ACHTUNG: gentoo user müssen u.U. diese Partition
davor via "mount /boot" mounten)
Sie brauchen ganz dringen einen bootloader entweder lilo oder grub. Wir haben grub verwendet was wir hier sehr sehr empfehlen mouml;chten
Glück gehabt, es ist nicht mehr zu tun ;)
Pech gehabt, weil: TODO: booten mit lilo
wenn sie das System jetzt booten erscheint das Grub boot menu, drücken sie jetzt "c" um in den Kommand Modus von grub zu schalten. Wenn sie alles wie bisher beschrieben gemacht haben booten folgende Sequenz das System "root (hd0,0)" weil nur eine Platte im System ist und grub Platten nummeriert im Gegensatz zu linux. "kernel (hd0,0)/boot/xboxkernel root=/dev/hdb?" statt Fragezeichen ihre rootpartition (versuchen sie von 0 bis 4 wenn sie sie nicht wissen) "boot" danach bootet der Linuxkernel und sie sollte sich in ihrem gewohnten Linux befinden, falls sie die Platte nur für diese Operation zum primären Slave gemacht haben können ruhig einige startscripten fehler produzieren, das sollte alles ignorierbar sein, viel brauchen wir ja nicht.
TODO
Microsoft hat sich sehr viel einfallen lassen um das
Installieren eines anderen Betriebssystems "lustiger" zu machen. Einer
der Punkte ist es die Festplatte mit einer sehr alten und selten
gebrauchten Funktion der ATA Platten zu "locken". Eine gelockte Platte
muss entsperrt werden bevor sie bereit ist mit dem IDE Kontroller zu
sprechen, dazu sollte dieser ein spezielles Kommando an sie schicken und
danach ein 32 Byte langes Passwort. Bevor dies geschehen ist reagiert
sie auf jeden anderen Versuch der Kommunikation mit einem Lesefehler.
Nun ist es aber so dass das BIOS beim booten die Platten auf korrekte
Funkiton hin überprüft und nichts von der Sperre weiss. Darum
scheitern die meisten BIOSe beim booten wenn die XBox Platte angesteckt
ist.
Die Lösung ist erstaunlich einfach ;) Booten sie den PC und drücken sie "c" sobald
das grub menu erscheint. Tippen sie alles ein was es zum booten
brauchen, aber bestätigen sie den Befehl "boot" noch nicht.
Jumpern sie die XBox Platte als Master, der XBox ist das kein Problem,
unsere Platte war ursprünglich als CabelSelect gejumpert.
Nun booten sie die XBox mit der XBox Platte angesteckt und sobald die
XBox ihr grünes Gesicht zeigen ziehen sie das Datenkabel von der
Festplatte ab und stecken den 2ten Stecker des primären IDE
Kontroller Datenkabels des PC's in die XBoxplatte, ohne dabei die XBox
auszuschalten (die Stromversorgung lassen sie die XBox erledigen). Dann
bestätigen sie den "boot" Befehl von grub mittels ENTER Taste, und
der kernel sollte booten.
Was haben wir getan? Ganz einfach, haben
die schon eingeschalten und von der XBox entsperrte Platte in den PC eingebaut.
Der kernel ist klug genug die Äderungen der
Plattenparameter zu erkennen und kann sie nun richtig ansprechen.
ACTUNG: es kann sein dass beim Anstecken der XBox Platte nicht alles zu
hinhaut wie es soll und das System nicht bootet, oder beide Platten
nicht mehr erkennt, das ist uns oft passiert, bei uns "scheint" es
geholfen zu haben nach Anstecken der XBox Platte einige Zeit zu warten
(30 sec) und erst dann zu booten, aber wer weiss, einfach ein paar Mal
versuchen, irgendwann klappts dann schon ;)
TIP: Sie können die Platte jetzt auch wieder abstecken und in die XBox einbauen, sie dort wieder booten
um zum Beispiel die Installation zu testen und die Platte dann wieder wie geabt in den PC hotswappen. Sie
müssen dazu den PC nicht neu booten (spart Zeit), aber sie dürfen während die Platte nicht da ist nicht auf se zugreifen
sonst weigert sich der kernel mit ihr zu sprechen und sie müssen den PC neu starten. Also alles unmounten und erst wieder mounten
wenn die Platte wieder drinnen ist.
Nachdem der kernel also gebootet hat, und die XBox Platte
hoffentlich erkannt hat, können sie das device /dev/hda51 mounten.
Auf ihm das Laufwerk E: der XBox. "mount /dev/hda51 /mnt/temp" legen sie
temp u.U. davor mittels "mkdir /mnt/temp" an. ACHTUNG: wenn sie kein
devfs betreiben gibt es das device /dev/hda51 nicht, sie sollten es
mittels "mknod /dev/hda51 b 3 51" anlegen können. Vielleicht
müssen sie auch "mount -t fatx /dev/hda51 /mnt/temp"
schreiben.
Danach müssen sie einige Datein des Microsoft'schen
Dashboards austauschen um den Hack perfekt zu machen. Spricht eh fü
sich selbst: "cd /mnt/temp" "mv XBox\ Book.xtf XBox\ Book.xtf.old" "mv
"Xbox.xtf Xbox.xtf.old" "cp /bla/bla/bert XBox\ Book.xtf" "xp
/bla/bla/ernie Xbox.xtf" "cp /bla/bla/default.xbe ." Wobei /bla/bla das
Verzeichnis mit den Datei ist die sie aus dem full-disclousre Mail des
free-x teams haben.
HINWEIS:Es gibt auch Live enabled XBoxen, dann befinden sich die Schrift Dateien im Unterverzeichnis fonts, tauschen sie
diese Dateien aus, wenn sie eine solche XBox hacken bitte ein mail mit den genauen Orten wo die Datein hingehören!
(TIP: wenn sie ein Mail finden und dort nur viele
sinnlose Zeichen anhauml;gen dann markieren sie all die sinnlosen
Zeichen mit der Maus, lassen die letzte Zeile die nur aus "=" besteht
aus und öffnen sie einen Texteditor, keine OfficeApplikation nur
einen einfachen Texteditor. Fügen sie alles mittels mittleren
Mausklick ein und speichern sie die Datei als dayX.tgz.base64. Mit dem
tool base64 (TODO:simmt das so "base64 -d dayX.tgz.base64 >
dayX.tgz") können sie diese Datei umcodieren und dann mittels "tar
zxf dayX.tgz" auspacken und kommen so zu ernie und bert)
Das wars, der Linuxboot loader ist nun installiert. Wenn immer
sie die XBox ohne SpieleDVD eingelegt starten startet der Linux
Bootloader.
Das wars, sie sollten jetzt beim booten ohne SpieleDVD im Laufwerk den Linux bootloader sehen können
Der bootloader (default.xbe) kann konfiguriert werden, dazu muss eine Datei names linuxboot.cfg im gleichen Verzeichnis der XBox zum liegen wo auch der bootloader liegt. Das Format dieser Datei ist recht einfach.
ROOT \Device\Harddisk0\Partition1 kernel vmlinuz initrd=initrd pci=biosirq kbd-reset init=linuxrcDazu braucht es dann noch eine kernel für die XBox und eine initramdisk (initrd). Ein Rootfilesystem welches das eigentliche Linux enthält muss auch erzeugt werden. Diese Schritte sind nicht ganz trivial und werden hier nicht beschrieben. Wir haben sowas gemacht auf Basis der gentoo LiveCD Technik (welche wiederum auf knoppix zu beruhen scheint), nur soviel dazu: initrd ist ein gzip komprimiertes ext2 filesystem. Das rootfilesystem ist ein wie loop device erzeugtes filesystem in einer Datei (man losetup) und das wurzelverzeichnis muss nach dem booten von der initrd dorthin verschoben werden (man pivot_root), aber wie schon gesagt, wir haben schon eine distri gebaut, lesen sie weiter ...
download from: TODO
Starten sie den PC wie beschrieben und führen sie folgende Befehle aus