「Waydroid」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(言語間リンクの追加 (中国語版はうまく転送されない))
(最新版への翻訳・加筆)
11行目: 11行目:
 
{{Style|Need to improve style.}}
 
{{Style|Need to improve style.}}
   
Waydroidは、通常の GNU/Linux システム上で完全な Android システムを起動するためのコンテナベースのアプローチです。
+
[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 いる場合でも、多くの Wayland セッションマネージャはネストされたセッションをサポートしていることに注意してください(X11 セッションの中で実行することができます
+
X11 を使用している場合でも、多くの Wayland セッション マネージャはネストされたセッションをサポートしていることに注意してください (そのため、X11 セッションで実行できます)。最も単純な例は {{pkg|cage}} です
   
=== Kernel Modules ===
+
=== カーネル モジュール ===
   
  +
まず、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 modules ====
+
==== 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.
 
   
==== Building a kernel ====
+
==== カーネルをビルドする ====
   
  +
あるいは、必要なオプションを指定して {{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.
 
# run {{ic|makepkg --noextract}}, which will continue from the place where {{ic|makepkg --nobuild}} stopped.
+
# {{ic|makepkg --noextract}} を実行します。これは、{{ic|makepkg --nobuild}} が中断された場所から再開します。
   
===== Using binderfs =====
+
===== 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()}}.
 
   
==== Setup binder devices ====
+
==== binder デバイスのセットアップ ====
   
  +
Waydroid パッケージの最新バージョンがあることを確認してください。これは Waydroid が自動的に処理します。
Make sure you have the latest version of Waydroid package, and Waydroid will take automatically care of this.
 
   
== Installation ==
+
== インストール ==
   
[[Install]] the {{AUR|waydroid}} package.
+
{{AUR|waydroid}} を [[インストール]] します。
   
Optionally, install {{AUR|waydroid-image}} or {{AUR|waydroid-image-gapps}} to provide the needed Android image through AUR. It is however recommended to let Waydroid itself handle downloading the images.
+
必要に応じて、{{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''.
 
   
Taking {{pkg|ufw}} as an example:
+
{{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}}
   
{{Note|We assume that interface {{ic|waydroid0}} created by waydroid should be in the firewalld zone {{ic|trusted}} automatically. If not so, please adjust those commands above or move interface {{ic|waydroid0}} to {{ic|trusted}}. You may also need {{bc|# firewall-cmd --runtime-to-permanent}} to make your changes exist after a restart.}}
+
{{|waydroid によって作成されたインターフェース {{ic|waydroid0}} は自動的に firewalld ゾーン {{ic|trusted}} に置かれることを想定しています。そうでない場合は、上記のコマンドを調整するか、インターフェース {{ic|waydroid0}} {{ic|trusted}} に移動してください。再起動後も変更を維持するには、{{bc|# firewall-cmd --runtime-to-permanent}} も必要になる場合があります。}}
   
== Troubleshooting ==
+
== ヒントとコツ ==
   
  +
=== ソフトウェアレンダリング ===
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時点における版

関連記事

この記事あるいはセクションで使われている用語や表現には問題が存在します。
議論: Need to improve style. (議論: トーク:Waydroid#)

Waydroid は、通常の Linux システム上で完全な Android システムを起動するコンテナベースな手法です。

前提条件

CPU 要件

要件は CPU アーキテクチャによって異なります。詳しくは テーブルで確認することができます。

必要な CPU 命令があるかどうかは、cat /proc/cpuinfo で確認することができます。

GPU 要件

Waydroid は現在 Intel GPU で最適に動作します。そのまますぐに使用できるはずです。

すべての AMD GPU はサポートされています。もし Waydroid が動作しない場合は、新しい Waydroid イメージ(イメージはRadeon 680M で動作します)をビルドするか、以下の NVIDIA の手順を試してみてください。

NVIDIA GPU は現在動作しませんが、2 つの回避策があります:

  1. 可能であれば統合グラフィックカードに切り替えます
  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 つのオプションを使用できます。

binderbinderfs です。両方の手順を以下に示します。
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 からカーネルをビルドする場合、次の手順で構成を更新できます。

  1. makepkg --nobuild を実行します。これにより、ダウンロードされたソースが検証および展開され、prepare() 関数が実行されます。
  2. カーネル ディレクトリの下部にある .config ファイル (ファイル名にドットを含む) を編集します。
  3. prepare() 関数の最後にあるのは、おそらくコンフィグ (make olddefconfigかもしれません) からの情報を使用して makefile を再生成するコマンドです。それを build() 関数に移動するか、自分で実行します。
  4. 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 が自動的に処理します。

インストール

waydroidAURインストール します。

必要に応じて、waydroid-imageAUR または waydroid-image-gappsAUR をインストールして、AUR を通じて必要な Android イメージを入手します。ただし、Waydroid 自体にイメージのダウンロードを処理させることをお勧めします。

Waydroid を初期化した後、最新の Android イメージがまだ利用できない場合は自動的にダウンロードされます。

# waydroid init

GAppsを利用して初期化するには:

# waydroid init -s GAPPS -f

次に、テンプレート:Waydroid-container.service起動/有効化します。

これで Waydroid が動作するはずです。

使い方

waydroid-container.servicestart されていることを確認してから、次を実行します:

$ 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 は開発が速いため、問題が発生した場合に、最初に行うべき手順のリストを次に示します。

  1. Waydroid パッケージが最新であることを確認してください。
  2. # waydroid upgrade
    を実行して、最新の Waydroid イメージがあることを確認してください
  3. Waydroid をリセットします: waydroid-container.servicestop し、
    # waydroid init -f
    を実行して、サービスを再度 start します。
  4. ちょっとしたクリーンアップを行うこともできます。
    # 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 を変更するかのいずれかです。

こちらも参照してください