Installieren Sie Linux-Programme auf einem Smartphone mit Android



    Viele Besitzer von Android-Hintergründen haben Schwierigkeiten, echte Linux-Software auf ihren Geräten auszuführen. Nach allen Gesetzen sollte es hier funktionieren, aber aus irgendeinem Grund benötigt es Root-Rechte, um es zu installieren. Es wird in einigen behelfsmäßigen Installationsprogrammen selbst verteilt und die Auswahl an Programmen ist sehr begrenzt. Dieser Artikel bietet eine Antwort auf die Frage, warum dies passiert ist, und eine Lösung - eine bequeme Möglichkeit, fast jede Linux-Software unter Android zu installieren und auszuführen.


    Linux oder nicht Linux?


    Wie Sie wissen, basiert der Android auf dem Linux-Kernel und enthält eine Reihe von Standardbibliotheken und Befehlszeilendienstprogrammen, die für eine normale Linux-Distribution typisch sind. Der Start von klassischer Linux-basierter Software ist jedoch aus vielen Gründen sehr schwierig, einschließlich der Inkompatibilität von ABI, dem Fehlen eines Paketmanagers, eines eigenen Sicherheitssystems und dem Fehlen vieler Komponenten des Standard-Linux-Systems.

    Obwohl die Standardbibliothek libc und andere in Android vorhanden sind, ist ihre Implementierung in den meisten Fällen mit Bibliotheken aus dem GNU-Projekt nicht kompatibel und in ihrer Funktionalität stark eingeschränkt. Aus diesem Grund muss Linux-Software zumindest speziell für Android und den ARM-Prozessor neu erstellt und in vielen Fällen auch gepatcht werden, um Funktionen hinzuzufügen, die sich nicht in den Bibliotheken befinden.

    BotBrew: Liste der unterstützten Geräte


    BotBrew wurde auf folgenden Geräten getestet: Barnes & Noble NOOK Color, LG P970 Optimus Black, Huawei Ascend M860, HTC Desire, HTC Evo 4G, HTC Evo 3D, HTC Inspire 4G, HTC Droid Eris, HTC Hero, Samsung Galaxy Nexus, Samsung Galaxy S2 (GT-I9100), Samsung Galaxy Y (GT-S5360), Motorola Atrix 4G, Motorola Droid / Milestone, Sony Ericsson Xperia X8, Asus EeePad Transformer TF101.


    Das Android-Sicherheitssystem, das Anwendungen in Bezug auf Berechtigungen gemäß dem gesamten Programm abschneidet und es ihnen nicht ermöglicht, über den Umfang ihres eigenen Verzeichnisses hinauszugehen, behindert den Betrieb von Standard-Linux-Software ebenfalls erheblich. Daher ist es häufig erforderlich, Root-Berechtigungen zu erhalten, mit denen diese Einschränkungen aufgehoben werden. Das Fehlen eines Paketmanagers, mit dem Sie normale Linux-Software und nicht nur Java-Anwendungen installieren können, zwingt Entwickler, Anwendungen zu schreiben, die nur für die Installation anderer Anwendungen erforderlich sind. Alle diese benutzerdefinierten Installationsprogramme werden angezeigt.

    Nun, das Bild vervollständigt die Tatsache, dass Android einfach nicht über viele Standard-Linux-Komponenten verfügt, einschließlich beispielsweise auch solcher integraler Komponenten wie dem X Window-Grafikstapel oder der GTK + -Bibliothek. Natürlich werden einige Versuche unternommen, dies alles hierher zu bringen, aber die Dinge bewegen sich nicht weiter als halb funktionierende Alpha-Versionen.

    Dennoch ist die Möglichkeit, die Funktionalität eines vollwertigen Linux-Systems auf Android zu übertragen, für Enthusiasten eine zu verlockende Idee, um nicht zu versuchen, die dabei auftretenden Probleme zu lösen, und uns eine vollständige, universelle Lösung zu bieten. Der naheliegendste und einfachste Weg besteht darin, eine „virtualisierte“ Version einer vollwertigen Linux-Distribution zu starten, über die wir bereits ausführlich berichtet haben. Diese Methode ist interessant, hat jedoch das Problem, das System in zwei Bereiche zu unterteilen, von denen jeder unabhängig vom anderen funktioniert.

    Das BotBrew- Projekt sieht viel interessanter aus - in seinem Rahmen werden ein für Linux-Systeme üblicher Paket-Manager und ein Repository entwickelt, mit denen Sie Linux-Software in einem separaten Verzeichnis in Android installieren können. Außerdem wurden zu einer Zeit viele verschiedene Skripte erfunden, die es einfach und ohne unnötige Probleme machen, Linux-Software zu erstellen, die für die Arbeit in Android an einem großen Bruder geeignet ist. Der Rest des Artikels wird sich diesen beiden Projekten widmen.

    BotBrew


    Das BotBrew-Projekt wurde entwickelt, um viele Probleme bei der Installation von Linux-Software zu lösen und das Android-System auf das Akzeptieren von fremden Anwendungen vorzubereiten. Tatsächlich besteht das System aus vier Komponenten:

    • Repository mit vorkompilierten Android-Anwendungen, mit denen Sie viele Linux-Anwendungen mit einem einzigen Befehl installieren können;
    • Paketmanager, der in der experimentellen Version von BotBrew Bazil zusammen mit apt-get als leichtes Opkg oder dpkg verwendet wird;
    • runit process manager, der erforderlich ist, um Daemons (falls vorhanden) ordnungsgemäß auszuführen und zu warten;
    • ein eigenes Build-System, das alle Tools enthält, die zum Kompilieren von Anwendungen mit einer beliebigen Linux-Desktopdistribution erforderlich sind.

    Um zu funktionieren, benötigt dieses Wunder des Programmierens nichts: Root-Rechte und ein wenig freien Speicherplatz im internen Speicher des Smartphones oder auf einer Speicherkarte. Darüber hinaus ist die erste Option vorzuziehen, da im Falle von SD-Dateien auf eine virtuelle Festplatte gesichert wird, mit der nicht alle Kernel arbeiten.

    Initialisierung von BotBrew
    Initialisierungsliste

    Liste der installierten Anwendungen
    der installierten Anwendungen

    Derzeit können Sie in der klassischen Version von BotBrew mithilfe eines eigenen Repositorys Software wie dcron, GCC, Git, Dropbear-SSH-Server, Lynx-Konsolenbrowser, Nmap-Sicherheitsscanner, Rsync-Sicherungstool, Vim-Editor, LightTPD-Webserver und Skriptsprachen installieren Python und Ruby sowie Dutzende anderer Pakete. Dies ist übrigens in einem dedizierten Verzeichnis im internen Speicher des Smartphones / Tablets installiert und überfrachtet das Hauptsystem nicht. Mit anderen Worten, Sie können BotBrew und alles, was Sie installiert haben, loswerden, indem Sie einfach ein Verzeichnis löschen.

    Wir setzen Software


    Wie benutzt man BotBrew, um Linux-Software zu installieren? Zunächst benötigen wir ein Paket mit dem Programm selbst. Es ist auf Google Play (ich stelle fest, dass Sie BotBrew-Root benötigen, nicht experimentelles Bazil) und wiegt weniger als ein Megabyte. Führen Sie nach der Installation das Programm aus und klicken Sie auf die Schaltfläche "Fortfahren" am unteren Bildschirmrand, damit die Software alle für den Betrieb erforderlichen Komponenten herunterlädt, z. B. den Konsolenpaket-Manager und andere Dienstprogramme (in Bezug auf Debian Linux - Bootstrap). Sie wiegen nur wenige Megabyte und müssen nicht lange warten. Nach Abschluss der Installation zeigt BotBrew ein Fenster mit der offiziellen Webseite des Projekts an, das Sie sicher schließen können.

    Jetzt sollte auf dem Bildschirm eine Liste der zur Installation verfügbaren Pakete angezeigt werden. Es gibt viele von ihnen, aber aus den oben beschriebenen Gründen finden Sie unter ihnen keine grafischen Anwendungen. Es gibt jedoch eine Vielzahl von Servern, Compilern und Dolmetschern, sodass jeder, der ernsthaft mit einem Smartphone "herumspielen" möchte, einen Platz zum Bereitstellen hat. Um ein Paket zu installieren, tippen Sie einfach auf seinen Namen und klicken Sie im nächsten Bildschirm mit Informationen zur Anwendung auf die Schaltfläche „Installieren“.


    Tanzen mit Tamburinen


    Wenn Sie während des BotBrew-Bootstraps auf Probleme stoßen, können Sie versuchen, es mit dem folgenden Befehl manuell zu installieren:

    wget http://repo.botbrew.com/anise/bootstrap/install.sh -O - | su

    Wenn dies nicht geholfen hat, können Sie versuchen, alle Installationen zu entfernen ("Remove BotBrew" in den Einstellungen) und dann versuchen, diesen Befehl auszuführen.


    Danach wird das Paket auf der Registerkarte "Installiert" angezeigt, aber Sie sehen keine Schaltfläche "Ausführen" oder ähnliches. Die Anwendung muss unabhängig von der Konsole ausgeführt werden, was jedoch logisch ist. Die Anwendung selbst wird in der Verzeichnisstruktur / data / botbrew installiert, in der die reale Umgebung der Linux-Distribution mit den Verzeichnissen / etc, / usr und anderen Verzeichnissen „emuliert“ wird. Und um die Benutzer nicht zu quälen, die einen vollständigen Zugang zum Team benötigen, haben die BotBrew-Entwickler den gleichnamigen Team-Wrapper bereitgestellt. Geben Sie beispielsweise den folgenden Befehl ein, um den installierten Lynx-Konsolenbrowser zu starten:

    $ botbrew lynx http://xakep.ru

    Als Option - das Verzeichnis / data / botbrew / bin können zur Umgebungsvariable PATH hinzugefügt werden, aber das wird nach jedem Lauf Terminal zu tun haben:

    Protokollieren Sie die Site im Lynx-Konsolenbrowser
    Website des Magazins in der Konsole Browser Lynx


    Paketinstallationsprozess
    Das Installationspaket

    $ export PATH="$PATH:/data/botbrew/bin"

    Übrigens sieht es mit Daemons und verschiedenen Netzwerkdiensten viel besser aus. Nach dem Start werden die Daemons sofort gestartet, und Sie können ihre Einbindung über die grafische Oberfläche steuern, auf die Sie zugreifen können, indem Sie auf die Schaltfläche "Abspielen" unten in der BotBrew-Oberfläche klicken. Für einige Anwendungen müssen möglicherweise zusätzliche Benutzer erstellt und deren Parameter geändert werden. Dies kann auf die gleiche Weise erfolgen wie in einem normalen Linux-System:

    1. Benutzererstellung:
      $ botbrew adduser vasya
    2. Öffnen des Benutzerzugriffs auf das Internet:
      $ botbrew addgroup vasya inet
    3. Wechseln Sie BotBrew zu einem anderen Benutzer:
      $ botbrew su vasya

    Bitte beachten Sie, dass all diese Änderungen nur die virtuelle Umgebung von BotBrew betreffen und sich in keiner Weise auf das Hauptsystem auswirken. Sie können die Konsole auch verwenden, um Anwendungen unter Umgehung der grafischen Oberfläche zu installieren. Verwenden Sie dazu den Opkg-Konsolenpaket-Manager, dessen Befehlssyntax vollständig mit apt-get kompatibel ist:

    $ botbrew opkg install dropbear

    Reverse Operation:

    $ botbrew opkg remove dropbear

    Um auf dem neuesten Stand der Technik zu bleiben, muss das BotBrew-Repository von Zeit zu Zeit aktualisiert werden, indem Sie auf die entsprechende Schaltfläche in der grafischen Oberfläche klicken (Sie werden es nicht mit etwas verwechseln). Neue Versionen von Paketen werden auf der Registerkarte "Aktualisierbar" angezeigt. Es reicht aus, auf seinen Namen zu tippen und auf "Upgrade" zu klicken.

    Das Verwalten von Diensten bei BotBrew ist wirklich einfach
    Das Verwalten von Diensten bei BotBrew ist wirklich einfach

    BotBrew Basilikum


    Auf dem Markt finden Sie auch eine als experimentell gekennzeichnete Anwendung namens BotBrew Basil. In der Tat ist dies derselbe BotBrew, aber mit einem sehr wichtigen Unterschied. Anstelle seiner eigenen Repositorys und des Opkg-Paketmanagers werden die Debian Linux ARM-Repositorys und der apt-get-Paketmanager verwendet. Dies bedeutet, dass die Menge an Software, die mit der "brasilianischen Version" der Anwendung installiert werden kann, viel größer ist. Zehnmal mehr.

    Basil verwendet nicht nur Debian-Repositorys, sondern verfügt auch über eine leicht modifizierte Benutzeroberfläche. Beispielsweise bietet es sich unmittelbar nach dem Start an, das Installationsverzeichnis auszuwählen. Standardmäßig wird / data / botbrew-basil verwendet, was meiner Meinung nach sehr logisch ist, aber Sie können auch einen anderen auswählen, auch im ext2-Bereich der Speicherkarte (FAT wird nicht funktionieren).

    Der zweite wichtige Unterschied ist die Möglichkeit, die Verwendung der Anwendung zu bestimmen, die unmittelbar nach dem Klicken auf „Weiter“ angezeigt wird. Es gibt vier Möglichkeiten:

    1. Verwenden Sie BotBrew in der Befehlszeile - in der Tat ein Analogon der Installation im Stil eines normalen BotBrew.
    2. Verwenden Sie das dpkg / APT-System - Installation zusammen mit den Repositorys von apt-get und Debian. Empfohlene Installationsoption.
    3. Führen Sie Python-Programme aus - eine Entsprechung der ersten Option mit automatischer Installation von Python.
    4. Installiere ein minimales Debian - minimale Installation von Debian.

    Ich werde den zweiten und vierten Punkt erläutern. Der erste BotBrew und das erste Element in dieser Liste installieren lediglich ein minimalistisches Linux-System (bestehend aus nur wenigen Befehlen und Bibliotheken), in dem die Linux-Software gestartet wird. Im Gegensatz zum minimalistischen Opkg erfordert apt-get jedoch eine mehr oder weniger vollständige Installation von Linux. Wenn Sie also den zweiten Punkt auswählen, erhalten Sie eine Art Micro-Linux auf Ihrem Smartphone. Und wenn wir eine Mikroversion installieren können, warum nicht eine mehr oder weniger vollständige Distribution installieren? Hierfür gibt es einen vierten Punkt.

    Nach dem Bootstrap von BotBrew Basil wird auf dem Bildschirm dieselbe Benutzeroberfläche für die Anwendungsinstallation angezeigt, die wir von der klassischen Version der Anwendung her kennen, und auf dem System wird der Befehl botbrew2 angezeigt, mit dem Sie Software ausführen können. Hier gibt es keine wesentlichen Verwaltungsunterschiede, mit Ausnahme der Befehle apt-get anstelle von opkg und der Möglichkeit, zusätzliche Repositorys (einschließlich des Repositorys des ersten BotBrew) direkt über die Anwendungsinstallationsschnittstelle zu verbinden.

    BotBrew Basil bietet verschiedene Installationsoptionen
    BotBrew Basil bietet verschiedene Installationsoptionen

    Nehmen Sie die Sache selbst in die Hand


    Vorkompilierte Anwendungen und Repositorys mit vorgefertigten Paketen sind in Ordnung, aber was ist, wenn die erforderliche Anwendung nicht zu den für die Installation verfügbaren gehört? Tatsächlich funktioniert nicht jeder BotBrew Basil, der es erlaubt, Debian-Repositories mit einer großen Menge an Software zu verbinden, auf Grund seines experimentellen Charakters auf jedem Smartphone.

    In diesem Fall können wir versuchen, die Anwendung selbst zu erstellen. Hier werden wir jedoch gleich mit mehreren Schwierigkeiten konfrontiert: Um Software für ein Smartphone zu erstellen, müssen Sie die erforderlichen Cross-Compilation-Tools vorbereiten, dann alle Abhängigkeiten der zu erstellenden Anwendung berücksichtigen und schließlich in einigen Fällen die erforderlichen Änderungen am Code vornehmen. All dies sind ziemlich problematische Fälle, die kaum die dafür aufgewendete Zeit wert sind.

    Trotzdem können wir die Leistungen anderer nutzen, um den Software-Assemblierungsprozess zu automatisieren. Eine der am weitesten entwickelten und interessantesten Lösungen in diesem Bereich ist die von smitna mit XDA Developers entwickelte Scripting Suite SCRIPTSET. Es ermöglicht Ihnen buchstäblich ein paar Befehle, um viele verschiedene Anwendungen zusammenzustellen, einschließlich htop, ImageMagick, iptables, ELinks, Screen, mc, node.js, Samba, strace, QEMU, Parted, SANE (es kann zum direkten Drucken auf einem Drucker mit verwendet werden) Telefon!) und viele andere. Das Skript selbst lädt den Cross-Compiler, alle erforderlichen Abhängigkeiten und Anwendungen herunter, wendet bei Bedarf Patches an und erstellt ein Archiv, das zum Entpacken auf das Telefon bereit ist.

    SCRIPTSET funktioniert nur unter Linux, aber wenn Sie Windows haben, können Sie Ubuntu auf einer virtuellen Maschine installieren. Öffnen Sie als Nächstes das Terminal und installieren Sie die Tools, die zum Erstellen des Cross-Compilers erforderlich sind:

    $ sudo apt-get install build-essential cmake autoconf2.13 scons

    Danach können Sie SCRIPTSET selbst herunterladen und entpacken:

    $ cd ~
    $ wget http://goo.gl/zvnom -O scriptset-2.6.zip
    $ unzip scriptset-2.6.zip

    Als Ergebnis des Entpackens erhalten wir ... ein weiteres Archiv: scriptset-2.6.tar.bz2. Dies ist jedoch nicht alles. Das Archiv wird ohne das traditionelle Stammverzeichnis für tar gepackt. Sie müssen es also selbst erstellen. Und schon auspacken:

    $ mkdir scriptset
    $ cd scriptset
    $ tar -xjf ../scriptset-2.6.tar.bz2


    Nach dem Entpacken werden mehrere Skripte, Konfigurationen und eine beeindruckende README-Datei mit Anweisungen zur Verwendung von Skripten im Verzeichnis angezeigt. Es gibt kein Ausführungsbit in den Skripten (was angesichts der vorherigen Probleme nicht überraschend ist), daher müssen Sie es selbst installieren:

    $ chmod 755 *.sh


    Start der Anwendungserstellung
    Starten der Anwendungsassembly

    Öffnen Sie als Nächstes die Datei configuration.conf zum Bearbeiten und ändern Sie die folgenden Zeilen darin:

    # vi ~/scriptset/configuration.conf
    // Каталог установки приложений на смартфоне
    TARGET_SYSROOT="/data/sysroot"
    // Целевой процессор
    TARGET_MARCH="armv7-a"
    TARGET_MTUNE="cortex-a9"
    TARGET_MFPU="neon"
    TARGET_MFLOAT="softfp"


    Dies ist ausreichend für die korrekte Montage einer Anwendung. Der Zielprozessor ist Standard-ARMv7 mit einem zusätzlichen Satz von NEON-Anweisungen. Dies ist auf jedem Smartphone installiert, das in den letzten drei bis vier Jahren auf den Markt gebracht wurde. Das Verzeichnis / data / sysroot wird verwendet, um Anwendungen auf dem Smartphone zu installieren. Seltsamerweise muss es jedoch auch auf dem Desktop-Computer erstellt werden:

    $ sudo mkdir -p /data/sysroot
    $ sudo chown user:users /data/sysroot
    $ sudo chmod 777 /data/sysroot
    

    Wie der Autor des Skripts erklärt, ist diese Aktion erforderlich, da die Pfade für Schlüsselverzeichnisse in einigen Anwendungen bereits in der Erstellungsphase erstellt wurden. Wenn wir die Anwendung mit dem aktuellen und einem anderen Verzeichnis als Stammverzeichnis zusammenstellen, funktioniert sie auf dem Smartphone aufgrund der unterschiedlichen Vorgehensweisen einfach nicht. Ich bin sicher, dass es korrekter wäre, dieses Problem mit chroot zu lösen, aber es ist einfacher und schneller, das erforderliche Verzeichnis zu erstellen und es am Ende der Arbeit zu löschen.

    Als Nächstes müssen wir die Liste der Anwendungen angeben, die wir erstellen möchten. Öffnen Sie dazu die Datei package_selection.conf und ändern Sie in den erforderlichen Optionen no in yes. Um beispielsweise Bash, ImageMagick und Screen zu sammeln, müssen Sie die folgenden drei Zeilen ändern:

    # vi ~/scriptset/package_selection.conf
    BASH=yes
    IMAGEMAGICK=yes
    SCREEN=yes

    Bitte beachten Sie, dass die Einstellungen zwischen den Zeilen # IMMER BENÖTIGT nicht geändert werden können. Diese Anwendungen und Bibliotheken werden immer benötigt, und ohne sie werden andere Anwendungen einfach nicht erstellt. Jetzt können Sie die Anwendung kompilieren. Führen Sie dazu einfach das Skript build.sh ohne Argumente aus:

    $ ./build.sh

    Wenn alle erforderlichen Pakete installiert wurden und der Compiler während der Assembly keine Fehler verursachte, werden im aktuellen Verzeichnis zwei Archive angezeigt: cs-sysroot.tar.bz2 und android-mysysroot.tar.bz2. Die erste ist die Umgebung, die zum Ausführen von Anwendungen erforderlich ist, die vom Cross-Compiler erstellt wurden, und die zweite ist die Gruppe von Anwendungen selbst. Beide Archive müssen auf der Speicherkarte des Smartphones abgelegt werden. Führen Sie anschließend zwei Befehle aus, um den Terminalemulator darauf auszuführen oder eine Verbindung über ADB herzustellen:

    $ tar xjf /sdcard/cs-sysroot.tar.bz2
    $ tar xjf /sdcard/android-mysysroot.tar.bz2

    Infolgedessen wird das Verzeichnis / data / sysroot im internen Speicher des Smartphones angezeigt, in dem die Anwendungen abgelegt werden. Sie sollten über dasselbe Terminal gestartet werden und den vollständigen Pfad angeben. Zum Beispiel:

    $ /data/sysroot/usr/bin/bash

    Nun, oder nachdem Sie das Terminal gestartet haben, fügen Sie / data / sysroot / usr / bin zu PATH hinzu:

    $ export PATH="$PATH:/data/sysroot/usr/bin"

    Schlussfolgerungen


    Trotz der gravierenden Unterschiede zwischen Android und einer typischen Linux-Distribution ist die Installation von Linux-Konsolenanwendungen auf einem Smartphone nicht so schwierig. Leider wird noch nicht über Grafikanwendungen gesprochen, aber es gibt bereits Projekte zur Portierung der Qt-Bibliothek und des Wayland-Grafikservers auf Android. Ich hoffe, dass wir bald eine funktionierende Lösung finden.


    Erstveröffentlichung im Hacker-Magazin ab 08/2013.

    Bei Issuu.com veröffentlichen

    Hacker abonnieren





    Jetzt auch beliebt: