AnboxをArch Linuxに導入する

ArchLinux

わたすけです。

以前、個人のブログでこのような記事を書きました。

Arch LinuxでAndroidアプリ動かす「Anbox」つかってみた - わたすけのへや
昨日、何故かわかりませんがこのような迷言を生み出してしまいました。 Androidソフトが起動するLinuxってあったっけ? — わたすけ (@Watasuke102) May 1, 2020 アホすぎる(A

この記事はまだスマホを買い換える前、東方ロストワードをLinuxでプレイしよう!という考えのもと書いた記事ですが、Arch LinuxにAnboxを導入する日本語の記事って割と少ないらしく [要出典]、そこそこアクセスしてもらえるんですよね。

ただ、この記事は使ってみたけどだめだった~みたいなことも書いてある上、そもそも手順が抜けている部分があったため、これを期にいちから導入方法の記事を書くことにしました。snapを使用せずにArch LinuxにAnboxを導入します。

ちなみに書くきっかけとなったツイートはこれです。

1ヶ月も経ってしまうとは


スポンサーリンク

検証環境

Arch Linuxです

パッケージのインストールにyayを使っています。AURパッケージをインストールするため、まずyay等のAURヘルパーをインストールしておいてください。

準備

もしAlter Linuxを使っている場合はわりと簡単です。Alter Linuxはカーネルにlinux-zenを採用しており、zenカーネルにはAnboxを動かすのに必要なモジュールが含まれているからです。

そうでない場合、自分でカーネルをビルドする必要があるらしいですが、正直良くわからなかったので(怒られそう)、linux-zenカーネルをインストールしてどうにかします。
このとき、グラフィックボードのドライバをインストールする必要があるかもしれません。

$ yay -S linux-zen linux-zen-headers
# NVIDIAのグラボを使用している人
$ yay -S nvidia-dkms

インストールが終わったら、grubからlinux-zenカーネルでLinuxを起動します。そのために再起動しますが、再起動前にgrubを更新しておきましょう。

$ sudo grub-mkconfig -o /boot/grub/grub.cfg

grubからzenカーネルでブートする項目を選択して起動しましょう。

モジュールの読み込み

2021/04/22追記:zenカーネルはモジュール読み込みを自動でやってくれるため、モジュール読み込みは不要らしいです。コメントありがとうございます。

Anboxを起動するのに必要なモジュールを読み込みます。一回限りであれば以下のコマンドで読み込むことができます。

$ modprobe -a binder-linux ashmem-linux

起動時に自動で読み込むには、nanoなど任意のエディタで/etc/modules-load.d/anbox.conf を作成し、以下の項目を貼り付けて保存します。

ashmem_linux
binder_linux

バインダーファイルシステムのマウント

binderfsをマウントします。systemd-tmpfilesを使って起動時にディレクトリを作成し、マウントするという流れです。

まず、任意のエディタで/etc/tmpfiles.d/anbox.conf を作成し、以下の内容を貼り付けます。

d! /dev/binderfs 0755 root root

次に、起動時に自動でマウントするように、fstabを編集します。/etc/fstab を開き、以下の内容を最後に追記してください。

none                         /dev/binderfs binder   nofail  0      0

その後、再起動してください。fstabを編集しなかった場合、以下のコマンドを実行してください。

$ mount -t binder none /dev/binderfs

インストール

Anboxをインストールします。左から順にAnbox本体、Androidイメージ(HoudiniとOpenGApps入り)です。

$ yay -S anbox-git anbox-image-gapps

インストールには時間がかかります。結構時間がかかるので、ウエハースでも食べて待ちましょう。

インストールが終わったら、サービスを有効化します。

$ systemctl enable anbox-container-manager.service
$ systemctl start anbox-container-manager.service

インターネット関連の設定

ここでAnboxを起動しても、インターネット接続がないため、Google Playストア等からアプリをダウンロードすることができません。

インターネット接続を有効化するためには、スクリプトを使う方法と、NetworkManagerを利用する方法があります。systemdとNetworkManagerを使用していない場合はスクリプトを使う必要がありますが、そうでない場合はNetworkManagerを利用してください。スクリプトはiptablesを直接編集するため、現代のLinux環境と相性が悪く、また将来的に不具合が起こる可能性が比較的高いからです。

以下はコマンドの例です。

$ nmcli con add type bridge ifname anbox0 -- connection.id anbox-net ipv4.method shared ipv4.addresses 192.168.250.1/24
  • connection.id はAnbox上で表示される接続の名前です。例では anbox-net ですが、必要に応じて変更してください。

以下のコマンドを入力してください。

$ curl https://raw.githubusercontent.com/anbox/anbox/master/scripts/anbox-bridge.sh > anbox-bridge.sh
$ sudo sh anbox-bridge.sh start

起動

メニュー等からAnboxを起動します。Plasmaであれば、Lost&Foundの欄にありました。

起動直後の画面

しばらく待つと、「Anbox Application Manager」が起動します。そこからはGoogle Playストアからいろいろアプリをインストールしてみてください!

やった〜(左上はアイビスペイント、右上はYouTube)

終わりに

ということで、Anboxの導入方法でした。書いたあとでこんな事を言うのも変ですが、参考サイト(ArchWiki)そのまま書いただけなので、わからないことがあれば翻訳して読んだほうが良いと思います。

参考

前回のブログ

https://blog.fascode.net/2021/03/17/qt-doudemoii-tips/

コメント

  1. iron より:

    zenカーネルはbinder-linuxとashmem-linuxを組み込みでロードするので,
    modprobeも/etc/modules-load.d/anbox.confも不要だと思います。

タイトルとURLをコピーしました