How to Cross Compile Busybox für Android oder andere Systeme

Dieses Thema im Forum "Tutorials & FAQs" wurde erstellt von Protector, 6. Dez. 2010.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Protector

    Protector VIP Mitglied

    Registriert seit:
    7. Apr. 2007
    Beiträge:
    14.565
    Zustimmungen:
    41
    In diesem Tutorial wird beschrieben, wie man das kleine aber feine Progrämmchen Busybox Cross Compilen kann. Zum Beispiel für Androidgeräte die schon root haben.



    [flink="#Infos"]Allgemeine Informationen[/flink]
    [flink="#vorbereitung"]Vorbereitung[/flink]
    [flink="#vorbereitung-2"]Hinweise zur richtigen Verwendung der Toolchain[/flink]
    [flink="#compile"]Entpacken und Konfigurieren[/flink]
    [flink="#compile-2"]Cross-Compiling und ausprobieren[/flink]

    [ftitle=Infos]Allgemeine Informationen[/ftitle]



    BusyBox ist ein Computerprogramm, das viele Standard-Unix-Dienstprogramme in einer einzelnen, kleinen ausführbaren Datei vereint.

    Es stellt die meisten Dienstprogramme bereit, die in der Single Unix Specification (SUS) gefordert werden; dazu viele weitere, die ein Benutzer eines Linux-Systems erwarten würde. BusyBox wird wegen seiner geringen Größe gewöhnlich in Disketten- und Embedded-Linux-Systemen genutzt.

    busybox-liste.png

    [ftitle=vorbereitung]Vorbereitung[/ftitle]


    Was brauchen wir alles um eine eigene Busybox zu erstellen?


    [ftitle=vorbereitung-2]Hinweise zur richtigen Verwendung der Toolchain[/ftitle]


    Wie wir ja alle wissen, gibt es unterschiedliche Prozessoren in den Androidgeräten. Die meisten werden einen armv7 oder armv6 haben. Daher ist es unbedingt wichtig, zu wissen welches System man hat. Es kann zwar nichts kaputt gehen, aber die Frustration ist groß, wenn die fertige Busybox einfach nicht laufen will, nur weil man die falsche Toolchain gedownloaded hat.

    Hier in diesem Tutorial wurde als Testhandy ein Motorola Milestone verwendet, welches als CPU eine ARMv7 (armv7l um genau zu sein) einsetzt. Besser bekannt unter dem Namen CortexA8.

    Code:
    $ cat /proc/cpuinfo
    Processor	: ARMv7 Processor rev 3 (v7l)
    
    Deshalb funktioniert hier die verwendung der Toolchain für eine armv6l. Aber das nur mal am Rande.

    [ftitle=compile]Entpacken und Konfigurieren[/ftitle]

    Nachdem man den Sourcecode der Busybox und die entsprechende Toolchain gedownloaded hat und beides entpackt hat, wird ein Terminal geöffnet.

    In dem Terminal wechselt man zuerst in das Downloadverzeichnis, welches als Beispiel unter Ubuntu auch passenderweise auch "Downloads" heisst.

    Hinweis: Busybox 1.18.0 hat derzeit noch massive Fehler im Sourcecode, darum lässt sie sich nur mit Mühe kompilieren, deshalb entweder Busybox 1.17.4 oder den Snapshot nehmen. Hier dient zur Veranschaulichung die Busybox Snapshot, welche täglich aktualisiert wird.

    Code:
    cd Downloads
    dann (nur bei snapshot, oder je nachdem, welche Version man genommen hat)

    Code:
    cd busybox
    oder
    Code:
    cd busybox-1.17.4

    danach ein simples

    Code:
    make defconfig
    eingeben und es wird eine gewisse Standardkonfiguration vorgenommen.

    Da man diese Version, wenn man sie kompilieren würde, aber nicht verwenden kann, müssen wir noch einstellen, dass die Busybox statisch gelinkt ist. Dazu nehmen wir den "grafischen" Menüeedit, den wir aufrufen, wenn man

    Code:
    make menuconfig

    eingibt. Das sieht dann so aus:

    Bildschirmfoto-Terminal-1.png

    Wie navigiert man da drin? Das ist ganz simpel: Mit den Pfeiltasten bewegt man sich hoch oder runter, mit Enter wechselt man in des jeweilige Menü, mit tab wechselt man unten auf "exit" und mit der Leertaste wählt man aus, beziehungsweise setzt Haken.

    Da man eine statische fertige Datei brauchst, muss man jetzt also in dem grafischen Konfigurationsassistent wie folgt navigieren:

    Busybox Settings -> Build Options und dann gleich beim ersten auswählen (das erzeugt die statische binary.

    Bildschirmfoto-Terminal-2.png Bildschirmfoto-Terminal.png

    Dann solange die Taste ESC drücken, bis man gefragt wird, ob man die Konfiguration speichern möchte. Hier natürlich bestätigen.

    Damit wären die ersten Schritte erstmal abgeschlossen.

    [ftitle=compile-2]Cross-Compiling und ausprobieren[/ftitle]

    Nun kann man endlich die eigentliche Busybox bauen. Man glaubt es kaum, aber es ist ein ganz "simpler" Befehl dazu nötig.

    Man gibt im Terminal nun folgendes ein:

    Code:
    LDFLAGS="--static" CFLAGS="--static" make CROSS_COMPILE=[COLOR="red"]/home/protector/Downloads/cross-compiler-armv6l[/COLOR]/bin/armv6l-
    Das rot markierte muss entsprechend angepasst werden, denn man hat sicherlich einen anderen Usernamen und/oder man hat eine andere Toolchain geladen und/oder die Toolchain wurde in einem anderen Verzeichnis gespeichert.

    Der Prozess kann eine ganze Weile dauern, also bisschen Geduld mitbringen. Sobald alles abgeschlossen ist, sollte man schauenn, dass es 2 Versionen von der Busybox gibt.

    Einmal die normale und dann eine busybox_unstripped.

    Die normale busybox pusht man mittels dem Android SDK Befehl adb aufs Handy:

    Code:
    adb push busybox /sdcard/
    Wer jetzt den Root Explorer nutzt, braucht die busybox die auf der Speicherkarte liegt, zum Beispiel nur mal nach /system/bin/ kopieren und dann im adb Fenster einfach mal aufrufen:

    Code:
    ./system/bin/busybox
    Nun sollte eine recht große Liste auftauchen mit Befehlen die man eingeben kann. Et voila, die eigene Busybox ist geboren.


    Urheberrechtshinweise:
    Alle auf dieser Website veröffentlichten Beiträge und Abbildungen sind urheberrechtlich geschützt. Jede vom Urheberrechtsgesetz nicht zugelassene Verwertung bedarf vorheriger schriftlicher Zustimmung des Anbieters. Dies gilt insbesondere für Vervielfältigung, Bearbeitung, Übersetzung, Einspeicherung, Verarbeitung bzw. Wiedergabe von Inhalten in Datenbanken oder anderen elektronischen Medien und Systemen. Fotokopien und Downloads von Web-Seiten dürfen nur für den persönlichen, privaten und nicht kommerziellen Gebrauch hergestellt werden.
     
    #1 Protector, 6. Dez. 2010
    Zuletzt bearbeitet: 10. Dez. 2010
Die Seite wird geladen...
Status des Themas:
Es sind keine weiteren Antworten möglich.