시작은 미약했으나 끝은 거대한 삽질이어라 !

Windows 에서 macOS 용 App 인 Day One Journal 은 MAC World 에서 유명한 개인 일기/노트 앱입니다. MAC과 아이폰에서 사용이 가능합니다. 이전 1.0 시절에는 사용자가 만든 Windows App 이 있어서 Windows 에서도 글을 작성할 수 있었습니다만 2.0 이 되면서 부터였든지 아무튼 지원이 안되기 시작했습니다. 잊고 지내면 되지만 아이폰 SE 작은 키보드로 입력하는 것이 너무 힘들기도 해서 혹 가상 머신으로 OSX 를 사용할 수 없을까 방법을 찾다 발견한 OSX-KVM 입니다. 세상에는 이인기사들이 넘친다고 했던가요? 이미 최신 버전의 OSX 인 Catalina 까지 지원합니다.

(소스) OSX-KVM https://github.com/kholia/OSX-KVM

부지런히 설치해 보아야 하겠지요?

설치 준비

설치 조건에 QEMU v4.2.0 필요

우선, 설치 가능한 조건을 살펴 보았습니다.

Requirements

  • A modern Linux distribution. E.g. Ubuntu 20.04 LTS 64-bit or later.
  • QEMU >= 4.2.0
  • A CPU with Intel VT-x / AMD SVM support is required
  • A CPU with SSE4.1 support is required for >= macOS Sierra
  • A CPU with AVX2 support is required for >= macOS Mojave

기존 사용하던 PC OS 는 Ubuntu 18.04 였습니다. 다른 조건은 만족했지만 QEMU 가 2.5 였습니다. 찾아 보니 Ubuntu 20.04 에서 QEMU v4.2.0 설치가 가능했습니다. 결국, OS 부터 업그레이드해야 했고, do-release-upgrade 를 사용하다가 OS 설치가 꼬이게 되었습니다. 결국, OS 재설치! ㅠㅠ 참고로, do-release-upgrade 는 Local Console 에서만 사용해야 한다는 것을 다시 한 번 뼈저리게 배웠습니다.

OSX-KVM 설치 준비

전체 작업 절차는 Ubuntu Desktop 에서 시행해야 합니다.

기본 Ubuntu 20.04 Desktop 설치 후, 필요한 Package 를 몇 가지 더 설치합니다.

$ sudo apt install uml-utilities libguestfs-tools

OSX-KVM 소스를 다운로드하고, kvm.conf 를 복사합니다.

$ wget https://github.com/kholia/OSX-KVM/archive/master.zip
$ unzip master.zip
$ cd OSX-KVM-master/
$ sudo cp kvm.conf /etc/modprobe.d/

나중에 재부팅을 하기로 하고, 설치 단계에서는 바로 적용하기 위한 설정을 합니다. echo 명령을 사용할 때는 Sudo 가 아닌 Su 상태에서 진행합니다.

$ sudo su -
# echo 1 > /sys/module/kvm/parameters/ignore_msrs

python 이 필요한데 OS 기본 Python3.8 이 python 에 대한 Link 가 없다면 우선 Link 를 만들어 줍니다.

$ sudo update-alternatives --list python
update-alternatives: error: no alternatives for python
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 0
$ sudo update-alternatives --list python
/usr/bin/python3
$ ll /usr/bin/python*
lrwxrwxrwx 1 root root      24 Nov  5 09:09 /usr/bin/python -> /etc/alternatives/python*
lrwxrwxrwx 1 root root       9 Nov  3 10:56 /usr/bin/python3 -> python3.8*
-rwxr-xr-x 1 root root 5486352 Jul 28 21:59 /usr/bin/python3.8*

이제 OSX OS Image 를 다운로드합니다. 12번의 macOS Catalina 10월 27일 버전을 선택했습니다.

