Condivisione della tecnologia

Soluzione per telefoni cellulari cloud in esecuzione Orange Pie 5plus - Redroid (con accelerazione hardware)

2024-07-08

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

Primo indirizzo:Italiano: https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw

Prefazione

Lo scopo di questa cosa non è giocare o altro, voglio solo essere meno dipendente dal telefono cellulare durante il reverse engineering dell'APP. Dopotutto, i passaggi per eseguire il flashing di un telefono cellulare sono piuttosto fastidiosi e, se non stai attento, può facilmente bloccarsi.

Ad esempio, è possibile testare alcune app che non sono rigide nei test ambientali, il che rende anche più semplice modificare il codice sorgente del sistema e eseguire il flashing della macchina in un secondo momento. Ma è un peccato che il kernel non possa essere personalizzato (redroid e Waydroid utilizzano entrambi soluzioni contenitore e condividono il kernel con l'host, puoi utilizzare solo seppia o avd di Google, ma questi hanno un supporto limitato). sul braccio e può essere eseguito ma non c'è accelerazione GPU, quindi proverò con la seppia più tardi.

Flash Ubuntu

Non entrerò nel dettaglio del processo di aggiornamento di Ubuntu con Orange Pie. Se sei interessato, leggi l'articolo precedente:Orange Pie 5plus avvia Ubuntu da SSD . Se esegui il flashing di questo sistema, non è necessario installare o configurare nulla per eseguire Redroid. Tuttavia, se desideri utilizzare il WIFI virtuale o ebpf, devi comunque modificare i parametri del kernel e compilare tu stesso il kernel Linux. Il prossimo articolo parlerà specificamente del processo di compilazione.

rossore

Tutorial ufficiale:https://github.com/remote-android/redroid-doc

Verificare le condizioni necessarie

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

Se non viene stampato nulla, potrebbe essere necessario avviarlo manualmente (utilizzo semplicemente i seguenti due comandi su una macchina con Ubuntu Kunpeng 920 installato. Sebbene questa macchina abbia una scheda grafica AMD, non può chiamare direttamente la GPU)

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

Se questi due comandi segnalano un errore o non hanno alcun effetto, è possibile che l'attuale kernel Linux non abiliti queste due funzioni. È necessario fare riferimento alle seguenti istruzioni di warehouse per installare un kernel supportato o compilare un kernel per abilitare queste due funzioni :https://github.com/remote-android/redroid-modules

Accelerazione GPU

Può essere avviato utilizzando l'immagine docker ufficiale, ma non c'è accelerazione GPU e il video è decodificato in modo soft (simulazione CPU), quindi l'operazione è relativamente lenta in githubproblema[1]Cerca rk3588 e puoi vedere diversi commenti sull'accelerazione GPU.

Ma nessuno ha mai condiviso prima come compilare un'immagine con l'accelerazione GPU. I commenti possono solo trarre una conclusione piuttosto utile: ottieni alcuni file dei driver relativi all'accelerazione GPU dal codice sorgente SDK ufficiale di Orange Pi e inseriscili insieme in Android Compiled. codice sorgente. Oppure copia questi file direttamente nel contenitore docker e riavvia il contenitore.

Questa conclusione è troppo vaga e devono esserci molte insidie, quindi non l’ho provata.Fino a quando un ragazzone non ha pubblicato un completoProcesso di compilazione e codice sorgente[2]

Il tutorial è scritto in modo molto dettagliato. Puoi compilarlo una volta e passarlo seguendo i passaggi. Inoltre,E il capo[3]Una cosa è stata aggiunta in base a questa immagine.

Quindi usa questo quiImmagine speculare del capo[4], prima di dare un'occhiata alle dipendenze che ha menzionato (versione del kernel 5.10.160 e mali ddk g18p0):

Non dovrebbe essere un problema. Ha anche detto che lo avrebbe fattomali_csffw.binFile copiato in/lib/firmware/Successivamente, ho controllato e c'è questo file in questa cartella.

L'impostazione predefinita è collegatag15p0, quindi eliminiamo questo collegamento software e creiamo un nuovo collegamento ag18p0 .Tuttavia, dopo il test, utilizzareg15p0Anche la versione contenitore Redroid può utilizzare normalmente la GPU.

Il test dei video di spazzolatura va bene, posso solo dire che non è bloccato o fluido, dopo tutto, la configurazione dei telefoni cellulari è già molto alta ed è molto più fluida di questa scheda di sviluppo.

Installa la finestra mobile

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

Le ultime due righe di comandi servono agli utenti ordinari per eseguire docker senza aggiungere sudo.

Avvia contenitore

Quindi estrai l'immagine: 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

Quindi usa adb per connetterti a questa porta (adb connect 192.168.31.208:5555) può essere utilizzataQtScrcpyGuarda il desktop di questo contenitore

Per prima cosa installa aida64 per vedere se le chiamate della scheda grafica sono normali:

Se utilizzi la scheda grafica mali-G610 per il rendering, non ci saranno problemi e la frequenza di aggiornamento sarà di 60 Hz. Se utilizzi una soluzione soft, la frequenza di aggiornamento sarà solo di 15 Hz.

magia

Quando questo contenitore viene avviato, porta aandroidboot.redroid_magisk=1Basta accendere magisk, così puoi vedere che magisk funziona normalmente dopo aver acceso il computer. La prima volta che fai clic, potrebbe essere necessario riavviare Usadocker restart redroidPuò essere utilizzato normalmente dopo il riavvio.

proposto

Per prima cosa apri zygisk in magisk, quindi usa il comando adb push per inserire il pacchetto di installazione lsposed nel contenitore. Quindi installalo in Moduli, quindi riavvia e vedrai che anche lsposed funziona normalmente.

Basta installare un modulo xposed e puoi accedere all'interfaccia delle impostazioni lsposed.

lacune

È ufficialeEsercitazione[5]Spiega come compilare un'immagine docker con gapps Tuttavia, anche con gapps, non può superare Google.safetynetVerifica, molte app non possono essere utilizzate.

Qualcuno ha anche chiesto nel problema, ma non c'è soluzione:https://github.com/remote-android/redroid-doc/issues/378 . Le immagini scaricate includono Google Store.

Wi-Fi virtuale

Dopo aver letto il problema, se non si configura il Wi-Fi virtuale, alcuni software determineranno che non è presente alcuna rete anche se è presente una rete, come QQ. Perché rilevano solo Wi-Fi e traffico, entrambi non disponibili nel contenitore docker. Tuttavia, il mio test ha rilevato che molti software con WIFI virtuale mostreranno che non c'è rete, ma Internet sarà normale senza accendere il WIFI virtuale, quindi si consiglia di non accenderlo, sappi solo che esiste una cosa del genere .

Quindi dobbiamo avere un WIFI virtuale nel container, di cui abbiamo bisognoSupporto del kernel[6]

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

passa aip6tables-legacySuccessivamente, la finestra mobile deve riavviare il serviziosudo systemctl restart docker, riavviare la macchina è inutile e il contenitore verrà disconnesso da Internet.

Il kernel del sistema installato non abilita questo parametro.zcat /proc/config.gz | grep CONFIG_MAC80211_HWSIM

Il codice del kernel fornito da github è molto semplice da compilare e può essere compilato in un solo passaggio. Sfortunatamente, non esiste alcuna opzione per modificare i parametri del kernel e quando si modifica il file di configurazione del kernel, verrà ripristinato durante la compilazione.

Dopo aver lottato per alcuni giorni, ho esaminato tutte le domande del problema e non sono riuscito a trovare la risposta, non ho avuto altra scelta che guardare io stesso lo script di compilazione. Questo processo specifico verrà discusso nel prossimo articolo kernel è fornito qui.

Aggiorna il kernel

Indirizzo di download del pacchetto deb del kernel, utilizzato dal sistemaUbuntu22[7]https://www.123pan.com/s/ihEKVv-TbOx.html Codice di estrazione:AZ3A . Oltre ai parametri di cui sopra, ho aggiunto anche parametri relativi a ebpf, di cui parleremo più avanti.

Prima conuname -aControlla le informazioni attuali del kernel

Per prima cosa trasferisci il file del kernel compilato sulla macchina, quindi eseguisudo dpkg -i *.deb, ci sono cinque file deb in totale. Il primo contiene le informazioni sulla build e non è necessario installarlo.

Quindi utilizzaresudo rebootRiavvia e controlla le informazioni del kernel.

Anche i parametri del kernel sono attivati ​​normalmente:

Fossa 1

Dopo l'aggiornamento del kernel e il riavvio, il contenitore creato originariamente viene disconnesso da Internet e solo i contenitori creati successivamente possono accedere normalmente a Internet. All'inizio pensavo che ci fosse un problema con il kernel, quindi ho dovuto aggiornare il sistema e ricompilare il kernel.

Fossa 2

Nonostante sia presente una connessione Internet, il video della stazione B non può essere aggiornato. Posso solo aggiornare la home page e il browser non può accedere alla pagina web. (Nota: devi prima andare alle impostazioni per connetterti al WIFI virtuale prima di poterti connettere a Internet)

Secondo le istruzioni in questo:https://github.com/CNflysky/redroid-rk3588/issues/2

Solo connessione wireless garantita?Anche se non capisco cosa significhi, potrebbe essere che ci possa essere solo un percorso? Vedi?ip routePer impostazione predefinita, ci sono due percorsi

Il secondo è il WIFI virtuale. Che ne dici di eliminare il primo e provare: ip route del 192.168.200.0/24 dev radio0 proto kernel scope link src 192.168.200.2

Ho scoperto che a volte quando è disponibile una connessione Internet, il video può essere riprodotto. La maggior parte delle volte è bloccato e ci vuole un po' di tempo per caricare il video. Tuttavia, l'aggiornamento della home page è molto veloce e anche i commenti sono molto veloce. Anche cambiare il DNS non aiuta. Proverò con altri software più tardi per vedere se succede la stessa cosa.

VPN

Puoi fare riferimento a:https://github.com/CNflysky/redroid-rk3588/issues/5 , non ci proverò. Secondo le istruzioni di Redroid, puoi anche specificare l'agente all'avvio. Se imposti VPN a livello globale, adb potrebbe disconnettersi.

Audio

Potrebbe fallire, prova ancora qualche volta.

Collegamento di riferimento
  • [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