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.