Κοινή χρήση τεχνολογίας

Λύση κινητής τηλεφωνίας Orange Pie 5plus running cloud - redroid (με επιτάχυνση υλικού)

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Πρώτη διεύθυνση:https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw

Πρόλογος

Ο σκοπός αυτού του πράγματος δεν είναι να παίζω παιχνίδια ή τίποτα, απλώς θέλω να είμαι λιγότερο εξαρτημένος από το κινητό τηλέφωνο κατά την αντίστροφη μηχανική της εφαρμογής. Εξάλλου, τα βήματα για να φλας ένα κινητό τηλέφωνο είναι αρκετά ενοχλητικά και μπορεί εύκολα να γίνει τούβλο αν δεν προσέξεις.

Για παράδειγμα, ορισμένες εφαρμογές που δεν είναι αυστηρές σχετικά με τις περιβαλλοντικές δοκιμές μπορούν να δοκιμαστούν σε αυτήν, γεγονός που διευκολύνει επίσης την αλλαγή του πηγαίου κώδικα του συστήματος και το φλας του μηχανήματος αργότερα. Αλλά είναι κρίμα που ο πυρήνας δεν μπορεί να προσαρμοστεί (το redroid και το Waydroid χρησιμοποιούν λύσεις κοντέινερ και μοιράζονται τον πυρήνα με τον κεντρικό υπολογιστή, εάν θέλετε να προσαρμόσετε τον πυρήνα, μπορείτε να χρησιμοποιήσετε μόνο τις σουπιές ή το avd της Google, αλλά αυτά έχουν περιορισμένη υποστήριξη). στο μπράτσο και μπορεί να τρέξει αλλά δεν υπάρχει επιτάχυνση GPU, οπότε θα δοκιμάσω σουπιές αργότερα.

Flash Ubuntu

Δεν θα μπω στη διαδικασία ενημέρωσης του Ubuntu με το Orange Pie Εάν ενδιαφέρεστε, διαβάστε το προηγούμενο άρθρο:Το Orange Pie 5plus ξεκινά το Ubuntu από το ssd . Εάν κάνετε flash αυτό το σύστημα, δεν χρειάζεται να εγκαταστήσετε ή να διαμορφώσετε τίποτα για να εκτελέσετε το redroid. Ωστόσο, εάν θέλετε να χρησιμοποιήσετε εικονικό WIFI ή ebpf, θα πρέπει να τροποποιήσετε μόνοι σας τις παραμέτρους του πυρήνα και να μεταγλωττίσετε τον πυρήνα του Linux Αυτό το επόμενο άρθρο θα μιλήσει συγκεκριμένα για τη διαδικασία μεταγλώττισης.

redroid

Επίσημο σεμινάριο:https://github.com/remote-android/redroid-doc

Ελέγξτε τις απαραίτητες συνθήκες

grep binder /proc/filesystems grep ashmem /proc/misc

Εάν δεν εκτυπώνεται τίποτα, ίσως χρειαστεί να το ξεκινήσετε χειροκίνητα (απλώς χρησιμοποιώ τις ακόλουθες δύο εντολές σε ένα μηχάνημα με εγκατεστημένο το Ubuntu Kunpeng 920. Αν και αυτό το μηχάνημα διαθέτει κάρτα γραφικών AMD, δεν μπορεί να καλέσει απευθείας την GPU)

sudo modprobe ashmem_linux sudo modprobe binder_linux devices=binder,hwbinder,vndbinder

Εάν αυτές οι δύο εντολές αναφέρουν ένα σφάλμα ή δεν έχουν αποτέλεσμα, μπορεί ο τρέχων πυρήνας Linux να μην ενεργοποιεί αυτές τις δύο λειτουργίες. Πρέπει να ανατρέξετε στις ακόλουθες οδηγίες αποθήκης για να εγκαταστήσετε έναν υποστηριζόμενο πυρήνα ή να μεταγλωττίσετε έναν πυρήνα για να ενεργοποιήσετε αυτές τις δύο λειτουργίες. :https://github.com/remote-android/redroid-modules

Επιτάχυνση GPU

Μπορεί να ξεκινήσει με τη χρήση της επίσημης εικόνας docker, αλλά δεν υπάρχει επιτάχυνση GPU και το βίντεο είναι απαλό αποκωδικοποιημένο (προσομοίωση cpu), επομένως η λειτουργία είναι σχετικά καθυστερημένη στο githubθέμα[1]Αναζητήστε το rk3588 και μπορείτε να δείτε πολλά σχόλια σχετικά με την επιτάχυνση της GPU.

