Compartir tecnología

Orange Pie 5plus ejecutando una solución de teléfono móvil en la nube - redroid (con aceleración de hardware)

2024-07-08

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

Primera dirección:https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw

Prefacio

El propósito de esto no es jugar ni nada por el estilo, sino ser menos dependiente del teléfono móvil al realizar ingeniería inversa en la aplicación. Después de todo, los pasos para flashear un teléfono móvil son bastante molestos y pueden bloquearse fácilmente si no se tiene cuidado.

Por ejemplo, algunas aplicaciones que no son estrictas en cuanto a pruebas ambientales se pueden probar en él, lo que también facilita cambiar el código fuente del sistema y actualizar la máquina más tarde. Pero es una lástima que el kernel no se pueda personalizar (redroid y Waydroid usan soluciones de contenedor y comparten el kernel con el host. Si desea personalizar el kernel, solo puede usar sepia o avd de Google, pero tienen soporte limitado). en el brazo y se puede ejecutar, pero no hay aceleración de GPU, así que probaré con sepia más tarde.

flash ubuntu

No entraré en el proceso de actualización de Ubuntu con Orange Pie. Si está interesado, lea el artículo anterior:Orange Pie 5plus inicia Ubuntu desde ssd . Si actualiza este sistema, no necesita instalar ni configurar nada para ejecutar redroid. Sin embargo, si desea utilizar WIFI virtual o ebpf, aún debe modificar los parámetros del kernel y compilar el kernel de Linux usted mismo. El próximo artículo hablará específicamente sobre el proceso de compilación.

Redroide

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

Consultar condiciones necesarias

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

Si no se imprime nada, es posible que deba iniciarlo manualmente (solo uso los dos comandos siguientes en una máquina con Ubuntu Kunpeng 920 instalado. Aunque esta máquina tiene una tarjeta gráfica AMD, no puede llamar directamente a la GPU)

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

Si estos dos comandos informan un error o no tienen ningún efecto, es posible que el kernel de Linux actual no habilite estas dos funciones. Debe consultar las siguientes instrucciones del almacén para instalar un kernel compatible o compilar un kernel para habilitar estas dos funciones. :https://github.com/remote-android/redroid-modules

aceleración de GPU

Se puede iniciar usando la imagen oficial de la ventana acoplable, pero no hay aceleración de GPU y el video está decodificado por software (simulación de CPU), por lo que la operación es relativamente lenta en github.asunto[1]Busque rk3588 y podrá ver varios comentarios sobre la aceleración de GPU.

Pero nadie ha compartido antes cómo compilar una imagen con aceleración de GPU. Los comentarios solo pueden sacar una conclusión algo útil: obtenga algunos archivos de controlador relacionados con la aceleración de GPU del código fuente oficial del SDK de Orange Pi y colóquelos en Android. código fuente. O copie estos archivos directamente al contenedor acoplable y reinicie el contenedor.

Esta conclusión es demasiado vaga y debe haber muchos obstáculos, por lo que no la he probado.Hasta que un tipo grande emitió un completoProceso de compilación y código fuente.[2]

El tutorial está escrito con gran detalle. Puede compilarlo una vez y pasarlo siguiendo los pasos. además,y el jefe[3]Se ha agregado una cosa basada en esta imagen.

Entonces usa esto aquíImagen reflejada del jefe.[4], antes de eso, eche un vistazo a las dependencias que mencionó (versión del kernel 5.10.160 y mali ddk g18p0):

Eso no debería ser un problema. También mencionó que lo haría.mali_csffw.binArchivo copiado a/lib/firmware/A continuación, verifiqué y hay este archivo en esta carpeta.

El valor predeterminado está vinculadog15p0, entonces eliminamos este enlace suave y creamos un nuevo enlace ag18p0 .Sin embargo, después de la prueba, useg15p0La versión contenedor redroid también puede usar la GPU normalmente.

La prueba de cepillado de videos está bien. Solo puedo decir que no está atascada ni fluida. Después de todo, la configuración actual del teléfono móvil ya es muy alta y es mucho más fluida que esta placa de desarrollo.

instalar la ventana acoplable

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

Las dos últimas líneas de comando son para que los usuarios normales ejecuten Docker sin agregar sudo.

Contenedor de inicio

Luego extrae la imagen: 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

Luego use adb para conectarse a este puerto (adb connect 192.168.31.208:5555) puede ser usadoQtScrcpyVer el escritorio de este contenedor

Primero instale aida64 para ver si las llamadas de la tarjeta gráfica son normales:

Si usa la tarjeta gráfica mali-G610 para renderizar, no habrá problemas y la frecuencia de actualización será de 60 Hz. Si usa una solución suave, la frecuencia de actualización será solo de 15 Hz.

Magia

