Archiv/Ubuntu auf dem Smartphone

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Root-Rechte

  3. Funktionsweise von Chroot

  4. Bedienung von VNC

  5. Funktionsweise von mount

Inhaltsverzeichnis
  1. Voraussetzungen
  2. Installation
  3. Bedienung
  4. Tipps und Tricks
  5. Problembehebung
  6. Links

Wiki/Icons/Oxygen/phone.png Inzwischen sind Smartphones und Tablets extrem leistungsfähig geworden. Somit stellt sich auch die Frage, ob es denn möglich ist, ein solches mobiles Gerät (ein Smartphone oder Tablet mit Android) mit Ubuntu zu betreiben. Hier soll ein Weg, dies zu realisieren, aufgezeigt werden, der die ursprüngliche Funktionalität des Gerätes nicht mindert und man somit das Originalbetriebssystem weiterhin nutzen kann.

Welche Möglichkeiten offenbart die hier gezeigte Ubuntu-Installation:

Was mit dieser Methode leider nicht möglich ist:

Voraussetzungen

GalaxyS2_Ubuntu.jpg

Achtung!

Die Installation von Ubuntu setzt die Installation eines ROOT-Kernels voraus. Dieser Schritt lässt jedoch üblicherweise die Herstellergarantie des Smartphones verfallen!

Installation

Ubuntu herunterladen

Es gibt spezielle Ubuntu-Abbilder, die für Server gedacht sind und inklusive der Paketquellen für die ARM-Plattform übersetzt sind. Somit stellen sie eine ideale Basis für das Vorhaben dar. Herunterladen kann man sie Downloadseite 🇬🇧. Dort die gewünschte Version auswählen, auf "release" klicken und dann in der Liste eine Datei auswählen, die die Worte server und arm enthält, als auch auf .img.gz endet.

Abbild aufteilen

Das heruntergeladene Abbild ist noch komprimiert. Um es zu entpacken macht man am einfachsten im Dateimanager einen Rechtsklick auf die heruntergeladene Datei und wählt dort die entsprechende Option. Das entpackte Abbild besteht aus zwei Partitionen: Eine FAT32-Partition für den Bootvorgang und eine ext3-Partition, die das eigentlich gewünschte System enthält. Nähere Informationen dazu können mit dem Programm GNU Parted angezeigt werden:

parted ubuntu-11.10-preinstalled-server-armel+omap4.img 
WARNUNG: Sie sind nicht root. Achten Sie auf Ihre Rechte.
GNU Parted 3.0
Verwende /home/username/Downloads/ubuntu-11.10-preinstalled-server-armel+omap4.img
Willkommen zu GNU Parted! Geben Sie 'help' ein, um eine Liste der verfügbaren Kommados zu 	erhalten.
(parted) unit                                                             
Einheit?  [compact]? B                                                    
(parted) print                                                            
Modell:  (file)
Festplatte  /home/simon/Downloads/ubuntu-11.10-preinstalled-server-armel+omap4.img:  	1548746752B
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos

Nummer  Anfang     Ende         Größe        Typ      Dateisystem  Flags
 1      16384B     75497471B    75481088B    primary  fat32        boot, lba
 2      75497472B  1548746751B  1473249280B  primary  ext4
	
(parted) quit

Um die Systempartition aus dem Abbild zu extrahieren wird dd benutzt:

dd if=ubuntu-11.10-preinstalled-server-armel+omap4.img of=ubuntu_small.img bs=512 skip=147456 count=368312320 

Die Werte für "skip" und "count" errechnen sich dabei wie folgt und weichen eventuell von dem hier gezeigten Beispiel ab:

Größe des Abbildes anpassen

Um auf dem Ubuntu auch große Programme installieren zu können, muss Platz gewonnen werden, indem man das Abbild vergrößert. Dazu wird zuerst ein neues leeres Abbild erzeugt. Als Größe bietet sich 4GB an, da dies die maximale Dateigröße ist, die das FAT32-Dateisystem, das auf den meisten mobilen Datenträgern verwendet wird, verwalten kann:

dd if=/dev/zero of=/pfad/zum/image/ubuntu.img bs=1000 count=4000000 

Bis das neue Abbild erstellt ist, dauert es einen Moment. Im nächsten Schritt wird darauf ein EXT3-Dateisystem erzeugt:

mkfs -t ext3 -q /pfad/zum/image/ubuntu.img 

Jetzt müssen die Dateien des zu kleinen Abbildes auf das neue kopiert werden. Dazu muss man zu allererst beide Abbilder einbinden:

