Aus Linux-Magazin 04/2010

Root-Zugang auf die Shell bei modernen Linux-Handys

© Yong Hian Lim, 123RF.com

So einfach kann es funktionieren: Nokia als Vorbild zeigt allen Konkurrenten, wie eine gelungene Linux-Umsetzung auf einem Smartphone auszusehen hat, zumindest wenn es darum geht, dem mündigen Benutzer vollen Zugriff zu geben. Im Maemo-Repository »Extras« finden sich gleich zwei Pakete, die Root-Zugang und somit die Kontrolle über Hard- und Software erlauben: »rootsh« und »openssh (Server und Client)« [1].

Rootsh ermöglicht mit »sudo gainroot« eine Rootshell genauso wie der Open-SSH-Server, nur dass dieser gleich auch remote zur Verfügung steht. Wer sich jetzt als Admin einloggt, findet ein in weiten Teilen LSB-konformes Dateisystem vor, mit Konfigurationsdateien unter »/etc/« und »/proc«- oder »/sys«-Verzeichnissen. Eine X11-Terminalanwendung ist ebenso installiert wie die gängigen Paketmanagement-Tools Apt und Dpkg samt zugehörigem »sources.d«. Der Installation eigener Pakete steht somit nichts im Wege. Wer diesen Zustand auf anderen Linux-Handys erreichen will, muss einigen Aufwand betreiben.

Web OS

Beim Palm Pre etwa installiert der stolze Besitzer zunächst die Development Tools. Die gibt’s für Mac, Windows und Linux, sie haben aber einige Abhängigkeiten: Neben Virtualbox 3.0 (für die Emulation) muss auch Suns JRE 6 installiert sein, damit sich das SDK und die Terminalanwendung Novacom runterladen lassen. Die Installation mit Dpkg entpackt die Debian-Pakete in »/opt/Palm/«. Im Unterverzeichnis »novacom« stehen die drei Programme »novacom« »novacomd« »novaterm« und das Verzeichnis »scripts«.

Novacomd ist der Serverdämon, der den Zugriff auf ein an USB angeschlossenes Pre herstellt, mit Novaterm greift der Benutzer darauf zu. Dafür muss er aber zunächst sein Telefon in den Developer Mode versetzen, indem er alle Anwendungen schließt und dann »upupdowndownleftrightleftrightbastart« eintippt und im folgenden Dialog den Schiebeschalter auf »Ein« umlegt.

Der Reboot, den sich das Pre jetzt wünscht, ist notwendig. Erst danach führt das Kommando »novaterm« über USB zu einer Rootshell auf dem Pre (Abbildung 1), in der auch das Paketmanagement mit »ipkg« bereitsteht.

Abbildung 1: Der Root-Access auf dem Palm Pre klappt ganz offiziell übers SDK und die Applikation Novaterm.

Abbildung 1: Der Root-Access auf dem Palm Pre klappt ganz offiziell übers SDK und die Applikation Novaterm.

Damit in Zukunft nicht mehr der ellenlange Cheatcode nötig ist, aktiviert der Besitzer jetzt das Icon für den Development Mode in der Datei »/usr/palm/applications/com.palm.app.devmodeswitcher/appinfo.json«. Weil das Root-Filesystem des Handys read-only gemountet ist, braucht er zunächst einen Remount, bevor er mit Vi den Eintrag »visible : false« auf »true« korrigieren kann. »mount -o remount,ro /« stellt das Nur-Lesen-Filesystem wieder her.

Diese und viele weitere hilfreiche Tipps finden sich im Wiki der Web-OS-Interals-Webseite [3], darunter auch die Installation des Open-SSH-Servers oder des alternativen Paketmanagers Optware.

Komplizierter Androide

Wer jetzt schon dachte, das wäre kompliziert, der hat die Öffnung von Android noch nicht versucht. Zwar gibt es Applets, mit denen man einen eingeschränkten Root-Zugang bekommt, aber auch nicht mehr. Für die Befreiung der Plattform der Open Handset Alliance ist ein Firmware-Update, bei vielen Geräten sogar ein Downgrade notwendig.

Aber vielleicht erweist sich die Bastelei unter Umständen ja auch als Heidenspaß. Viel riskiert ist dabei nicht, da es das HTC Dream G1 bei Ebay mittlerweile für schlappe 100 Euro gibt. Wer bereits ein G1 hat und es ohne alle Google-Beschränkungen nutzen will, also vielleicht mit den neuesten OS-Versionen, Mods oder Open-Source-Softwarepaketen, die es nicht im Google-Market gibt, der ist hier richtig. Darüber hinaus lässt sich überraschenderweise auf dem HTC Dream auch ein echtes Debian-Linux betreiben, mit allen Desktop-Tools und Anwendungen.