$ ./OSX-KVM-master/fetch-macOS.py
 #    ProductID    Version   Post Date  Title
 1    061-26578    10.14.5  2019-10-14  macOS Mojave
 2    061-26589    10.14.6  2019-10-14  macOS Mojave
 3    041-91758    10.13.6  2019-10-19  macOS High Sierra
 4    041-88800    10.14.4  2019-10-23  macOS Mojave
 5    041-90855    10.13.5  2019-10-23  Install macOS High Sierra Beta
 6    061-86291    10.15.3  2020-03-23  macOS Catalina
 7    001-04366    10.15.4  2020-05-04  macOS Catalina
 8    001-15219    10.15.5  2020-06-15  macOS Catalina
 9    001-36735    10.15.6  2020-08-06  macOS Catalina
10    001-36801    10.15.6  2020-08-12  macOS Catalina
11    001-51042    10.15.7  2020-09-24  macOS Catalina
12    001-57224    10.15.7  2020-10-27  macOS Catalina

Choose a product to download (1-12): 12

BaseSystem.dmg OS Image 파일 다운로드가 끝나면 qemu 가 인식할 수 있는 img 파일 형태로 변경을 해 줍니다. 이 때, 신규 생성 파일은 QEMU 에서 사용하는 VM Pool (예, /disk1/iso-images ) 로 생성해 주면 나중에 virt-manager 에서의 VM 설정이 수월해 집니다.

$ sudo qemu-img convert BaseSystem.dmg -O raw /disk1/iso-images/BaseSystem.img

OSX VM 에서 사용할 디스크 파일을 생성합니다.

$ cd /disk1/virt-images
$ sudo qemu-img create -f qcow2 mac_hdd_ng.img 128G

OSX OS 설치

Mac OS 설치를 합니다. OpenCore-Boot.sh 파일 내용 중, OS 설치 Image 파일 위치와 OSX VM 에서 사용할 Disk 파일 위치를 수정해 줍니다.

$ vi OpenCore-Boot.sh
  -drive id=InstallMedia,if=none,file="/disk1/iso-images/BaseSystem.img",format=raw
  -drive id=MacHDD,if=none,file="/disk1/virt-images/mac_hdd_ng.img",format=qcow2

GUI 화면OpenCore-Boot.sh 을 실행하면 다음 그림과 같이 Booting Option 화면이 나옵니다. 메뉴간 이동은 화살표 키로 가능합니다. macOS Base System 을 선택하고, Enter 키를 눌러서 OS 설치를 시작합니다.

macOS 유틸리티 화면에서 우선 “디스크 유틸리티” 를 선택하고 “계속” 진행합니다.

QEMU HARDDISK Media 2개 중 용량이 큰 쪽을 선택합니다.

상단의 메뉴 아이콘에서 검사/복구 , 지우기를 통해서 디스크를 포맷합니다.

디스크 유틸리티를 종료하고, macOS 유틸리티 화면으로 빠져나옵니다. 이제 “macOS 다시 설치“를 선택하고 “계속” 진행합니다.

OS 설치용 디스크를 선택하고 OS 설치를 진행합니다.

설치 종료 후에 재시작을 하면 이제는 다음과 같이 OS 선택이 가능한 메뉴가 추가됩니다.

보너스 – virt-manager 에 OSX 추가

OSX 설치를 완료한 후, macOS-libvirt-Catalina.xml 파일 내용 중에서 CHANGEME 를 적절하게 수정합니다. 이 외, virbr0 과 같은 NIC 설정, spice 또는 VNC 설정 등을 수정할 수 있습니다. 수정을 완료한 후에는 문제가 없는지 확인을 합니다.

$ cd OSX-KVM-master
$ cp macOS-libvirt-Catalina.xml macOS-libvirt-Catalina.xml.org
$ sed -i "s/CHANGEME/$USER\/work\/osx-kvm\/OSX-KVM-master/g" macOS-libvirt-Catalina.xml
$ virt-xml-validate macOS-libvirt-Catalina.xml
macOS-libvirt-Catalina.xml validates

virt-manager 에 VM 설정 내용을 등록합니다.

$ virsh --connect qemu:///system define macOS-libvirt-Catalina.xml

virt-manager 에서 macOS 를 찾아서 필요한 수정을 한 후, VM 을 실행시킵니다.