sys.memfd_use はデフォルトで false に設定され、無効にしておきます。

sys.memfd_use はデフォルトで false に設定され、無効にしておきます。

Debianノートブック(Storytel)でAndroidアプリケーションを実行しようとしています。

リポジトリからWaydroidをインストールしましたが、初期化に失敗しました。

root@x1v5:/etc/apt# waydroid init
[23:15:43] ERROR: Binder node "vndbinder" for waydroid not found
[23:15:43] See also: <https://github.com/waydroid>
Run 'waydroid log' for details.

Waydroidのログは次のとおりです。

root@x1v5:/etc/apt# waydroid log
(021820) [23:09:48] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021820) [23:09:48] ERROR: Binder node "vndbinder" for waydroid not found
(021820) [23:09:48] See also: <https://github.com/waydroid>
(021820) [23:09:48] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(021826) [23:10:28] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021826) [23:10:28] ERROR: Binder node "vndbinder" for waydroid not found
(021826) [23:10:28] See also: <https://github.com/waydroid>
(021826) [23:10:28] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(021831) [23:10:48] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021831) [23:10:48] ERROR: Binder node "vndbinder" for waydroid not found
(021831) [23:10:48] See also: <https://github.com/waydroid>
(021831) [23:10:48] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(021932) [23:14:28] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(021932) [23:14:28] *** output passed to waydroid stdout, not to this log ***
(021968) [23:15:43] % modprobe binder_linux devices="anbox-vndbinder,anbox-hwbinder"
(021968) [23:15:43] ERROR: Binder node "vndbinder" for waydroid not found
(021968) [23:15:43] See also: <https://github.com/waydroid>
(021968) [23:15:43] Traceback (most recent call last):
  File "/usr/lib/waydroid/tools/__init__.py", line 64, in main
    actions.init(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 110, in init
    setup_config(args)
  File "/usr/lib/waydroid/tools/actions/initializer.py", line 97, in setup_config
    helpers.drivers.setupBinderNodes(args)
  File "/usr/lib/waydroid/tools/helpers/drivers.py", line 141, in setupBinderNodes
    raise OSError('Binder node "vndbinder" for waydroid not found')
OSError: Binder node "vndbinder" for waydroid not found

(022124) [23:20:40] % tail -n 60 -F /var/lib/waydroid/waydroid.log
(022124) [23:20:40] *** output passed to waydroid stdout, not to this log ***

どのように動作させることができますか?

答え1

バインダードライバを有効にするには、次のパッケージを配列どおりにインストールします。

libglibutil、libgbinder、python3-gbinder、Waydroid

このパッケージは次の場所にあります。https://repo.waydro.id/erfan/bookworm/

確認するには、次のコマンドを使用します。

sudo modprobe バインダー_Linux

致命的なエラーが発生すると失敗しますが、再度プロンプトが表示されても問題はありません。

警告する:

Debian 12 BookwormのWaydroidには、バインダードライバだけでなくmemfdドライバ(ashmemドライバの置き換え)も必要です。

インストールされている最終バージョン12.0(実験ではありません)で、スタートアップフォルダにある「config-6.1.0-9-amd64」を開き、memfdを検索してください。結果:

CONFIG_MEMFD_CREATE=y(yは例を意味する)

Waydroid 17.1を使用するには、独自のlibhoudini.so(libhoudiniに付属のWaydroid 18.1とは逆)がないので、両方の画像をダウンロードしてください。

「system.img」と「vendor.img」。

これらの画像は次の場所にあります。

https://sourceforge.net/projects/blissos-dev/files/waydroid/lineage/

Waydroid 17.1の「system.img」ルートディレクトリで「init.rc」を開き、memfdを検索してください。結果:

sys.memfd_use はデフォルトで false に設定され、無効にしておきます。

申請およびサプライヤーの手続きが確定するまで

ashmem fd の IOCTL はもう存在しません。

setprop sys.use_memfd 偽

「false」を「true」に変更する必要があります。

答え2

コメントにBE:「Lineageaのバージョンを確認するには?」

系譜のバージョンを確認するには、解凍またはインストールを必要とせずに、アーカイブプログラムを使用してsystem.imgを開きます。イメージは「var/lib/images」または「usr/share/waydroid-extra」にあります。とにかく、現在のWaydroidは2つのバージョン、つまりLineage 17.1(Android 10ベース)とLineage 18.1(Intel独自のAndroid 11ベース)に基づいています。

もちろん、Lineage 19.1に基づくWaydroidはありません(Android 12に基づいており、バッテリ寿命を節約するために使用するメモリ量に制限があります)。 Android 12は携帯電話と小型タブレットでのみ利用可能です。

「CONFIG_MEMFD_CREATE = y」に関連して、Debian Bookwormとカーネル5.18+がインストールされているいくつかのLinuxディストリビューションに含まれています。 Waydroidのsystem.img(Android 10または11)と最新のLinuxバージョンとの競合を示しています。

Waydroid画像は圧縮され保護されています。 (ルートでも修正できません。)

https://sourceforge.net/projects/waydroid/files/images/

ここから変更できるさまざまな画像をダウンロードできます。

https://sourceforge.net/projects/blissos-dev/files/waydroid/lineage/lineage-17.1

ルートに変更するには、次の手順に従います。

  1. 解凍し、「system.img」と「vendor.img」を取得します。

  2. Virtualboxにオペレーティングシステム「OS」を隔離された環境にインストールしてから、etcher(https://github.com/balena-io/etcher)ゲストオペレーティングシステムから。

  3. 仮想USBコントローラを介してこのゲストを2 GBの動的仮想ディスク(vdi、vhd、vmdk)に接続します(静的な場合は「init.rc」を変更できません)。 Virtualbox 6.xではUSB 1.1が使用されます(実際のUSBではないため遅くはありません)。そうでない場合は、Virtual USB の特許が期限切れになったりキャンセルされたりし、他の機能を維持しながら Virtualbox 拡張を必要としないので、USB 2 または 3 で Virtualbox 7.x を使用してください。 etcher を使用して動的仮想ディスクに "system.img" を書き込みます。作成が完了したら、nemo(マウスの右ボタンをクリックしてルートとしてフォルダを開くことができるファイルマネージャ)を使用して「init.rc」を選択し、右クリックして次の行を検索してテキストエディタで開きます。 「setprop sys.use_memfd false」、ここで「false」を「true」に変更する必要があります。 root権限を忘れた場合、ファイルは保存されないか、偽に保存されます(空白)。

  4. ホストオペレーティングシステムは、任意の方法を使用して動的仮想ディスクをrawイメージに変換します(rawイメージの場合は、新しい拡張子の名前をimgに変更します)。

これで、ashmemドライバの代わりにDebian Bookwormのmemfdドライバをサポートするように "system.img"(再コンパイルしない)をパッチしました。

関連情報