tl; dr: Szukam „kanonicznego” lub „zalecanego” sposobu instalowania pakietów (cli) .deb na Ubuntu touch
Używam Ubuntu na moim pulpicie i serwerze od roku i jestem bardzo zadowolony. Teraz kupiłem pierwszy telefon Ubuntu, BQ Aquaris e4.5 Ubuntu Edition. Jednak dowiedziałem się, że nie mogę instalować normalnych .deb
pakietów ani instalować rzeczy za pomocą apt-get
. Jak mogę „zrootować” mój telefon, aby móc zainstalować „normalne” .deb
pakiety?
Sam tego spróbowałem. Wiem, że pierwszą rzeczą jest, aby twój system plików był zapisywalny. Zrobiłem następujące kroki, ale utknąłem z powodu błędu dpkg.
# 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
I to jest miejsce, w którym błąd zaczyna mnie blokować:
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
Więc próbowałem
sudo apt-get install -f
Ale utknął w „głównej konfiguracji Bluetooth”. Uruchomiłem ponownie telefon, ale nie chciał się już włączać. Próbowałem Recover
opcji rozruchu. To się udało. Spróbowałem install -f
ponownie i tym razem zadziałało. Ale po zrobieniu upgrade
nadal miałem ten sam błąd.
źródło
Odpowiedzi:
Utwórz chroot w katalogu domowym:
Następnie użyj chroot i zainstaluj dowolne narzędzia CLI, których potrzebujesz, w tym chroot:
Aby wykonać pewne czynności, może być konieczne powiązanie zamontowania niektórych katalogów. Musisz wtedy zachować szczególną ostrożność, jeśli chcesz usunąć chroota z telefonu lub wykonać inne destrukcyjne działania.
To nie jest wyczerpująca lista, ale możesz powiązać montowanie innych katalogów w razie potrzeby w podobny sposób. Nie musisz tworzyć chroot w swoim katalogu domowym, jeśli masz zewnętrzne urządzenie do przechowywania danych, na przykład kartę SD. Jednak nie wszystkie telefony mają gniazda kart SD. Jeśli chcesz utworzyć chroot na karcie SD, po prostu zastąp katalog główny w powyższych poleceniach ścieżką do katalogu na alternatywnym nośniku pamięci, w którym chcesz utworzyć chroot.
źródło
/
jużsudo mount -o bind /run /home/phablet/vivid-chroot/run
aby uzyskać sieć wewnątrz chroot askubuntu.com/questions/469209/...Ostrzeżenie: to tylko hack, aby pozbyć się problemu z łączeniem różnych urządzeń podczas aktualizacji apt-get za pomocą pakietu powerd. nie jest to rozwiązanie certyfikowane „UBUNTU”
Warunek: dokonanie R / W instalacji ubuntu z:
Skopiuj pobrany plik powerd * .deb z telefonu na komputer ze ścieżki:
/ var / cache / apt / archives /
Na komputerze rozpakuj plik .deb, usuń plik /usr/share/powerd/device_configs/config-default.xml (z moich testów nie wynika to zasadniczo):
Wszystko musi być zrobione jako root, aby zachować oryginalne uprawnienia plików pakietów i katalogów. Przepakuj, skopiuj z powrotem na telefon, a następnie zainstaluj za pomocą:
Nadal pojawi się błąd:
„/usr/share/powerd/device_configs/config-default.xml”: Urządzenie lub zasób zajęty
Ale na koniec pakiet jest aktualizowany.
Teraz jeśli to zrobisz:
sudo apt-get upgrade
błąd zniknął.Mój telefon BQ Aquaris wydaje się działać dobrze i stabilnie.
źródło
powerd
? czy wymaga hakowania przy każdej aktualizacji?Jak już wspomniano, musisz zainstalować chroota z obsługą ARM na swoim urządzeniu i zainstalować wszystkie wymagane pakiety w tym chroocie. Jednak robienie tego w katalogu domowym marnuje wiele cennego miejsca. Zamiast tego można to zrobić na karcie SD za pomocą komputera z odpowiednim systemem operacyjnym Linux (testowany na Linux Mint 17 i Ubuntu Trusty). Ponieważ nigdzie indziej nie znalazłem żadnych informacji na ten temat, umieściłem je tutaj jako odpowiedź na stare pytanie.
Poniższe instrukcje zakładają, że chcesz zainstalować debian jessie chroot w katalogu jessie.
Tworzenie i wypełnianie pliku obrazu na komputerze stacjonarnym
Tworzenie pustego pliku obrazu
Aby utworzyć obraz 1 GB o nazwie IMAGE.img w bieżącym katalogu roboczym:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Zauważ, że B w GB jest pominięte. „if” oznacza „plik wejściowy”, „z” oznacza „plik wyjściowy”, a „bs” oznacza „rozmiar bloku”.
Istnieją wydajniejsze polecenia, ale o ile wiem, działają one tylko na niektórych typach systemów plików. Ten działa również na karcie SD lub tempfs. Pamiętaj o użyciu opcji / dev / zero, a nie / dev / random lub / dev / urandom, ponieważ zajęłoby to znacznie więcej czasu i spowodowałoby znacznie dłuższe przesyłanie obrazu między urządzeniami później.
Tworzenie systemu plików na obrazie
Bez systemu plików telefon nie byłby w stanie przechowywać żadnych danych na obrazie. Bez systemu plików nie można jeszcze zamontować obrazu w katalogu, tylko na urządzeniu blokowym.
To polecenie bash wyświetli następne puste urządzenie pętli do zmiennej
LOOP
:$LOOP=$(sudo losetup -f)
Następnie przypisz obraz do urządzenia blokowego:
sudo losetup $LOOP IMAGE.img
Następnie utwórz w nim system plików ext4:
sudo mkfs -t ext4 $LOOP
Następnie odłącz obraz od urządzenia pętli:
sudo losetup -d $LOOP
Jeśli pojawi się błąd nie znalezienia polecenia, po prostu zainstaluj brakujące programy.
Zamontuj plik obrazu na komputerze, aby uzyskać do niego dostęp
Teraz utwórz katalog tymczasowy w katalogu roboczym:
mkdir jessie
i zamontuj na nim plik obrazu IMAGE.img:
sudo mount -o loop IMAGE.img $(pwd)/jessie
Polecenie
pwd
upewni się, że podasz mount bezwzględną ścieżkę do bieżącego katalogu roboczego.Wypełnianie obrazu nowym systemem operacyjnym za pomocą qemu-debootstrap
Następnym krokiem będzie użycie qemu-debootstrap do pobrania niezbędnych plików. Jest to łatwe, jeśli qemu-debootstrap jest dostępny, podobnie jak w Ubuntu i pochodnych systemach operacyjnych. Jeśli podczas wykonywania pojawi się błąd nie znalezienia polecenia
qemu-debootstrap --help
, spróbuj zainstalować odpowiedni pakiet, co można zrobić na Ubuntu poprzez:sudo apt-get install qemu-user-static
Aby pobrać wszystkie wymagane pliki i przygotować nowy system operacyjny, uruchom następujące polecenie:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Należy pamiętać, że pierwszy
jessie
oznacza wersję systemu operacyjnego, a drugijessie
oznacza katalog, w którym pliki mają zostać zainstalowane. Teraz możesz odmontować obraz, ponieważ resztę pracy trzeba wykonać na telefonie. Zrób to poprzez:sudo umount $(pwd)/jessie
Jeśli nie możesz zainstalować qemu-debootstrap, zobacz następną sekcję.
Wypełnianie obrazu nowym systemem operacyjnym bez qemu-debootstrap
Pomiń tę sekcję, jeśli masz dostępny qemu-debootstrap. Jednak nadal będziesz potrzebować natywnego paska debootstrap dla swojej architektury. Jeśli tak się dzieje, to po prostu użyj powyższej linii poleceń, ale zastąp
qemu-debootstrap
jądebootstrap
. Jeśli nie, postępuj zgodnie z tą sekcją.Aby pobrać wszystkie wymagane pliki dla nowego systemu operacyjnego, uruchom następujące polecenie:
Teraz możesz odmontować obraz, ponieważ resztę pracy trzeba wykonać na telefonie. Zrób to poprzez:
sudo umount $(pwd)/jessie
Prześlij zdjęcie do telefonu
Teraz najlepiej stwórz archiwum tar z tego, które następnie skopiujesz na swój telefon. Nie ma znaczenia, czy archiwum jest umieszczone na karcie SD, czy w pamięci wewnętrznej. Utwórz archiwum na pulpicie, używając:
tar -cvzf jessie.tar.gz IMAGE.img
Teraz w telefonie włącz obsługę ssh, aby skopiować obraz. Możesz to również zrobić za pomocą kabla USB. Ponieważ serwer ssh jest resetowany przy każdym ponownym uruchomieniu, uruchom usługę ssh na telefonie za pomocą:
sudo service ssh start
Następnie skopiuj obraz przez:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
gdzie zmienna
COPYDIR
zawiera katalog, w którym obraz powinien być przechowywany. To polecenie zakłada, że twoja nazwa użytkownika w telefonie to phablet, a nazwa hosta telefonu to ubuntu-phablet. Możesz dowiedzieć się , odpowiednio, wydającecho $USER
iecho $HOSTNAME
przez telefon.Teraz musisz rozpakować archiwum tylko tam, gdzie chcesz, aby obraz się znajdował. Załóżmy, że katalog, w którym ma się znajdować obraz, jest przechowywany w zmiennej
IMAGEDIR
. Wyodrębnij tam obraz za pomocą polecenia bash:( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Możesz teraz usunąć archiwum:
rm $COPYDIR/jessie.tar.gz
Finalizowanie i korzystanie z obrazu w telefonie
Jeśli nie włączyłeś serwera ssh w telefonie, zrób to teraz poprzez:
sudo service ssh start
Następnie zamontuj obraz w wybranym katalogu (w tym przypadku „jessie”):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Teraz wprowadź swój chroot po raz pierwszy za pomocą:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Jeśli masz na swoim komputerze dostępny qemu-debootstrap, wszystko jest gotowe. Użyj powyższych 2 poleceń, aby połączyć się z chroot. Jeśli nie, nadal musisz wykonać następujące polecenie, gdy jesteś w chroot, aby poprawnie skonfigurować system operacyjny:
/debootstrap/debootstrap --second-stage
Podsumowanie dostępu do chroot
Jeśli wykonałeś powyższe kroki, powinieneś być w stanie uzyskać dostęp do chroot za pomocą tego prostego skryptu na telefonie:
Musisz najpierw ssh do własnego telefonu z telefonu ze względu na ograniczenia apparmor aplikacji terminalowej. Aplikacja terminalowa może uruchamiać pliki binarne tylko w niektórych lokalizacjach i nie ma w nich ani katalogu domowego, ani karty SD. Usługa ssh nie ma jednak takich ograniczeń.
źródło
Ustaw system plików root na telefonie do zapisu
Aby ponownie zamontować główny system plików jako zapisywalny, wykonaj następujące polecenie na swoim telefonie (pobierz aplikację terminalową, jeśli jeszcze tego nie zrobiłeś):
Należy pamiętać, że po ponownym uruchomieniu telefonu,
/
jest on ponownie tylko do odczytu . Jeśli chcesz, aby to było trwałe, zmień/etc/fstab
. Jednak Ubuntu touch na BQ nie jest jeszcze w głównym repozytorium ramienia Ubuntu. Instalowanie rzeczy takich jaktree
lublibreoffice
jeszcze nie będzie działać. Mogą być w najnowszej wersji programistycznej.Uruchamianie najnowszej wersji Ubuntu
(ma więcej zalet w repozytorium, takich jak narzędzia wiersza poleceń itp.)
Jak uruchomić najnowszą wersję rozwojową systemu Ubuntu Touch na telefonie BQ?
Naprawianie rzeczy, gdy wszystko psujesz
Gdy coś całkowicie zepsujesz , możesz po prostu przepłukać urządzenie .
źródło