MKEZX Crosstool

Das Crosstool unter Debian Lenny bauen bringt diverse Fehler zu Tage. Aus diesem Grund habe ich mich entschlossen ein Ubuntu 6.06 in qemu zu installieren. Als Host System habe ich einen Windows XP PC benutzt, da es der schnellste Rechner ist den ich habe.

Qemu mit Windows als Host und Ubuntu als Gast

1. Benötigte Datein

Qemu für Windows http://lassauge.free.fr/qemu/release/Qemu-0.9.1-windows.zip
Kqemu Beschleuniger http://www.nongnu.org/qemu/kqemu-1.3.0pre11.tar.gz
Ubuntu 6.06 (Dapper Drake) http://releases.ubuntu.com/6.06/ubuntu-6.06.1-desktop-i386.iso
Openvpn [optional] http://www.openvpn.net/release/openvpn-2.1_rc17-install.exe

2. Qemu installieren und das Gast System

Zu erst wird ein beliebiges Verzeichnis erstellt. Ich habe es "qlinux" genannt. Danach habe ich folgende Unterverzeichnisse erstellt "image" und "media".

Jetzt werden die Archive von Qemu und Kqemu nach "qlinux" entpackt. Das Verzeichnis "Qemu-0.9.1-windows" habe ich in qemu umbenannt.

Kqemu muss jetzt in die Registry eingetragen werden. Dafür im Verzeichnis "kqemu-1.3.0pre11" mit der rechten Maustaste auf kqemu.inf klicken und installieren drücken.

Für Qemu legen wir zwei Path Variablen an. Rechte Maustaste auf den Arbeitsplatz, Eigenschaften, Erweitert, Umgebungsvariablen. Unter Systemvariablen den Path bearbeiten und folgendes mit angepassten Laufwerksbuchstaben hinzufügen: E:\qlinux\qemu\bin;E:\qlinux\qemu

Nun wird ein Konsolefenster geöffnet und wir wechseln in das Verzeichnis "qlinux\image" und legen eine virtuelle Festplatte an.

qemu-img.exe create harddisk.img 5GB

Das Ubuntu Iso-Image legen wir in "qlinux\media" ab.

Um nun die Ubuntu-CD zu booten, muss die qemu Aufrufzeile in der qemu.bat im Verzeichnis "qlinux\qemu" in folgende geändert werden.

qemu.exe -L Bios -m 512 -cpu pentium3 -cdrom ..\\media\\ubuntu-6.06.1.iso -hda ..\\image\\harddisk.img -boot d -no-acpi

Nach dem Aufruf der Batchdatei wird Ubuntu wie üblich installiert.

3. Das Gast System in das local lan einbinden

Benötigt wird Openvpn, um ein TAP-win32 Adapter zu bekommen. Dieser ist notwendig, um eine bridge mit der Netzwerkkarte zu erstellen.

Openvpen bekommt man von der folgenden Adresse openvpn-2.1_rc17-install.exe, danach wird es einfach installiert.

Unter den Netzwerkverbindungen befindet sich ein neuer TAP-win32 Adapter. Dieser wird einfach in "TAP" umbennant. Danach markiert man die LAN-Verbindung und TAP. Mit der rechten Maustaste kann jetzt eine Brücke erstellt werden.

Nun muss Qemu noch mitgeteilet werden, dass es den TAP Adapter benutzen soll. Wenn man einen DHCP server hat, wird unter Ubuntu eine Konfiguration der Netzwerkverbindung nicht benötigt.

qemu.exe -L Bios -m 512 -cpu pentium3 -hda ..\\image\\harddisk -soundhw es1370 -M pc -net tap,ifname=TAP -net nic -no-acpi -kernel-kqemu

4. MKEZX Crosstool bauen

Benötigte Pakete

- bash
- perl, libwww-perl, libxml-parser-perl (libterm-readkey-perl, libgtk2-perl : optional)
- wget
- tar, gzip and bzip2
- make
- patch
- gcc, g++, libc and libstdc++ development files (shared and static)
- flex
- bison

Nachdem Ubuntu erfolgreich installiert ist, wird die Kqemu-Beschleunigung aktiviert. Dafür wird ein Konsolefenster geöffnet

net start kqemu

Danach kann Ubuntu gestartet werden mit folgender Aufrufzeile in der Batch.

qemu.exe -L Bios -m 512 -cpu pentium3 -hda ..\\image\\harddisk -soundhw es1370 -M pc -net nic,model=ne2k_pci -net user -no-acpi -kernel-kqemu

Nachdem die benötigten Pakete installiert wurden, lädt man sich MEKEZX herunter mkezx-0.9.20.tar.gz in das Homeverzeichnis. Natürlich kann man sich die aktuelle Subversion installieren "svn co https://svn.jerryweb.org/public/mkezx/trunk mkezx".

tar xfvz mkezx-0.9.20.tar.gz

Nun wechselt man in das MKEZX-Verzeichnis und ruft die Buildprozedure auf. Vorher vielleicht den Bildschirmschoner von Ubuntu deaktivieren.

./scripts/mkezx build-host-package crosstool-ezx

Wenn benötigter Sourcecode nicht geladen werden konnte, bei mir war es fakeroot, einfach im MKEZX-Verzeichnis ein Verzeichnis "sources" anlegen, den Sourcecode manuell herunterladen und dort ablegen. Das installieren von Ubuntu in qemu hat schon lange gedauert, aber das bauen des Crosstools gääähn.

5. MKEZX Crosstool installieren

Unter "/home/user/mkezx-0.9.20/build/host" sollte sich jetzt ein deb Paket von dem Crosstool befinden.

sudo dpkg -i crosstool-ezx_3.3.6-0mkezx1_i386.deb

Folgende Verzeichnisse werden im root installiert.

arm-linux-gnu
bin
binwrap
include
info
lib
man

6. Crosscompile

Hier ein Beispiel um Openssl crosscompilen.

./scripts/mkezx build-package openssl

Unter "/home/user/mkezx-0.9.20/build/ezx/packages" sollte sich jetzt ein deb Paket von dem openssl befinden.

Um ein Packet zu kompilieren und alle abhängigkeiten in einem Image zu haben, wird der folgende Befehl benutzt.

./scripts/mkezx build-image package_name tar.bz2

Ich hoffe das Tutorial ist hilfreich. MKEZX ist vermutlich noch umfangreicher, als ich heraus gefunden habe. Aber um ein Einstieg zu bekommen ist das schon mal nicht schlecht.