기술나눔

클라우드 휴대폰 솔루션을 실행하는 Orange Pie 5plus - redroid(하드웨어 가속 기능 포함)

2024-07-08

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

첫 번째 주소:https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw

머리말

이 것의 목적은 게임을 하려는 것이 아니고 단지 앱을 리버스 엔지니어링할 때 휴대폰에 덜 의존하고 싶을 뿐입니다. 결국 휴대폰을 플래시하는 단계는 꽤 짜증나고 조심하지 않으면 쉽게 벽돌이 될 수 있습니다.

예를 들어, 환경 테스트에 엄격하지 않은 일부 앱을 테스트할 수 있으며, 이를 통해 나중에 시스템 소스 코드를 변경하고 머신을 플래시하는 것이 더 쉬워집니다. 하지만 커널을 맞춤설정할 수 없다는 점은 아쉽습니다(redroid와 Waydroid는 모두 컨테이너 솔루션을 사용하고 커널을 호스트와 공유합니다). 커널을 맞춤설정하려면 Google의 cuttlefish 또는 avd만 사용할 수 있지만 지원이 제한됩니다. 팔에 달고 달릴 수는 있지만 GPU 가속이 없기 때문에 나중에 오징어를 시험해 보겠습니다.

플래시 우분투

Orange Pie로 Ubuntu를 업데이트하는 과정은 다루지 않겠습니다. 관심이 있으시면 이전 기사를 읽어보세요.Orange Pie 5plus는 SSD에서 Ubuntu를 시작합니다. . 이 시스템을 플래시하면 redroid를 실행하기 위해 아무것도 설치하거나 구성할 필요가 없습니다. 그러나 가상 WIFI 또는 ebpf를 사용하려면 커널 매개변수를 수정하고 Linux 커널을 직접 컴파일해야 합니다. 다음 기사에서는 컴파일 프로세스에 대해 구체적으로 설명합니다.

레드로이드

공식 튜토리얼: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 가속

공식 도커 이미지를 사용하여 시작할 수 있지만 GPU 가속이 없고 비디오가 소프트 디코딩(CPU 시뮬레이션)되어 github에서 작업이 상대적으로 지연됩니다.문제[1]rk3588을 검색하면 GPU 가속에 대한 여러 의견을 볼 수 있습니다.

그러나 이전에는 GPU 가속을 사용하여 이미지를 컴파일하는 방법을 공유한 적이 없습니다. 댓글은 다소 유용한 결론을 도출할 수 있습니다. Orange Pi의 공식 SDK 소스 코드에서 일부 GPU 가속 관련 드라이버 파일을 가져와 Android에 넣습니다. 소스 코드. 또는 이러한 파일을 Docker 컨테이너에 직접 복사하고 컨테이너를 다시 시작하세요.

이 결론은 너무 모호하고 함정이 많을 것이므로 시도해 보지 않았습니다.큰 사람이 완전한 것을 발행할 때까지컴파일 프로세스 및 소스 코드[2]

튜토리얼은 매우 자세하게 작성되어 있으므로 한 번만 컴파일하고 다음 단계에 따라 진행하면 됩니다. 게다가,그리고 사장님[3]이 이미지를 기반으로 한 가지가 추가되었습니다.

그럼 여기를 이용해보세요상사의 거울상[4], 그 전에 그가 언급한 종속성(커널 버전 5.10.160 및 Mali ddk g18p0)을 살펴보세요.

그는 또한 그렇게 할 것이라고 언급했습니다.mali_csffw.bin다음 위치에 파일이 복사되었습니다./lib/firmware/다음으로 확인해 보니 이 폴더에 이 파일이 들어있습니다.

기본값은 연결되어 있습니다.g15p0이므로 이 소프트 링크를 삭제하고 다음에 대한 새 링크를 만듭니다.g18p0 .그러나 테스트 후 사용g15p0버전 redroid 컨테이너도 정상적으로 GPU를 사용할 수 있습니다.

