サイトアイコン Boot macOS

Windowsだけで作るmacOSインストーラUSB

macOSインストール用のUSBメモリをWindowsだけを使って作成しました。まず、OpenCoreパッケージに付属しているmacrecovery.pyというPythonプログラムを使ってMacの復元イメージをダウンロードし、次にFAT32のUSBメモリに保存します。これでMacで起動するRecoveryボリュームを作ることができました。手順だけを手短に見たい人は、以下のStep: 1, Step: 2, Step: 3の節を見てください。

macOS導入USB

macOSをインストールするためのインストール用USBメモリは、通常はmacOS上で作成します。macOSが動いていないとmacOSをインストールできないので、Macを持っていないと鶏と卵状態に陥ります。Windowsだけを使ってmacOSをインストールことも、不可能ではないけどとても面倒です。

・・・と、思っていたのですが、試してみたところ予想していたよりずっと簡単でした。OpenCoreのバニラなインストールガイドで知られているDortaniaさんの説明ページを参考にしました。

このページを見るとややこしそうに見えますが、基本的には、

  1. OpenCoreパッケージに入っているPythonプログラムを起動してmacOS復元イメージ(これを使うとmacOSをインストールできる)をダウンロードする
  2. それをFAT32でフォーマットしたUSBメモリに入れる

だけです。

macOS環境ならば、Appleが配布しているmacOSインストーラの中にある、createinstallmediaコマンドを使ってインストーラUSBを作る方法が、Apple公式の方法で簡単です。この方法で作るUSBメモリは、HFS+でフォーマットされていて、MacやOpenCoreの起動選択画面ではそのOSのアイコンで表示されます。MontereyのインストーラUSBなら、下の写真にある「Install macOS Monterey」のようにOpenCoreの起動ボリューム選択画面に現れます。

これと同じものをWindowsで作るには、Windowsとは無縁なHFS+フォーマットのボリュームをなんとか作り出さないといけないので、とても大変だと思ってました。Dortaniaさんのページで紹介されているのは、HFS+形式USBメモリではなく、上の写真の右端に見切れて映っている、「Recovery 12.x (dmg)」という歯車アイコンに相当する復元用イメージを作る方法でした。

Step1: 復元ファイルをダウンロード

Windowsから、OpenCoreダウンロードのサイトを開き、最新版パッケージ一式をダウンロードします。ダウンロードサイトはここです。

OpenCore bootloader. Contribute to acidanthera/OpenCorePkg development by creating an account on GitHub.
Releases · acidanthera/OpenCorePkg - GitHub

ここから、OpenCore-x.x.x-RELEASE.zipをダウンロードします。ダウンロードしたファイルは、Downloadsディレクトリの中に、OpenCore-x.x.x-RELEASE.zipというファイル名で保存されてます。次に、このzipファイルの中にあるPythonプログラムを実行します。

Pythonの実行のために、通常はWindowsにPythonをインストールします。手元のWindowsマシンでは、WSLの UbuntuにすでにPythonをインストール済みだったので、以下では、WindowsとWSL Ubuntuを行ったり来たりして作業しました。WindowsにPythonがインストール済み、もしくはWSLを使っていない場合は、Windows側でPythonを実行してください。

Pythonの実行をWSL環境で行うために、Ubuntuを開けて、OpenCoreのzipファイルを作業しやすい場所にコピーします。次に、zipを解凍し、その中のUtilities/macrecoveryというフォルダに移動します。そしてそこにあるmacrecovery.pyというPythonプログラムを起動します。以下がその作業です。

cp /mnt/c/Userx/xxxx/Downloads/OpenCore-x.x.x-RELEASE.zip .
unzip OpenCore-x.x.x-RELEASE.zip
cd Utilities/macrecovery
python3 ./macrecovery.py -b Mac-E43C1C25D4880AD6 -m 00000000000000000 download

macrecovery.pyは、http://osrecovery.apple.comというAppleのサイトから、特定のロジックボード用のリカバリーファイルをダウンロードするプログラムのようです。-bオプションでロジックボードのIDを指定します。上の操作で指定した番号 (Mac-E43C1C25D4880AD6) は、MacBook Pro (13-inch, Early 2015)、機種ID MacBookPro12,1のものです。検索したところ、以下のページにBoard ID一覧がありました。

