Anbox
関連記事
Anbox は GNU/Linux ディストリビューションで Android を実行するための コンテナベース のソフトウェアです。
目次
Prerequisite
You need to run a kernel which comes with the ashmem and binder modules. They are not part of Arch Linux's default kernel (linux), thus you need to install a kernel which ships these modules. You might also need to configure your bootloader to use a different kernel. You have multiple options:
Using Linux-Zen
The 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.
Building a kernel
Alternatively, you can recompile the linux kernel — or other kernel packages (>=5.7) — with the necessary options. Please read Kernel#Compilation and Necessary config options below. You can also build a kernel package that already includes the specific patches from AUR, see AUR search "linux+anbox".
Necessary config options
Modules can either be compiled into the kernel (y
), into modules (m
), or not at all (n
). Also, not all combinations in the config are possible, and some options will require other options.
The config options below will compile ashmem and binder as modules, while the last option specifies that there will be three devices created in the /dev/
directory, when the binder module is loaded.
CONFIG_ASHMEM=m CONFIG_ANDROID=y CONFIG_ANDROID_BINDER_IPC=m CONFIG_ANDROID_BINDERFS=n CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
When building a kernel from the AUR, one can do it with these steps:
- run
makepkg --nobuild
, which will download the sources, verify and extract them and run theprepare()
function. - edit the
.config
file (with the dot in the filename), which is located at the base of the kernel directory. - at the end of the
prepare()
function was probably a command which regenerates the makefiles with information from the config, possiblymake olddefconfig
. Move that to thebuild()
function, or execute it yourself. - run
makepkg --noextract
, which will continue from the place wheremakepkg --nobuild
stopped.
config using binderfs
Not everybody was happy with the binder module in Linux. To address the 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.
With the kernel sources comes also a simple script to set config options. It will not do dependency checks, just like when editing the config by hand. When being in the same directory where the .config
file lies, one can execute the following commands:
scripts/config --module CONFIG_ASHMEM 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 ""
This script is handy when building a kernel from the AUR, as it is enough to insert these lines at the right place in the PKGBUILD.
Booting the new kernel
Please refer to the wiki page of your bootloader, to find out, how to boot with the new kernel. Booting into a newer kernel (version) is one of the few occasions when you have to reboot a Linux system. You should do that before starting Anbox.
インストール
anbox-gitAUR, anbox-imageAUR (もしくは Google のアプリや houdini も使いたい場合は anbox-image-gappsAUR), anbox-modules-dkms-gitAUR[リンク切れ: パッケージが存在しません], anbox-bridgeAUR[リンク切れ: パッケージが存在しません] をインストールしてください。
最新の 5.1 カーネルでは anbox-modules-dkms-gitAUR[リンク切れ: パッケージが存在しません] の PKGBUILD にパッチ [1] を適用しないと必要な binder モジュールがコンパイルできません。
anbox-container-manager.service
DKMS モジュールを使うのにコンピュータを再起動したくない場合、手動でロードすることができます:
# modprobe ashmem_linux # modprobe binder_linux
使用方法
anbox 内でネットワークを使えるようにするため anbox
を起動する前に毎回 anbox-bridge
を実行してください。
それから、デスクトップランチャーの Other カテゴリから android アプリケーションを実行できます。
adb を使ってデバッグしたい場合、android-tools をインストールしてください。
$ adb shell