Ubuntu に 最新の macOS 仮想マシンを建てる

https://qiita.com/nak435/items/b5658f560a6d05d9c7db

以前、↑こちらの記事を書きました。
この中で、WSL2上のUbuntuにmacOS仮想マシンを建てる方法を紹介していますが、その方法よりもっと簡単な方法がありましたので、今回は、Ubuntuに特化して「macOS 仮想マシンを建てる」方法を紹介します。

# Quickemu

https://github.com/quickemu-project/quickemu

『Quickemu は、仮想マシンを作成するときに自動的に「適切な処理」を実行する優れた QEMU のラッパーです。』（Google翻訳）

macOS の仮想マシンを作成するのに、たった2つのコマンドを実行するだけです。

```sh
#macOSのインストールイメージを作成
quickget macos sonoma

#QEMUを使ってmacOSの仮想マシンを起動
quickemu --vm macos-sonoma.conf
```

しかし、それらのコマンド自体のインストールが必要です。ですが、それも簡単で、次のコマンドを順に実行するだけです。

```terminal
sudo apt-add-repository ppa:flexiondotorg/quickemu
sudo apt update
sudo apt install -y quickemu

mkdir macosvm
cd macosvm

quickget macos sonoma
quickemu --vm macos-sonoma.conf
```

macOS Sonoma を指定して仮想マシンを作成しましたが、起動してみたところ、最新の Sequoia でした。_OSをアップデートする手間が省けた。_<br><br>


### 今回使用した Ubuntu PC

![scr5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283293/abf07082-caf4-62e8-3679-eff9ef0d6c26.png)


_Geekbench6.3.0 CPU Benchmark で測定した Single core / Multi core スコア_

|Host / VM|OS|Geekbench|spec (cpu / memory)|
|:-:|:-:|:-:|:-:|
| Host|Ubuntu 24.04.1|2735 / 17227|16core / 64GB |
| quickemu|macOS Sequoia 15.2 |2295 / 13361|8core / 32GB<br>（Hostの半分を割当） |

MacBook Pro 2019 の Geekbench Single / Multi スコアが 1328 / 4716 でしたので、仮想macの方が高速です。<br><br><br><br>



![scr1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283293/32fc6c95-6ebb-ca86-958b-311bb06749cb.png)
![scr4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283293/83e6bf7c-4965-d443-6afc-4755dc8d9e2f.png)!![scr3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283293/ade859a2-5830-6420-6c2d-684f657fb2b6.png)


唯一の欠点は、スクリーン（ディスプレイ）サイズ を大きくしたときに、表示がおかしくなることです。VRAMのサイズが反映されないことが原因か？



### Swiftの実行速度も比較してみた

_1から1000までの階乗を出力するプログラムで、1000! は 2568桁となります。_

```swift
@inlinable func measureTimeSeconds(block: (() -> Void)) -> Double {
    let startTime = Date()
    block()
    return -startTime.timeIntervalSinceNow
}

let period = measureTimeSeconds {
    var factorial = BigInt.zero
    for n in 1 ... 1000 {
        if n == 1 { factorial = .one }
        else { factorial *= BigInt(n) }
        print("\(n)!", factorial())
    }
}
print(period)
```

`BigInt`は、↓ こちらの記事を参照してください。

https://qiita.com/nak435/items/05450dfe759be3b3ad7b

![scr0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283293/bfd2088f-e882-9f91-bbd0-fe4105eba88c.png)



| PC | Swift version | 実行結果(秒) | Spec |
|:-:|:-:|:-:|:-:|
| macOS Sequoia on Ubuntu  | 6.0.3  | 0.339  | (8core / 32GB memory)  |
| Ubuntu 24.04.1  | 6.0.3  | 0.167  | AMD Ryzen 9 7945HX 16core / 64GB Memory |
| MacBook Pro 2019<br>Sequoia 15.2 | 6.0.3  | 0.701  | Intel Core i5 2.4GHz 4core / 8GB memory |
| M1 Mac mini 2020<br>Sonoma 14.7.2  | 5.10  | 0.803  | Apple M1 8core / 16GB memory  |
| Raspberry Pi 5B<br>Bookworm 6.12.25 | 6.0.1  | 0.621  | ARM ARMv8 4core / 8GB memory  |

M1 Mac mini 2020 が一番遅いとは意外でした。
M1 Mac mini 2020 の Geekbench Single / Multi スコアが 2389 / 8660 でしたので、MacBook Pro 2019 より高性能な はずなんですが・・・。

_M4 Mac mini で同じコードを実行したら、どの程度の性能なのか知りたいな・・・_<br><br>


https://browser.geekbench.com/v6/cpu/8853585

https://browser.geekbench.com/v6/cpu/9695791


## Quickemu による macOS 導入の動画（オランダ語?）

https://www.youtube.com/watch?v=itG_rBntF8c

<br><br>**以上**