tl; dr: Ich suche nach einer "kanonischen" oder "empfohlenen" Möglichkeit, (cli) .deb-Pakete auf Ubuntu touch zu installieren
Ich benutze Ubuntu seit einem Jahr auf meinem Desktop und Server und bin sehr zufrieden. Jetzt habe ich das erste Ubuntu-Handy gekauft, das BQ Aquaris e4.5 Ubuntu Edition. Ich habe jedoch festgestellt, dass ich keine normalen .deb
Pakete installieren oder Dinge mit installieren kann apt-get
. Wie kann ich mein Telefon "rooten", damit ich "normale" .deb
Pakete installieren kann ?
Ich habe es selbst versucht. Ich weiß, dass das Erste ist, Ihr Dateisystem beschreibbar zu machen. Ich habe die folgenden Schritte ausgeführt, bin dann aber aufgrund eines dpkg-Fehlers hängen geblieben.
# Desktop:
sudo add-apt-repository ppa:phablet-team/tools
sudo apt-get update
sudo apt-get install phablet-tools
# Phone:
Security & Privacy: Lock phone: Lock when idle: Never
About this phone: Developer Mode: Developer Mode ON
# connect phone to PC via USB
# Desktop:
adb devices
# no device detected so I've manually added file
touch /home/username/.android/adb_usb.ini
# with content: 0x2a47
sudo adb kill-server
sudo adb start-server
adb devices # now my phone is on the list
# Phone:
sudo test -w filename && echo "Writable" || echo "Not Writable"
# verified it is writable
sudo add-apt-repository ppa:phablet-team/ppa
sudo apt-get update && sudo apt-get upgrade
Und hier beginnt der Fehler, mich zu blockieren:
dpkg: error processing archive /var/cache/apt/archives/powerd_0.16+15.04.20150430-0ubuntu1_armhf.deb (--unpack):
unable to make backup link of `./usr/share/powerd/device_configs/config-default.xml' before installing new version: Invalid cross-device link
Also habe ich es versucht
sudo apt-get install -f
Aber es blieb bei "Bluetooth-Hauptkonfiguration" hängen. Ich habe das Telefon neu gestartet, aber es wollte sich nicht mehr einschalten. Ich habe die Recover
Boot-Option ausprobiert . Das hat funktioniert. Ich habe es noch install -f
einmal versucht , und diesmal hat es funktioniert. Aber danach hatte upgrade
ich immer noch den gleichen Fehler.
quelle
Antworten:
Erstellen Sie eine Chroot im Home-Verzeichnis:
Verwenden Sie dann die Chroot und installieren Sie alle erforderlichen CLI-Tools in dieser Chroot:
Um bestimmte Dinge auszuführen, kann es erforderlich sein, einige Verzeichnisse zu binden. Sie müssen dabei besonders vorsichtig sein, wenn Sie die Chroot von Ihrem Telefon löschen oder andere zerstörerische Aktionen ausführen möchten.
Dies ist keine vollständige Liste, aber Sie können andere Verzeichnisse nach Bedarf auf ähnliche Weise binden. Sie müssen die Chroot nicht in Ihrem Home-Verzeichnis erstellen, wenn Sie ein externes Speichergerät zum Erstellen haben, z. B. eine SD-Karte. Allerdings verfügen nicht alle Telefone über SD-Kartensteckplätze. Wenn Sie die Chroot auf einer SD-Karte erstellen möchten, ersetzen Sie einfach das Ausgangsverzeichnis in den obigen Befehlen durch den Pfad zu einem Verzeichnis auf Ihrem alternativen Speichermedium, in dem Sie die Chroot erstellen möchten.
quelle
/
mehr damitsudo mount -o bind /run /home/phablet/vivid-chroot/run
um das Netzwerk in chroot zu bekommen askubuntu.com/questions/469209/…Warnung: Dies ist nur ein Hack , um das Problem der geräteübergreifenden Verbindung bei einem Apt-Get-Upgrade mit dem PowerD-Paket zu beseitigen. Dies ist keine "UBUNTU" -zertifizierte Lösung
Voraussetzung: R / W zur Ubuntu-Installation gemacht mit:
Kopieren Sie die heruntergeladene powerd * .deb-Datei vom Telefon auf einen PC unter folgendem Pfad:
/ var / cache / apt / archives /
Entpacke auf dem PC die .deb-Datei und entferne die Datei /usr/share/powerd/device_configs/config-default.xml (aus meinen Tests ergibt sich, dass dies nicht grundlegend ist):
Alles muss als root ausgeführt werden, um die ursprünglichen Berechtigungen der Paketdateien und Verzeichnisse beizubehalten. Neu packen, auf das Telefon zurückkopieren und installieren mit:
Sie erhalten weiterhin den Fehler:
"/usr/share/powerd/device_configs/config-default.xml": Gerät oder Ressource belegt
Aber am Ende wird das Paket aktualisiert.
Wenn Sie dies tun, ist
sudo apt-get upgrade
der Fehler verschwunden.Mein Telefon BQ Aquaris scheint gut und stabil zu funktionieren.
quelle
powerd
? Muss es bei jedem Update gehackt werden?Wie bereits erwähnt, müssen Sie eine ARM-fähige Chroot auf Ihrem Gerät installieren und alle erforderlichen Pakete in dieser Chroot installieren. Dies in Ihrem Home-Verzeichnis zu tun, verschwendet jedoch viel wertvollen Speicherplatz. Stattdessen kann es auf Ihrer SD-Karte mit einem Computer unter einem geeigneten Linux-Betriebssystem (getestet unter Linux Mint 17 und Ubuntu Trusty) ausgeführt werden. Da ich sonst nirgendwo Informationen dazu gefunden habe, habe ich sie hier als Antwort auf eine alte Frage abgelegt.
Die folgenden Anweisungen setzen voraus, dass Sie ein Debian-Jessie-Chroot im Verzeichnis Jessie installieren möchten.
Erstellen und Auffüllen der Image-Datei auf einem Desktop-Computer
Erstellen einer leeren Bilddatei
So erstellen Sie ein 1-GB-Image mit dem Namen IMAGE.img im aktuellen Arbeitsverzeichnis:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Beachten Sie, dass das B in GB weggelassen wird. "if" steht für "input file", "of" für "output file" und "bs" für "block size".
Es gibt effizientere Befehle, die meines Wissens jedoch nur auf bestimmten Arten von Dateisystemen funktionieren. Dieser funktioniert auch auf einer SD-Karte oder einem tempfs. Beachten Sie bitte die Verwendung von / dev / zero und nicht / dev / random oder / dev / urandom, da dies viel länger dauern würde und die spätere Übertragung des Images zwischen Geräten viel länger dauern würde.
Erstellen eines Dateisystems für das Image
Ohne das Dateisystem kann das Telefon keine Daten auf dem Bild speichern. Ohne ein Dateisystem können Sie das Image noch nicht in einem Verzeichnis bereitstellen, sondern nur auf einem Blockgerät.
Dieser Bash-Befehl gibt das nächste leere Loop-Gerät in die Variable aus
LOOP
:$LOOP=$(sudo losetup -f)
Weisen Sie als Nächstes das Image einem Blockgerät zu:
sudo losetup $LOOP IMAGE.img
Als nächstes erstellen Sie das ext4-Dateisystem:
sudo mkfs -t ext4 $LOOP
Trennen Sie als Nächstes das Bild vom Loop-Gerät:
sudo losetup -d $LOOP
Wenn der Befehl nicht gefunden wird, installieren Sie einfach die fehlenden Programme.
Hängen Sie die Image-Datei auf dem Computer ein, um darauf zuzugreifen
Erstellen Sie nun ein temporäres Verzeichnis im Arbeitsverzeichnis:
mkdir jessie
und hängen Sie die Image-Datei IMAGE.img an:
sudo mount -o loop IMAGE.img $(pwd)/jessie
Der Befehl stellt
pwd
sicher, dass Sie mount einen absoluten Pfad zu Ihrem aktuellen Arbeitsverzeichnis geben.Füllen Sie das Image mit dem neuen Betriebssystem mit qemu-debootstrap
Der nächste Schritt ist die Verwendung von qemu-debootstrap, um die erforderlichen Dateien herunterzuladen. Dies ist einfach, wenn qemu-debootstrap verfügbar ist, wie dies unter Ubuntu und abgeleiteten Betriebssystemen der Fall ist. Wenn Sie beim Ausführen des Befehls keine Fehler finden
qemu-debootstrap --help
, versuchen Sie, das entsprechende Paket zu installieren. Dies kann unter Ubuntu folgendermaßen geschehen:sudo apt-get install qemu-user-static
Führen Sie den folgenden Befehl aus, um alle erforderlichen Dateien herunterzuladen und das neue Betriebssystem vorzubereiten:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Bitte beachten Sie, dass das erste
jessie
für die Betriebssystemversion steht, während das zweitejessie
für das Verzeichnis steht, in dem die Dateien installiert werden sollen. Jetzt können Sie das Image aushängen, da der Rest der Arbeit auf dem Telefon erledigt werden muss. Tun Sie dies über:sudo umount $(pwd)/jessie
Wenn Sie qemu-debootstrap nicht installieren können, lesen Sie den nächsten Abschnitt.
Füllen Sie das Image mit dem neuen Betriebssystem ohne qemu-debootstrap
Bitte überspringen Sie diesen Abschnitt, wenn Sie QEMU-Debootstrap zur Verfügung haben. Sie benötigen jedoch weiterhin einen nativen Debootstrap für Ihre Architektur. Wenn dies armhf ist, benutze einfach die obige Befehlszeile, aber ersetze sie
qemu-debootstrap
durchdebootstrap
. Wenn nicht, folgen Sie diesem Abschnitt.Führen Sie den folgenden Befehl aus, um alle erforderlichen Dateien für das neue Betriebssystem herunterzuladen:
Jetzt können Sie das Image aushängen, da der Rest der Arbeit am Telefon erledigt werden muss. Tun Sie dies über:
sudo umount $(pwd)/jessie
Übertragen Sie das Bild auf das Telefon
Erstellen Sie nun am besten ein Tar-Archiv, das Sie dann auf Ihr Telefon kopieren. Es spielt keine Rolle, ob das Archiv auf der SD-Karte oder im internen Speicher abgelegt ist. Erstellen Sie das Archiv auf dem Desktop mit:
tar -cvzf jessie.tar.gz IMAGE.img
Schalten Sie jetzt auf Ihrem Telefon die SSH-Unterstützung ein, um das Bild zu kopieren. Sie können das auch mit einem USB-Kabel machen. Da der SSH-Server bei jedem Neustart zurückgesetzt wird, starten Sie den SSH-Dienst auf dem Telefon über:
sudo service ssh start
Als nächstes kopieren Sie das Bild über:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
Dabei
COPYDIR
enthält die Variable das Verzeichnis, in dem das Bild gespeichert werden soll. Dieser Befehl setzt voraus, dass Ihr Benutzername auf dem Telefon Phablet und der Hostname des Telefons Ubuntu-Phablet ist. Sie können dies sowohl durch Ausgabeecho $USER
als auchecho $HOSTNAME
telefonisch herausfinden .Jetzt müssen Sie das Archiv nur noch an der Stelle extrahieren, an der sich das Bild befinden soll. Angenommen, das Verzeichnis, in dem sich das Bild befinden soll, ist in der Variablen gespeichert
IMAGEDIR
. Extrahieren Sie dort das Bild mit dem Befehl bash:( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Sie können das Archiv jetzt entfernen:
rm $COPYDIR/jessie.tar.gz
Finalisieren und Verwenden des Bildes auf dem Telefon
Wenn Sie den SSH-Server auf dem Telefon nicht eingeschaltet haben, tun Sie dies jetzt über:
sudo service ssh start
Als nächstes mounten Sie Ihr Image in ein Verzeichnis Ihrer Wahl (in diesem Fall "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Geben Sie jetzt Ihre Chroot zum ersten Mal ein über:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Wenn Sie qemu-debootstrap auf Ihrem Computer zur Verfügung hatten, sind Sie fertig. Verwenden Sie die obigen 2 Befehle, um eine Verbindung zu Ihrer Chroot herzustellen. Wenn nicht, müssen Sie den folgenden Befehl ausführen, sobald Sie sich in Ihrer Chroot befinden, um das Betriebssystem ordnungsgemäß einzurichten:
/debootstrap/debootstrap --second-stage
Zusammenfassung, wie auf die Chroot zugegriffen wird
Wenn Sie die obigen Schritte ausgeführt haben, sollten Sie in der Lage sein, mithilfe dieses einfachen Skripts auf dem Telefon auf Ihre Chroot zuzugreifen:
Sie müssen aufgrund von Apparmor-Einschränkungen der Terminal-App zuerst vom Telefon auf Ihr eigenes Telefon ssh. Die Terminal-App darf Binärdateien nur an bestimmten Orten ausführen und weder Ihr Home-Verzeichnis noch die SD-Karte gehören dazu. Der SSH-Dienst unterliegt jedoch keinen solchen Einschränkungen.
quelle
Machen Sie das Root-Dateisystem auf dem Telefon beschreibbar
Führen Sie den folgenden Befehl auf Ihrem Telefon aus, um das Root-Dateisystem als beschreibbar wieder bereitzustellen (laden Sie die Terminal-App herunter, falls Sie dies noch nicht getan haben):
Bitte beachten Sie, dass das Telefon nach dem Neustart
/
wieder schreibgeschützt ist . Wenn dies dauerhaft sein soll, ändern Sie es/etc/fstab
. Ubuntu Touch auf dem BQ ist jedoch noch nicht auf dem Haupt-Ubuntu Arm Repo. Das Installieren von Dingen wietree
oderlibreoffice
wird noch nicht funktionieren. Sie sind möglicherweise in der neuesten Entwicklerversion.Ausführen der neuesten Entwicklerversion von Ubuntu
(hat mehr Goodies im Repo, wie Kommandozeilen-Tools und so)
Wie starte ich die neueste Ubuntu Touch-Entwicklungsversion auf einem bq phone?
Repariere Sachen, wenn du alles kaputt machst
Wenn Sie eine Sache komplett zerbrechen, können Sie Ihr Gerät einfach neu flashen .
quelle