技術共有

Orange Pie 5plus を実行するクラウド携帯電話ソリューション - redroid (ハードウェア アクセラレーション付き)

2024-07-08

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

最初の住所:https://mp.weixin.qq.com/s/1e8er_amC94DTVCaNbSuUw

序文

このものの目的は、ゲームなどをプレイすることではなく、APP をリバースエンジニアリングするときに携帯電話への依存度を下げることです。結局のところ、携帯電話をフラッシュする手順は非常に面倒で、注意しないと簡単にレンガになってしまう可能性があります。

たとえば、環境テストが厳しくない一部のアプリをテストできるため、後でシステムのソース コードを変更してマシンをフラッシュすることも簡単になります。ただし、カーネルをカスタマイズできないのは残念です (redroid と Waydroid はどちらもコンテナ ソリューションを使用し、カーネルをホストと共有します)。カーネルをカスタマイズしたい場合は、Google の Cuttlefish または avd のみを使用できますが、これらのサポートは限られています。腕に付けて実行できますが、GPUアクセラレーションがないので、後でイカを試してみます。

フラッシュUbuntu

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 がインストールされているマシンで次の 2 つのコマンドを使用するだけです。このマシンには AMD グラフィックス カードが搭載されていますが、GPU を直接呼び出すことはできません)。

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

これら 2 つのコマンドがエラーを報告するか、効果がない場合は、現在の Linux カーネルがこれら 2 つの機能を有効にしていない可能性があります。次のウェアハウスの手順を参照して、サポートされているカーネルをインストールするか、これら 2 つの機能を有効にするようにカーネルをコンパイルする必要があります。 :https://github.com/remote-android/redroid-modules

GPUアクセラレーション

公式の docker イメージを使用して起動できますが、GPU アクセラレーションがなく、ビデオがソフト デコード (CPU シミュレーション) されるため、github では動作が比較的遅くなります。問題[1]rk3588 を検索すると、GPU アクセラレーションに関するいくつかのコメントが表示されます。

しかし、これまで GPU アクセラレーションを使用してイメージをコンパイルする方法を共有した人はいませんでした。コメントは、ある程度有益な結論しか引き出すことができません。Orange Pi の公式 SDK ソース コードから GPU アクセラレーション関連のドライバー ファイルを取得し、それらを Android のコンパイル済みファイルにまとめます。ソースコード。または、これらのファイルを Docker コンテナに直接コピーし、コンテナを再起動します。

この結論は曖昧すぎて落とし穴もたくさんあるはずなので試していません。偉い人が完全版を発行するまでコンパイルプロセスとソースコード[2]

チュートリアルは非常に詳細に書かれており、一度コンパイルして手順に従うだけで完了できます。加えて、そして上司は[3]この画像を元に1つ追加しました。

そこで、ここでこれを使用しますボスの鏡像[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

コマンドの最後の 2 行は、一般ユーザーが 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 グラフィックス カードを使用する場合は問題なく、リフレッシュ レートは 60 Hz になります。ソフト ソリューションを使用すると、リフレッシュ レートは 15 Hz になります。

マジック

このコンテナが開始されると、androidboot.redroid_magisk=1magisk をオンにするだけで、コンピュータの電源を入れた後、magisk が正常に実行されていることがわかります。場合によっては、「使用」を再起動する必要があります。docker restart redroid再起動後は普通に使えるようになりました。

課せられた

まず、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 をオンにしないことをお勧めします。そのようなものがあることを知っておいてください。 。

したがって、コンテナ内に仮想 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 によって提供されるカーネル コードはコンパイルが非常に簡単で、1 ステップでコンパイルできます。残念ながら、カーネル パラメータを変更するオプションはなく、カーネル設定ファイルを変更すると、コンパイル中に元に戻されます。

数日間苦労した後、問題のすべての質問を調べましたが、答えが見つかりませんでした。この具体的なプロセスについては、次の記事で説明します。カーネルはここで提供されます。

カーネルを更新する

システムによって使用されるカーネル 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 のビデオは更新できず、ホームページを更新することしかできず、ブラウザーは Web ページにアクセスできません。 (注: インターネットに接続する前に、まず仮想 WIFI に接続するための設定に移動する必要があります)

この中の指示によると:https://github.com/CNflysky/redroid-rk3588/issues/2

保証されるのはワイヤレス接続のみですか?意味は分かりませんが、もしかしてルートは一つしかないのでしょうか?ip routeデフォルトでは 2 つのルートがあります

2 つ目は仮想 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