GN⁺: 애플 실리콘 VM들이 왜 이렇게 다른가?
(eclecticlight.co)애플 실리콘 VM이 왜 다른가?
- 애플 실리콘 맥에서 macOS 가상 머신(VM)을 실행하는 것은 인기가 없어 보일 수 있지만, 애플에게 오랫동안 중요한 목표 중 하나임.
- M시리즈 맥에서 가상화 프로그램을 사용하면, 인텔 맥에서 macOS 및 기타 운영 체제를 가상화하는 것과 얼마나 다른지 알 수 있음.
- 가상화가 왜 중요하고, 어떻게 그렇게 달라졌는지 설명하는 내용.
애플 실리콘의 세 가지 기둥
- 2020년 6월 WWDC에서 크레이그 페더리기가 애플 실리콘의 세 가지 기둥을 발표함: 양쪽 아키텍처에서 실행되는 유니버설 앱, 인텔 코드를 Arm 명령어로 번역하는 로제타 2, 그리고 가상화.
- 애플이 개발자 전환 키트를 출시하기도 전에, 안드레아스 벤드커가 리눅스를 게스트로 실행하는 Parallels Desktop의 사전 출시 버전을 시연했지만, 윈도우에 대한 언급은 없었음.
가상화의 초기
- 가상화 초기에는 하드웨어에서 직접 실행되는 타입 1 하이퍼바이저와, 하드웨어 위에 주 운영 체제를 실행하고 그 위에서 하이퍼바이저가 실행되는 타입 2(호스티드)로 구분됨.
- 데스크탑 컴퓨터에서는 VMware Fusion, Parallels Desktop, Oracle VirtualBox와 같은 타입 2 가상화 제품이 더 흔함.
하드웨어 지원과 가상화
- 하이퍼바이저에 대한 하드웨어 지원이 있으면 수정되지 않은 게스트 운영 체제를 실행하기가 더 쉬움.
- 인텔의 VT-x 기능 세트 또는 Arm CPU의 AArch64 가상화를 사용할 수 있음.
- 장치 지원 문제는 가상화 프레임워크에서 해결하거나 가상화 프로그램이 처리할 수 있음.
애플 실리콘 칩의 독특함
- 애플 실리콘 칩의 모든 하드웨어 장치는 인텔 맥의 해당 장치와 다름.
- 애플이 외부 사용을 위해 완전히 문서화하고 싶어도, 인텔 맥의 장치 지원에 필요한 엔지니어링 노력은 제3자에게 너무 비쌌을 것임.
- 따라서 하이퍼바이저로 시작하여 완전한 가상화 소프트웨어를 구축하기를 기대하는 것은 실행 가능하지 않았으며, 애플과 사용자가 기대하는 높은 성능을 달성하기도 어려웠음.
Virtio 드라이버와 가상화
- 애플은 대신 macOS에 장치 지원을 내장하는 형태로 Virtio 드라이버를 구축함.
- Virtio는 I/O 장치에 대한 추상화 계층을 제공하는 표준으로, 게스트 운영 체제가 파일을 열려고 할 때, 이를 Virtio 프론트엔드 스토리지 장치 파라 드라이버로 전달하고, 거기서 Virtio 백엔드 드라이버를 통해 스토리지 장치와 상호 작용함.
- 가상화 앱을 만드는 것은 필요한 Virtio 장치를 구성하고 열어 게스트, Virtio, 호스트가 작업을 처리하게 하는 것임.
애플의 Virtio 선택
- 애플의 Virtio 선택은 리눅스가 이미 좋은 Virtio 지원을 가지고 있었기 때문에 영향을 받았으나, 당시 macOS는 Virtio 지원이 없었음.
- 애플 엔지니어들은 Monterey 출시 전 몇 년 동안 macOS에 Virtio 지원을 구축함.
- macOS의 Virtio 구현은 키보드와 포인팅 장치, 공유 클립보드('Spice'), Metal 및 GPU 지원을 통한 고성능 그래픽을 지원하는 확장 기능을 포함함.
Virtio 모델의 장점
- Virtio 모델에서는 운영 체제가 지원을 제공하는 것이며, 이는 VMware와 Parallels와 같은 벤더들에게 개발 비용을 줄여주고, 그들의 제품의 상업적 가치를 감소시킴.
- 애플은 애플 실리콘에서 가상화가 지원하는 하드웨어와 기능을 결정함.
가상화의 미래와 유연성
- VM에서 이전 버전의 macOS를 실행하면 사용자가 현재 macOS에서 로제타 2 지원이 중단된 후에도 인텔 전용 앱을 실행할 수 있음.
- 애플 실리콘 맥에서 최소 macOS 버전과 호환되지 않는 소프트웨어를 실행할 수 있음.
- 리눅스 또는 macOS를 사용하여 개발자는 Docker와 같은 경량 VM 패키지를 배포할 수 있음.
GN⁺의 의견
- 애플 실리콘 맥에서의 가상화는 기존 인텔 기반 가상화와 다른 접근 방식을 취하고 있으며, 이는 애플이 하드웨어와 소프트웨어 통합을 강화하려는 전략의 일부로 보임.
- Virtio를 통한 가상화는 개발자들에게 비용 효율적인 솔루션을 제공하며, 애플의 통제 하에 성능 최적화를 가능하게 함.
- 가상화 기술의 발전은 애플 실리콘 맥 사용자들에게 장기적으로 다양한 소프트웨어 환경을 제공할 수 있는 가능성을 열어줌, 특히 오래된 애플리케이션과 시스템을 지원하는 데 유용할 것으로 예상됨.
가상화의 미래 부분은 좀 이상해 보입니다.
가상화가 가능하다고 무조건 기존 시스템을 호환할 수 있는 것은 아닙니다. 결국 어딘가에선 x86 명령어를 arm 명령어로 변환해 주어야 합니다.
이것을 HW나 OS(로제타?)에서 지원해 주지 않는다면, 결국 VM 단에서 에뮬레이션 할 수 밖에 없단 것인데, 이럴 경우 성능 저하가 매우 심합니다.
지금도 애플 실리콘 Mac에서 x86용 linux를 설치할 수는 있습니다만, 성능은 미칠듯이 느립니다. (작년인가에 x86 용 바이너리가 필요해 빌드용으로 설치해 봤다가 바로 포기했습니다.)
Hacker News 의견
- 윈도우즈는 하이퍼-V에 의존하는 기능이 많으며, 이를 활성화하면 윈도우즈가 직접 부팅되지 않고 하이퍼-V가 시작되어 주 윈도우즈 시스템이 특권을 가진 VM에서 실행됨.
- 애플 실리콘에서 x86-64 윈도우즈/리눅스 가상화의 현재 상태에 대한 정보를 찾는 사람이 있으며, 이에 대한 중요한 응용 프로그램에 대해 기사가 언급하지 않음을 아쉬워함.
- 모든 OS 사용자가 OS의 격리된 VM에 로그인하기를 바라며, 이를 통해 사용자는 자신의 애플 컴퓨터의 소유권을 유지할 수 있음.
- macOS는 동시에 두 개의 VM만 실행할 수 있으므로, 맥 미니를 빌드 서버로 사용하려는 경우 가장 저렴한 모델을 구매하는 것이 좋음.
- Parallels를 사용하여 MacOS VM을 개발에 사용하고 싶었지만, 애플 ID로 로그인할 수 없어 사용에 제한이 있음.
- 도커가 리눅스/amd64 플랫폼에서 거의 네이티브 성능으로 빠르게 동작하는 반면, x86 UTM VM이 훨씬 느린 이유에 대해 혼란스러워함.
- 윈도우즈를 위한 virtio 레이어의 진행 상황이나 누가 개발하고 있는지, 그리고 가까운 미래에 작동할 가능성이 있는지에 대한 질문이 있음.
- 러스티 러셀이 작성한 드라이버에 대한 언급이 있는데, 그는 소프트웨어 개발에 대한 깊은 통찰력을 공유하므로 트위터에서 팔로우할 것을 권장함.
- 모든 상용 데스크탑 VM(VMWare Fusion/Parallels/UTM/Vimy)이 이제 virtio 모델을 사용하는지, 그리고 이론적으로는 ARM64 윈도우즈가 모두 비슷하게 동작해야 하는지에 대한 의문이 있음.
- M2 애플 실리콘 칩에서 Qemu VM을 한 명령으로 만드는 방법을 약 1년간 찾으려고 시도했지만, 맥OS나 AsahiLinux에서 Alpine Linux + Sway WM을 Qemu로 실행하는 것이 x86-64에서는 상대적으로 간단한 반면, 어려움을 겪고 있음.