禁断のHackintosh

October 04, 2021

HackintoshmacOS

目次

はじめに

Windows10上のVirtualBoxにmacOSを載せて使っていると、その遅さが気になってきます。VirtualBoxは所詮エミュレーター、mac実機にはかないません。そこで、前から気になっていたHackintoshに挑戦してみました。Hackintoshとは、本来macでしか動作しないmacOSをPCで動作させることをいいます。Intel cpuを載せたmacの場合、ハードウェア構成はほぼほぼPCと同じなので、macとは異なるデバイスはドライバを用意しmacのフリをさせれば、macOSが起動してしまう訳です。

PCにmacのフリをさせるキモがOpenCoreというブートローダー。PCのブートローダーをOpenCoreブートローダーに入れ替えると、PCでmacOSが起動するようになります。

ちなみに、HackintoshブートローダーにはOpenCoreとCloverの2システムがあり、Cloverが古参で歴史がある分情報が多いのですが、OpenCoreが新しくオープンソースで開発されているので、これからの時代はOpenCoreを選択すべきと思います。

本稿では、Hackintoshで何ができたかと、Hackintoshによる理想のmacOS/Windows混在環境を中心に紹介していきます。Hackintoshの具体的な設定方法は本文中のリンクを直接ご参照されればよろしいかと。

ターゲットPC

Hackintoshの情報収集はBoot macOSが有用です。Boot macOSの隅々まで理解できれば、どんなハードウェア構成でもHackintoshを構築することができると思います。お手軽にやってみるには、既に稼働実績のある構成のPCを用意し、その構成のPC用のEFIを入手すれば確実にHackintoshを稼働させることができるでしょう。

筆者のターゲットPCは、IntelNUC 8i7BEHです。第8世代(Coffee Lake)Intel Core搭載機。2019年に購入し、Windows10を入れてメイン機として使用しておりました。

nuc8i7beh.png

8i7BEHにはストレージベイが2つ(NVMe SSDとSATA 2.5’SSD)あり、NVMe SSD 1TBにmacOSを入れ、SATA SSD 1TBにはWindows10を入れて、デュアルブートで運用しようと考えた次第です。

IntelNUC 8i7BEHはHackintosh稼働機としてはポピュラーな存在のようで、OpenCore/Cloverどちらも設定済みのEFIがいくつか公開されています。

Hackintosh化に成功すれば、IntelNUC 8i7BEHがMacMini2018相当に変身します。

OpenCoreブートローダーのセットアップ

OpenCoreブートローダーのセットアップの手順は、以下のサイトを参考に挑戦しました。

https://zunda-hack.com/2020:12/31/how-to-dream-to-hackintosh-macos-big-sur-pc-with-opencore/
【Hackintosh】OpenCoreを使ってmacOS Big Surインストールの夢を見る方法【自作PC】

Hackintoshのコミュニティでは、Hackintoshを使うことを「夢を見る」という言い方をしているようです。

上述のサイトを熟読すれば、どういう手順でOpenCoreを設定していくのかの流れがよく理解できます。

macOSは、デバイスドライバーはKErnel eXTension(KEXT)モジュールで実現されています。Macで採用されているデバイスのKEXTはmacOS中に含まれているのですが、Macで使われないデバイスは、そのデバイス用のKEXTを調達してきて、ブートローダーから読み込むようにに設定してあげる必要があります。

ターゲットハードウェアの種類にあわせたファームウェアテーブル(SSDT)も調達する必要があります。

これらはネット上の情報が充実しており、ハードウェアの知識が乏しくても、それなりにかき集めることが可能です。

設定ファイルの作成やEFIの作成も便利なツールがあり、それを利用すれば容易です。

Hackintoshとは要はブートローダーがPCにMacのフリをさせることなので、Macの証となるモデルid、機種id、シリアルナンバー、 lanポートのmacアドレス等を設定してあげる必要があります。これらのidは本来Appleの工場で一元管理されているもので、それを勝手に偽装して勝手に使うというところが、Hackintoshの一番ダークなところです。

シリアルナンバーなどのidは、macOSをインストールしApple idを設定する際、Appleに送信されているだろうし、その時既存のシリアルナンバーと競合したらどうなるのかとか、 lanポートのmacアドレスが競合するとネットに障害が起こるとか、不安要素は多々あります。