Αλλά κανείς δεν έχει κοινοποιήσει τον τρόπο μεταγλώττισης μιας εικόνας με επιτάχυνση GPU Τα σχόλια μπορούν να βγάλουν μόνο ένα κάπως χρήσιμο συμπέρασμα: Λάβετε ορισμένα αρχεία προγράμματος οδήγησης που σχετίζονται με την επιτάχυνση GPU από τον επίσημο πηγαίο κώδικα SDK του Orange Pi και τοποθετήστε τα μαζί στο Android Compiled. πηγαίος κώδικας. Ή αντιγράψτε αυτά τα αρχεία απευθείας στο κοντέινερ docker και επανεκκινήστε το κοντέινερ.

Αυτό το συμπέρασμα είναι πολύ ασαφές και πρέπει να υπάρχουν πολλές παγίδες, οπότε δεν το έχω δοκιμάσει.Μέχρι που ένας μεγάλος τύπος εξέδωσε ένα πλήρεςΔιαδικασία μεταγλώττισης και πηγαίος κώδικας[2]

Το σεμινάριο είναι γραμμένο με μεγάλη λεπτομέρεια Μπορείτε να το μεταγλωττίσετε μία φορά και να το περάσετε ακολουθώντας τα βήματα. επιπλέον,Και το αφεντικό[3]Ένα πράγμα έχει προστεθεί με βάση αυτή την εικόνα.

Οπότε χρησιμοποιήστε αυτό εδώΚαθρέφτης του αφεντικού[4], πριν από αυτό ρίξτε μια ματιά στις εξαρτήσεις που ανέφερε (έκδοση πυρήνα 5.10.160 και mali ddk g18p0):

Αυτό δεν θα έπρεπε να είναι πρόβλημα. Ανέφερε επίσης ότι θα το έκανεmali_csffw.binΤο αρχείο αντιγράφηκε σε/lib/firmware/Στη συνέχεια, έλεγξα και υπάρχει αυτό το αρχείο σε αυτόν τον φάκελο.

Η προεπιλογή είναι συνδεδεμένηg15p0, επομένως διαγράφουμε αυτόν τον μαλακό σύνδεσμο και δημιουργούμε έναν νέο σύνδεσμο προςg18p0 .Ωστόσο, μετά τη δοκιμή, χρησιμοποιήστεg15p0Το κοντέινερ έκδοσης redroid μπορεί επίσης να χρησιμοποιήσει την GPU κανονικά.

Η δοκιμή του βουρτσίσματος των βίντεο είναι εντάξει. Μπορώ μόνο να πω ότι δεν έχει κολλήσει ή είναι ομαλή, η τρέχουσα διαμόρφωση του κινητού τηλεφώνου είναι ήδη πολύ υψηλή και είναι πολύ πιο ομαλή από αυτήν την πλακέτα ανάπτυξης.

Εγκαταστήστε το docker

sudo apt install docker.io -y sudo usermod -aG docker $USER sudo chmod a rw /var/run/docker.sock

Οι δύο τελευταίες γραμμές εντολών είναι για τους απλούς χρήστες να τρέξουν το docker χωρίς να προσθέσουν sudo.

Έναρξη δοχείου

Στη συνέχεια, τραβήξτε την εικόνα: docker pull cnflysky/redroid-rk3588:12.0.0-latest

docker run -d --privileged 
    -p 5555:5555 
    -v ~/redroid-data:/data 
   --name redroid 
   cnflysky/redroid-rk3588:12.0.0-latest androidboot.redroid_height=1920 androidboot.redroid_width=1080 androidboot.redroid_magisk=1  androidboot.redroid_virt_wifi=1

Στη συνέχεια χρησιμοποιήστε το adb για να συνδεθείτε σε αυτήν τη θύρα (adb connect 192.168.31.208:5555) μπορεί να χρησιμοποιηθείQtScrcpyΔείτε την επιφάνεια εργασίας αυτού του κοντέινερ

Πρώτα εγκαταστήστε το aida64 για να δείτε αν οι κλήσεις της κάρτας γραφικών είναι κανονικές:

Εάν χρησιμοποιείτε την κάρτα γραφικών mali-G610 για απόδοση, δεν θα υπάρχει πρόβλημα και ο ρυθμός ανανέωσης θα είναι 60 Hz.

