06 August 2023

macOS 11.0에서는 Virtualization 프레임워크를 도입하여, 이를 활용해 macOS와 Linux 기반 운영체제를 가상 머신으로 실행할 수 있게 되었습니다. Document

Virtualization 프레임워크를 사용하면, VM에서 빌드를 수행하므로 일관된 환경에서 작업이 가능합니다. 그 결과 각 빌드 머신마다 Xcode 설치, OS 업데이트, 라이브러리 추가 등의 작업을 수행할 필요가 없어집니다.

macOS 이미지를 관리하고 다양한 편의 기능을 제공하는 도구를 활용하면 초기 작업시간을 크게 줄일 수 있습니다.

그 중 Virtualization 프레임워크를 활용하는 라이브러리 Tart(Link, GitHub)를 이용하여 MacOS의 VM을 생성해보겠습니다.

Tart

1.HomeBrew를 이용하여 Tart를 설치합니다:

$ brew install cirruslabs/cli/tart

2.tart clone를 이용하여 이미지를 내려받습니다:

$ tart clone ghcr.io/cirruslabs/macos-ventura-xcode:latest ventura-xcode

해당 이미지는 orgs/cirruslabs의 Packages에서 필요한 macOS 이미지를 선택해 다운로드하면 됩니다. 순수한 macOS가 필요하면 ‘vanilla’, brew가 설치된 버전이 필요하면 ‘base’, Xcode가 설치된 버전이 필요하면 ‘xcode’를 선택합니다.


링크

주의 : 이미지 용량이 크므로 미리 충분한 저장 공간을 확보해두세요.

이후 .tart 폴더 내에 VM 이미지가 생성된 것을 확인할 수 있습니다.

$ tree .tart
.tart
├── cache
│   ├── IPSWs
│   └── OCIs
│       └── ghcr.io
│           └── cirruslabs
│               └── macos-ventura-base
│                   └── latest -> /Users/minsone/.tart/cache/OCIs/ghcr.io/cirruslabs/macos-ventura-xcode/sha256:d67230f3e3f0e52bae4e0923aa7d7ebaa5e799df9b812eab18557675d1480c84
├── tmp
└── vms
    └── ventura-xcode
        ├── config.json
        ├── disk.img
        └── nvram.bin

9 directories, 4 files

이미지의 용량과 실제 이미지는 차이가 있으므로 이를 확인하는 것이 중요합니다.


3.이제 생성한 VM 이미지를 Tart로 실행합니다:

$ tart run ventura-xcode

4.해당 이미지의 계정은 admin/admin으로 설정되어 있습니다. 이를 통해 ssh를 사용하여 해당 VM에 로그인할 수 있습니다:

$ ssh admin@$(tart ip ventura-xcode)

매번 비밀번호를 입력하는 것이 번거롭다면, ssh-copy-id를 사용하여 비밀번호 입력을 생략할 수 있습니다:

$ ssh-copy-id admin@$(tart ip ventura-xcode)

원격으로 명령을 실행할 수 있습니다:

$ ssh admin@$(tart ip ventura-xcode) ls -al
$ ssh admin@$(tart ip ventura-xcode) 'ls -a; df'

정리

  • Tart를 사용하여 macOS를 가상 머신으로 실행할 수 있습니다.
  • 이미지의 용량이 커, 이미지 관리를 어떻게 해야할지 판단이 필요할 것 같습니다.

참고자료