2P by GN⁺ | ★ favorite | 댓글 1개
  • Waydroid는 Wayland 기반 GNU/Linux 데스크톱에서 전체 Android 시스템을 컨테이너로 부팅해, Android 앱을 Linux 앱처럼 함께 실행하게 해주는 프로젝트임
  • Linux 네임스페이스와 LXC, binder 인터페이스를 활용해 Android 컨테이너가 필요한 하드웨어에 직접 접근하며 arm, arm64, x86, x86_64 GNU/Linux 플랫폼을 지원함
  • Android 앱은 Linux 애플리케이션 폴더에 통합될 수 있고, Multi-Window Mode, Full UI Mode, Fullscreen Mode처럼 사용 환경별 실행 방식을 제공함
  • 런타임은 LineageOS 기반의 최소 커스터마이즈 Android 시스템 이미지로 구성되며, 현재 이미지는 Android 13 기반임
  • 설치 후 waydroid-container 서비스를 시작하고 앱 메뉴에서 첫 실행 마법사를 진행해야 하며, Waydroid-Linux 베타 배포판은 live mode가 아니라 설치 환경에서 동작함

Waydroid의 Android-on-Linux 구조

  • Waydroid는 일반 GNU/Linux 시스템의 Wayland 기반 데스크톱 환경에서 전체 Android 시스템을 컨테이너로 부팅하는 방식을 사용함
  • 컨테이너 내부 Android는 Linux 네임스페이스를 사용함
    • user
    • pid
    • uts
    • net
    • mount
    • ipc
  • Android 시스템은 LXC와 binder 인터페이스를 통해 필요한 하드웨어에 직접 접근함
  • 지원 플랫폼은 GNU/Linux 기반의 arm, arm64, x86, x86_64임
  • 프로젝트는 무료 오픈소스이며 저장소는 GitHub에 있음

데스크톱 통합과 실행 모드

  • Android 앱은 Linux 애플리케이션과 나란히 데스크톱에서 동작하며, Waydroid는 Android 앱을 Linux 애플리케이션 폴더에 추가함
  • 실행 모드는 사용 방식에 따라 나뉨
    • Multi-window mode: Android freeform window 정의를 확장해 여러 기능을 추가함
    • Full UI Mode: 게임과 전체 화면 엔터테인먼트용으로 전체 Android UI를 표시함
    • 데스크톱·키오스크용 Fullscreen Mode를 사용할 수 있음
  • 성능 면에서는 Wayland와 AOSP mesa를 사용해 가능한 한 네이티브에 가까운 동작을 목표로 함
  • Android 런타임 환경은 LineageOS 기반의 최소 커스터마이즈 Android 시스템 이미지와 함께 제공되며, 현재 이미지는 Android 13 기반임

문서, 설치, Waydroid-Linux 베타

  • 문서와 이슈 관리는 별도 링크에서 확인할 수 있음
  • systemd 배포판의 빠른 설치 흐름은 배포판별 설치 문서를 따른 뒤, 자동 시작되지 않았다면 waydroid-container 서비스를 시작하고 애플리케이션 메뉴에서 Waydroid를 실행해 첫 실행 마법사를 진행함
  • 첫 실행 중 요청되면 OTA 링크로 System OTA와 Vendor OTA를 입력함
  • Waydroid-Linux Beta는 Waydroid가 구현할 수 있는 통합 가능성을 보여주기 위해 만든 완전 통합 배포판들임
    • 초기 알파 릴리스는 Ubuntu 20.04(focal)에서 시작함
    • 현재 Ubuntu 22.04(jammy)와 Debian 12(bookworm)도 포함함
    • 가능한 작업 범위를 넓히기 위한 여러 도구와 스크립트를 포함함
  • Waydroid는 LXC와 binder용 커널 모듈을 사용하므로 Waydroid-Linux는 live mode에서는 동작하지 않으며, 정상 동작하려면 설치가 필요함
  • 베타 다운로드 항목은 README.md 확인을 요구하며, 예시 릴리스로 Ubuntu 22.04 KDE-Plasma, Ubuntu 22.04 Gnome, Debian 12 Beta, Ubuntu 21.10 Beta, 이전 알파 릴리스가 제공됨

댓글과 토론

