시작은 미약했으나 끝은 거대한 삽질이어라 !
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 설치를 시작합니다.
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.02.png)
macOS 유틸리티 화면에서 우선 “디스크 유틸리티” 를 선택하고 “계속” 진행합니다.
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.03.png)
QEMU HARDDISK Media 2개 중 용량이 큰 쪽을 선택합니다.
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.04.png)
상단의 메뉴 아이콘에서 검사/복구 , 지우기를 통해서 디스크를 포맷합니다.
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.05.png)
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.06.png)
디스크 유틸리티를 종료하고, macOS 유틸리티 화면으로 빠져나옵니다. 이제 “macOS 다시 설치“를 선택하고 “계속” 진행합니다.
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.07.png)
OS 설치용 디스크를 선택하고 OS 설치를 진행합니다.
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.08.png)
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.09.png)
설치 종료 후에 재시작을 하면 이제는 다음과 같이 OS 선택이 가능한 메뉴가 추가됩니다.
![](https://www.boolsee.pe.kr/wp-content/uploads/2020/11/osx-kvm.10.png)
보너스 – 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 을 실행시킵니다.