有馬総一郎のブログ

(彼氏の事情)

2026年08月11日 07:11:10 JST - 6 minute read - Linux

Pop!_OS 24.04にWaydroidをインストールしてLINEを使えるようにする

Waydroid

BottlesでLINEを使用していたが、以下のようなシステムファイルの電子署名検証が原因でエラーとなってしまう。

Bottles
署名検証エラー
Security verification failed.
The following files failed security verification:
Restore binary process will be start.
File: C:\windows\system32\CRYPT32.dll
Reason: NO_SIGNATURE

古いバージョンのLINEをインストールすれば使えてはいたのだけど、勝手にアップデートされたりするので使用を諦めて、 WaydroidをインストールしてLINEを使うことにした。

とりあえず、 (1) How To Run Android Apps Within POP!_OS Using WayDroid - YouTubeを見て真似し実行したが、半年しか経ってないのに、上手く行かなかった。失敗も含めて書き残しておく。

binderfs機能が最初からカーネル本体1にネイティブで組み込まれているので、以下のAnboxカーネルモジュールのインストール処理は不要だった。

Anboxカーネルモジュールのインストール処理(やってはいけない)

$ git clone https://github.com/choff/anbox-modules
$ cd anbox-modules
$ sudo ./INSTALL.sh
・・・中略・・・
modprobe: ERROR: could not insert 'binder_linux': Device or resource busy
ls: '/dev/binder' にアクセスできません: そのようなファイルやディレクトリはありません
chmod: 参照先がないシンボリックリンク '/dev/binder' を操作できません
chmod: 参照先がないシンボリックリンク '/dev/hwbinder' を操作できません
chmod: 参照先がないシンボリックリンク '/dev/vndbinder' を操作できません

sudo ./INSTALL.shすると失敗する。しかも、不用意に行うと、私の場合は、Waydroid起動時にカーネルパニックが起こり、一度綺麗にして再起動する必要があった。

Kernel Panic
Kernel Panic

以下は、sudo ./INSTALL.shを実行してしまった場合のクリーニング処理となる。

クリーニング処理(本来は不要)

不要なDKMSモジュールを削除する。

$ sudo dkms remove anbox-binder/1 --all
Module anbox-binder-1 for kernel 7.0.11-76070011-generic (x86_64).
Before uninstall, this module version was ACTIVE on this kernel.
binder_linux.ko.zst:
 - Uninstallation
   - Deleting from: /lib/modules/7.0.11-76070011-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.
depmod...

競合しているリンクとマウントを削除する。

$ sudo umount /dev/binderfs 2>/dev/null
$ sudo rm -rf /usr/src/anbox-binder-1
$ sudo rm -f /etc/modules-load.d/anbox.conf /lib/udev/rules.d/99-anbox.rules
$ sudo rm -f /dev/binder /dev/hwbinder /dev/vndbinder
$ sudo rm -rf /dev/binderfs

binder_linuxは古い外部拡張のカーネルモジュール名なので、Pop!_OS 24.04(カーネル7.x系)では存在せずエラーとなる。modprobeコマンドでの読み込みも不要である。削除後、sudo rebootして再起動する。

$ sudo rmmod binder_linux
rmmod: ERROR: Module binder_linux is not currently loaded
$ sudo modprobe binder_linux devices=binder,hwbinder,vndbinder
modprobe: FATAL: Module binder_linux not found in directory /lib/modules/7.0.11-76070011-generic

カーネル内蔵のbinderfs機能を直接マウントする

  1. binderfs のマウントとシンボリックリンク作成

    $ sudo mkdir -p /dev/binderfs
    $ sudo mount -t binder binder /dev/binderfs
    $ ls -l /dev/binderfs
    合計 0
    crw------- 1 root root 240, 1  8月 10 09:03 binder
    crw------- 1 root root 240, 0  8月 10 09:03 binder-control
    drwxr-xr-x 2 root root      0  8月 10 09:03 features
    crw------- 1 root root 240, 2  8月 10 09:03 hwbinder
    crw------- 1 root root 240, 3  8月 10 09:03 vndbinder
    $ sudo ln -sf /dev/binderfs/binder /dev/binder
    $ sudo ln -sf /dev/binderfs/hwbinder /dev/hwbinder
    $ sudo ln -sf /dev/binderfs/vndbinder /dev/vndbinder
    $ ls -l /dev/binder  
    lrwxrwxrwx 1 root root 20  8月 10 09:04 /dev/binder -> /dev/binderfs/binder
    
  2. binderfsが自動マウントされるように設定する。毎回のブート時に/dev/binderfsが再作成されるように構成する。

    $ sudo bash -c 'cat << "EOF" > /etc/tmpfiles.d/binderfs.conf
    d /dev/binderfs 0755 root root -
    L+ /dev/binder - - - - /dev/binderfs/binder
    L+ /dev/hwbinder - - - - /dev/binderfs/hwbinder
    L+ /dev/vndbinder - - - - /dev/binderfs/vndbinder
    EOF'
    $ sudoedit /etc/fstab
    $ sudo systemd-tmpfiles --create
    $ echo "binder /dev/binderfs binder defaults,x-systemd.mkdir 0 0" | sudo tee -a /etc/fstab
    binder /dev/binderfs binder defaults,x-systemd.mkdir 0 0
    

Waydroidをインストール

