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 drugi jessie
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:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
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ąc echo $USER
i echo $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:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
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ń.