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-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一覧がありました。

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を実行すると、

  • BaseSystem.chunklist
  • BaseSystem.dmg

という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
  • EFI

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

  • BaseSystem.chunklist
  • BaseSystem.dmg

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

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

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

  • com.apple.recovery.boot
    • BaseSystem.chunklist
    • BaseSystem.dmg
  • EFI
    • APPLE
    • BOOT
    • OC

これで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製品やサービスを買ってあげてください。

11件のコメント

  1. こんにちは。作ってみましたが、USBが動作しません。
    \EFI\APPLE の中に何をいれていいのかわかりません。
    私はOSのないMacとWindows PCしか持っていません。
    よろしくお願いします。

    1. 最終的にはWindows PCでHackintoshマシンを構築することが目的だとは思いますが、まずは、OSのないMacを復旧させるつもりなのであれば、Mac本体に作成したUSBメモリを挿して「option」キーを押しながら電源をONにしてMacを起動して下さい。
      ブート可能なディスクが並びますので、USBメモリ(macOSの名前が表示されているディスク)を選択してブートさせれば、macOSをインストールする画面まで進むと思います。
      なお、この際、Mac本体がサポートしているmacOSでなければブートに失敗します。
      仮に、サポートしておらずインストールできないバージョンのUSBを作成してしまったのであれば、もはやUSBを再作成することは面倒だと思うので、ネットワーク経由でのMac本体の初期化インストールから始める方が早いでしょうから、「option」キーを押しながら電源をONにしてMacを起動させ、ネットワーク経由でmacOSを再インストールして下さい。
      古いmacOSの初期化インストールは、サーバ側の回線がしょぼいのかダウンロードに時間がかかる印象ですけど、最終手段でもあるので仕方がないかと…

      1. Mac本体がノートPC型ではないiMacやMac miniとかで、Bluetooth接続できておらず、電源ON時にキー入力を受け付けない状況とかであれば、WindowsのUSBキーボード&USBマウスで代替可能です。
        その際には、「option」キーではなくて、左側の「Alt」キー(かその左右のどちらか)だったと思います。

        1. お返事ありがとうございます。OSX10,10をこのサイトの方法でUSBを作り、MacBookPro(Core2Duoモデル,2010年製)で起動しました。画面にUSBの画像が出たので、それをマウスでクリックしたら、画面がハングして進みません。

  2. >「option」キーを押しながら電源をONにしてMacを起動させ、ネットワーク経由でmacOSを再インストールして下さい。
    これを行うと、Lionぼインストールが始まりますが、「インストールの準備中にエラーが起きました。このアプリケーションをもう1度実行してください」で止まります。中にSSDを入れてあるのですが、フォーマットが必要なのでしょうか。

    1. どうやらストレージを換装しているようですので、フォーマットは必須です。
      ブート後のメニュー画面で「ディスクユーティリティ」を選択&実行させて、タイトルバー左側にある「表示」メニューから「すべてのデバイスを表示」の項目を選んでから、ストレージ「全体」を「消去」と言う名の初期化(フォーマット)をした後に、macOSのインストールをすることになります。

      1. Mojaveより古いmacOSを知らず「表記上の違い」があるかもしれません…

    2. SSDはGUIDパーティションマップにしてありますかね?

      あともしこれからSSDをフォーマットするなら、半分に分けておくことがおすすめです。
      なぜなら、Lionなどの古いOSではAPFSを読めませんが、OCLPを使って起動できるようになるMontereyでは逆にAPFSでしか起動できないからです。

    3. インターネットリカバリは、有線で試されました?
      もしWifi経由でしたら、暗号化規格が合ってなくても蹴られるらしいです。

  3. お返事ありがとうございます。ディスクユーティリティでSSDを消去し、有線を使ってインストールを始めましたが、同じ結果「インストールの準備中にエラーが起きました」が表示されます。
    また、別の方で、インストールUSBを作って試しましたが、インストール開始で403エラーが起こります。下記のサイトと同じエラーです。今回のネット・インストールも同じエラーかもしれません。
    I’m getting error during Reinstall OS X Installation on MacBook Air 2010
    https://discussions.apple.com/thread/255247128?sortBy=rank
    友達に頼まれたMacなので、2週間ぐらい頑張ったら諦めるつもりです。他に何か試せることがあったら、教えてください。

    1. 申告通りの本体であれば、High Sierraまで対応しているはずなので、USBはHigh Sierraで再作成してダメ元でもう一度試してみてはいかがでしょうか?
      自分自身では、MacBookPro9,2でCatalinaでの復旧インストールならば何度か試したことがあります。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です