わたすけです。
以前、個人のブログでこのような記事を書きました。
この記事はまだスマホを買い換える前、東方ロストワードをLinuxでプレイしよう!という考えのもと書いた記事ですが、Arch LinuxにAnboxを導入する日本語の記事って割と少ないらしく [要出典]、そこそこアクセスしてもらえるんですよね。
ただ、この記事は使ってみたけどだめだった~みたいなことも書いてある上、そもそも手順が抜けている部分があったため、これを期にいちから導入方法の記事を書くことにしました。snapを使用せずにArch LinuxにAnboxを導入します。
ちなみに書くきっかけとなったツイートはこれです。
1ヶ月も経ってしまうとは
検証環境
パッケージのインストールに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ストアからいろいろアプリをインストールしてみてください!
終わりに
ということで、Anboxの導入方法でした。書いたあとでこんな事を言うのも変ですが、参考サイト(ArchWiki)そのまま書いただけなので、わからないことがあれば翻訳して読んだほうが良いと思います。
参考
前回のブログ
コメント
zenカーネルはbinder-linuxとashmem-linuxを組み込みでロードするので,
modprobeも/etc/modules-load.d/anbox.confも不要だと思います。
ありがとうございます。修正しておきました。