μαγικός

Όταν ξεκινά αυτό το δοχείο, φέρνει έναandroidboot.redroid_magisk=1Απλώς ενεργοποιήστε το magisk, ώστε να μπορείτε να δείτε ότι το magisk λειτουργεί κανονικά μετά την ενεργοποίηση του υπολογιστήdocker restart redroidΜπορεί να χρησιμοποιηθεί κανονικά μετά την επανεκκίνηση.

lsposed

Πρώτα ανοίξτε το zygisk στο magisk και, στη συνέχεια, χρησιμοποιήστε την εντολή push adb για να ωθήσετε το πακέτο εγκατάστασης lsposed στο κοντέινερ. Στη συνέχεια, εγκαταστήστε το στο Modules, κάντε επανεκκίνηση και θα δείτε ότι το lsposed λειτουργεί επίσης κανονικά.

Απλώς εγκαταστήστε μια μονάδα xposed και μπορείτε να εισέλθετε στη διεπαφή ρυθμίσεων lsposed.

κενά

Είναι επίσημοΦροντιστήριο[5]Εξηγήστε πώς να μεταγλωττίσετε μια εικόνα docker με gapps, ωστόσο, ακόμη και με gapps, δεν μπορεί να περάσει το Google.safetynetΕπαλήθευση, πολλές εφαρμογές δεν μπορούν να χρησιμοποιηθούν.

Κάποιος ρώτησε και στο θέμα, αλλά δεν υπάρχει λύση:https://github.com/remote-android/redroid-doc/issues/378 . Οι εικόνες που κατεβάσατε περιλαμβάνουν το Google Store.

Εικονικό WIFI

Αφού διαβάσετε το ζήτημα, εάν δεν ρυθμίσετε το εικονικό WIFI, κάποιο λογισμικό θα καθορίσει ότι δεν υπάρχει δίκτυο ακόμα και αν υπάρχει δίκτυο, όπως το QQ. Επειδή ανιχνεύουν μόνο WIFI και κίνηση, τα οποία δεν είναι διαθέσιμα στο κοντέινερ του docker. Ωστόσο, η δοκιμή μου διαπίστωσε ότι πολλά λογισμικά με εικονικό WIFI θα δείξουν ότι δεν υπάρχει δίκτυο, αλλά το Διαδίκτυο θα είναι κανονικό χωρίς να ενεργοποιηθεί το εικονικό WIFI, επομένως συνιστάται να μην το ενεργοποιήσετε, απλά να ξέρετε ότι υπάρχει κάτι τέτοιο .

Πρέπει λοιπόν να πάρουμε ένα εικονικό WIFI στο κοντέινερ, χρειαζόμαστεΥποστήριξη πυρήνα[6]

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

μετάβαση σεip6tables-legacyΜετά από αυτό, το docker πρέπει να επανεκκινήσει την υπηρεσίαsudo systemctl restart docker, η επανεκκίνηση του μηχανήματος είναι άχρηστη και το κοντέινερ θα αποσυνδεθεί από το Διαδίκτυο.

Ο εγκατεστημένος πυρήνας του συστήματος δεν ενεργοποιεί αυτήν την παράμετρο.zcat /proc/config.gz | grep CONFIG_MAC80211_HWSIM

Ο κώδικας του πυρήνα που παρέχεται από το github είναι πολύ απλός στη μεταγλώττιση και μπορεί να μεταγλωττιστεί σε ένα βήμα Δυστυχώς, δεν υπάρχει επιλογή τροποποίησης των παραμέτρων του πυρήνα και όταν τροποποιείτε το αρχείο διαμόρφωσης του πυρήνα, θα αλλάξει ξανά κατά τη μεταγλώττιση.

Αφού ταλαιπωρήθηκα για λίγες μέρες, πέρασα από όλες τις ερωτήσεις στο τεύχος και δεν μπορούσα να βρω την απάντηση, από το να κοιτάξω μόνος μου το σενάριο της συλλογής Ο πυρήνας παρέχεται εδώ.

Ενημέρωση πυρήνα

Διεύθυνση λήψης πακέτου Kernel deb, που χρησιμοποιείται από το σύστημαUbuntu22[7]https://www.123pan.com/s/ihEKVv-TbOx.html Κωδικός εξαγωγής:AZ3A . Εκτός από τις παραπάνω παραμέτρους, πρόσθεσα και παραμέτρους που σχετίζονται με το ebpf, οι οποίες θα συζητηθούν αργότερα.

