「Anbox」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(アーカイブ)
タグ: 新規リダイレクト
 
(同じ利用者による、間の17版が非表示)
1行目: 1行目:
  +
#redirect [[ArchWiki:アーカイブ]]
[[Category:仮想化]]
 
  +
[[Category:アーカイブ]]
[[en:Anbox]]
 
[[ru:Anbox]]
 
{{Related articles start}}
 
{{Related|Linux Containers}}
 
{{Related articles end}}
 
Anbox は GNU/Linux ディストリビューションで Android を実行するための [[Linux_Containers|コンテナベース]] のソフトウェアです。
 
 
== Prerequisite ==
 
{{Note|The dkms modules do not work on kernels ≥5.7 anymore. Follow the instructions below instead. For older kernels see [[#Old kernels|Old kernels]].}}
 
 
You need to run a kernel which comes with the ashmem and binder modules. They are not part of Arch Linux's default kernel ({{Pkg|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 {{Pkg|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 {{Pkg|linux}} kernel — or other kernel packages (>=5.7) — with the necessary options. Please read [[Kernel#Compilation]] and [[#Necessary config options|Necessary config options]] below.
 
 
You can also build a kernel package that already includes the specific patches from [[AUR]], see [https://aur.archlinux.org/packages/?K=linux+anbox  AUR search "linux+anbox"].
 
 
==== Necessary config options ====
 
 
Modules can either be compiled into the kernel ({{ic|y}}), into modules ({{ic|m}}), or not at all ({{ic|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 {{ic|/dev/}} directory, when the binder module is loaded.
 
 
{{bc|1=
 
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 {{ic|makepkg --nobuild}}, which will download the sources, verify and extract them and run the {{ic|prepare()}} function.
 
# edit the {{ic|.config}} file (with the dot in the filename), which is located at the base of the kernel directory.
 
# at the end of the {{ic|prepare()}} function was probably a command which regenerates the makefiles with information from the config, possibly {{ic|make olddefconfig}}. Move that to the {{ic|build()}} function, or execute it yourself.
 
# run {{ic|makepkg --noextract}}, which will continue from the place where {{ic|makepkg --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 {{ic|.config}} file lies, one can execute the following commands:
 
 
{{bc|
 
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.
 
 
== インストール ==
 
 
{{AUR|anbox-git}}, {{AUR|anbox-image}} (もしくは Google のアプリや houdini も使いたい場合は {{AUR|anbox-image-gapps}}), {{AUR|anbox-modules-dkms-git}}{{Broken package link|パッケージが存在しません}}, {{AUR|anbox-bridge}}{{Broken package link|パッケージが存在しません}} をインストールしてください。
 
 
最新の 5.1 カーネルでは {{AUR|anbox-modules-dkms-git}}{{Broken package link|パッケージが存在しません}} の PKGBUILD にパッチ [https://aur.archlinux.org/pkgbase/anbox-git/#comment-694481] を適用しないと必要な binder モジュールがコンパイルできません。
 
 
以下のサービスを[[起動]]・[[有効化]]してください:
 
 
* {{ic|anbox-container-manager.service}}
 
 
DKMS モジュールを使うのにコンピュータを再起動したくない場合、手動でロードすることができます:
 
# modprobe ashmem_linux
 
# modprobe binder_linux
 
 
== Network ==
 
 
=== Via NetworkManager ===
 
 
If you are using [[NetworkManager]] you can use it to configure the networking.
 
 
Execute the following command to create the bridge connection:
 
 
$ nmcli con add type bridge ifname anbox0 -- connection.id anbox-net ipv4.method shared ipv4.addresses 192.168.250.1/24
 
 
* {{ic|ifname anbox0}} specifies the bridge interface name, in this case {{ic|anbox0}}. Do not change this as Anbox will only detect the bridge interface if it is named {{ic|anbox0}}.
 
* {{ic|connection.id anbox-net}} specifies the name of the connection to be {{ic|anbox-net}} when it appears in [[NetworkManager]]. You can change this if you wish.
 
* {{ic|ipv4.method shared}} instructs [[NetworkManager]] to create a NAT network and route outgoing packets according to the system routing rules. For that, the {{Pkg|dnsmasq}} package is required. [[dnsmasq]] does not needs to be configured or be started as systemd service, it will be used behind the scenes by NetworkManager — if it is not available, this step will fail silently. You can leave this and the {{ic|ipv4.addresses}} parameter out if you wish to attach the Anbox container directly to a specific network, see [[Network bridge#With NetworkManager]]. If you choose this option, you must also change the network configuration of the container in {{ic|anbox-container-manager.service}}, see the next bullet point.
 
* {{ic|ipv4.addresses 192.168.250.1/24}} specifies the default gateway and subnet of the NAT network. If you wish to change this (e.g. to {{ic|192.168.42.1/24}}) you must also indicate the new subnet to anbox in the {{ic|anbox-container-manager.service}} using: {{ic|1=--container-network-address=192.168.42.2/24 --container-network-gateway=192.168.42.1}}
 
 
[[NetworkManager]] will automatically setup the bridge every reboot so you only need to execute the command once.
 
 
=== Via systemd-networkd ===
 
 
The package {{AUR|anbox-git}} provides configuration files for {{ic|systemd-networkd}} in {{ic|/usr/lib/systemd/network/}} to enable networking in anbox.
 
 
Therefore, you can [[start/enable]] {{ic|systemd-networkd}} before starting {{ic|anbox-container-manager.service}}.
 
 
=== Via anbox-bridge script ===
 
 
Alternatively you can use the anbox-bridge script [https://raw.githubusercontent.com/anbox/anbox/master/scripts/anbox-bridge.sh used by the project].
 
 
You must execute {{ic|anbox-bridge}} every time before starting {{ic|anbox-container-manager.service}} in order to get network working in Anbox. The easiest solution for that is to create a drop-in file for the service.
 
 
{{hc|/etc/systemd/system/anbox-container-manager.service.d/enable-anbox-bridge.conf|2=
 
[Service]
 
ExecStartPre=/usr/bin/anbox-bridge start
 
ExecStopPost=/usr/bin/anbox-bridge stop
 
}}
 
 
== 使用方法 ==
 
 
anbox 内でネットワークを使えるようにするため {{ic|anbox}} を起動する前に毎回 {{ic|anbox-bridge}} を実行してください。
 
 
それから、デスクトップランチャーの '''Other''' カテゴリから android アプリケーションを実行できます。
 
 
adb を使ってデバッグしたい場合、{{Pkg|android-tools}} をインストールしてください。
 
 
$ adb shell
 

2024年9月7日 (土) 20:42時点における最新版