# apt install anbox
설치는 되었지만, 실행에 뭔가 문제가 있다. 문제가 뭔지 살펴보자.
$ anbox session-manager
[ 2019-04-25 14:41:11] [session_manager.cpp:130@operator()] Failed to start as either binder or ashmem kernel drivers are not loaded
커널 드라이버가 없어서 실행이 되지 않는 것 같다.
그래서, 설치된 패키지의 설명서를 살펴보았다.
....
This package needs Android kernel modules and rootfs image, see
/usr/share/doc/anbox/README.Debian for information.
...
따라해 보기로 했다. /usr/share/doc/anbox/README.Debian을 살펴보자.
그 내용은 요약하자면 다음과 같다.
/lib/modules/`uname -r`/kernel/drivers/android/binder_linux.ko
/lib/modules/`uname -r`/kernel/drivers/staging/android/ashmem_linux.ko
위의 두 커널 모듈이 있는지 확인하자.
그리고, https://build.anbox.io/android-images 에서 사전에 만들어진 안드로이드 이미지를 다운로드하자. 이왕이면 가장 최신의 것으로 다운로드 한다. 현 시점에선
Index of /android-images/2018/07/19
Name | Last modified | Size | Description | |
---|---|---|---|---|
Parent Directory | - | |||
android_amd64.img | 2018-07-20 01:46 | 311M | ||
android_amd64.img.sha256sum | 2018-07-20 02:11 | 84 |
이 최신이다.
이제 부터는 좀 불친절하게 되어 있다. 말도 많고 탈도 많은 systemd와 관련된 문제이다.
다자고짜 anbox-container-manager.service 를 실행하라고 한다.
찾아보니 다음과 같이 하면 될 것 같다. 우선 해보기로 했다.
#
systemctl start anbox-container-manager.service
얼추 된 것 같다. 한번 실행해 보자. .... 안된다. 뭔가 빠진 것 같다.
다시 한번 더 실행해보자
$ anbox session-manager
[ 2019-04-25 15:01:08] [session_manager.cpp:130@operator()] Failed to start as either binder or ashmem kernel drivers are not loaded
여전하다. 커널 모듈 로딩 목록에 강제적으로 넣어 주자. 아래와 같이...
@/etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
ashmem_linux
binder_linux
그리고 리부팅...
다시 실행.
$ anbox session-manager
[ 2019-04-25 15:07:35] [daemon.cpp:61@Run] Failed to connect to socket /run/anbox-container.socket: No such file or directory
아 돌겠네.
# systemctl start anbox-container-manger.service
또 실행.
$ anbox session-manager
[ 2019-04-25 15:09:28] [daemon.cpp:61@Run] Failed to connect to socket /run/anbox-container.socket: No such file or directory
서비스에 문제가 있나보다. 휴우...
# systemctl status anbox-container-manager.service
● anbox-container-manager.service - Anbox Container Manager
Loaded: loaded (/lib/systemd/system/anbox-container-manager.service; enabled;
Active: inactive (dead)
Condition: start condition failed at Fri 2019-04-26 00:06:55 KST; 4min 6s ago
└─ ConditionPathExists=/var/lib/anbox/android.img was not met
Docs: man:anbox(1)
4월 26 00:05:22 T480s systemd[1]: Condition check resulted in Anbox Container M
4월 26 00:06:55 T480s systemd[1]: Condition check resulted in Anbox Container M
lines 1-9/9 (END)
안드로이드 이미지를 못찾는다. 다운로드한 이미지 /var/lib/anbox 에 복사.
$ su
# anbox container-manager
[ 2019-04-25 15:17:48] [container_manager.cpp:71@operator()] You are running the container manager manually which is most likely not
[ 2019-04-25 15:17:48] [container_manager.cpp:72@operator()] what you want. The container manager is normally started by systemd or
[ 2019-04-25 15:17:48] [container_manager.cpp:73@operator()] another init system. If you still want to run the container-manager
[ 2019-04-25 15:17:48] [container_manager.cpp:74@operator()] you can get rid of this warning by starting with the --daemon option.
[ 2019-04-25 15:17:48] [container_manager.cpp:75@operator()]
[ 2019-04-25 15:17:48] [container_manager.cpp:119@operator()] boost::filesystem::create_directories: Invalid argument
# exit
$ anbox session-manager
[ 2019-04-25 15:18:23] [daemon.cpp:61@Run] Failed to connect to socket /run/anbox-container.socket: No such file or directory
장시간 복기 끝에 문제점을 찾은 것 같다.
/var/lib/anbox 에 이름을 android_amd64.img에서 android.img로 안바꾼 것이 탈이 된 것 같다.
anbox-container-manager.service 를 멈추고 다시 시작하자.
# systemctl stop anbox-container-manager.service
# systemctl start anbox-container-manager.service
# systemctl status anbox-container-manager.service
● anbox-container-manager.service - Anbox Container Manager
Loaded: loaded (/lib/systemd/system/anbox-container-manager.service; enabled;
Active: active (running) since Fri 2019-04-26 00:23:27 KST; 5s ago
Docs: man:anbox(1)
Process: 27421 ExecStartPre=/sbin/modprobe ashmem_linux (code=exited, status=0
Process: 27422 ExecStartPre=/sbin/modprobe binder_linux (code=exited, status=0
Process: 27423 ExecStartPre=/usr/share/anbox/anbox-bridge.sh start (code=exite
Main PID: 27499 (anbox)
Tasks: 9 (limit: 4915)
Memory: 4.8M
CGroup: /system.slice/anbox-container-manager.service
└─27499 /usr/bin/anbox container-manager --daemon --privileged --data
4월 26 00:23:27 T480s systemd[1]: Starting Anbox Container Manager...
4월 26 00:23:27 T480s systemd[1]: Started Anbox Container Manager.
뭔가 느낌이 좋다. 한번 더 실행해보자.
된다.