Updated list of Mac BoardIDs, Model Identifiers & Machine Models from all intel Macs 2006-2019. MBPro, MBAir, MacBook, Mac Pro, iMac Mac Mini
List of Mac BoardID, DeviceID, Model Identifiers & Machine Models - Mr. Macintosh

MacBookPro12,1の機種対応の最終OSがMontereyなので、この指定でMontereyをインストールするリカバリーイメージをダウンロードできます。MacBookPro12,1はVentura未対応なので、この先もMontereyがダウンロードできるはずです。

他のmacOS、例えばBig Surのリカバリーイメージをダウンロードしたい場合は、最終サポートOSがBig Surである機種のロジックボードIDを指定します。Dortaniaさんのガイドでは、Big SurではMac-42FD25EABCABB274を指定することになってます。これはiMac (Retina 5K, 27-inch, Late 2014) iMac15,1のIDで、最終サポートOSはBig Surです。

macrecovery.pyを実行すると、

という2つのファイルが出来上がってます。この先、Windowsでの操作を行うので、Windowsからアクセスしやすいように、Downloadsディレクトリに戻しておきます。

cp BaseSystem.* /mnt/c/Users/xxxx/Downloads/.

Step2: USBメモリを初期化する

次に起動用USBメモリを初期化します。GUIDパーティションマップ (GPT)で用意したパーティションをFAT32でフォーマットします。一般的なフォーマットなので、特に難しいところはないように思われました。実際、macOSのディスクユーティリティで作ったMS-DOS (FAT) (GUITパーティションマップ)のUSBメモリもそのまま使えました。ただ、macOSからUSBメモリの名前を変更したところ、通常の起動ドライブとして見えてしまうようになり、リカバリーイメージとしては表示されなくなり、使えなくなりました。微妙なパーティション・フォーマットの違いで動作しなくなるようです。

Dortaniaさんの手順では、WindowsでUSBメモリをフォーマットするツールとして、

  1. Windows標準のDisk Management (日本語名「ディスクの管理」)
  2. Rufusというオープンソフトウェア
  3. Windows標準のdiskpart

を使う3つの方式が紹介されています。ここではWindows標準装備の1. と 3.の方法を試し、動作することを確認しました。

Disk Managementを使う

Disk Managementは日本語名で「ディスクの管理」というツールです。macOSのディスクユーティリティに相当するツールかと思います。これで、USBメモリを選択し、初期化します。すでにGPTのパーティションが用意されていたら、それを削除して、未割り当てにして、「新しいシンプルボリューム」を作ります。

このメニューを選択すると、「新しいシンプルボリュームウィザード」というプログラムが起動します。これを用いて、FAT32のボリュームを作成します。ここでボリュームラベルを指定することもできます。

これでFAT32のUSBメモリが完成するので、Step 3に進んで、ファイルをコピーします。

Disk Managementは操作が簡単ですが、パーティションスキームを作り直す方法がわかりませんでした。MBR (Master Boot Record) でパーティション作られたUSBメモリは、FAT32でフォーマットされていてもリカバリーには使えないのですが、これをGPTに変更する方法がメニューには見つかりませんでした(Windowsスキルが低くてすみません)。次に示すdiskpartを使う方が確実だと思います。

diskpartを使う

diskupartもWindows標準搭載の、20年以上昔からあるツールでず。CUIでサクサク操作できて良いです。これを用いると、パーティションの設定から完璧に作り直せるので、USBメモリを間違いなく初期化できます。Windowsメニューからdiskpartとタイプすると起動します。USBメモリはUSBポートに挿しておきます。

Microsoft DiskPart バージョン 10.0.22000.653

Copyright (C) Microsoft Corporation.
コンピューター: XXXXXXXXXX

DISKPART>

disk listコマンドでUSBメモリの番号を見つけて(ここでは2番)それを選択します。USBメモリは32GBなので、これに間違い無いです。

DISKPART> list disk
  ディスク      状態           サイズ   空き   ダイナミック GPT                                    
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン           465 GB      0 B        *
  ディスク 1    オンライン           232 GB  1024 KB        *
  ディスク 2    オンライン            29 GB   127 MB        *