そういった不安は一旦おいておいて、まとめるとOpenCoreの設定ですべきことは、

  • ターゲットハードウェアを構成するデバイスに対応するデバイスのうち、Macで使われていないデバイスのKEXTを調達する。
  • CPUの種類等、ターゲットハードウェアの特性を定義する。
  • ハードウェアデバイスの概要を示すファームウェアのテーブル(SSDT)を調達する
  • Macのふりをするための、Macのモデルid、機種id、シリアルナンバー、 lanポートのmacアドレス等を設定する。
  • 以上をまとめてEFIを作成する。

となります。

設定の流れは以上なのですが、この作業はブートローダーやデバイスドライバーというハードウェアに近い部分を、信頼性が不明なサイトから寄せ集めるという工程を経るため、リスクを十分考えておく必要があります。KEXTにバックドアを仕組まれてPCのデータを抜かれてしまうことも原理的には可能です。「OpenCoreはオープンソースだから安全」かもしれませんが、野良サイトから調達したバイナリが安全なソースをビルドして作られたものではない可能性もあります。本当ならばすべてソースコードを調達し、自らコードを読んで安全を確認し、自らの手でビルドし使うことができる技術力を持った人だけがHackintoshに挑戦できるということなのだと思います。残念ながら筆者にはその能力はないのですが始めてしまいました。

macOSのインストール

USBメモリにmacOS Installerを焼いて、ブート可能なインストールメディアを作成します。例えば、macOS Big Surの場合は、 Installerをダウンロード後、macのターミナルから以下のコマンドで作成することができます。

$ sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia  --volume /Volumes/usbmem

このコマンドにより「Install macOS Big Sur」という起動可能なヴォリュームが生成されます。それと同時に不可視のヴォリューム「EFI」も生成されています。

「EFI」ヴォリュームは不可視で、ディスクユーティリティでも見ることはできないのですが、「Clover Configurator.app」というツールを利用すると、マウントすることができます。「Clover Configurator.app」で「EFI」ヴォリュームをマウントし、もともとあったEFIの中身を消して、前節で作成したEFIをコピーするとHackintoshインストーラーの完成です。

インストールに先立ち、ターゲットPCのBIOSの設定を変更する必要があるかもしれません。

IntelNUC 8i7BEHの例、デフォルトからの変更分。

【BIOSの設定】

Devices > USB > Port Device Charging Mode: off
Devices > USB > USB Legacy > Disabled
Devices > SATA > Controller Mode: AHCI
Security > Thunderbolt Security Level: Legacy Mode
Power > Wake on LAN from S4/S5: Stay Off
Boot > Boot Configuration> Network Boot: Disable
Boot > Secure Boot > Disable

ただし、BIOSの設定を変更すると、これまで動いていたWindows10が動かなくなるかもしれません。HackintoshとWindows10のデュアルブートを考えている場合は、BIOSの再設定後、最悪Windows10を再インストールが必要になります。

デュアルブート時に、Windows10からMacintosh HDを参照したり、逆にmacOSからWindows10ディスクを参照したりするために、Bit Locker暗号化はオフにしたほうが便利です。ディスク紛失時は痛い目にあいますが。暗号化オフだとディスクが破損した場合でもメーカー送りは怖くてできなくなります。

USBメモリからブートする前に、ターゲットPCにすでにWindows10などをインストールしたディスクが接続されていたら、はずしておくことを強くお勧めします。Hackintoshをインストールするとほぼ間違いなくWindows10のブートが出来なくなります。

BIOSの設定が出来たら、あとはUSBメモリからブートすると、ふつうにmacOSインストーラーが起動し、macOSのインストールができます。Hackintoshであることを意識する必要はありません。

macOSのインストールが成功し、macOSが起動したら、「Clover Configurator.app」を使用して、起動ディスクのEFIヴォリュームをUSBメモリのEFIヴォリュームと同じ内容に書き換えると、以降USBメモリを抜いて直接macOSが起動します。

こうやてまとめるとすんなり導入できたように見えますが、けっこうハマりました。OpenCoreは発展途上のプロダクツなので、バージョンが小数点2桁目が1違っただけで動かなくなったり、config.plistのスキーマが変更になったりが日常茶飯事です。最初は意味が分からず先人達が作成したEFIの現物と見比べて、必要なリソースを寄せ集めていたのですが、ちょっとしたバージョンの不整合で全く動かない状態になるので、細心の注意が必要です。