sudo mkdir /mnt/ubuimgold
sudo mkdir /mnt/ubuimgnew
sudo mount -o loop /pfad/zum/image/ubuntu_small.img /mnt/ubuimgold
sudo mount -o loop /pad/zum/image/ubuntu.img /mnt/ubuimgnew 

Jetzt können die Dateien kopiert werden:

cd /mnt/ubuimgold
sudo cp -a ./* /mnt/ubuimgnew/ 

Dies kann je nach Schnelligkeit der Fesplatte etwas Zeit in Anspruch nehmen.

Konfiguration anpassen

Um verschiedene Funktionen von Ubuntu innerhalb der chroot-Umgebung gewährleisten zu können, müssen noch einige Konfigurationsdateien bearbeitet werden. Da das neue Abbild immer noch eingebunden ist, bietet es sich an, die Dateien jetzt gleich am Computer zu bearbeiten.

Zuerst werden die Paketquellen angepasst. Dazu bewegt man sich mit dem Dateimanager nach /mnt/ubuimgnew/etc/apt/ und bearbeitet dort die Datei sources.list. Die Originalquellen werden auskommentiert und neue hinzugefügt; somit ergibt sich folgender Inhalt:

# This is a sources.list entry for a small pool of packages
# provided on your preinstalled filesystem for your convenience.
#
# It is perfectly safe to delete both this entry and the directory
# it references, should you want to save disk space and fetch the
# packages remotely instead.
#
deb file:/var/lib/preinstalled-pool/ ./
#
# /etc/apt/sources.list

#deb http://ports.ubuntu.com/ubuntu-ports/ oneiric main restricted
#deb http://ports.ubuntu.com/ubuntu-ports/ oneiric-security main restricted
#deb http://ports.ubuntu.com/ubuntu-ports/ oneiric-updates main restricted

deb http://ports.ubuntu.com/ubuntu-ports oneiric-backports universe main multiverse restricted
deb-src http://ports.ubuntu.com/ubuntu-ports oneiric-backports universe main multiverse restricted #Added by software-properties
deb http://ports.ubuntu.com/ubuntu-ports oneiric-proposed universe main multiverse restricted
deb-src http://ports.ubuntu.com/ubuntu-ports oneiric-proposed universe main multiverse restricted #Added by software-properties
deb http://ports.ubuntu.com/ubuntu-ports oneiric-updates universe main multiverse restricted
deb-src http://ports.ubuntu.com/ubuntu-ports oneiric-updates universe main multiverse restricted #Added by software-properties
deb http://ports.ubuntu.com/ubuntu-ports/ oneiric-security universe main multiverse restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ oneiric-security universe main multiverse restricted #Added by software-properties
deb http://ports.ubuntu.com/ubuntu-ports oneiric main universe multiverse restricted
deb-src http://ports.ubuntu.com/ubuntu-ports oneiric main universe multiverse restricted #Added by software-properties

Achtung!

Das "oneiric" muss überall durch den Namen der Version ersetzt werden, die man heruntergeladen hat!

Damit der Internetzugang funktioniert, muss der Inhalt der Datei /mnt/ubuimgnew/etc/resolv.conf durch folgenden Text ersetzt werden:

nameserver 8.8.8.8
nameserver 8.8.4.4

Auch die Datei /mnt/ubuimgnew/etc/hosts muss angepasst werden:

127.0.0.1	localhost 

Bearbeitung abschließen

Das Abbild ist somit fertig und muss nun wieder ausgehängt werden:

sudo umount /mnt/ubuimgold
sudo umount /mnt/ubuimgnew 

Smartphone vorbereiten

Nun müssen noch einige Vorbereitungen am Smartphone selbst getroffen werden:

Somit ist die Installation von Ubuntu auf dem Smartphone abgeschlossen und man kann es nun starten und einrichten.

Bedienung

Ubuntu starten

Dazu wird die Terminal-Emulator-App auf dem Smartphone gestartet. Es erscheint eine Eingabezeile. Das ist das GNU/Linux, das die Basis für Android bildet. Grundelegende Funktionen wie zum Beispiel "uname -a" um Systeminformationen anzuzeigen funktionieren auch. Jetzt muss man folgendes eintippen:

su 

Das wird benötigt um Root-Rechte [2] zu erlangen. Es erscheint ein Popup der Root-App (wird bei einem Root-Kernel mitinstalliert), die eine Bestätigung möchte, dass der Terminal-Emulator Root-Rechte erhalten darf. Dies mit "OK" bestätigen.

cd /sdcard
cd external_sd
cd ubuntu 

Jetzt hat man in den ubuntu-Ordner gewechselt, in dem das Ubuntu-Image und das Startskript liegen. Diese Kommandos kann man natürlich nur aus diesem Beispiel hier übernehmen, wenn der ubuntu-Ordner wie oben vorgeschlagen im Wurzelverzeichnis der Speicherkarte liegt. Ansonsten muss der Pfad entsprechend angepasst werden. Um Ubuntu nun zu starten, führt man folgendes aus:

sh ubushell.sh 

Es erscheint etwas Text und dann die Meldung, dass man sich nun in der Chroot-Umgebung befindet. Kurz darauf erscheint wieder ein Prompt. Dieses Prompt ist bereits ein Teil von Ubuntu. Hier kann man nun Ubuntu-spezifische Befehle wie "apt-get update" und "apt-get upgrade" durchführen.

Ubuntu einrichten

Zuerst sollte das System mit

apt-get update
apt-get upgrade 

auf den aktuellen Stand gebracht werden. Des weiteren empfiehlt sich, für das Ubuntu eine grafische Oberfläche zu installieren. Dabei sollte man darauf achten, eine Oberfläche zu wählen, die sowohl klein und schnell ist als auch nicht sehr tastaturlastig in der Bedienung ist, da dies auf dem Touchscreen doch sehr lästig ist. Beispielsweise wäre hier LXDE eine gute Wahl. Zusätzlich wird noch ein VNC-Server benötigt:

apt-get install tightvncserver lxde 

Anschließend müssen im Root-Ordner noch zwei Skripte angelegt werden. Das erste mit dem Namen xinit.sh und dem Inhalt:

rm /root/.vnc/localhost*
rm /tmp/.X0-lock
rm /tmp/.X11-unix/X0
tightvncserver :0 -geometry 800x480

Damit kann die grafische Oberfläche gestartet werden. Ein weiteres Skript stopt die grafische Oberfläche wieder. Es heißt xkill.sh und hat den Inhalt:

tightvncserver -kill :0

Um die grafische Oberfläche nun zu starten, tippt man in den Ubuntu-Prompt folgendes ein:

cd /root
sh xinit.sh 

Zuerst wird man aufgefordert, ein Passwort für den VNC-Server einzugeben. Man muss es zur Verfizierung ein zweites Mal eintippen. Jetzt wird man sich vielleicht wundern, warum keine grafische Oberfläche erscheint. Das liegt daran, dass diese auf dem VNC-Server läuft. Um jetzt auf die Oberfläche zu gelangen, muss man die vorher installierte VNC-App starten; dort gibt man folgende Verbindungsparameter ein:

Mit einem Klick auf "Connect" kann man nun schon die grafische Oberfläche sehen. Um den Bedienkomfort zu erhöhen öffnet man das Optionen-Menü der VNC-App und wählt bei "Input Mode" die Option "Touchpad" aus. Mit dieser Option bedient sich die Maus folgendermaßen:

Um einen Text einzugeben, geht man wie bei Drag&Drop vor, nur dass man den Finger dann nicht wegbewegt sondern wieder vom Display nimmt und auf das unten erscheinende Tastatursymbol (zwischen den Zoom-Buttons) drückt. Es erscheint eine Tastatur auf dem Bildschirm, die im ungünstigen Fall den Bereich verdeckt, in dem man etwas eingeben möchte. Wenn man aber die oben vorgeschlagene alternativ-Tastatur benutzt, kann man innerhalb der ersten zwei Sekunden, nachdem man die Tastatur geöffnet hat, Pfeil-oben drücken. Dann verschiebt sich der Desktop um die Größe der Tastatur nach oben und man kann den gewünschten Ausschnitt wieder sehen. Eine andere, aber umständlichere Methode der Texteingabe besteht darin, im Optionen-Menü des VNC-Viewers "Send Text" auswählen. Um Tastenkürzel zu senden, kann man im Optionen-Menü des VNC-Viewers "Send keys" auswählen.

libreoffice.png
Wenn das alles läuft, können weitere Programme wie FireFox, Thunderbird, Libreoffice, Gimp usw. wie üblich mit apt-get nachinstalliert und genutzt werden. Es bietet sich auch an, beispielsweise für Pidgin den Konfigurationsordner vom Computer in das Ubuntu auf dem Smartphone zu kopieren, um so einfach und schnell die Konteneinstellungen zu übernehmen.

Tipps und Tricks

PC-Tastatur und Maus anschließen

Um eine Computertastatur oder -maus, USBSticks, externe Festplatten und vieles mehr am Smartphone oder Tablet benutzen zu können, benötigt man ein sogenanntes OTG-Kabel. Das ist ein Adapter mit einem MicroUSB-Stecker (Handyseite) und einer USB-Buchse, wie sie am Computer zu finden ist (Tastatur-/Mausseite). Möchte man kein solches Kabel kaufen kann, man sich auch sehr einfach selbst eines basteln. Dazu muss man nur auf dem MicroUSB-Stecker die Pins 4 und 5 kurzschließen und die USB-Buchse 1:1 mit dem MicroUSB-Stecker verbinden. Eine ausführliche Anleitung dazu findet sich beispielsweise hier: Anleitung 🇬🇧. Weitere Informationen über OTG sind in der englischsprachigen Wikipedia hinterlegt: Wikiartikel 🇬🇧

Computer als Tastatur nutzen

Wenn man in der Kommandozeile die Tastatur des Computers nutzen möchte, so kann man mit SSH auf das Handy zugreifen. Voraussetzung dafür ist allerdings, dass die oben empfohlene SSH-App läuft und sich das Handy in einem gemeinsamen Netzwerk mit einem Computer befindet. Um den Zugriff zu starten, führt man auf dem Computer in einem Terminal folgenden Befehl aus:

ssh root@xxx.xxx.xxx.xxx 

Die 'x' sind dabei die IP-Adresse des Handys (diese wird von der SSH-App angezeigt)

Ubuntu mit dem Computer bedienen

Man kann sich vom Computer aus in den VNC-Server des Handys oder Tablets einloggen. Voraussetzung dafür ist wieder, dass sich Computer und Handy in einem gemeinsamen Netzwerk befinden. Die Zugangsdaten sind die selben wie unter Ubuntu einrichten beschrieben, lediglich als Adresse muss nicht "localhost" sondern die IP des Smartphones eingegeben werden. Geeignete VNC-Clients für den Computer finden sich im Artikel VNC

Speicherplatz sparen

Da Ubuntu mithilfe Chroot benutzt wird, wird der mitinstallierte Linux-Kernel nicht benutzt. Um Speicherplatz zu sparen kann man ihn folgendermaßen deinstallieren:

apt-get autoremove linux-image* linux-omap* linux-header* 

Ausserdem sollte man, wenn der Speicherplatz knapp wird, noch folgendes ausführen:

apt-get clean 

Das löscht die von apt heruntergeladenen *.deb-Installationspakete

Dateien drahtlos austauschen

Dateien kann man einfach drahtlos zwischen Computer und Smartphone bzw. Tablet austauschen, auch während Ubuntu läuft. Voraussetzung ist dafür wieder, dass sich das Gerät und der Computer im selben Netzwerk beziehungweise WLAN befinden und dass die SSH-App läuft. Dann kann man in der Adresszeile des Dateimanagers auf dem Computer

sftp://root@xxx.xxx.xxx.xxx

eingeben, wobei die 'x' wieder die IP-Adresse des Smartphones bzw. Tablets darstellen. Das Wurzelverzeichnis von Ubuntu befindet sich unter /data/local/mnt.

Problembehebung

Im folgenden werden bekannte Fehler sowie deren Lösung aufgezeigt.

Partitionsgröße wird nicht erkannt

Im Moment hat Ubuntu noch Schwierigkeiten zu erkennen, wieviel Platz auf dem Abbild noch frei und wieviel schon belegt ist. Allerdings ist bekannt, dass das grundsätzlich möglich ist, es fehlt also nur noch an der Konfiguration.

Drag&Drop in Firefox/Tunderbird

Leider kann man über den VNC-Server das Menü von Firefox und Thunderbird nicht mit Drag&Drop anpassen. Als als provisorische Lösung kann man die Einstellungen auf dem Computer vornehmen und dann den Konfigurationsordner ~/.mozilla/ beziehungsweise ~/.thunderbird/ auf das Handy kopieren

Kein aktueller Ubuntu-Kernel

Bei der hier gezeigten Methode wechselt man mithilfe von Chroot in das Ubuntu, das bedeutet, dass nicht der Ubuntu-Kernel sondern der Android-Kernel benutzt wird. Das liegt in der Natur von Chroot und kann nicht geändert werden. Das hat allerdings den Vorteil, dass androidseitig eingebaute Mechanismen wie Stromsparfunktionen und ähnliches schon installiert und initialisiert sind, wenn Ubuntu startet