$ sudo apt install curl ca-certificates -y
$ curl -s https://repo.waydro.id | sudo bash
$ sudo apt install waydroid
$ sudo systemctl restart waydroid-container
$ sudo systemctl status waydroid-container
● waydroid-container.service - Waydroid Container
     Loaded: loaded (/usr/lib/systemd/system/waydroid-container.service; enabled; preset: enabled)
     Active: active (running) since Mon 2026-08-10 10:08:44 JST; 7s ago
   Main PID: 33031 (waydroid)
      Tasks: 2 (limit: 30738)
     Memory: 16.1M (peak: 16.5M)
        CPU: 103ms
     CGroup: /system.slice/waydroid-container.service
             └─33031 /usr/bin/python3 /usr/bin/waydroid container start
 8月 10 10:08:44 pop-os systemd[1]: Starting waydroid-container.service - Waydroid Container...
 8月 10 10:08:44 pop-os systemd[1]: Started waydroid-container.service - Waydroid Container.

UFWのルーティングブロックを解除

sudo waydroid init -s GAPPSでGoogle Playをインストールすると、Google Play services keeps stoppingと表示されて安定しないため、UFWでwaydroid0インターフェースの通過を許可する。

Waydroid
Google Play services keeps stopping
$ sudo ufw route allow in on waydroid0
$ sudo ufw allow in on waydroid0
$ sudo ufw reload
$ sudo ufw status verbose
状態: アクティブ
ロギング: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
新しいプロファイル: skip

To                         Action      From
--                         ------      ----
Anywhere on waydroid0      ALLOW IN    Anywhere
Anywhere (v6) on waydroid0 ALLOW IN    Anywhere (v6)

Anywhere                   ALLOW FWD   Anywhere on waydroid0
Anywhere (v6)              ALLOW FWD   Anywhere (v6) on waydroid0

Waydroidはホストと仮想ネットワークwaydroid0で通信するので、Android側からはデフォルトでEthernet(有線LAN)として認識されて、そのままインターネットに繋がるようになる。

Waydroid

ARMアプリ動作に必要なlibndkとmicroGを導入

しかし、それでも動作が不安定に感じられたことに加え、仮にGoogle Playを入れるとしても専用アカウントを用意するのが面倒だったため、Googleサービス無しのVANILLA+microGで進めることにした。

sudo rm -rf /var/lib/waydroid ~/.local/share/waydroidでデータを削除し、sudo waydroid initで初期化し直した。

$ sudo waydroid init
$ git clone https://github.com/casualsnek/waydroid_script
$ cd waydroid_script
$ python3 -m venv venv
$ ./venv/bin/pip install -r requirements.txt
$ sudo ./venv/bin/python3 main.py install microg libndk
INFO: MicroG-Standard installation finished
$ waydroid session stop
$ waydroid session start
Waydroid

xapk形式のLINEをインストールする

APKPure - Android向けゲームとアプリを無料でダウンロードからLINEのapkを探したが、xapk形式しか見つからなかった。waydroid app install LINE_+Calls+\&+Messages_15.15.1_APKPure.xapkとしてもインストールできない。xapkapkなどをまとめたアーカイブ形式なので、解凍してadbで接続してインストールする。

$ unzip 'LINE_+Calls+&+Messages_15.15.1_APKPure.xapk'
Archive:  LINE_+Calls+&+Messages_15.15.1_APKPure.xapk
 extracting: jp.naver.line.android.apk
 extracting: icon.png
 extracting: config.mdpi.apk
 extracting: config.armeabi_v7a.apk
 extracting: manifest.json
$ sudo waydroid shell ip addr show eth0
2: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:f9:d3:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.240.112/24 brd 192.168.240.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::1b38:b831:1a5a:f34f/64 scope link stable-privacy
       valid_lft forever preferred_lft forever
$ adb connect 192.168.240.112:5555
already connected to 192.168.240.112:5555
$ adb install-multiple jp.naver.line.android.apk config.armeabi_v7a.apk  config.mdpi.apk
Success

waydroid prop get persist.waydroid.host_ipsudo waydroid shell ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'ではWaydroidのIPアドレスが分からなかったため、sudo waydroid shell ip addr show eth0を実行して取得した。

Waydroid

Aurora Storeインストール

Aurora Storeはスクリプト経由のsudo ./venv/bin/python3 main.py install aurorastoreコマンドではインストールできなくなっている。

$ sudo ./venv/bin/python3 main.py install aurorastore
usage: main.py install [-h] [-c CA_CERT_FILE]
                       {gapps,microg,libndk,libhoudini,magisk,mitm,smartdock,widevine} [{gapps,microg,libndk,libhoudini,magisk,mitm,smartdock,widevine} ...]
main.py install: error: argument app: invalid choice: 'aurorastore' (choose from 'gapps', 'microg', 'libndk', 'libhoudini', 'magisk', 'mitm', 'smartdock', 'widevine')

しかし、F-Droid Clientとして AuroraDroidがインストール済みなので、F-Droidレポジトリ経由でインストールできる。

Waydroid

日本語入力は、 Gboard - the Google KeyboardなどをAurora Store経由でインストールすればできる。

CPUやメモリの消費量もBottlesより少なくなったうえ、動作も軽快だ。


  1. Pop!_OS 24.04 LTS x86_64の Kernel: 7.0.11-76070011-generic の場合 ↩︎