Boot macOSの記事によれば、Hackintoshの完成度を評価する目安は、

  • 起動するかどうか
  • 画面が出るか
  • 音が出るか
  • LANに接続できるか
  • WiFiが動くか
  • iPhoneと連携できるか
  • iMessageが動くか

ということのようです。下に行くほど完成度が高いということ。今回試作したIntelNUC 8i7BEH Hackintoshは、なんと「iMessageが動く」までクリアしてしまいました。

devices.png

ただ、偽造したなんちゃってシリアルナンバーでApple IDにログインしているので、AppleからいつBANくらっても不思議はない状態ではあります。でも、ここまで完成度が高いとマジ常用したくなっちゃいます。

Windows10とmacOSのデュアルブート

Hackintoshのインストールは無事成功したので、次に、IntelNUC 8i7BEH にWindows10をインストールし、デュアルブートにしてみます。要はBootCampみたいなものですね。

先にHackintoshをインストールしたNVMe SSDは外しておきます。たとえ別ドライブであってもHackintoshに追加でWindows10をインストールしようとすると、ほぼ間違いなく失敗します(Hackintoshが起動できなくなります)。Windows10のインストーラーがHackintoshが先客でいることを考慮せずに、EFIにWindows Boot Managerを作成してしまうためです。

HackintoshをインストールしたNVMe SSDは外し、Windows10をインストールするSATA SSDだけを取り付け、USBメモリに焼いたインストーラーで8i7BEHにWindows10をインストールします。Windows10のインストールの詳細は省略しますが、BIOSのセキュアブート設定をオフにして、BitLocker暗号化を使用せずにインストールしておくと、後々、Hackintosh側からWindows10のストレージをアクセスできるので便利です。

Windows10のインストールが完了したら、先にHackintoshをインストールしたNVMe SSDも取り付け、BIOSでブート順序をHackintosh SSDが優先されるように設定して、再起動します。

再起動でOpen Coreのピッカーが立ち上がります。今回試作したHackintoshではGUIピッカーを導入したので、MacでOptionキーを押しながら起動したときのような、起動ディスク選択画面が出るようになります。

opencore_picker.png

GUIピッカーの導入は、以下の記事が参考になります。

https://gaddet.com/opencore-gui/
【OpenCore入門】ブート選択画面をアイコン(GUI)にする方法【Hackintosh】

Hackintoshのパフォーマンス

こんなことして意味あるのかいまいち不安ですが、GeekBenchを使用してベンチマークテストをやってみました。ちなみに、MacMini(Late 2018) Intel Core i7-8700B のGeekBenchスコアは、Single-Core Scoreが1103、Multi-Core Scoreが5496なんで、IntelNUC 8i7BEH HackintoshはMacMini(Late 2018)といい勝負。

https://browser.geekbench.com/macs/mac-mini-late-2018
Mac mini (Late 2018) Benchmarks

Hackintosh Big Sur on IntelNUC 8i7BEH

GeekBench-Mac.png

Windows10 on IntelNUC 8i7BEH

GeekBench-Windows10.png

両社の差は誤差のうちだと思います。体感はHackintoshよりWindows10のほうがだいぶキレがいいけど、ベンチマークにはあらわれてこない。

ディスク性能は、そもそもHackintosh Big SurはMNVe SSD(Western Digital WD Black SN850 1TB)にインストールし、Windows10はSATA SSD(Samsung SSD 1TB 860QVO)にインストールしたので、比較自体意味がないのですが、いちおうあげておきます。

Windows10はCrystalDiskMarkで、Hackintosh Big SurはAmorphousDiskMarkで計測しました。

Hackintosh Big Sur on IntelNUC 8i7BEH

DiskSpeed-Hackintosh.png

Windows10 on IntelNUC 8i7BEH

DiskSpeed-Windows.png

HackintoshにWD Blackは過剰性能でしたね。

macOS/Windows互いのディスクをマウントする

デュアルブート環境は整いましたが、macOSとWindowsではファイルシステムが異なるので、HackintoshとWindowsの2ストレージ構成であっても、Hackintoshを起動したときはHackintoshのストレージだけ、Windowsを起動したときはWindowsのストレージだけしかアクセスできません。

これではHackintoshとWindowsの間を行きつ戻りつするのには不便きわまりないので、

  • Hackintoshで起動したときはWindows10のストレージもアクセス
  • Windows10で起動したときはHackintoshのストレージもアクセス

できるようにしてみます。これを実現するのが有償アプリ

この2つです。前者をHackintoshに、後者をWindows10にインストールすると、ストレージの相互アクセスが可能になります。

