「Waydroid」の版間の差分
(言語間リンクの追加 (中国語版はうまく転送されない)) |
DreamChaser (トーク | 投稿記録) (最新版への翻訳・加筆) |
||
11行目: | 11行目: | ||
{{Style|Need to improve style.}} |
{{Style|Need to improve style.}} |
||
− | Waydroidは、通常の |
+ | [https://waydro.id Waydroid] は、通常の Linux システム上で完全な Android システムを起動するコンテナベースな手法です。 |
== 前提条件 == |
== 前提条件 == |
||
23行目: | 23行目: | ||
=== GPU 要件 === |
=== GPU 要件 === |
||
− | Waydroid は現在 Intel GPU で最適に動作します。そ |
+ | Waydroid は現在 Intel GPU で最適に動作します。そのまますぐに使用できるはずです。 |
− | すべての AMD GPU はサポートされています。もし Waydroid が動作しない場合は、新しい Waydroid イメージ(Radeon 680M で動作)をビルドするか、以下の NVIDIA の手順を試してみてください。 |
+ | すべての AMD GPU はサポートされています。もし Waydroid が動作しない場合は、新しい Waydroid イメージ(イメージはRadeon 680M で動作します)をビルドするか、以下の NVIDIA の手順を試してみてください。 |
NVIDIA GPU は現在動作しませんが、2 つの回避策があります: |
NVIDIA GPU は現在動作しませんが、2 つの回避策があります: |
||
− | + | # 可能であれば統合グラフィックカードに切り替えます |
|
− | + | # ソフトウェア レンダリングを使用します ([[#ソフトウェア レンダリング]] を参照) |
|
− | ** すでに {{ic|waydroid init}} が実行されていることを確認してください。(インストール]]の項を参照)。 |
||
− | ** {{ic|/var/lib/waydroid/waydroid_base.prop}} を編集し、{{bc|<nowiki>ro.hardware.gralloc=default |
||
− | ro.hardware.egl=swiftshader</nowiki>}} に設定する。 |
||
− | ** [[再起動]]し、{{ic|waydroid-container.service}} を起動します。 |
||
=== Wayland セッションマネージャ === |
=== Wayland セッションマネージャ === |
||
40行目: | 36行目: | ||
Waydroid は [[Wayland]] セッションマネージャーでのみ動作しますので、Wayland セッションであることを確認してください。 |
Waydroid は [[Wayland]] セッションマネージャーでのみ動作しますので、Wayland セッションであることを確認してください。 |
||
− | X11 |
+ | X11 を使用している場合でも、多くの Wayland セッション マネージャーはネストされたセッションをサポートしていることに注意してください (そのため、X11 セッション内で実行できます)。最も単純な例は {{pkg|cage}} です。 |
− | === |
+ | === カーネル モジュール === |
+ | まず、binder モジュールが付属しているカーネルを実行する必要があります。これらは Arch Linux のデフォルト カーネル ({{Pkg|linux}}) の一部ではないため、これらのモジュールを同梱するカーネルをインストールする必要があります。 |
||
− | You need to run a kernel which comes with the binder modules and optionally the ashmem one. They are not part of Arch Linux's default kernel ({{Pkg|linux}}), thus you need to install a kernel which ships these modules. |
||
+ | また、他のカーネルを使用するために、ブートローダーを設定する必要がある場合もあります。新しいカーネルでブートローダーを起動する方法については、wiki ページを参照してください。他のカーネル (のバージョン) での起動は、Linux システムの再起動が必要になる数少ないケースの 1 つです。 Waydroid を起動する前に、これらのモジュールを使用してカーネルを起動する必要があります。 |
||
− | You might also need to configure your bootloader to use a different kernel. Please refer to the wiki page of your bootloader how to boot with the new kernel. Booting into another kernel (version) is one of the few occasions when you have to reboot a Linux system. You should boot into the kernel with these modules before starting Waydroid. |
||
+ | 互換性のあるカーネルを入手するには、複数の方法があります。 |
||
− | {{Note|1=Since {{aur|waydroid}} 1.2.1 ''ashmem'' is not needed anymore, ''memfd'' can be used instead, see [https://github.com/waydroid/waydroid/issues/406 issue]. This because ''ashmem'' has been completely replaced by ''memfd'' in ''mainline Linux'' since version 5.18, see [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=721412ed3d819e767cac2b06646bf03aa158aaec commit].}} |
||
+ | ==== Linux-Zen を使用する ==== |
||
− | To get a compatible kernel, you have multiple options: |
||
− | ==== Using Linux-Zen ==== |
||
+ | {{Pkg|linux-zen}} カーネルには、必要なモジュールが含まれています。これは、カーネルをコンパイルする必要がなく (コンパイルには時間がかかります)、定期的に更新バージョンを受け取るため、最も快適な方法と言えます。 |
||
− | The {{Pkg|linux-zen}} kernel includes the necessary modules. This might be the most comfortable way, as you do not have to compile the kernel (which takes a long time) and will receive updated versions regularly. |
||
− | ==== DKMS |
+ | ==== DKMS モジュール ==== |
+ | {{aur|binder_linux-dkms}} をインストールし、モジュール オプション {{ic|devices{{=}}binder,hwbinder,vndbinder}} を指定して [[カーネル モジュール]] {{ic|binder_linux}} をロードします ([https://github.com/waydroid/waydroid/issues/904#issuecomment-1869579022 バグレポート]を参照)。 |
||
− | You can install {{aur|anbox-modules-dkms-git}} and load kernel modules with: {{bc|# modprobe ashmem_linux |
||
+ | |||
− | # modprobe binder_linux |
||
+ | {{bc| |
||
+ | $ sudo modprobe binder-linux device{{=}}binder,hwbinder,vndbinder |
||
}} |
}} |
||
+ | カーネル 5.18 以降での問題を回避するには、[[カーネル パラメータ]] {{ic|ibt{{=}}off}} を使用する必要もあります。 [https://bbs.archlinux.org/viewtopic.php?id=293566 {{ic|/dev/binderfs}} マウント時のセグメンテーション違反] を参照してください。 |
||
− | Alternatively, if your kernel is 5.18 or newer, install {{aur|binder_linux-dkms}}, which provides just binder_linux. |
||
− | ==== |
+ | ==== カーネルをビルドする ==== |
+ | あるいは、必要なオプションを指定して {{Pkg|linux}} カーネル、または他のカーネル パッケージ (>=5.7) を再コンパイルすることもできます。 [[カーネル#コンパイル]] も参照してください。 |
||
− | Alternatively, you can recompile the {{Pkg|linux}} kernel — or other kernel packages (>=5.7) — with the necessary options. Also see [[Kernel#Compilation]]. |
||
+ | 最小限のカーネルをビルドするときは、次の要件に留意してください。 |
||
− | When setting compilation options, you have 2 options available; ''binder'' and ''binderfs''. Instructions for both are provided below. |
||
+ | * IPv6 のサポート。カーネルに IPv6 ネットワークが組み込まれていない場合、Waydroid では IPv4 接続が行われません。 |
||
+ | * Netlink ソケット ({{ic|CONFIG_NF_CT_NETLINK{{=}}y}})。 |
||
+ | * PSI ({{ic|CONFIG_PSI{{=}}y}})。 |
||
+ | * ループブロック・デバイス ({{ic|CONFIG_BLK_DEV_LOOP{{=}}m}}) - Waydroid を起動する前に、{{ic|loop}} モジュールをロードする必要があります。 |
||
+ | コンパイル オプションを設定する場合、2 つのオプションを使用できます。 |
||
− | ===== Using binder ===== |
||
+ | ''binder'' と ''binderfs'' です。両方の手順を以下に示します。 |
||
+ | ===== binder を使用する ===== |
||
− | The modules can either be compiled into the kernel ({{ic|y}}), into modules ({{ic|m}}), or not at all ({{ic|n}}). Also, not all combinations in the configuration are possible, and some options will require other options. |
||
+ | このモジュールは、カーネルにコンパイルすることも ({{ic|y}})、モジュールにコンパイルすることも ({{ic|m}})、まったくコンパイルしないこともできます ({{ic|n}})。また、構成内のすべての組み合わせが可能であるわけではなく、一部のオプションには他のオプションが必要になります。 |
||
− | The configuration options below will compile binder as a module, while the last option specifies that there will be three devices created in the {{ic|/dev/}} directory, when the binder module is loaded. |
||
+ | |||
+ | 以下の構成オプションは、binder をモジュールとしてコンパイルしますが、最後のオプションは、binder モジュールがロードされるときに、{{ic|/dev/}} ディレクトリに 3 つのデバイスが作成されることを指定します。 |
||
{{bc|1= |
{{bc|1= |
||
83行目: | 87行目: | ||
}} |
}} |
||
+ | AUR からカーネルをビルドする場合、次の手順で構成を更新できます。 |
||
− | When building a kernel from the AUR, one can update the configuration with the following steps: |
||
+ | # {{ic|makepkg --nobuild}} を実行します。これにより、ダウンロードされたソースが検証および展開され、{{ic|prepare()}} 関数が実行されます。 |
||
− | # run {{ic|makepkg --nobuild}}, which will download the sources, verify and extract them and run the {{ic|prepare()}} function. |
||
+ | # カーネル ディレクトリの下部にある {{ic|.config}} ファイル (ファイル名にドットを含む) を編集します。 |
||
− | # edit the {{ic|.config}} file (with the dot in the filename), which is located at the base of the kernel directory. |
||
+ | # {{ic|prepare()}} 関数の最後にあるのは、おそらくコンフィグ ({{ic|make olddefconfig}}かもしれません) からの情報を使用して makefile を再生成するコマンドです。それを {{ic|build()}} 関数に移動するか、自分で実行します。 |
||
− | # at the end of the {{ic|prepare()}} function was probably a command which regenerates the makefiles with information from the configuration, possibly {{ic|make olddefconfig}}. Move that to the {{ic|build()}} function, or execute it yourself. |
||
− | # |
+ | # {{ic|makepkg --noextract}} を実行します。これは、{{ic|makepkg --nobuild}} が中断された場所から再開します。 |
− | ===== |
+ | ===== bindingfs を使用する ===== |
+ | binder カーネル モジュールは、複数のユーザーに問題を引き起こすことが知られています。これらの問題に対処するために、binderfs が作成されました。カーネルをコンパイルするときに、古い方法と新しい方法のどちらかを選択する必要があります。以下のオプションでは、代わりに bindingfs を使用します。 |
||
− | The binder kernel module is known to cause some issues to several users. To address these issues, binderfs was created. One has to choose between the old and the new way when compiling the kernel. With the options below, one will use binderfs instead. |
||
+ | カーネル ソースには、構成オプションを設定するための簡単なスクリプトも付属しています。コンフィグを手動で編集する場合と同様に、依存関係のチェックは行われません。 {{ic|.config}} ファイルと同じディレクトリにある場合は、次のコマンドを実行できます: |
||
− | With the kernel sources comes also a simple script to set configuration options. It will not do dependency checks, just like when editing the configuration by hand. When being in the same directory where the {{ic|.config}} file lies, one can execute the following commands: |
||
{{bc| |
{{bc| |
||
103行目: | 107行目: | ||
}} |
}} |
||
+ | AUR からカーネルをビルドする場合、これらの行を [[PKGBUILD]] の適切な場所 (通常は {{ic|prepare()}}) に挿入するだけで十分です。 |
||
− | When building a kernel from the AUR, it is enough to insert these lines at the right place in the [[PKGBUILD]], usually in {{ic|prepare()}}. |
||
− | ==== |
+ | ==== binder デバイスのセットアップ ==== |
+ | Waydroid パッケージの最新バージョンがあることを確認してください。これは Waydroid が自動的に処理します。 |
||
− | Make sure you have the latest version of Waydroid package, and Waydroid will take automatically care of this. |
||
− | == |
+ | == インストール == |
− | + | {{AUR|waydroid}} を [[インストール]] します。 |
|
− | + | 必要に応じて、{{AUR|waydroid-image}} または {{AUR|waydroid-image-gapps}} をインストールして、AUR を通じて必要な Android イメージを入手します。ただし、Waydroid 自体にイメージのダウンロードを処理させることをお勧めします。 |
|
+ | |||
+ | Waydroid を初期化した後、最新の Android イメージがまだ利用できない場合は自動的にダウンロードされます。 |
||
− | Afterwards init Waydroid, this will automatically download the latest Android image if it is not yet available. |
||
# waydroid init |
# waydroid init |
||
+ | GAppsを利用して初期化するには: |
||
− | To init with GApps support: |
||
+ | |||
# waydroid init -s GAPPS -f |
# waydroid init -s GAPPS -f |
||
− | Next [[start/enable]] the {{ic|waydroid-container.service}}. |
||
+ | 次に、{{waydroid-container.service}}を[[起動/有効化]]します。 |
||
− | Waydroid should now work. |
||
+ | これで Waydroid が動作するはずです。 |
||
− | == Usage == |
||
+ | |||
+ | == 使い方 == |
||
+ | |||
+ | {{ic|waydroid-container.service}} が [[start]] されていることを確認してから、次を実行します: |
||
− | Make sure that {{ic|waydroid-container.service}} is running then run: |
||
$ waydroid session start |
$ waydroid session start |
||
+ | Waydroid セッションがアクティブになりました。対話コマンドの例を次に示します: |
||
− | The Waydroid session is now active, here are a couple of useful commands to interact with it: |
||
+ | |||
+ | GUI を起動します: |
||
− | ''Launch GUI'': |
||
$ waydroid show-full-ui |
$ waydroid show-full-ui |
||
+ | |||
− | ''Launch shell'': |
||
+ | シェルを起動します: |
||
+ | |||
# waydroid shell |
# waydroid shell |
||
+ | |||
− | ''Install an application'': |
||
+ | アプリケーションをインストールします: |
||
+ | |||
$ waydroid app install $path_to_apk |
$ waydroid app install $path_to_apk |
||
− | ''Run an application'': |
||
− | $ waydroid app launch $package-name #Can be retrieved with `waydroid app list` |
||
+ | アプリケーション一覧を取得します: |
||
− | == Network == |
||
+ | |||
+ | $ waydroid app list |
||
+ | |||
+ | アプリケーションを実行します: |
||
+ | |||
+ | $ waydroid app launch $package_name |
||
+ | |||
+ | == ネットワーク == |
||
+ | ネットワークはそのまま動作するはずですが、そうでない場合は、[[インターネット共有#パケット転送を有効にする|パケット転送]] がカーネルで有効になっていることを確認し、''Waydroid session start'' の実行 "前" にファイアウォールで次のルールを許可する必要があるかもしれません。 |
||
− | The network should work out of the box, if its not you might need to make sure [[internet sharing#Enable packet forwarding|packet forwarding]] is enabled in kernel and allow the following rules through your firewall ''before'' running ''Waydroid session start''. |
||
− | + | {{pkg|ufw}} を例として挙げます。 |
|
+ | * DNS トラフィックを許可する必要があります: |
||
− | * Dns traffic needs to be allowed: |
||
** {{bc|# ufw allow 67}} |
** {{bc|# ufw allow 67}} |
||
** {{bc|# ufw allow 53}} |
** {{bc|# ufw allow 53}} |
||
+ | * パケット転送を許可する必要があります: |
||
− | * Packet forwarding needs to be allowed: |
||
** {{bc|# ufw default allow FORWARD}} |
** {{bc|# ufw default allow FORWARD}} |
||
+ | {{pkg|firewalld}} の場合は、次のコマンドを使用できます。 |
||
− | For {{pkg|firewalld}}, you can use those commands: |
||
* DNS: |
* DNS: |
||
** {{bc|1=# firewall-cmd --zone=trusted --add-port=67/udp}} |
** {{bc|1=# firewall-cmd --zone=trusted --add-port=67/udp}} |
||
** {{bc|1=# firewall-cmd --zone=trusted --add-port=53/udp}} |
** {{bc|1=# firewall-cmd --zone=trusted --add-port=53/udp}} |
||
+ | * パケット転送: |
||
− | * Packet forwarding: |
||
** {{bc|1=# firewall-cmd --zone=trusted --add-forward}} |
** {{bc|1=# firewall-cmd --zone=trusted --add-forward}} |
||
+ | * waydroid インターフェイスを信頼するプログラムに追加します: |
||
+ | ** {{bc|1=# firewall-cmd --zone=trusted --add-interface=waydroid0}} |
||
− | {{ |
+ | {{注|waydroid によって作成されたインターフェース {{ic|waydroid0}} は自動的に firewalld ゾーン {{ic|trusted}} に置かれることを想定しています。そうでない場合は、上記のコマンドを調整するか、インターフェース {{ic|waydroid0}} を {{ic|trusted}} に移動してください。再起動後も変更を維持するには、{{bc|# firewall-cmd --runtime-to-permanent}} も必要になる場合があります。}} |
− | == |
+ | == ヒントとコツ == |
+ | === ソフトウェアレンダリング === |
||
− | If you run into issues, take a look at the official Issue Tracker: [https://github.com/waydroid/waydroid/issues Waydroid issue tracker] |
||
+ | 以下をすでに実行していることを確認してください: |
||
− | === General tips === |
||
+ | # waydroid init |
||
− | Waydroid is in rapid developement so if you face issues, here is a good list of steps to do first: |
||
+ | (詳細については、[[#インストール]] セクションを参照してください) |
||
− | # Make sure your Waydroid package is up to date; |
||
− | # Make sure you have the latest Waydroid image by running {{bc|# waydroid upgrade}} |
||
− | # Reset Waydroid: [[stop]] the {{ic|waydroid-container.service}}, run {{bc|# waydroid init -f}} and [[start]] the service again. |
||
− | # You may also want to do little cleanup, run {{bc|# rm -rf /var/lib/waydroid /home/.waydroid}} {{bc|$ rm -rf ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid}} |
||
+ | 次に、以下を追加します。 |
||
− | === Rotated apps are unusable === |
||
+ | {{hc|/var/lib/waydroid/waydroid_base.prop|<nowiki> |
||
− | See https://github.com/waydroid/waydroid/issues/70 |
||
+ | ro.hardware.gralloc=default |
||
+ | ro.hardware.egl=swiftshader |
||
+ | </nowiki>}} |
||
+ | 最後に、{{ic|waydroid-container.service}} を [[再起動]] します。 |
||
− | Click ''F11'' to switch the current app to windowed mode. |
||
+ | === 表示領域の寸法設定 === |
||
− | === Failed to start Clipboard manager service === |
||
+ | waydroid ウィンドウのサイズを設定するには、次のコマンドを使用して好みに合わせてサイズに調整します。 |
||
− | Install {{aur|python-pyclip}} |
||
+ | |||
+ | $ waydroid prop set persist.waydroid.width 576 |
||
+ | $ waydroid prop set persist.waydroid.height 1024 |
||
+ | |||
+ | 次に、{{ic|waydroid-container.service}} を [[再起動]] します。 |
||
+ | |||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | 問題が発生した場合は、公式の Issue Tracker を参照してください: [https://github.com/waydroid/waydroid/issues Waydroid issue tracker]。 |
||
+ | |||
+ | === 一般的なヒント === |
||
+ | |||
+ | Waydroid は開発が速いため、問題が発生した場合に、最初に行うべき手順のリストを次に示します。 |
||
+ | |||
+ | # Waydroid パッケージが最新であることを確認してください。 |
||
+ | # {{bc|# waydroid upgrade}} を実行して、最新の Waydroid イメージがあることを確認してください |
||
+ | # Waydroid をリセットします: {{ic|waydroid-container.service}} を [[stop]] し、{{bc|# waydroid init -f}} を実行して、サービスを再度 [[start]] します。 |
||
+ | # ちょっとしたクリーンアップを行うこともできます。 {{bc|# rm -rf /var/lib/waydroid /home/.waydroid}} {{bc|$ rm -rf ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid}}を実行します。 |
||
+ | ::{{ヒント| [https://github.com/waydroid/waydroid/commit/eef036b3f814a9fc4869ebfe6c9d2bd51fa19f26 2021-09] 以降にインストールした場合は、{{ic|/home/.waydroid/}} を削除する必要はありません。}} |
||
+ | |||
+ | === ARM アプリと互換性がない === |
||
+ | |||
+ | Casualsnek の [https://github.com/casualsnek/waydroid_script スクリプト] を使用して、変換レイヤーをインストールします。 |
||
+ | |||
+ | 変換レイヤーの最適化のため、AMD CPU では libndk を使用し、Intel CPU では libhoudini を使用することをお勧めします。ただし、アプリによっては、ある変換レイヤーでは機能し、別の翻訳レイヤーでは機能しないものもあります。したがって、ゲームが動作しない場合やパフォーマンスが低下する場合は、両方を試す必要がある場合があります。 |
||
+ | |||
+ | ''libndk arm translation をインストール'' |
||
+ | |||
+ | # python3 main.py install libndk |
||
+ | |||
+ | ''libhoudini arm translation をインストール'' |
||
+ | |||
+ | # python3 main.py install libhoudini |
||
+ | |||
+ | === 画面回転するとアプリが使えなくなる === |
||
+ | |||
+ | [https://github.com/waydroid/waydroid/issues/70 Issue 70] を参照してください。 |
||
+ | |||
+ | 「F11」をクリックして、現在のアプリをウィンドウ モードに切り替えます。 |
||
+ | |||
+ | === クリップボード マネージャー サービスの起動に失敗します === |
||
+ | |||
+ | {{aur|python-pyclip}} とその依存関係をグラフィカル セッションにインストールします (X11 の場合は {{pkg|xclip}}、Wayland の場合は {{pkg|wl-clipboard}})。 |
||
+ | |||
+ | === 物理キーボードが動作しない場合がある === |
||
+ | |||
+ | 左の {{ic|Alt}} キーを押してください。 |
||
+ | |||
+ | === dnsmasq: failed to open pidfile /run/waydroid-lxc/dnsmasq.pid: Permission denied(アクセス許可が拒否されました) === |
||
+ | |||
+ | AppArmor ルールが設定されていない可能性があります。次のルールを追加します。 |
||
+ | |||
+ | {{hc|/etc/apparmor.d/usr.sbin.dnsmasq| |
||
+ | @{run}/waydroid-lxc/r, |
||
+ | @{run}/waydroid-lxc/* rw, |
||
+ | }} |
||
+ | === Waydroid シェル内のコマンド出力にアクセスできない、または見つからない === |
||
− | === Sometimes the physical keyboard does not work === |
||
+ | Arch ベースのディストリビューションには、[[Linuxコンテナ#基本的な使用法| lxc-attach の動作中に表示される恐れのある「バグ」]] があり、これにより、{{ic|adbd}} または {{ic|settings}} のような {{ic|waydroid shell}} 内のコマンドでこの問題が発生する可能性があります。 |
||
− | Press ''Left Alt'' key. |
||
+ | この問題を回避するには、{{ic|waydroid shell}} コマンドを次のように置き換えることが考えられます。 |
||
− | === '''dnsmasq: failed to open pidfile /run/waydroid-lxc/dnsmasq.pid: Permission denied''' === |
||
+ | # lxc-attach -P /var/lib/waydroid/lxc/ -n waydroid --clear-env |
||
+ | === WARNING: Service manager /dev/binder has died(dev/binderが停止しました) === |
||
− | apparmor rule is not set, goto /etc/apparmor.d/usr.sbin.dnsmasq |
||
− | and add below |
||
− | {{bc|#/etc/apparmor.d/usr.sbin.dnsmasq |
||
+ | [https://github.com/waydroid/waydroid/issues/136 Isuue 136] を参照してください。 |
||
− | @{run}/waydroid-lxc/ r, |
||
− | @{run}/waydroid-lxc/* rw, }} |
||
+ | [https://docs.kernel.org/accounting/psi.html PSI] を有効にする必要があります。 |
||
− | === Commands inside Waydroid shell outputs inaccessible or not found === |
||
+ | {{ic|1=psi=1}} を [[カーネル コマンド ライン]] に追加します。 |
||
− | On Arch based distributions there's a [[Linux Containers#Basic usage|"bug" that may appear while working with lxc-attach]] that may cause this issue with commands inside {{ic|waydroid shell}} like {{ic|adbd}} or {{ic|settings}}. |
||
− | A possible workaround for this would be replace the {{bc|# waydroid shell}} command with {{bc|# lxc-attach -P /var/lib/waydroid/lxc/ -n waydroid --clear-env}} |
||
+ | Liquorix カーネル [https://github.com/damentz/liquorix-package/commit/2dd0b878dbd27bdc5e796a7bd7384676df9e6764 は Waydroid では動作しません] は、PSI と互換性のない特定のスケジューラーを使用するため、注意してください。 |
||
− | === WARNING: Service manager /dev/binder has died === |
||
+ | === multi-GPU systemを使用すると表示がおかしくなる === |
||
− | See https://github.com/waydroid/waydroid/issues/136 |
||
+ | 現在、Waydroid はホスト コンポジターが実行されているのと同じ GPU 上で実行する必要があります。これを修正する 2 つの方法は、{{ic|/var/lib/waydroid/lxc/waydroid/config_nodes}} を編集して正しい GPU になるようにするか、コンポジターが実行される GPU を変更するかのいずれかです。 |
||
− | You should enable [https://docs.kernel.org/accounting/psi.html PSI]. |
||
− | Add {{ic|1=psi=1}} to the [[kernel command line]]. |
||
+ | == こちらも参照してください == |
||
− | == See also == |
||
* [https://github.com/waydroid/waydroid Waydroid GitHub repo] |
* [https://github.com/waydroid/waydroid Waydroid GitHub repo] |
2024年9月28日 (土) 22:06時点における版
関連記事
Waydroid は、通常の Linux システム上で完全な Android システムを起動するコンテナベースな手法です。
目次
- 1 前提条件
- 2 インストール
- 3 使い方
- 4 ネットワーク
- 5 ヒントとコツ
- 6 トラブルシューティング
- 6.1 一般的なヒント
- 6.2 ARM アプリと互換性がない
- 6.3 画面回転するとアプリが使えなくなる
- 6.4 クリップボード マネージャー サービスの起動に失敗します
- 6.5 物理キーボードが動作しない場合がある
- 6.6 dnsmasq: failed to open pidfile /run/waydroid-lxc/dnsmasq.pid: Permission denied(アクセス許可が拒否されました)
- 6.7 Waydroid シェル内のコマンド出力にアクセスできない、または見つからない
- 6.8 WARNING: Service manager /dev/binder has died(dev/binderが停止しました)
- 6.9 multi-GPU systemを使用すると表示がおかしくなる
- 7 こちらも参照してください
前提条件
CPU 要件
要件は CPU アーキテクチャによって異なります。詳しくは テーブルで確認することができます。
必要な CPU 命令があるかどうかは、cat /proc/cpuinfo
で確認することができます。
GPU 要件
Waydroid は現在 Intel GPU で最適に動作します。そのまますぐに使用できるはずです。
すべての AMD GPU はサポートされています。もし Waydroid が動作しない場合は、新しい Waydroid イメージ(イメージはRadeon 680M で動作します)をビルドするか、以下の NVIDIA の手順を試してみてください。
NVIDIA GPU は現在動作しませんが、2 つの回避策があります:
- 可能であれば統合グラフィックカードに切り替えます
- ソフトウェア レンダリングを使用します (#ソフトウェア レンダリング を参照)
Wayland セッションマネージャ
Waydroid は Wayland セッションマネージャーでのみ動作しますので、Wayland セッションであることを確認してください。
X11 を使用している場合でも、多くの Wayland セッション マネージャーはネストされたセッションをサポートしていることに注意してください (そのため、X11 セッション内で実行できます)。最も単純な例は cage です。
カーネル モジュール
まず、binder モジュールが付属しているカーネルを実行する必要があります。これらは Arch Linux のデフォルト カーネル (linux) の一部ではないため、これらのモジュールを同梱するカーネルをインストールする必要があります。
また、他のカーネルを使用するために、ブートローダーを設定する必要がある場合もあります。新しいカーネルでブートローダーを起動する方法については、wiki ページを参照してください。他のカーネル (のバージョン) での起動は、Linux システムの再起動が必要になる数少ないケースの 1 つです。 Waydroid を起動する前に、これらのモジュールを使用してカーネルを起動する必要があります。
互換性のあるカーネルを入手するには、複数の方法があります。
Linux-Zen を使用する
linux-zen カーネルには、必要なモジュールが含まれています。これは、カーネルをコンパイルする必要がなく (コンパイルには時間がかかります)、定期的に更新バージョンを受け取るため、最も快適な方法と言えます。
DKMS モジュール
binder_linux-dkmsAUR をインストールし、モジュール オプション devicesテンプレート:=binder,hwbinder,vndbinder
を指定して カーネル モジュール binder_linux
をロードします (バグレポートを参照)。
$ sudo modprobe binder-linux deviceテンプレート:=binder,hwbinder,vndbinder
カーネル 5.18 以降での問題を回避するには、カーネル パラメータ ibtテンプレート:=off
を使用する必要もあります。 /dev/binderfs
マウント時のセグメンテーション違反 を参照してください。
カーネルをビルドする
あるいは、必要なオプションを指定して linux カーネル、または他のカーネル パッケージ (>=5.7) を再コンパイルすることもできます。 カーネル#コンパイル も参照してください。
最小限のカーネルをビルドするときは、次の要件に留意してください。
- IPv6 のサポート。カーネルに IPv6 ネットワークが組み込まれていない場合、Waydroid では IPv4 接続が行われません。
- Netlink ソケット (
CONFIG_NF_CT_NETLINKテンプレート:=y
)。 - PSI (
CONFIG_PSIテンプレート:=y
)。 - ループブロック・デバイス (
CONFIG_BLK_DEV_LOOPテンプレート:=m
) - Waydroid を起動する前に、loop
モジュールをロードする必要があります。
コンパイル オプションを設定する場合、2 つのオプションを使用できます。
binder と binderfs です。両方の手順を以下に示します。
binder を使用する
このモジュールは、カーネルにコンパイルすることも (y
)、モジュールにコンパイルすることも (m
)、まったくコンパイルしないこともできます (n
)。また、構成内のすべての組み合わせが可能であるわけではなく、一部のオプションには他のオプションが必要になります。
以下の構成オプションは、binder をモジュールとしてコンパイルしますが、最後のオプションは、binder モジュールがロードされるときに、/dev/
ディレクトリに 3 つのデバイスが作成されることを指定します。
CONFIG_ANDROID=y CONFIG_ANDROID_BINDER_IPC=m CONFIG_ANDROID_BINDERFS=n CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
AUR からカーネルをビルドする場合、次の手順で構成を更新できます。
makepkg --nobuild
を実行します。これにより、ダウンロードされたソースが検証および展開され、prepare()
関数が実行されます。- カーネル ディレクトリの下部にある
.config
ファイル (ファイル名にドットを含む) を編集します。 prepare()
関数の最後にあるのは、おそらくコンフィグ (make olddefconfig
かもしれません) からの情報を使用して makefile を再生成するコマンドです。それをbuild()
関数に移動するか、自分で実行します。makepkg --noextract
を実行します。これは、makepkg --nobuild
が中断された場所から再開します。
bindingfs を使用する
binder カーネル モジュールは、複数のユーザーに問題を引き起こすことが知られています。これらの問題に対処するために、binderfs が作成されました。カーネルをコンパイルするときに、古い方法と新しい方法のどちらかを選択する必要があります。以下のオプションでは、代わりに bindingfs を使用します。
カーネル ソースには、構成オプションを設定するための簡単なスクリプトも付属しています。コンフィグを手動で編集する場合と同様に、依存関係のチェックは行われません。 .config
ファイルと同じディレクトリにある場合は、次のコマンドを実行できます:
$ scripts/config --enable CONFIG_ANDROID $ scripts/config --enable CONFIG_ANDROID_BINDER_IPC $ scripts/config --enable CONFIG_ANDROID_BINDERFS $ scripts/config --set-str CONFIG_ANDROID_BINDER_DEVICES ""
AUR からカーネルをビルドする場合、これらの行を PKGBUILD の適切な場所 (通常は prepare()
) に挿入するだけで十分です。
binder デバイスのセットアップ
Waydroid パッケージの最新バージョンがあることを確認してください。これは Waydroid が自動的に処理します。
インストール
必要に応じて、waydroid-imageAUR または waydroid-image-gappsAUR をインストールして、AUR を通じて必要な Android イメージを入手します。ただし、Waydroid 自体にイメージのダウンロードを処理させることをお勧めします。
Waydroid を初期化した後、最新の Android イメージがまだ利用できない場合は自動的にダウンロードされます。
# waydroid init
GAppsを利用して初期化するには:
# waydroid init -s GAPPS -f
次に、テンプレート:Waydroid-container.serviceを起動/有効化します。
これで Waydroid が動作するはずです。
使い方
waydroid-container.service
が start されていることを確認してから、次を実行します:
$ waydroid session start
Waydroid セッションがアクティブになりました。対話コマンドの例を次に示します:
GUI を起動します:
$ waydroid show-full-ui
シェルを起動します:
# waydroid shell
アプリケーションをインストールします:
$ waydroid app install $path_to_apk
アプリケーション一覧を取得します:
$ waydroid app list
アプリケーションを実行します:
$ waydroid app launch $package_name
ネットワーク
ネットワークはそのまま動作するはずですが、そうでない場合は、パケット転送 がカーネルで有効になっていることを確認し、Waydroid session start の実行 "前" にファイアウォールで次のルールを許可する必要があるかもしれません。
ufw を例として挙げます。
- DNS トラフィックを許可する必要があります:
# ufw allow 67
# ufw allow 53
- パケット転送を許可する必要があります:
# ufw default allow FORWARD
firewalld の場合は、次のコマンドを使用できます。
- DNS:
# firewall-cmd --zone=trusted --add-port=67/udp
# firewall-cmd --zone=trusted --add-port=53/udp
- パケット転送:
# firewall-cmd --zone=trusted --add-forward
- waydroid インターフェイスを信頼するプログラムに追加します:
# firewall-cmd --zone=trusted --add-interface=waydroid0
ヒントとコツ
ソフトウェアレンダリング
以下をすでに実行していることを確認してください:
# waydroid init
(詳細については、#インストール セクションを参照してください)
次に、以下を追加します。
/var/lib/waydroid/waydroid_base.prop
ro.hardware.gralloc=default ro.hardware.egl=swiftshader
最後に、waydroid-container.service
を 再起動 します。
表示領域の寸法設定
waydroid ウィンドウのサイズを設定するには、次のコマンドを使用して好みに合わせてサイズに調整します。
$ waydroid prop set persist.waydroid.width 576 $ waydroid prop set persist.waydroid.height 1024
次に、waydroid-container.service
を 再起動 します。
トラブルシューティング
問題が発生した場合は、公式の Issue Tracker を参照してください: Waydroid issue tracker。
一般的なヒント
Waydroid は開発が速いため、問題が発生した場合に、最初に行うべき手順のリストを次に示します。
- Waydroid パッケージが最新であることを確認してください。
# waydroid upgrade
を実行して、最新の Waydroid イメージがあることを確認してください- Waydroid をリセットします:
waydroid-container.service
を stop し、# waydroid init -f
を実行して、サービスを再度 start します。 - ちょっとしたクリーンアップを行うこともできます。
# rm -rf /var/lib/waydroid /home/.waydroid
$ rm -rf ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid
を実行します。
ARM アプリと互換性がない
Casualsnek の スクリプト を使用して、変換レイヤーをインストールします。
変換レイヤーの最適化のため、AMD CPU では libndk を使用し、Intel CPU では libhoudini を使用することをお勧めします。ただし、アプリによっては、ある変換レイヤーでは機能し、別の翻訳レイヤーでは機能しないものもあります。したがって、ゲームが動作しない場合やパフォーマンスが低下する場合は、両方を試す必要がある場合があります。
libndk arm translation をインストール
# python3 main.py install libndk
libhoudini arm translation をインストール
# python3 main.py install libhoudini
画面回転するとアプリが使えなくなる
Issue 70 を参照してください。
「F11」をクリックして、現在のアプリをウィンドウ モードに切り替えます。
クリップボード マネージャー サービスの起動に失敗します
python-pyclipAUR とその依存関係をグラフィカル セッションにインストールします (X11 の場合は xclip、Wayland の場合は wl-clipboard)。
物理キーボードが動作しない場合がある
左の Alt
キーを押してください。
dnsmasq: failed to open pidfile /run/waydroid-lxc/dnsmasq.pid: Permission denied(アクセス許可が拒否されました)
AppArmor ルールが設定されていない可能性があります。次のルールを追加します。
/etc/apparmor.d/usr.sbin.dnsmasq
@{run}/waydroid-lxc/r, @{run}/waydroid-lxc/* rw,
Waydroid シェル内のコマンド出力にアクセスできない、または見つからない
Arch ベースのディストリビューションには、 lxc-attach の動作中に表示される恐れのある「バグ」 があり、これにより、adbd
または settings
のような waydroid shell
内のコマンドでこの問題が発生する可能性があります。
この問題を回避するには、waydroid shell
コマンドを次のように置き換えることが考えられます。
# lxc-attach -P /var/lib/waydroid/lxc/ -n waydroid --clear-env
WARNING: Service manager /dev/binder has died(dev/binderが停止しました)
Isuue 136 を参照してください。
PSI を有効にする必要があります。
psi=1
を カーネル コマンド ライン に追加します。
Liquorix カーネル は Waydroid では動作しません は、PSI と互換性のない特定のスケジューラーを使用するため、注意してください。
multi-GPU systemを使用すると表示がおかしくなる
現在、Waydroid はホスト コンポジターが実行されているのと同じ GPU 上で実行する必要があります。これを修正する 2 つの方法は、/var/lib/waydroid/lxc/waydroid/config_nodes
を編集して正しい GPU になるようにするか、コンポジターが実行される GPU を変更するかのいずれかです。