DISKPART> select disk 2
ディスク 2 が選択されました。

次に、このUSBメモリを、

  1. cleanして(ディスク構成情報を削除)
  2. GPTに変換して(最小のパーティションができる)
  3. primaryパーティションを作って(確認して、選択して)
  4. fat32でフォーマットして
  5. Eドライブに割り当てて
  6. 出来上がったvolumeを確認

します。その様子を下に示します。

DISKPART> clean
DiskPart はディスクを正常にクリーンな状態にしました。
DISKPART> convert gpt
DiskPart は選択されたディスクを GPT フォーマットに正常に変換しました。
DISKPART> create partition primary
DiskPart は指定したパーティションの作成に成功しました。
DISKPART> list partition
  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    予約済み                15 MB    17 KB
* Partition 2    プライマリ               29 GB    16 MB
DISKPART> select partition 2
パーティション 2 が選択されました。
DISKPART> format fs=fat32 quick
  100% 完了しました
DiskPart は、ボリュームのフォーマットを完了しました。
DISKPART> assign letter=e 
DiskPart はドライブ文字またはマウント ポイントを正常に割り当てました。
DISKPART> list volume
  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0                      NTFS   Partition    465 GB  正常
  Volume 1                      FAT32  Partition    100 MB  正常         システム
  Volume 2     C                NTFS   Partition    232 GB  正常         ブート
  Volume 3                      NTFS   Partition    635 MB  正常         非表示
* Volume 4     E                FAT32  Partition     29 GB  正常

太字部分が入力したコマンドです。これでエクスプローラーからEドライブとして見えます。

Step3: USBメモリにコピーする

次に、ダウンロードファイルをUSBメモリにコピーします。ここから先はエクスプローラーから操作できます。USBメモリに、以下の2つのフォルダを作ります。

com.apple.recovery.bootには、Step 1で入手した、

を入れます。エクスプローラーのコピー・ペーストで行いました。

またEFIには、現在macOSを動かしているコンピュータのEFIをそのままコピーしておきました。

今回試したコンピュータは、ASRock Z690 Steel Legend + 12900K + RX 6600XTの組み合わせです。EFIはこちらに置いてあります(使う場合はシリアル番号などを入れてください)。ディレクトリ構成は結局、以下のようになりました。

これでmacOSがインストール可能なUSBメモリが完成しました。

USBメモリで起動

このUSBメモリを挿してコンピュータを起動します。大抵は、起動可能なUSBメモリが挿さっているとそこから起動するようですが、BIOSメニューから確認・設定するのが確実かもしれません。USBメモリのルートにあるEFIディレクトリに、EFIファイル一式が正しくコピーできていれば、OpenCoreの起動ボリューム選択画面が表示されます。

ただ、この中にRecoveryイメージはありません。実は、使用しているconfig.plistで、選択メニューに復元イメージが表示されないよう設定してあるためでした。そのように設定されている場合、スペースキーを押すと、全部の候補が現れます。その結果、macOSがインストールされたそれぞれのボリュームの横に、Recovery xxx (dmg)という歯車アイコンの選択肢が現れます。実際のMacにも現れる復元用の起動ボリュームで、これを選択してOSの再インストールなどが可能です。

そして並びの左端に、今回Windowsだけを使って作成したUSBメモリが現れました。今回使用しているOpenCanopyの設定アイコンでは、他のRecoveryアイコンと違ってオレンジ色です。外付けドライブにあることで、色がオレンジのようです。アイコンの名前がNO NAMEなのは、FAT32のドライブ名のデフォルトがNO NAMEだからです。

これを選択して起動すると、リカバリーのメニューが現れます。ここでmacOS Montereyのインストールを選択すると、

インストーラが起動しました。この先インストールを進めることで、Montereyを動かすことが可能でした。

まとめ

Windowsだけを用いて、macOSをインストールするUSBメモリを作り、動作を確認しました。以前調べた方法はもっと複雑でしたが、今回はあっけなくできてしまいました。macrecovery.pyプログラムを開発された皆さんのおかげだと思います。Mac本体を持っていない人でも簡単にmacOSをインストールできると思います。その場合でも、OSを使わせてもらうお礼にApple製品やサービスを買ってあげてください。

モバイルバージョンを終了