Hacker News 의견들
  • 이게 프런트페이지에 올라온 게 의외임. 꽤 잘 알려진 소프트웨어라서 그럼
    아쉬운 건 Waydroid에서 돌아가는 Google 제공 이미지가 없다는 점임. 예를 들면 일반 시스템 이미지 같은 것. 인터넷에서 받은 임의의 ROM에 비밀번호를 입력하는 건 찜찜함
    https://source.android.com/docs/core/tests/vts/gsi

    • “인터넷에서 받은 임의의 ROM”이라고 보긴 어려움. LineageOS는 매우 오래 자리 잡은 프로젝트이고, 특정 기기에 필요한 펌웨어를 제외하면 완전한 자유·오픈소스 소프트웨어임
      Waydroid처럼 커뮤니티 지원과 지속적인 제공이 필요한 프로젝트에는 자연스러운 선택지임. Google은 Android의 기반인 AOSP에서 원래 있던 많은 자유·오픈소스 부분을 수년에 걸쳐 계속 제거해 왔고, 그래서 LineageOS 같은 프로젝트가 대체 구성요소를 개발해야 했음. 그래도 LineageOS가 AOSP에 가하는 수정은 Google을 포함한 대부분의 휴대폰 제조사보다 적을 것 같음
    • 임의라고 볼 수 있나? LineageOS는 꽤 확립된 프로젝트임. 오히려 Google이 제공하는 이미지에 개인 정보를 입력하는 쪽이 더 꺼려짐. 내 데이터를 수집하고 광고를 보여주는 게 Google의 핵심 사업 모델이기 때문임
    • 솔직히 Google 제공 이미지보다 LineageOS를 더 신뢰함
    • 참고로 Firefox도 예전에 프런트페이지에 올라온 적 있음. 허용되는 일임 :)
    • Google이 Docker에서 돌아가는 이미지를 제공함
  • Mac에서 Docker Desktop이나 OrbStack 같은 걸로 띄울 수 있는 컨테이너화된 Android가 있으면 좋겠음
    Docker 이미지를 수정해서 루팅된 중간자 프록시를 미리 설정해 두고, Android 앱을 올려 네트워크 트래픽과 API 호출을 훨씬 쉽게 관찰하고 싶음

    • 지금 간단히 하고 싶다면 Waydroid를 실행한 뒤 Waydroid용으로 생성된 네트워크 네임스페이스 안에서 Wireshark를 실행하면 됨
      sudo ip netns exec wireshark
    • 프록시 설정은 모르겠지만, redroid는 사실상 Docker 컨테이너 안의 Android임
  • 이게 FuriLabs가 Android 앱 통합을 잘 만든 기반이었음. 물론 포크해서 [0] 크게 수정했지만, Linux 폰에서 Android 앱을 쓸 수 있게 만든 사용자 경험은 훌륭했음
    [0] https://github.com/FuriLabs/waydroid

    • FuriLabs의 Jesus임. FOSDEM 마무리 중이지만 질문이나 피드백이 있으면 답할 수 있음 :)
  • Furiphone FLX1이 이걸 적극적으로 활용하고 있고 정말 좋음. 진짜 Android 폰으로 하고 싶은 일 대부분을 할 수 있음
    물론 내가 원하는 게 많지는 않지만, Signal과 Spotify에 쓰는 사람들도 알고 있음. 훌륭한 프로젝트이고 Linux 폰에 딱 맞음

    • 이 스레드에서 처음 보고 살펴봤는데 좋아 보임. 하나 사고 싶지만 FAQ에 “전체 Google Play Store와 그 요구사항이 필요한 앱은 동작하지 않으며, 일부 은행 앱이 포함된다”고 되어 있음
      결국 휴대폰 두 대를 들고 다녀야 할 것 같음. 은행과 신용카드 앱은 매일 필요한 필수 앱이고, 일부 계정은 데스크톱 브라우저에서도 휴대폰 앱 인증 없이는 로그인조차 못 함. 개별 결제도 자주 휴대폰 앱 확인이 필요함. 더 자유로운 사용자 경험을 위해 계좌를 바꿀 수 있는 상황도 아님
      금융 외에도 주 업무에는 Google 제품군을 써야 하고, 다른 일에서는 Discord도 써야 했음. 이건 기능이 줄어들더라도 브라우저로 가능할 듯하지만, 은행·신용카드 앱은 그렇지 않음
      Waydroid나 FLX1에 대한 불평은 아니고, 그 작업과 창의성은 고맙게 봄. 완전한 자유·오픈소스 폰을 소유하고 직접 만드는 걸 오래 꿈꿨고, 그 작업량도 알고 있음. 예전에 Nokia N900도 두 대 썼음
      다만 시대가 바뀌었고, 지금의 일상생활이 요구하는 앱이나 프로토콜을 자유·오픈소스 기반 시스템 위에서 또는 나란히 실행할 방법이 찾아지길 바람
    • 이 폰은 거의 완벽함. TRRS 커넥터, uSD 카드, 사용자 교체 가능 배터리, 미국 판매까지 갖췄음
      다만 OLED 패널이 없다는 점은 결정적 단점일 수도 있음
    • Furiphone FLX1은 어떤지 궁금함. 온라인 리뷰가 너무 적음
    • USB-C 포트에서 DP 대체 모드를 지원하나?
    • FuriOS에서도 잘 동작하는 Flatpak Signal이 있음
  • 오래전에 산 앱 세 개가 있음. 스웨덴어 사전, 독일어-스웨덴어 사전, 영어-스웨덴어 사전임
    아직 설치는 가능하지만 앱 스토어에서는 더 이상 제공되지 않음. 회사인 Norstedts는 당연하게도 구독 모델로 넘어갔음. 이 앱들을 데스크톱에서 쓰려고 Waydroid를 쓰고 있고 아주 만족함

  • 많은 앱이 Google, Samsung 같은 “공식” Android 배포판에서 실행되는 것에 의존하고, Waydroid의 Lineage 기반 배포판에서는 동작하지 않음
    https://gitlab.com/android_translation_layer/android_transla... 같은 Wine식 접근이 앱을 “공식” Android 배포판에서 실행 중이라고 속이는 데 도움이 될 수 있을 것 같음

    • 이런 식으로 앱을 속이려면 흉내 내야 하는 특정 API 묶음이 있음. “진짜” Android에서는 Magisk 모듈이 일부를 위장하거나, microG가 Google 서비스를 통째로 재구현하는 식으로 처리함
      ATL의 Wine식 접근은 API를 흉내 내기에는 확실히 더 직관적이지만, 그래도 ATL용으로 별도 재구현이 필요함. 반면 Waydroid는 전체 Android 환경을 실행하므로 Magisk나 microG를 재사용할 가능성이 있음
  • 이걸 볼 때마다 “멋진데! Linux 대응 앱이 없는 멋진 Android 앱을 실행할 수 있겠네”라고 생각하지만, 매번 떠오르는 게 없음. 꼭 있어야 하는 Android 앱이 있나?

    • Organic MapsOSMAnd가 있음. 내가 찾은 오픈소스 데스크톱 지도 소프트웨어보다 나음
      Organic Maps에는 데스크톱 Linux 버전이 있지만 기능 동등성은 아직 멀었음. 다만 Organic Maps용 좋은 데스크톱 UI를 만들려는 이 지원금 [1] 덕분에 바뀔 수도 있음
      [1] https://nlnet.nl/project/OrganicMaps-ConvergentUI/
    • 메일 클라이언트인 FairEmail을 좋아함. 이상하게 들리겠지만 내가 써 본 모든 데스크톱 메일 클라이언트보다 나을 수도 있음
    • 내게 중요한 건 앱 기반 인증이 필요한 은행 앱 같은 것임. 물론 이런 해법은 안타깝게도 Waydroid 같은 데서는 잘 안 됨. 앱이 컨테이너 안에 있다는 걸 알아채고 기능을 막기 때문임
    • 주로 Steam Deck에서 모바일 게임을 하고 싶은 사람들에게 추천되는 걸 봄
    • 설정을 바꾸려면 전용 앱이 필요한 “스마트 기타”가 있음. 그게 내가 “스마트”폰을 계속 쓰는 유일한 이유임
  • 이 컨테이너가 하드웨어 USB 장치에 접근할 수 있나? PEQ가 들어간 Moondrop FreeDSP USB-C 케이블이 있는데, 형편없는 Android 앱에서만 동작함
    손에 있는 Android 태블릿은 터치스크린도 나빠서 EQ 설정을 바꾸는 데 너무 오래 걸림. 그냥 Linux 노트북으로 하고 싶음

    • 되는 것 같음. Android에 포커스가 있을 때 USB 장치를 꽂으면 실수로 그 USB 장치를 잡아갈 정도임: https://github.com/waydroid/waydroid/issues/778
      아니라 해도 결국 Linux 컨테이너라서, udev 규칙을 좀 쓰면 어쨌든 동작하게 만들 수 있을 것임
  • 이런 프로젝트에서 계속 빠져 있는 것처럼 보이는 것들이 몇 가지 있음. 호스트의 하드웨어 3D 가속을 대부분의 휴대폰이 기본 지원하는 OpenGL ES와 Vulkan 버전으로 쓰는 부분이 부족함
    또 많은 앱은 휴대폰에서 실행 중이 아님을 감지하는 내장 방식이 있고, cpuinfo를 보고 주장된 기기와 대조한 뒤 종료해 버림
    기기에서 기대하는 ARM 지원도 늘고 있고, 기대 처리량도 함께 올라감. 그래서 평범한 최신 모바일 ARM SoC조차 에뮬레이션하려면 필요한 x86 호스트 성능이 점점 높아지고 있음
    마지막으로 지원되는 Android 버전은 거의 항상 최신보다 3~4세대 뒤처져 있음. 앱들은 오래된 Android 지원을 빠르게 끊거나, 구버전 OS에서 더 적은 기능과 최적화로 실행됨. 이 프로젝트의 Android 기반 버전은 2020년 것임
    일화적으로, 이 분야에서 가장 호환성과 최적화가 좋은 에뮬레이션 스택을 가진 BlueStacks도 7800X3D / RTX 3090에서 돌리면 대부분의 게임이 작년 Snapdragon 8 휴대폰에서 네이티브로 도는 것보다 느림

  • 놀라운 건 여러 Android 컨테이너를 LXC 아래에서 실행할 수 있게 이걸 추상화한 사람이 없다는 점임
    Waydroid에서는 이미지가 하나뿐임. 내가 보기엔 패치가 많이 들어간 커스텀 Linux 커널을 쓰는 것 같았고 제대로 파악하진 못했지만, LXC 인터페이스 쪽은 꽤 단순해 보였음

    • Waydroid는 호스트 커널을 사용함