APFS for Windows by Paragon Software

apfs_for_windows.png

Microsoft NTFS for Mac by Paragon Software

ntfs_for_mac.png

Microsoft NTFS for Mac by Paragon SoftwareをHackintoshにインストールすると、FinderからWindows10ボリュームにアクセスできるようになります。

finder.png

APFS for Windows by Paragon SoftwareをWindows10にインストールすると、ExplorerからMacintosh HDボリュームにアクセスできるようになります。

explorer_mac.png

ちなみに、HackintoshでTimeMachineを使っていると、APFSスナップショットが作られてAPFS for Windowsからリードオンリーでしかマウントできなくなるので注意が必要です。

デュアルブート環境が完成し、ストレージの相互アクセスができて、これで便利に使えると思いきや、実はそれほど便利ではありませんでした。macOSとWindowsを行きつ戻りつしたいシーンは数あれど、そのたびに再起動が必要な訳で、全く便利ではありません!

デュアルブート環境に比べると、やはり仮想環境は便利です。

Parallels DesktopによるデュアルOS環境

デュアルブート環境は思ったほど便利ではなかったので、Hackintosh上にParallels DesktopによりWindows10仮想環境を用意し、macOS/WindowsデュアルOS環境を構築してみました。

parallels1.png

Parallels Desktopではなく、VirtualboxやVmWareでも別にいいんだけど、今回は有償ソフトウェアParallels Desktopを使うと無償のVirtualboxやVmWareと比べてどれだけいいのかも見極めたいと思います。

仮想環境を使うなら、Hackintoshなど導入しなくても、素直にWindows10にVirtualboxでmacOSを入れたらいいだけって話だけど、Hackintosh導入のそもそもの出発点は、Virtualbox上のmacOSは遅くて使えないというところだったので、母艦をHackintoshにすることで速度面でどれだけ改善されるかを見たいということがあります。

手持ちのParallels Desktop 15をHackintoshにインストールし、その上にWindows10 20H2をインストールしました。

Parallels Desktop 15は機能が豊富すぎて全く使いこなせていないのですが、フルスクリーンでWindows10を起動させるだけで、macOSのデスクトップ切り替え(Mission Control)機能を使って、macOSとWindows10のデスクトップを切り替えられるのが、この上なく便利です。

GeekBenchのスコアは以下の通り。参考までにVirtualboxと比較。

Parallels Desktop 15

GeekBench-Parallels.png

Virtualbox 6.1.26

Geekbench-Virtualbox.png

Virtualboxのスコアが若干低いけど、まぁ問題なし。体感的にもVirtualboxでもいける。ただ、MacのVirtualboxではディスプレイのHD解像度が選べないのが残念なところ。これについては解決策があるのかもしれないけど。

ParallelsではSingle CoreスコアはネィティブでWindows10を動かした時と同じで劣化が全くありません。Multi Coreスコアは低下していますが、ネィティブ動作のときは4コア8スレッドで動作していたのに対し、Parallels Desktopでは4コア4スレッド動作なので差が出たのだと思います。

Parallels Desktop 15では4コア、メモリ最大8GBまでしか割り当てられないので少しもったいない。

parallels2.png

CrystalDiskMarkでのディスク性能は、シーケンシャルR/Wはなぜか母艦Hackintoshの性能よりもだいぶいいんですね。よく見せるための裏技でもあるのかな。でも結局シーケンシャルR/Wがいくら速くても、それを生かせるシーンなんてそうそう無い訳で、ランダムアクセスが速いのが一番有用。Parallelsは健闘していると思う。

Parallels Desktop 15

DiskSpeed-Parallels-win.png

Virtualbox 6.1.26

DIskspeed-Virtualbox.png

Parallels Desktop 15の仮想環境はベンチマークの結果が良いだけでなく、体感的にもネィティブとの差が感じられません。これがmacOS/WindowsデュアルOS環境の本命かなと感じました。

Hackintoshを導入しても、結局仮想環境は手放せなかったという笑えないオチになってしまいました。

まとめ

IntelNUC 8i7BEHにHackintoshを導入し、macOS Big Surをインストールしてみました。その上で、理想のmacOS/Windows混在環境を模索してみたところ、デュアルブート環境は思ったほど使い勝手が良くなく、Hackintosh上にParallels Desktop 15でWindows環境を整えるのが快適だという結論に至りました。


Written by questions6768 who lives in Uji, Kyoto.