Πρώτα μεuname -aΕλέγξτε τις τρέχουσες πληροφορίες πυρήνα

Πρώτα, μεταφέρετε το μεταγλωττισμένο αρχείο πυρήνα στο μηχάνημα και, στη συνέχεια, εκτελέστε τοsudo dpkg -i *.deb, υπάρχουν συνολικά πέντε αρχεία deb Το πρώτο είναι οι πληροφορίες κατασκευής και δεν χρειάζεται να εγκατασταθεί.

Στη συνέχεια χρησιμοποιήστεsudo rebootΚάντε επανεκκίνηση και ελέγξτε τις πληροφορίες του πυρήνα.

Οι παράμετροι πυρήνα ενεργοποιούνται επίσης κανονικά:

Λάκκος 1

Μετά την ενημέρωση του πυρήνα και την επανεκκίνηση, το κοντέινερ που δημιουργήθηκε αρχικά αποσυνδέεται από το Διαδίκτυο και μόνο τα κοντέινερ που δημιουργήθηκαν αργότερα μπορούν να έχουν κανονική πρόσβαση στο Διαδίκτυο. Στην αρχή νόμιζα ότι υπήρχε πρόβλημα με τον πυρήνα, οπότε έπρεπε να ανανεώσω το σύστημα και να μεταγλωττίσω ξανά τον πυρήνα.

Λάκκος 2

Παρόλο που υπάρχει σύνδεση στο Διαδίκτυο, το βίντεο του σταθμού Β δεν μπορεί να ανανεωθεί. Μπορώ να ανανεώσω μόνο την αρχική σελίδα και το πρόγραμμα περιήγησης δεν μπορεί να έχει πρόσβαση στην ιστοσελίδα. (Σημείωση: Πρέπει πρώτα να μεταβείτε στις ρυθμίσεις για να συνδεθείτε στο εικονικό WIFI για να μπορέσετε να συνδεθείτε στο Internet)

Σύμφωνα με τις οδηγίες σε αυτό:https://github.com/CNflysky/redroid-rk3588/issues/2

Εγγυημένη μόνο ασύρματη σύνδεση;Αν και δεν καταλαβαίνω τι σημαίνει, θα μπορούσε να είναι ότι μπορεί να υπάρχει μόνο μία διαδρομή;ip routeΑπό προεπιλογή, υπάρχουν δύο διαδρομές

Το δεύτερο είναι εικονικό WIFI Τι θα λέγατε να διαγράψω το πρώτο και να δοκιμάσω: ip route del 192.168.200.0/24 dev radio0 proto kernel scope link src 192.168.200.2

Διαπίστωσα ότι μερικές φορές, όταν υπάρχει σύνδεση στο Διαδίκτυο, το βίντεο μπορεί να αναπαραχθεί τις περισσότερες φορές, κολλάει και χρειάζεται λίγος χρόνος για να φορτώσει το βίντεο, ωστόσο, η ανανέωση της αρχικής σελίδας είναι πολύ γρήγορη γρήγορα. Ούτε η αλλαγή του DNS βοηθάει, θα δοκιμάσω και άλλο λογισμικό αργότερα για να δω αν συμβαίνει το ίδιο.

vpn

Μπορείτε να ανατρέξετε σε:https://github.com/CNflysky/redroid-rk3588/issues/5 , δεν θα το δοκιμάσω. Σύμφωνα με τις οδηγίες του redroid, μπορείτε επίσης να καθορίσετε τον πράκτορα κατά την εκκίνηση. Εάν ρυθμίσετε το vpn καθολικά, το adb ενδέχεται να αποσυνδεθεί.

Ήχος

Μπορεί να αποτύχει, απλώς δοκιμάστε μερικές ακόμη φορές.

Σύνδεσμος αναφοράς
  • [1] https://github.com/remote-android/redroid-doc/issues?q=rk3588
  • [2] https://github.com/redroid-rockchip
  • [3] https://blog.csdn.net/CNflysky/article/details/136452455
  • [4] https://github.com/CNflysky/redroid-rk3588
  • [5] https://github.com/remote-android/redroid-doc/blob/master/android-builder-docker/README.md
  • [6] https://github.com/redroid-rockchip/vendor_redroid_ext/tree/master/wifi
  • [7] https://github.com/Joshua-Riek/ubuntu-rockchip/releases