브러싱 동영상 테스트는 괜찮습니다. 막히거나 매끄럽지 않다고 말할 수 있습니다. 결국 휴대폰의 구성은 이미 매우 높으며 이 개발 보드보다 훨씬 부드럽습니다.

도커 설치

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

마지막 두 줄의 명령은 일반 사용자가 sudo를 추가하지 않고 docker를 실행할 수 있는 명령입니다.

컨테이너 시작

그런 다음 이미지를 가져옵니다. 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 그래픽 카드를 사용한다면 문제가 없을 것이며, 소프트 솔루션을 사용한다면 주사율은 15Hz에 불과할 것입니다.

마기스크

이 컨테이너가 시작되면androidboot.redroid_magisk=1magisk를 켜기만 하면 컴퓨터를 처음 켠 후 magisk가 정상적으로 실행되는 것을 확인할 수 있습니다.docker restart redroid재부팅 후 정상적으로 사용 가능합니다.

lsposed

먼저 magisk에서 zygisk를 연 다음 adb push 명령을 사용하여 lsposed 설치 패키지를 컨테이너에 푸시합니다. 그런 다음 모듈에 설치하고 다시 시작하면 lsposed도 정상적으로 실행되는 것을 볼 수 있습니다.

xposed 모듈을 설치하면 lsposed 설정 인터페이스로 들어갈 수 있습니다.

갭스

공식적이야지도 시간[5]gapps를 사용하여 docker 이미지를 컴파일하는 방법을 설명합니다. 그러나 gapps를 사용해도 Google을 통과할 수 없습니다.safetynet확인 결과, 많은 앱을 사용할 수 없습니다.

해당 문제에도 누군가가 질문을 했으나 해결 방법이 없습니다.https://github.com/remote-android/redroid-doc/issues/378 . 다운로드한 이미지에는 Google 스토어가 포함되어 있습니다.

가상 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에서 제공하는 커널 코드는 컴파일이 매우 간단하고 한 번에 컴파일이 가능합니다. 아쉽게도 커널 매개변수를 수정할 수 있는 옵션이 없으며, 커널 구성 파일을 수정하면 컴파일 중에 다시 변경됩니다.

며칠 동안 고민한 끝에 문제의 모든 질문을 검토했지만 답변을 찾을 수 없었습니다. 이 구체적인 프로세스는 다음 기사에서 논의됩니다. 커널은 여기에 제공됩니다.

커널 업데이트

시스템에서 사용되는 커널 deb 패키지 다운로드 주소우분투22[7]https://www.123pan.com/s/ihEKVv-TbOx.html 추출 코드:AZ3A . 위의 파라미터 외에 ebpf 관련 파라미터도 추가했는데 이에 대해서는 나중에 다루도록 하겠습니다.

먼저uname -a현재 커널 정보 확인

먼저 컴파일된 커널 파일을 머신으로 전송한 후 다음을 실행합니다.sudo dpkg -i *.deb, 총 5개의 deb 파일이 있습니다. 첫 번째는 빌드 정보이므로 설치할 필요가 없습니다.

그런 다음 사용sudo reboot다시 시작하고 커널 정보를 확인합니다.

커널 매개변수도 정상적으로 켜져 있습니다.

구덩이 1

커널을 업데이트하고 다시 시작하면 원래 생성된 컨테이너는 인터넷 연결이 끊어지고 나중에 생성된 컨테이너만 정상적으로 인터넷에 접속할 수 있습니다. 처음에는 커널에 문제가 있는 줄 알고 시스템을 새로 고치고 커널을 다시 컴파일해야 했습니다.

구덩이 2

인터넷이 연결되어 있지만 B국의 영상은 새로 고칠 수 없고, 홈 페이지만 새로 고칠 수 있고, 브라우저가 웹 페이지에 접속할 수 없습니다. (참고: 인터넷에 연결하기 전에 먼저 설정으로 이동하여 가상 WIFI에 연결해야 합니다)

이 지침에 따르면: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