안드로이드는 분명 리눅스 기반 맞습니다.

그리고 안드로이드와 리눅스는 분명 호환되는 부분이 많습니다. 그렇기에 Termux(https://termux.com/) 같은 앱도 존재합니다.

 

하지만 새삼스럽게도 리눅스에서 안드로이드 모바일 게임을 위한 앱플레이어는 마땅한게 없다는 이야기를 많이 들었습니다.

사실 당연하다면 당연한건데 리눅스에서 게임을 별로 잘 안 하거든요. 앱플레이어 같은거 만드는 곳이 주로 중국인데 중국에서 제대로 만들리가... (소위 채굴이 숨어있다던지 많은 일들이 있었습니다.)

 

아주 없지는 않았습니다. Genymotion이 꽤 괜찮은 그래픽 가속을 보여주는 안드로이드 가상머신이었으니까요. (https://www.genymotion.com/)지금도 상당히 괜찮고 꽤나 편리한 모습을 보여줍니다.

그런데 OpenGL의 버전은 계속 올라가는데 Genymotion의 OpenGL지원은 딱 OpenGL ES2.0까지인것 같습니다.

최신 게임에서는 텍스처가 많이 깨지더군요. (제 옵티머스 시스템 문제일수도 있습니다.)

 

사실 윈도우에서도 그렇지만 앱플레이어라는게 별게 아닙니다.

그냥 Android-x86(https://www.android-x86.org/)을 기반으로 x86, amd64 CPU에서 ARM혹은 AARCH64를 호환하는 libhoudini를 가상머신에 설치해서 돌아가게 만든 것에 불과합니다. 그리고 이러한 가상머신은 VMware, Virtualbox, Qemu등이 있지요.

 

그래서 처음에는 VMware를 써봤는데 그래픽가속이 되는데 역시 OpenGL ES 2.0이 한계였습니다. 옛날게임은 문제가 없지만 요즘 게임은 OpenGL ES 3.0을 넘어서 Vulkan으로 나오니 대응이 안 되는 겁니다.

 

Virtualbox는 그냥 화면이 안 뜹니다. 3D 가속을 넣으면 화면이 안 뜨는것으로 봐서 Virtualbox의 가상 그래픽카드는 지원이 안 되는 것 같습니다.

 

남은건... Qemu하나네요.

정확히 말하자면 Qemu/KVM입니다. KVM이라는게 커널기반 가상화라는건데 이거 하나만 써도 왠만한 리눅스 기반 가상화는 다 해먹을 수 있습니다. 그리고 레드햇의 전폭적인 지지를 지원을 받고 있기에 요즘의 가상화 서버는 이걸로 돌아간다고 보시면 됩니다.

 

https://linuxhint.com/android_qemu_play_3d_games_linux/

 

How to Run Android in QEMU to Play 3D Android Games on Linux

Android-x86 is a free and open source project that aims to provide Android images for x86 systems. With new features, numerous compatibility patches and bug fixes over Android Open Source Project, Android-x86 is the most robust solution currently available

linuxhint.com

최근에 발견한 것인데 QEMU와 KVM으로 안드로이드의 3D 게임을 돌리는 튜토리얼입니다.

 

대충 요약하면 우선 KVM이 지원 되는지 확인

egrep -c '(vmx|svm)' /proc/cpuinfo

여기서 0이 아닌 다른 숫자만 나오면 됩니다.

 

QEMU 및 KVM 설치 

sudo apt install qemu qemu-kvm
sudo adduser `id -un` kvm

그리고 안드로이드가 설치될 이미지 만들기

qemu-img create -f qcow2 androidx86_hda.img 64G

저는 넉넉하게 64GB를 넣었습니다. 요즘 폰은 1TB 넘어가는 세상이라 64GB는 작은편이지요.

그리고 Android-x86 iso이미지를 다운로드

https://www.android-x86.org/download.html

 

Download | Android-x86

 

www.android-x86.org

그건 알아서 여기서 버전 맞추어 알아서 잘 해주시면 됩니다.

그 다음 iso파일과 위에서 만든 img 파일을 같은 곳에 넣어주고 다음 명령을 실행합니다. 

qemu-system-x86_64 \
-enable-kvm \
-m 2048 \
-smp 2 \
-cpu host \
-soundhw es1370 \
-device virtio-mouse-pci -device virtio-keyboard-pci \
-serial mon:stdio \
-boot menu=on \
-net nic \
-net user,hostfwd=tcp::5555-:5555 \
-device virtio-vga,virgl=on \
-display gtk,gl=on \
-hda androidx86_hda.img \
-cdrom android-x86_64-8.1-r3.iso

아래의 iso파일은 다운로드 받은 파일 이름에 맞추어 바꿔주셔야 합니다.

 

그러면 짠하고 QEMU가 실행되면서 안드로이드가 설치화면이 뜹니다.

처음 설치하시는 분은 감이 안 잡히실텐데 Installation 눌러주시고 Create/Modify 눌러주시고 N 눌러주시고 엔터,엔터 W 누르고 yes 순으로 해주시면 됩니다. 그리고 설치가 끝나면 Reboot

 

그 다음에는 안드로이드 폰 쓰시던 그 느낌으로 쓰시면 됩니다.

 

이제 다음부터는

qemu-system-x86_64 \
-enable-kvm \
-m 2048 \
-smp 2 \
-cpu host \
-soundhw es1370 \
-device virtio-mouse-pci -device virtio-keyboard-pci \
-serial mon:stdio \
-boot menu=on \
-net nic \
-net user,hostfwd=tcp::5555-:5555 \
-device virtio-vga,virgl=on \
-display gtk,gl=on \
-hda androidx86_hda.img \

이렇게 마지막 줄을 제외한 나머지를 사용하시면 되는데...

 

복잡하죠?

그래서 그냥 이미지와 스크립트를 만들었습니다.

 

 

 

 

https://mega.nz/file/yEUBWQBI#DLBYSNGAAZ6m8AaNOv-J_WOXE4QOC5kTdVHdNI8C4Bs

 

 

1.03 GB file on MEGA

 

mega.nz

 

위 파일을 다운 받아 압축을 풀면

tar.gz파일은 압축파일이니 넘어가고 이렇게 3개의 파일이 나옵니다.

데비안, 우분투 용으로 설명합니다.

우선 qemu_install.sh파일을 실행(터미널에서 실행하세요. 관리자 권한이 필요합니다.)해서 qemu와 kvm을 설치하고 그 다음에 run.sh를 실행하면 그냥 세팅이 완료된 안드로이드가 짠하고 나옵니다.

qemu에서 안드로이드 부팅

만약 아무 화면이 안 뜨신다면 혹시 옵티머스는 아닌지 확인 부탁드리면서 옵티머스를 꺼주시면 됩니다.

Nvidia X server Setting 에서 PRIME Profile을 on-demand로 해주시면 됩니다. 그리고 필요할때마다 가속은 https://moordev.tistory.com/355

 

우분투에서의 Nvidia Optimus

Nvidia Optimus란 기술은 노트북과 같은 모바일 기기에서 배터리를 효율적으로 쓰기 위해 만들어진 기술입니다. 인터넷같이 가벼운 작업은 성능낮은 내장 그래픽으로 돌리고 게임같은 그래픽카드

moordev.tistory.com

여기를 참고

 

이제 그냥 쓰시면 됩니다. Play스토어에 구글로그인을 하고 앱을 설치하시면 됩니다. ARM Traslator도 설치가 되어 있어서 그냥 실행이 될겁니다.

 

흔한 안드로이드 태블릿의 화면 그대로

만약 인터넷이 안 된다면 와이파이 설정에서 VirtWifi 연결해주시면 됩니다. 다만 마우스가 문제가 될겁니다. Ctrl+Alt+G를 누르면 가상머신에 잡힌 마우스가 호스트로 나오게 됩니다. 

 

혹시나 하고 요즘 핫한 게임인

요거 돌려봤는데 아주 잘 되는군요. OpenGL ES 3.0이 되니까 어느정도 커버가 되는것 같습니다.

 

어쨌건 안드로이드 앱플레이어로 상당히 쓸만하지 않나요? 만약 리셋하고 싶다면 압축을 풀어서 img 파일을 덮어버리면 됩니다.

,

Virtualbox는 리눅스 데스크탑을 사용한다면 싫어도 써야하는 물건입니다. 그 이유야 당연히 Windows환경을 요구하는 경우가 은근히 있기 때문이지요. Wine으로 해결이 가능한 부분도 많지만 Windows 시스템 그 자체를 원한다면 어쩔 수 없습니다. 보통 궁극의 해결책이라고 표현하지요.

 

특히 유용한 기능중 하나가 USB Passthrough 기능입니다. 리눅스를 통하지 않고 바로 USB장치를 가상머신에 연결하게 해서 Windows드라이버만 지원하는 장치를 돌아가게 하거나 직접 Windows에서 작업 가능하도록 짜인 장비를 연결하는데에 이용가능합니다.

 

2015년에는 VirtualBox에 주로 WindowsXP를 사용했다면 이후 2019년까지는 Windows7이 그리고 2020년 현재에는 주로 Windows10이 가상머신에 이용되고 있습니다. 그런데 USB3.0을 지원하지 않는 WindowsXP는 그렇다 치는데 Windows7에서 USB장치가 인식이 안 되는 경우가 왕왕 있습니다.

 

보통 VirtualBox에 USB장치를 연결하는건 이런식으로 연결할 것이다. 실수로 USB키보드나 마우스를 연결하지 않도록 하자. 지옥을 맛 볼 수 있다.

우선 확인해주셔야 할 것은 버전에 맞는 Extension Pack을 설치했는가 입니다.

https://www.virtualbox.org/wiki/Downloads

이곳에 가셔서 VirtualBox Extension Pack을 찾아 다운로드 받아주셔야 합니다.

 

영어를 몰라도 대충 알아서 찾아 가도록 하자

이것을 설치해 주시면 USB장치를 지원이 할 수 있게 됩니다.

 

그 다음은 리눅스에서의 권한 문제입니다.

리눅스에서 사용자가 VirtualBox사용 권한을 얻어야 하는데 이를 설정하지 않으면 작동하지 않습니다.

그건 다음 링크에서 확인이 가능합니다.

https://moordev.tistory.com/205

 

VirtualBox사용시 USB 인식이 안 될 때

VirtualBox는 리눅스에서 다들 이용하고 계실 겁니다. 윈도 프로그램을 실행할 때 가장 마지막으로 시도하는 방법으로 다들 이용하고 계시지요. 그런데 VirtualBox를 쓸 때 USB가 인식이 안 되는 경우��

moordev.tistory.com

그런데도!!! 아직도!!! 인식이 안 된다면!!!!

 

그렇다면 한번 USB설정을 살펴봅시다.

우선 Windows장치의 설정으로 들어갑니다.

그리고 USB를 보시면 USB 2.0(EHCI) 컨트롤러 혹은 USB 3.0(xHCI)컨트롤러 둘 중 하나가 체크되어 있을 것입니다. 만약 1.1이라면 당장 바꾸세요. 지옥의 속도를 경험하게 됩니다.

 

여기서 한가지 알 수 있는 것은 USB 1.1에서는 인식이 되는데 2.0이상일 때 인식이 안 되거나 혹은 2.0은 되는데 3.0이 안 되는 경우가 있다는 것입니다.

 

이 것은 Windows 문제입니다. Chipset Driver나 USB드라이버가 설치되어 있지 않아서 벌어진 일입니다. 

Windows를 설치한 다음 우리는 보통 업데이트를 바로 돌려버리거나 알아서 업데이트를 하는데 이때 장치 드라이버가 자동으로 설치됩니다. 그런데 VirtualBox에서는 장치인식문제로 드라이버가 자동으로 설치되지 않는것입니다.

 

그렇다면 수동으로 설치하면 된다는 의미겠지요.

https://downloadcenter.intel.com/download/22824/Intel-USB-3-0-eXtensible-Host-Controller-Driver-for-Intel-8-9-100-Series-and-Intel-C220-C610-Chipset-Family

 

Download Intel® USB 3.0 eXtensible Host Controller Driver for Intel® 8/9/100 Series and Intel® C220/C610 Chipset Family

Intel® USB 3.0 eXtensible Host Controller Driver for Intel® 8/9/100 Series and Intel® C220/C610 Chipset Family

downloadcenter.intel.com

여기 있는 이 드라이버를 설치하거나

 

https://downloadcenter.intel.com/download/22904/Intel-USB-3-0-eXtensible-Host-Controller-driver-for-S1200V3RP?wapkw=USB

 

Download Intel® USB 3.0 eXtensible Host Controller driver for S1200V3RP

Intel® USB 3.0 eXtensible Host Controller driver for S1200V3RP

downloadcenter.intel.com

이 드라이버를 설치하면 됩니다.

 

만약 Windows10환경에서 안 된다면 그냥 Windows Update에서 한번 싸아악 돌리면 해결됩니다!

,