예전부터 늘 “구글이 안드로이드에 가상머신을 지원하는 날이 올까?”를 상상하곤 했다.
최신 Arm은 전성비도 좋고, 성능도 좋은데 가상머신 지원이 안 된다는 게 상당히 아쉬었다.
작년 10월부터 Android 16부터 리눅스를 지원한다는 것과, 안드로이드 16이 조기 출시될 수 있다는 소식이 해외 사이트에서 돌기 시작했다.
구글이 안드로이드에 VM을 공식 지원하는 날이 오다니 감회가 새로웠다. 꿈이 현실이 되는 순간이었다.
자, 그럼 “Linux 개발 환경”에 대해 알아보자.
구글은 ChormeOS(PC)를 안드로이드와 통합하려면 장기 플랜을 가지고 있다.
이 일환으로 안드로이드 16 Developer Preview 2, 안드로이드 15 QPR2 베타 2부터 “Linux 개발 환경”이 탑재됐다.
“Linux 개발 환경”은 Android AVF 기반으로 작동되고, VM OS로 Debian을 사용한다.
기존에는 안드로이드에서 리눅스를 구동하기 위해 Termux, Linux Deploy 등의 앱을 사용했다. 이러한 앱들은 chroot를 사용한다. 문제는 chroot로 작동하면 호스트가 PID 1을 사용하고 있어서 systemd가 작동하지 않는다.
반면 구글에서 공식 지원하는 “Linux 개발 환경”은 격리된 VM으로 작동해서 PID 1 사용이 가능하다. 즉 systemd가 작동된다는 것이다.
이 기능을 핸드폰에서 직접 사용해 보려면 구글 픽셀 6~9 시리즈가 있어야 한다. 필자는 픽셀 6a를 가지고 있기에 안드로이드 16 DP 2가 나왔을 때 바로 사용해봤다. (아래의 사진들은 안드로이드 16 베타 1 스크린샷이다.)
목차
Linux 개발 환경 활성화
개발자 옵션에 들어가면 “Linux 개발 환경”이 있다. 이 옵션을 활성화화면 “터미널” 앱이 생긴다.
(AOSP GSI에서는 개발자 옵션에서 보이지 않지만 설정 앱에서 검색하면 “Linux 개발 환경”이 나온다. AOSP에서도 지원하는 것을 보아, 구글 픽셀 독점 기능이 아닌 것으로 보인다.)
앱 아이콘은 위와 같이 생겼다.
터미널 앱 실행
터미널 앱을 실행하면 VM을 다운로드하고 실행이 진행된다.
터미널 앱 설정 옵션
“Linux 개발 환경”은 포트포워딩을 지원한다. Tailscale을 설치하니 포트 개방 알림이 왔다. 다만 아직 안드로이드 16 베타 1이라 포트 개방 요청 알림은 간헐적으로 작동한다.
위 설정 아이콘을 누르면 다양한 설정이 있다.
설정에는 “디스크 크기 조절”, “포트 제어”, “복구” 설정이 있다. 이 설정들을 하나하나 살펴보자.
VM 디스크 사이즈는 최대 16GB까지 확장할 수 있다. 원격 서버 제어 등 가벼운 목적으로 사용한다면 차고 넘치는 용량이지만, 개발 환경을 구성하기에는 턱없이 부족한 용량이다.
다만, 추후 Reddit 등 여러 포럼에서 16GB 제한을 우회하는 정보들이 나올 것으로 예상된다.
포트 번호 개방 기능만 있다. TCP, UDP 옵션은 없다. (0~1023 포트는 시스템 예약 포트이므로 포트포워딩이 불가하다.)
복구 기능을 이용하여 VM을 백업하거나 재설정할 수 있다. 재설정하면 VM을 다시 다운로드해야 한다.
아직은 불안정한 터미널 앱 (안드로이드 16 베타 1 기준)
Geekbench 6 벤치마크를 돌리던 중 터미널 앱과 백그라운드 앱 대부분이 리프레시가 발생했다. 이는 픽셀 6a의 램 6GB 한계로 보인다. 다만 앱을 다시 실행하면 위 사진과 같이 VM이 손상되어 재설정을 진행해야 한다.
이 외에도 디스크 크기 조절 중 앱을 닫으면 VM 손상, 간헐적인 터미널 세션 끊김 등의 버그가 있다.
아직 안드로이드 16 베타 1이라 상당히 불안정하다.
“Linux 개발 환경”이 여러 기기에 탑재되기를 바라며 마무리…
AOSP GSI에서는 개발자 옵션에서 “Linux 개발 환경”이 보이지 않지만 설정 앱에서 검색하면 “Linux 개발 환경”이 나온다. AOSP에서도 지원하는 것을 보아, 구글 픽셀 독점 기능이 아닌 것으로 보인다.
이 기능을 지원하기 위해서는 Android AVF 기능이 지원돼야 한다. 문제는 갤럭시는 Android AVF 지원 기기기 아예 없다. 해외 포럼에서 갤럭시의 Android AVF 미지원 사유가 Knox와 충돌이 원인일 것이라는 추측이 있다.
안드로이드 15 (202404)와 새로운 CPU(스냅드래곤 8 엘리트, 디멘시티 9400, 엑시노스 2500 등)로 출시되는 기기는 Android AVF 지원이 의무다.
기존 갤럭시와 향후 출시될 갤럭시가 Android AVF, Linux 개발 환경을 지원할지는 시간이 지나야 알 수 있겠지만, 이 유용한 기능이 여러 기기에 탑재되어 누구나 사용할 수 있기를 기대한다.
(이와 관련된 내용을 나무위키에도 정리해 두었다.)
https://namu.wiki/w/Android%2016#s-3