QEMU-KVM 기반의 안드로이드 x86 가상 머신 생성(with SPICE)

반응형

QEMU-KVM 기반의 안드로이드 x86 가상머신 생성(with SPICE)

안녕하세요 김민욱입니다.

 

이번 포스팅에서는 QEMU-KVM 기반의 안드로이드 x86 가상머신을 생성하고 SPICE 클라이언트를 통해 외부에서 GUI 기반으로 가상머신에 접속이 가능하도록 진행해보고자 합니다.

 

먼저 안드로이드 x86은 기존의 ARM 기반으로 많이 사용되던 안드로이드를 Intel 기반으로 포팅한 버전으로 프로젝트 명이기도 합니다. CPU 칩 자체가 틀리기 때문에 호환이 안되던 안드로이드를 Intel에서도 올릴 수 있도록 하였습니다.

 

따라서 이번 포스팅에서는 Ubuntu 환경에서 QEMU-KVM을 통해 가상머신을 생성하고 SPICE 서버를 통해 외부에서 가상머신을 원격 GUI 환경으로 사용할 수 있도록 하겠습니다. 

 

QEMU-KVM 설치 및 안드로이드 x86 가상머신 생성

가상머신을 생성하기 앞서 이러한 환경을 제공하기 위해 QEMU, KVM 그리고 가상머신의 라이프 사이클을 관리하는 virt-manager를 설치하겠습니다. 

 

우선 아래의  명령어를 통해 패키지 리스트 및 패키지를 업데이트하도록 합니다. 

root@android-kvm:~$ apt-get upgrade -y && apt-get upgrade -y

다음은 QEMU-KVM 사용에 필요한 관련 패키지를 설치하도록 합니다.

root@android-kvm:~# apt-get install qemu-kvm libvirt-bin virtinst bridge-utils cpu-checker

현 사용자(root)를 KVM에 추가해 줍니다. 

root@android-kvm:~# adduser $USER kvm

이후 아래의 명령어를 입력하였을 때, 아래와 같은 결과가 출력되면, 성공적으로 KVM 설치한 것입니다.

root@android-kvm:~# kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

끝으로 virt-manager를 설치해주고, virt-manager 명령어를 통해 virt-manager를 실행시켜줍니다.

root@android-kvm:~# apt-get install virt-manager
root@android-kvm:~# virt-manager

그림 1에서는 가상 머신 관리자를 나타냅니다. 가상 머신을 생성하기 위하여 좌측 상단의 붉은색 네모로 표기된 버튼을 눌러줍니다. 

 

그림 1. 가상머신 관리자

그림 1에서 가상 머신 생성을 위한 버튼을 누르게 되면 그림 2와 같이 가상 머신 생성에 대해 새로운 팝이 뜨게 되는 데 ISO 이미지 사용 세션에서 원하는 안드로이드 x86 이미지의 경로를 찾아서 넣어주면 됩니다. 그 뒤 앞으로를  눌러주시면 됩니다. 

 

그림 2. 가상 머신 생성 이미지 선택 화면

그림 3과 4에서는 가상머신에 대한 리소스 할당을 설정할 수 있습니다. 원하는 메모리와 CPU 그리고 용량을 작성한 뒤 앞으로 버튼을 눌러주시면 됩니다. 

 

그림 3. 가상머신 리소스 할당
그림 4. 가상 머신 리소스 할당 2

끝으로 그림 5와 같이 이름을 입력하고, Network Selection에서 가상 네트워크 NAT를 설정해주고 완료를 눌러주게 되면 자동으로 가상머신 팝업이 뜨게 됩니다. 

 

그림 5. 가상머신 정보 입력 및 네트워크 설정

 

 

안드로이드 x86 가상머신 설치

가상 머신을 생성하게 되면 자동으로 아래와 같이 가상 머신 GUI 화면이 나타나게 되는데 그림 1에서는 안드로이드 x86의 설치 초기 화면을 나타냅니다. 여기서 Installation - Install Android-x86 to harddisk를 선택하고 엔터를 눌러 주시면 됩니다. 

 

그림 1. 설치 초기 화면 

다음은 그림 2와 같이 Create/Modify partitions를 선택하고 엔터를 눌러주시면 됩니다.

 

그림 2. Create/Modify partitions 선택

GPT 사용 여부에 대해서는 NO를 선택해주시면 됩니다.

 

그림 3. GPT 선택

