본문 바로가기

컴퓨터 사용 팁/Linux

Arch Linux에 Anbox 설치

아치리눅스의 공식 저장소에서 배포하는 최신버전의 커널은 Anbox를 기본적으로 지원하지 않는다.

방법 1) 직접 컴파일한다.

방법 1: kernel.org에서 받아와 컴파일

최신 버전의 tarball을 다운받고 압축을 푼다. 컴파일하기 전, 다음 의존 패키지를 설치한다.

# pacman -Sy base-devel bc libelf pahole

패키지를 설치하면, 다음을 실행하자.

$ tar -xJf linux-*.tar.xz
$ make mrproper
$ make localmodconfig

그리고 .config에 다음 내용을 추가하자. (make menuconfig에서 추가할 방법을 찾으면 추가하겠다.)

CONFIG_ASHMEM=y
CONFIG_ANDROID=y
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"

방법 2: ABS로 패키지 제작

ArchLinux ABS 사용하기에 따라서 커널(패키지명: linux)을 준비한 다음, 패키지를 빌드하기 전에 PKGBUILD에서 cp ../config .configmake oldconfig 사이에 아래 구문을 추가한다.

prepare() {
	...
	cp ../config .config
	echo 'CONFIG_ASHMEM=y
	CONFIG_ANDROID=y
	CONFIG_ANDROID_BINDER_IPC=y
	CONFIG_ANDROID_BINDERFS=y
	CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"'>>.config
	make oldconfig
	...

빠른 컴파일을 원한다면 명령줄에 아래 구문도 입력한다.

user@archlinux ~/linux/repos/core-x86_64 $ sed -i 's/make all/make -j(nproc) all/g' PKGBUILD

이제 빌드하면 된다.

user@archlinux ~/linux/repos/core-x86_64 $ makepkg -si

방법 2) AUR에서 받아온다.

일단, AUR에서 Anbox 적용 가능 커널을 설치한다.

$ yaourt -Ss anbox
...
aur/linux-zen-anbox
aur/linux-zen-anbox-headers
...
aur/linux-xanmod-anbox
aur/linux-xanmod-anbox-headers
...

linux-zen-anbox를 설치하려면 linux-zen-anbox-headers를,
linux-xanmod-anbox를 설치하려면 linux-xanmod-anbox-headers를 같이 설치하자.

$ yaourt -S linux-zen-anbox linux-zen-anbox-headers

방법 3) 커널 버전을 낮춘다.

5.7.0 이상의 커널에서만 기존의 방식에 오류가 발생하므로, 5.7.0 미만의 커널을 깔아주면 된다.

# pacman -Sy linux-lts linux-lts-headers

또는 오래전 커널을 찾는다.(비추)

$ yaourt -Ss linux-lts

설치가 완료되면 재부팅을 하고, 다음을 설치한다.

$ yaourt -Ss anbox
aur/anbox-git
aur/anbox-image
aur/anbox-image-gapps
aur/anbox-image-gapps-rooted
aur/anbox-image-houdini
aur/anbox-image-houdini-rooted

여기에서 houdini란 X86에서 ARM 계열 프로그램을 동작할 수 있도록 해주는 일종의 에뮬레이터이다. anbox-image-gapps 패키지에도 포함되어 있다고 한다.

$ yaourt -S anbox-git anbox-image-houdini-rooted
# mkdir /dev/binderfs
# mount -t binder binder /dev/binderfs
# systemctl enable anbox-container-manager.service

오류시 대처

GPG 오류 발생시

$ cat <<EOF> ~/.gnupg/gpg.conf
keyring /etc/pacman.d/gnupg/pubring.gpg
EOF

참고:

Anbox - ArchWiki