在 WSL 2 下运行 Anbox
介绍
这本来是我之前在 reddit 上面发的一个 帖子. 现在干脆把它重新写成中文, 姑且算是给自己引流.
Anbox 实现了基于 lxc 的 Android on Linux 支持, 由于 WSL 2 就是完整的 Linux, 于是稍加折腾就能跑起来了.
安装 anbox
我在 copr 上有现成的 Anbox build, 直接安装即可. 我使用的 WSL 内发行版是 Fedora Remix.
Ubuntu 上我也试过, 但是不能正常显示(窗口啥都没有),
但是 Android 跑起来了, 可能是 SDL 的锅. 跑
Arch 的 WSL 也能跑起来 步骤几乎相同.
1
2$ sudo dnf copr enable yanqiyu/anbox
$ sudo dnf install anbox
从源代码编译
你需要 anbox-modules 和 kernel
的源代码. 内核源代码选择和你的 WSL
一致的版本(uname -r
).
我这儿是 4.19.84-microsoft-standard
, 下面的步骤以此为例,
如果你的版本不一样, 直接换掉版本就成.
解压并准备好编译. (我把它解压到了
~/WSL2-Linux-Kernel-4.19.84-microsoft-standard
).
1
2
3
4
5
6
7
8
9$ cd WSL2-Linux-Kernel-4.19.84-microsoft-standard
$ cp /proc/config.gz ./
$ gzip -d config.gz
$ mv config .config
$ sudo dnf install bison flex elfutils-libelf-devel openssl-devel -y
$ make prepare
$ make modules_prepare
$ sudo mkdir -p /lib/modules/4.19.84-microsoft-standard
$ sudo ln /home/(USERNAME)/WSL2-Linux-Kernel-4.19.84-microsoft-standard -s /lib/modules/4.19.84-microsoft-standard/build1
2
3
4
5$ git clone https://github.com/anbox/anbox-modules.git
$ sudo cp -rT ashmem /usr/src/anbox-ashmem-1
$ sudo cp -rT binder /usr/src/anbox-binder-1
$ sudo dkms install anbox-ashmem/1
$ sudo dkms install anbox-binder/11
2$ sudo modprobe ashmem_linux
$ sudo modprobe binder_linux1
2$ lsmod | grep -e ashmem_linux -e binder_linux
$ ls -alh /dev/binder /dev/ashmem
安装 Android 镜像
在 这里 下载 Android 镜像
放到 /var/lib/anbox/android.img
启动 anbox!
提前准备
1 |
|
运行!
1 |
|
修复网络
使用 /usr/share/anbox/anbox-shell.sh
的脚本获得 Anbox
中的管理员权限 1
2
3ip route add default dev eth0 via 192.168.250.1
ip rule add pref 32766 table main
ip rule add pref 32767 table local
效果
当前问题
- 试图打开设置首页铁定会崩溃, 可能和 这个 有关
- Ubuntu 下不好使, 虽然可能和 SDL 之类的有关, 但是我也不想管
- 没图形加速