Cuando se inicia este contenedor, trae unandroidboot.redroid_magisk=1Simplemente encienda magisk, para que pueda ver que magisk se está ejecutando normalmente después de encender la computadora. La primera vez que haga clic, es posible que deba reiniciar.docker restart redroidSe puede utilizar normalmente después de reiniciar.

puesto

Primero abra zygisk en magisk y luego use el comando adb push para insertar el paquete de instalación lsposed en el contenedor. Luego instálelo en Módulos, luego reinicie y verá que lsposed también se ejecuta normalmente.

Simplemente instale un módulo xposed y podrá ingresar a la interfaz de configuración lsposed.

brechas

Es oficialTutorial[5]Explique cómo compilar una imagen de Docker con gapps. Sin embargo, incluso con gapps, no puede pasar a Google.safetynetVerificación, muchas aplicaciones no se pueden utilizar.

Alguien también preguntó sobre el tema, pero no hay solución:https://github.com/remote-android/redroid-doc/issues/378 . Las imágenes descargadas incluyen Google Store.

WIFI virtual

Después de leer el problema, si no configura WIFI virtual, algún software determinará que no hay red incluso si la hay, como QQ. Porque solo detectan WIFI y tráfico, los cuales no están disponibles en el contenedor acoplable. Sin embargo, mi prueba encontró que muchos programas con WIFI virtual mostrarán que no hay red, pero Internet será normal sin encender el WIFI virtual, por lo que se recomienda no encenderlo, solo sepa que existe tal cosa. .

Entonces necesitamos tener un WIFI virtual en el contenedor, necesitamosSoporte del núcleo[6]

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

cambiar aip6tables-legacyDespués de eso, Docker necesita reiniciar el servicio.sudo systemctl restart docker, reiniciar la máquina es inútil y el contenedor se desconectará de Internet.

El kernel del sistema instalado no habilita este parámetro.zcat /proc/config.gz | grep CONFIG_MAC80211_HWSIM

El código del kernel proporcionado por github es muy simple de compilar y se puede compilar en un solo paso. Desafortunadamente, no hay ninguna opción para modificar los parámetros del kernel y, cuando modifica el archivo de configuración del kernel, se volverá a cambiar durante la compilación.

Después de luchar durante unos días, revisé todas las preguntas del problema y no pude encontrar la respuesta. No tuve más remedio que mirar el script de compilación. Este proceso específico se discutirá en el próximo artículo. El kernel se proporciona aquí.

Actualizar kernel

Dirección de descarga del paquete deb del kernel, utilizada por el sistemaUbuntu22[7]https://www.123pan.com/s/ihEKVv-TbOx.html Código de extracción:AZ3A . Además de los parámetros anteriores, también agregué parámetros relacionados con ebpf, que se analizarán más adelante.

primero conuname -aVerifique la información actual del kernel

Primero, transfiera el archivo del kernel compilado a la máquina y luego ejecutesudo dpkg -i *.deb, hay cinco archivos deb en total. El primero es la información de compilación y no es necesario instalarlo.

Entonces usasudo rebootReinicie y verifique la información del kernel.

Los parámetros del kernel también están activados normalmente:

Pozo 1

Después de actualizar el kernel y reiniciar, el contenedor creado originalmente se desconecta de Internet y solo los contenedores creados posteriormente pueden acceder a Internet normalmente. Al principio pensé que había un problema con el kernel, así que tuve que actualizar el sistema y recompilar el kernel.

Pozo 2

Aunque hay una conexión a Internet, el video de la estación B no se puede actualizar. Solo puedo actualizar la página de inicio y el navegador no puede acceder a la página web. (Nota: primero debes ir a la configuración para conectarte al WIFI virtual antes de poder conectarte a Internet)

Según las instrucciones de este:https://github.com/CNflysky/redroid-rk3588/issues/2

¿Solo conexión inalámbrica garantizada?Aunque no entiendo lo que significa. ¿Será que solo puede haber una ruta?ip routePor defecto, hay dos rutas.

El segundo es WIFI virtual. ¿Qué tal si borro el primero y pruebo? ip route del 192.168.200.0/24 dev radio0 proto kernel scope link src 192.168.200.2

Descubrí que a veces, cuando hay una conexión a Internet, el video se puede reproducir la mayoría de las veces, se bloquea y lleva algún tiempo cargar el video. Sin embargo, la actualización de la página de inicio es muy rápida y los comentarios también son muy rápidos. rápido. Cambiar el DNS tampoco ayuda. Probaré con otro software más adelante para ver si sucede lo mismo.

VPN

Puedes consultar:https://github.com/CNflysky/redroid-rk3588/issues/5 , No lo intentaré. De acuerdo con las instrucciones de redroid, también puedes especificar el agente al iniciar. Si configura vpn globalmente, adb puede desconectarse.

Audio

Puede fallar, solo inténtalo unas cuantas veces más.

Link de referencia
  • [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