Derartige Firmware-Upgrades haben immer eins gemeinsam – den Nervenkitzel, dass etwas schiefgeht. Der Garantieanspruch verfällt sofort, eine Undo-Funktion gibt’s nicht, vielleicht lässt sich das Gerät gar nicht mehr reaktivieren und verstummt für immer. Wer sich davon dennoch nicht abschrecken lässt, legt eine Micro-SD-Karte und ein USB-Kabel bereit und schaltet seinen WLAN-Accesspoint ein.

Zunächst geht es daran, die Speicherkarte zu einer so genannten Goldcard umzuwandeln und danach das Android-System auf einen älteren Stand zu bringen. Der Release Candidate 7 des Betriebssystems hatte nämlich ein Sicherheitsloch, über das sich das Dream mit einem alternativen OS versehen lässt.

Listing 1: Debian im
Android-Chroot installieren
01 # ls /dev/block/vold
02 179:0 179:1 179:2 179:3
03 # export SDCARD=/dev/block/vold/179
04 # export mnt=/data/local/mnt
05 # mkdir $mnt
06 # export HOME=/root
07 # export TERM=linux
08 # export DISPLAY=:0
09 # export LANG=de_DE.utf8
10 # export USER=root
11 # swapon $SDCARD:2
12 # mount  $SDCARD:3 $mnt
13 # cp /etc/resolv.conf $mnt/etc/resolv.conf
14 # cp /etc/hosts $mnt/etc/hosts
15 # /data/local/bin/busybox chroot $mnt /debootstrap/debootstrap --second-stage
16 # mount -t devpts devpts $mnt/dev/pts
17 # mount -t proc proc $mnt/proc
18 # mount -t sysfs sysfs $mnt/sys
19 # echo 'deb http://ftp.de.debian.org/debian lenny main' >$mnt/etc/apt/sources.list
20 # rm -f /etc/mtab
21 # ln -s /proc/mounts /etc/mtab
22 # /data/local/bin/busybox chroot $mnt /bin/bash

Goldcard prägen

Eine “goldene Karte” erlaubt es dem Besitzer eines Google-Handys, auch ohne den offiziellen Softwaredienst Programme auf das Gerät zu spielen. Dafür installiert er (noch im Market) den Dateimanager »ASTRO FM« und navigiert zum Verzeichnis »/sys/class/mmc_host/mmc1/mmc1:f9e2« (die vier letzten Zeichen sind geräteabhängig).

Hier tippt er lange auf die Datei »cid«, bis das Kontextmenü erscheint, wählt »Öffnen als Text« und schreibt die Card-ID (CID) ab (Abbildung 2). Die Ziffernfolge, zum Beispiel »035344535530324780022a4c29008be2«, dreht er jetzt (byteweise) von hinten nach vorne um, sodass aus »e2.8b.00.29.4c.2a.02.80.47.32.30.55.53. 44.53.03« schließlich »e28b00294c2a02804732305553445303« wird. Der Rechner auf [4] liefert dann per E-Mail das passende Goldcard-Image für die SD-Card. Die Datei »goldcard.img« landet mit »dd« direkt auf der Speicherkarte, zum Beispiel »/dev/sdb«. Jetzt noch das Handy von USB trennen und rebooten, dann ist der Android bereits halb frei.

Abbildung 2: Die CID braucht der Android-Besitzer, wenn er sein Handy befreien will.

Abbildung 2: Die CID braucht der Android-Besitzer, wenn er sein Handy befreien will.

Jetzt geht’s ans Software-Downgrade. Dazu verbindet der Besitzer das Gerät wieder mit dem Rechner, löscht per Fdisk alle Partitionen auf der SD-Card und legt eine FAT32-(LBA)-Partition an, die er anschließend formatiert, zum Beispiel mit »mkdosfs -F 32 /dev/sdb1«. Nach dem Mount schiebt er das von [5] heruntergeladene Image fürs Dream auf die Karte, unmountet das Filesystem und schaltet das Handy wieder aus. Nach dem nächsten Boot hält er den Kamera-Knopf gedrückt, bis der Bootloader erscheint, und folgt den Anweisungen, um das Image zu flashen. Nach getaner Arbeit beendet ein Druck auf den Trackball die Auswahl, das gleichzeitige Drücken der Tasten für Abnehmen, Menü und Auflegen führt zum Reboot mit dem RC7.

Recovery, Rooten, Wifi

