포스트

Mac Silicon에서 VM을 통한 Windows 구동(feat. UTM)

Mac Silicon에서 VM을 통한 Windows 구동(feat. UTM)

FE 개발 중 특정 Windows 환경에서만 레이아웃이 깨지는 문제를 마주쳤다.

Windows는 설치 직후 연결된 모니터의 물리적 픽셀 밀도(DPI)를 자동으로 읽어 화면 배율을 결정한다.
사용자가 아무것도 건드리지 않아도 13~15인치 FHD 노트북이라면 125%, QHD/4K 모니터라면 150% 이상이 자동 적용된다.
같은 코드라도 어떤 모니터를 연결하느냐에 따라 레이아웃 붕괴 여부가 달라지는 이유다.

Mac에서는 이 환경을 정확히 재현하기 어렵다. 문제를 확인하려면 실제 Windows 환경이 필요했다.


재현 환경 세팅 방법

1) BrowserStack / LambdaTest

실제 Windows 머신과 실제 브라우저를 클라우드로 제공하는 서비스다.
BrowserStack Local 터널을 사용하면 배포 없이 로컬 개발 서버도 연결할 수 있다.

  • BrowserStack: 유료, 무료 trial 제공
  • LambdaTest: 무료 플랜으로 월 100분 제공

2) Windows VM 로컬 설치

Mac에서 UTM(무료) 또는 Parallels로 Windows VM을 설치한다.
같은 네트워크이므로 VM 내 브라우저에서 Mac 개발 서버에 바로 접속할 수 있다.

3) 문제가 재현되는 PC 직접 활용

문제가 발생하는 Windows PC가 이미 있다면, 같은 Wi-Fi 환경에서 Mac의 IP로 직접 접속하면 된다.

1
2
# Mac 터미널에서 IP 확인
ipconfig getifaddr en0

이 글에서는 2번 방법, UTM을 사용한 Windows VM 로컬 설치를 다룬다.


Mac에서 Windows VM 세팅

1) UTM 설치

mac.getutm.app에서 다운로드한다.
App Store에도 등록되어 있지만 유료이므로, 공식 사이트에서 직접 받는 것이 좋다.

2) Windows 11 ARM64 ISO 다운로드

여기서 한 번 막혔다.

Apple Silicon Mac은 ARM 아키텍처이므로 ARM64 버전의 Windows ISO가 필요하다.
그런데 Microsoft 공식 다운로드 페이지에서는 ARM64 ISO를 제공하지 않는다.
x64 ISO를 받아 VM에 올리면 머신이 아예 구동되지 않는다.

ARM64 ISO는 CrystalFetch ISO Downloader를 통해 받아야 한다.
App Store에서 ‘CrystalFetch’를 검색해 설치하면 된다.
CrystalFetch는 UUP dump 서비스를 통해 Microsoft 서버에서 직접 ARM64 빌드를 받아 ISO 파일로 조합해 준다. 시간이 다소 걸리지만 공식 빌드 그대로다.

3) UTM VM 생성

UTM을 실행하고 + 버튼으로 새 VM을 생성한다.

  • 가상화 방식: Virtualize 선택 Emulate는 x86 등 다른 아키텍처를 소프트웨어로 모방하는 방식으로 성능이 크게 떨어진다. Apple Silicon은 ARM이므로 ARM64 Windows를 네이티브로 가상화할 수 있다. 반드시 Virtualize를 선택한다.
  • OS: Windows
  • Boot ISO Image: 위에서 받은 ARM64 ISO 선택
  • 메모리: 최소 4GB, 권장 8GB 이상
  • 스토리지: 최소 64GB

4) Windows 설치

VM을 시작하면 UEFI 펌웨어 화면이 잠깐 지나간 후 다음 메시지가 표시된다.

1
Press any key to boot from CD or DVD...

이 메시지는 2~3초 내에 사라진다. 이 타이밍을 놓치면 EFI Shell로 떨어진다. 당황하지 않아도 된다. Shell에서 아래 두 줄을 순서대로 입력하면 설치 화면으로 진입할 수 있다.

1
2
fs0:
efi\boot\bootaa64.efi

이후는 일반적인 Windows 11 설치 과정과 동일하다.

설치 중 네트워크 연결을 요구하는 화면에서 막힐 수 있다.
이 경우 Shift + F10으로 커맨드 프롬프트를 열고 아래 명령어를 입력하면 “인터넷 없이 계속” 옵션으로 우회할 수 있다.

1
OOBE\BYPASSNRO

입력 후 자동으로 재시작되며, 재시작 후에는 “인터넷 연결 없이 계속” 버튼이 활성화된다.

5) Mac 개발 서버 접속

utm example

Windows VM 설치가 완료되면, VM 내 브라우저에서 Mac의 개발 서버에 접속할 수 있다.

UTM은 기본적으로 Shared Network(NAT) 모드를 사용한다.
이 모드에서 VM이 호스트(Mac)에 접근하는 주소는 고정되어 있다.

1
http://10.0.2.2:포트번호

Mac 터미널에서 실제 IP를 확인해 직접 접속하는 것도 가능하다.

1
ipconfig getifaddr en0

같은 Wi-Fi 환경이라면 이 IP로도 정상 접속된다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.