그림 4에서는 파티션을 생성하게 되는데 NEW를 선택하시고 엔터를 누르신 뒤 메모리에 대해 변경 사항이 없다면 그대로 엔터를 눌러주시면 됩니다. 그 뒤 yes를 입력하고 그림 5와 같이 Write -> Quit를 눌러주시면 됩니다. 

 

그림 4. 새로운 파티션 생성 
그림 5. 생성 후 저장 

생성된 파티션은 리스트에 뜨게 되는데 해당 파티션에서 엔터를 누르게 되면 그림 6과 같이 파일 시스템 포맷 형태에 대해 묻게 됩니다. 이때 ext4를 선택하시면 됩니다. 

 

그림 6. 파일 시스템 포멧

 

이후로는 아래와 같이 모두 Yes를 선택해주시면 됩니다. 

 

그림 7. format 유무

 

그림 8. GRUB 인스톨 유무

 

그림 9. /system 인스톨 유무

이후 Run Android-x86을 선택하시면 됩니다.

 

그림 10. 최종 설치 화면 

 

그림 11에서는 설치 완료 후 로딩된 안드로이드 x86의 메인 화면을 나타내고, 스타트 버튼을 누르게 되면 익숙한 안드로이드 OS 화면을 그림 12와 같이 확인하실 수 있습니다. 

 

그림 11. 설치 완료후 초기 화면

 

그림 12. 메인 OS 화면 

 

원격으로 SPICE 서버 접속

원격지에서 위에서 생성한 안드로이드 x86 가상 머신에 접속하기 위해서는 다음과 같은 가상머신 설정이 필요합니다. 해당 팝업은 상단의 가상 머신 탭에서 구체적인 설정을 진행할 수 있는데, 먼저 Network source는 NAT로 변경해주시고, Device Model은 virtio로 변경해야 합니다. 

 

그림 13. SPICE를 위한 가상 머신 설정

그림 14에서는 SPICE 서버에 대한 설정을 나타내는데 먼저 Address 부분은 All interfaces로 변경해 줍니다. 또한 포트 TLS port에 체크가 되어 있지 않다면 체크를 해주시면 됩니다. 여기서는 5900 포트(기본값)를 통해 SPICE 서버로 접속하게 됩니다. 

 

그림 14. SPICE 서버 설정

 

가상 머신 측에서 준비가 모두 끝났기 때문에 SPICE server에 접속하기 위한 클라이언트를 설치하고 접속 테스트를 진행해보겠습니다. 본 클라이언트는 윈도우를 기준으로 합니다.  먼저 아래 링크에 접속하시면 됩니다. 

 

https://spice-space.org/download.html

 

말씀드린 링크에 접속하게 되면 아래와 같은 화면이 뜨는데 여기서 Windows installers에서 virt-manager download page를 클릭해 줍니다. 

 

 

 

그림 15. virt-viewer 다운로드 페이지

 

위에서 언급한 페이지에 접속하게 되면 아래의 화면이 나타나고, 여기서 Win_x64.MSI를 클릭하고 다운로드하여 설치해줍니다. 만약 32bit이시면, WIN_x86 MSI를 받아주시면 됩니다. 

 

그림 16. 설치 파일

설치가 완료되면 Remote Viewer라는 프로그램이 생성되고 아래와 같은 화면을 나타냅니다. 아래 화면에서 Connection Address에서 가상 머신이 운용되고 있는 호스트 아이피와 가상 머신의 SPICE 서버 기본 포트 번호인 5900을 작성하여 연결합니다. 그럼 그림 18과 같이 그래도 GUI 환경의 안드로이드 x86을 원격지에서 확인 할 수 있습니다. 

 

그림 17 Viewer 사용법
그림 18. SPICE client를 통한 안드로이드 x86 접속

 

결론

이번 포스팅에서는 ubuntu 환경에서 QEMU-KVM을 이용한 안드로이드 x86 가상 머신을 생성해보고, 외부에서 SPICE 서버를 통해 GUI로 접속해보는 것을 진행해보았습니다. 

 

내용이 어렵지 않고 간단하게 수행할 수 있기 때문에 혹 필요하시다면, 한번 참고하시는 것도 좋을 것 같습니다.

 

감사합니다. 

 

인용글

 

업데이트로그

-----------------------------------------------------------------------------------------------------------------------

해당 글은 스스로 연구한 내용을 통한 주관적인 이해를 바탕으로 작성 되었습니다. 수정 할 부분이 있거나, 다른 의견이 있으시다면 언제든지 말씀해주시면 반영하도록 하겠습니다. 읽어 주셔서 감사합니다. 끝으로 불법으로 복제하는 것은 금합니다.

 

반응형

댓글

Designed by JB FACTORY