Jetzt gilt es, das Recovery-Image durch den Mod von Cyanogen (Abbildung 3) zu ersetzen. Hier verlässt der Benutzer auch die unsicheren Pfade, denn mit dem Release Candidate lassen sich Backups machen, die das Handy auch nach einem Crash wieder herstellen können (siehe Abbildung 4).

Nach der Installation des RC7 ist zunächst ein Google-Account nötig und dafür wiederum Zugang zum Internet. Weil Google die Wifi-Funktionalität dabei nicht vorgesehen hatte, müsste eigentlich GPRS/UMTS herhalten. Der interessierte Nutzer kann aber dafür bereits das Sicherheitsloch des RC7 nutzen und hier die WLAN-Einstellungen setzen.

Das Security-Loop-Hole erweist sich dann auch als echter Leckerbissen: Alles, was der Anwender nach dem Drücken der [Home]-Taste eintippt, landet auch an einer Root-Konsole im Hintergrund. Jetzt kann er das SDK herunterladen [6] und installieren, sein Handy an USB anschließen und dann auf dem Telefon blind und ohne Feedback nach einem [Enter] den Befehl »setprop persist.service.adb.enable 1« eingeben und mit [Enter] abschließen. Dann führt er auf dem Rechner »android-sdk-linux_86/tools/adb shell« aus und gibt in der damit geöffneten Befehlszeile folgendes Kommando ein:

 am start -a android.intent.action.MAIN
 -n com.android.settings/.Settings

Wenn bis hierher alles geklappt hat, erscheint auf dem Handydisplay ein Konfigurationsdialog mit den Parametern für die Wireless-Einstellungen.

Abbildung 3: Der Android-Mod Cyanogen bringt nicht nur einen aktuellen Kernel auf das T-Mobile G1, sondern erlaubt auch die Installation von Debian.

Abbildung 3: Der Android-Mod Cyanogen bringt nicht nur einen aktuellen Kernel auf das T-Mobile G1, sondern erlaubt auch die Installation von Debian.

Cyanogen

Als Nächstes muss das Cyanogen-Recovery-Image von [7] auf der Speicherkarte landen. Dazu noch eine Telnet-Anwendung aus dem Market, zum Beispiel die von Koushik Dutta. Nach der [Home]-Taste schreibt der Anwender [Enter] »telnetd« [Enter], startet die Telnet-Anwendung und öffnet eine Verbindung zum Localhost auf Port 23. Dort gibt er [Enter] »flash_image recovery /sdcard/cm-recovery-1.4.img« [Enter] ein.

Wenn wieder alles geklappt hat, erscheint unter diesem Text »##« – und das Cyanogen-Recovery-Image ist installiert. Kommt dagegen »permission denied«, hilft vielleicht »su«, ein erneutes [Enter] oder ein zweiter Versuch. Kommt dagegen »file not found«, ist ein Remount der SD-Karte notwendig.

Der Mod

Nach dem hilfreichen Recovery-Image soll jetzt auch der Cyanogen Mod auf dem Dream landen. Die Entwickler des Cyanogen Mod verbesserten die Performance und bringen Funktionen, die Googles Firmware nicht besitzt, zum Beispiel Multitouch oder Audioformate wie Flac oder Ogg. Um das zu installieren, sind drei Files aus dem Web erforderlich: Das Image »DRC83_base_defanged.zip« [8], die neueste Version vom Cyanogen-Mod-ROM für das Gerät [9] und der Sapphire-Port Radio 2.22.19.26i [10] landen auf der SD-Karte.

Jetzt das Handy ausschalten, [Home] und [Power] gleichzeitig drücken und im folgenden Recovery Mode (Abbildung 4) »DRC83_base_defanged.zip« auswählen (erst [Alt]+[W], dann [Alt]+[A]), die [Home]-Taste bestätigt. Sobald das Menü wieder erscheint, ist die Installation fertig. Das gleiche Prozedere erfolgt (mit [Alt]+[A]) für die anderen beiden Dateien.

Abbildung 4: Im Android System Recovery Mode lassen sich beliebige Images von der SD-Karte booten und Backups anlegen und wiederherstellen.

Abbildung 4: Im Android System Recovery Mode lassen sich beliebige Images von der SD-Karte booten und Backups anlegen und wiederherstellen.

Der dann anschließende Reboot (nach [Home]+[Back]) kann jetzt mehrere Minuten dauern und wenn hier eine Schachtel mit einem Pfeil und einem Telefon erscheint, ist das ein gutes Signal. Geht das Telefon dabei in den Recovery-Modus, startet auch hier [Home]+[Back] das Gerät neu. Jetzt sind Android 1.6 und der Cyanogen-Mod auf dem Dream installiert (Abbildung 5).

