가상 머신으로 안드로이드 운영체제 실행하기
qemu-system 패키지로 안드로이드 시스템을 실행하는 작업기록입니다.
개요
지난번 작성한 가상 머신을 활용하여 서브 시스템 구성하기에 이어서 이번에는 안드로이드를 설치하여 구성해보자. qemu-system
패키지 설치와 qcow2 디스크 만들기
같은 기본적인 작동방법은 이전 포스트를 통하여 확인할 수 있으니 올바른 안드로이드 설치파일과 설치방법 그리고 구동 방법만 알면 쉽게 사용할 수 있다.
안드로이드 설치 이미지
안드로이드 설치 이미지는 android-x86 프로젝트에서 확인할 수 있다. 가장 최신버전인 android-x86_64-9.0-r2.iso
를 다운받으면 된다. 소스포지는 생소하고 광고 범벅인 사이트라 거부감이 들 수 있는데 Github 이전에 오픈소스를 공유하던 저장소 사이트이니 너무 걱정할 필요는 없다.
안드로이드 설치
qemu-img create -f qcow2 android.qcow2 16G
qemu-system-x86_64
-m 4096
-smp 4
-accel kvm
-boot d
-cdrom "$HOME/.config/qemu/android/android-x86_64-9.0-r2.iso"
-hda android.qcow2
-net nic,model=virtio-net-pci
-net user
-vga virtio
-display sdl,gl=on
완료했으면 qemu 실행 명령을 통해서 설치를 진행하면 된다. 디스크로 사용할 qcow2를 만들고 다운로드 받은 iso 이미지를 통해 부팅을 진행한다. 옵션들에 대한 자세한 설명은 이전 포스트를 참고하면 된다.
Installation
부팅에 성공하면 이런 화면이 표시된다. 세번째 메뉴 Installation - Install Android-x86 to harddisk
를 선택하여 진입한다.
Partition
이후 진행은 일반적인 운영체제 설치 진행과 비슷하다. 파티션을 나누고 포맷을 설정하고 나면 자동으로 설치가 완료된다. qcow2로 파일만 준비해둔 것이므로 우리는 Create/Modify partitions
메뉴를 선택하면 된다.
GPT
GPT 디스크 유형을 말한다. 자신의 환경에 맞게 선택하면 되지만 이후에 부팅 이슈를 해결하기 위하여 GRUB 설치가 필요하다. 여기서 설치되는 레거시 GRUB은 GPT 디스크에 설치할 수 없기 때문에 < No >
를 선택하여 MBR 방식의 디스크로 만들어지도록 하면 된다.
cgdisk | primary | sizes |
---|---|---|
cgdisk | Primary | new |
비교적 생소한 파티셔닝 프로그램이 표시되는데 방향키로 메뉴를 이동할 수 있고 Enter
키를 통해 확정할 수 있다. [New]
메뉴를 선택하면 해당 볼륨에 대한 파티셔닝을 진행하는데 Primary
를 선택하고 나머지 설정은 특이사항이 없을 경우 아무 입력도 하지 않고 엔터키만 입력하여 기본값으로 진행한다.
Bootable
생성된 Primary 파티션을 [Bootable]
메뉴를 선택하여 Flags가 Boot로 설정되도록 하고 [Write]
메뉴를 선택해서 현재 변경점을 직접 디스크에 쓴 뒤 [Quit]
메뉴로 cgdisk를 빠져나가면 파티셔닝은 완료이다.
파티션 선택 | 파티션 포맷 | 진행 물음 |
---|---|---|
파티션 선택 | Format | question |
cgdisk를 빠져나오면 다시 안드로이드 설치 진행 창으로 돌아오게 되는데 방금 작업한 파티션을 선택할 수 있는 메뉴가 더 표시된다. 해당 메뉴로 커서를 옮기고 < OK >
를 선택한다. 설치 진행 전 파티셔닝을 방금 진행했기 때문에 디스크의 포맷을 설정해야 한다. ext4
를 선택하고 < OK >
를 선택하면 포맷을 진행할 수 있다.
GRUB | WARNING |
---|---|
GRUB Installation | GRUB WARNING |
포맷이 진행되고나면 부트로더 설치를 물어본다. 앞서 설명했듯이 이후에 부팅이슈를 해결하기 위해서 < Yes >
를 선택하여 설치하도록 한다. 디버그를 위해서 /system 볼륨을 read-write
로 설정할 수 있다는 물음도 나오는데 모바일 환경을 활용할 용도로만 쓸 것이라 < No >
를 선택하였다.
완료 | 실행 |
---|---|
완료 | Boot |
설치가 완료되면 실행할지 재부팅할지 메뉴가 나온다. 무엇을 선택해도 우선 첫 실행은 실패할 것이다. 부팅은 성공하지만 우리가 원하는 GUI 환경으로 진입하지 않고 CLI 환경이 표시된다.
GUI 진입 문제 해결
qemu-system-x86_64
-m 4096
-smp 4
-accel kvm
-hda android.qcow2
-net nic,model=virtio-net-pci
-net user
-vga virtio
-display sdl,gl=on
우선 설치를 위해 실행했던 qemu 창을 종료시키고 부팅용 명령을 통해 재실행한다. 크게 다른 점은 없지만 올바른 부팅을 위해 설치용 CDROM 설정을 제거했다.
GRUB | Boot |
---|---|
GRUB | BOOT |
부팅이 실행되면 부트 로더인 GRUB이 표시되고 메뉴들이 나온다. Debug mode
를 선택하여 엔터키로 진입한다. 부팅이 완료되면 CLI 환경으로 진입하게 된다. 여기서 우리는 GRUB 설정을 변경하여 올바른 GUI로 접근할 수 있도록 설정해야 한다.
Remount | Edit GRUB |
---|---|
Remount | Edit GRUB |
mount -o remount,rw /mnt
vi /mnt/grub/menu.lst
부트로더 진입화면에서 일회성으로 수정하여 진입할 수도 있겠지만 동일한 동작을 영구적으로 유지시키려면 GRUB 설정을 파일에서 변경해야 한다. 입력줄이 보이지 않으면 엔터를 한 번 입력하면 되며 mount -o remount,rw /mnt
명령을 입력하여 EXT4-fs (sda1): re-mounted.
라는 성공 응답을 확인한다. vi /mnt/grub/menu.lst
를 입력하여 편집기를 실행하고 사진에 밑줄친 부분과 같이 nomodeset xforcevesa
옵션을 추가한 뒤 저장한 후 재부팅하면 된다. 재부팅은 reboot -f
명령으로도 가능하고 단순히 창을 끄고 qemu 명령을 통해 다시 실행해도 된다.
GRUB | GUI | HOME |
---|---|---|
GRUB | Android | Google Play |
방금 수정했던 GRUB 메뉴를 선택하고 진행하면 된다. 이전과 동일하게 CLI 화면이 잠시 뜨는 것을 볼 수도 있는데 조금 기다리면 정상적으로 GUI 부팅이 되는 것을 확인할 수 있다. 이런 저런 설정들을 마치고 나면 자유롭게 사용할 수 있다.
초판: 2025. 10. 21. 13:05:27
수정판: 2025. 10. 21. 16:27:29
© 2025 이 문서는 "CC BY 4.0 국제규약" 라이선스로 배포 되었습니다. 모든 권리는 저자에게 있습니다.