Abbildung 5: Die Oberfläche des Cyanogen Mod auf dem HTC Dream. SMS, MMS und alle Grundfunktionen bleiben erhalten, dazu gibt's ein schnelleres Handy.

Abbildung 5: Die Oberfläche des Cyanogen Mod auf dem HTC Dream. SMS, MMS und alle Grundfunktionen bleiben erhalten, dazu gibt’s ein schnelleres Handy.

Aber damit ist immer noch nicht das Ende erreicht, denn jetzt kommt Debian an die Reihe. Das landet parallel zu Android auf dem Dream, in einer Chroot-Umgebung. Im ersten Schritt unterteilt der Benutzer die SD-Karte mit einer FAT-, einer Swap- und einer Ext-Partition. Dann mountet er das formatierte Root-FS und ruft Debootstrap auf:

debootstrap --verbose --arch armel --foreign 
 lenny /mnt/debian http://ftp.de.debian.org/
debian

Danach lädt er von [11] den SSH-Server Busybox für Android auf die SD-Card herunterladen und kopiert ihn ins Verzeichnis »/data/local/bin« auf dem Handy. Zusammen mit einem SSH-Server wie Dropbear lässt sich jetzt bereits komfortabel auf dem Dream arbeiten. Die Debian-Installation geht wie in Listing 1 weiter, wobei zunächst die Partitionsdevices herauszufinden (»179:1« bis »179:3« sind hier die Partitionen der SD-Karte) und Variablen zu definieren sind.

Der Chroot-Befehl des Listings wechselt in die Debian-Umgebung. Hier kann man jetzt genauso wie auf anderen Geräten Software per Apt-get installieren und mit einem VNC-Server wie Tightvnc auch X-Anwendungen auf dem lokalen Display starten, wenn sich der Android-VNC-Viewer auf den Localhost verbindet (Abbildungen 6 und 7).

Abbildung 6: Der Midnight Commander ist nur ein Beispiel für die neue Freiheit, die dank Debian und Cyanogen Mod auf Android-Handys entsteht.

Abbildung 6: Der Midnight Commander ist nur ein Beispiel für die neue Freiheit, die dank Debian und Cyanogen Mod auf Android-Handys entsteht.

Abbildung 7: Auch X11-Anwendungen wie der Ice-WM-Desktop mit schickem Debian-Hauptmenü-Icon läuft, wenn darunter ein VNC-Server werkelt.

Abbildung 7: Auch X11-Anwendungen wie der Ice-WM-Desktop mit schickem Debian-Hauptmenü-Icon läuft, wenn darunter ein VNC-Server werkelt.

Welche Freiheit?

Frei ist nicht gleich frei, vor allem beim Root-Zugang unterscheiden sich die Linux-Handys sehr. Am einfachsten gelingt der Vollzugriff auf Hard- und Software bei Maemo, auf dem zweiten Platz der Open-Source-Vorbilder rangiert das Web OS des Palm Pre. Hier reicht es – wie bei gängigen Computerspielen – einen Cheatcode einzugeben, das SDK zu installieren und mit einer Kombination aus Terminaldienst und -Emulation per USB auf das Gerät zuzugreifen. Wer aber bei Android oder dem I-Phone [12] vergleichbaren Zugriff haben will, muss das Risiko eingehen und neue Firmware-Images einspielen. Wenn dabei alles gut geht, kann es sich durchaus lohnen.

Infos
[1] Maemo-Root-Access: [http://wiki.maemo.org/Root_access]

[2] Palms Developer-Seite: [http://developer.palm.com]

[3] Web-OS-Internals-Wiki:[http://www.webos-internals.org/wiki/]

[4] Goldcard-CID-Rechner:[http://revskills.de/pages/goldcard.html]

[5] Android-RC7-Image fürs Dream:[http://android-dls.com/files/upload/uk/DREAIMG.NBH]

[6] Android SDK: [http://developer.android.com/sdk/index.html]

[7] Cyanogen Recovery: [http://cyanogenmod.com/download/recovery/cm-recovery-1.4.img]

[8] Cyanogen Defanged: [http://wiki.cyanogenmod.com/index.php/Latest_version#Defanged_DRC83]

[9] Cyanogen Images: [http://wiki.cyanogenmod.com/index.php/Latest_version]

[10] Sapphire Port (Radio): [http://code.google.com/p/sapphire-port-dream/]

[11] Busybox für Android: [http://cache.saurik.com/android/armel/busybox]

[12] I-Phone-Jailbreak von Linux aus: [http://iphwn.org/xpwn/xpwn-linux-x86-nightly.tar.bz2]

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben