macOS Mojave で HighSierra の ISO イメージを作成するスクリプト

> macOS **Mojave（OSX 10.14）で「HighSierra（OSX 10.13）のインストール ISO イメージ」を作りたい**

[「`macOS` `HighSierraのISOイメージ作成`」を Qiita 記事に絞ってググって](https://www.google.com/search?q=site%3Aqiita.com+macOS+HighSierra%E3%81%AEISO%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E4%BD%9C%E6%88%90)みてもピンポイントで出てこなかったので自分のググラビリティとして。

- その他の macOS バージョンのオススメ Qiita 記事
    - <ruby>macOS 10.12<rt>Sierra</rt></ruby>: [インストールISOイメージ作成：macOS Sierra (10.12)](https://qiita.com/mt08/items/0e22d636206f27e3e5f5) @ Qiita
    - <ruby>macOS 10.13<rt>High Sierra</rt></ruby>: ←　いまここ
    - <ruby>macOS 10.14<rt>Mojave</rt></ruby>: [macOS Mojaveのインストール用ISOイメージを作成する方法](https://qiita.com/ir-shin1/items/9ac3570b0b3106806253) @ Qiita
    - <ruby>macOS 10.15<rt>Catalina</rt></ruby>: [macOSのインストールディスクイメージを作成する](https://qiita.com/wancom/items/d1ed297c00577ba215ef) @ Qiita
    - <ruby>macOS 12.xx<rt>Monterey</rt></ruby>: [macOS(Monterey)のisoイメージをmacで作成する](https://qiita.com/tatmius/items/0dd507f6d22dc859eeed) @ Qiita

:::note warn
<sup>
🐒 <font color=red>注意点</font>：最初から（購入時から）OS が Mojave の場合は AppStore からインストーラーをダウンロードできません。そのため、以下から別途入手する必要があります。

- [<ruby>旧バージョン<rt>Yosemite 以降</rt></ruby>の macOS を入手する](https://support.apple.com/ja-jp/HT211683) @ support.apple.com
- [公式からダウンロードできない場合](http://osxdaily.com/2017/09/27/download-complete-macos-high-sierra-installer/) @ OSX Daily

また、**Mac の場合、同梱 OS より古い OS はハード的にインストールできません**。新しい Mac で HighSierra を動作検証用に使いたい場合は、VirtualBox および Varant ユーザーであれば、Varant の HighSierra イメージが利用可能です。

- 「[HighSierra/Mojave の検証環境をワンライナーで一発構築する（Vagrant+VirtualBox）](https://qiita.com/KEINOS/items/328a613a9cf19122a3f3)」@ Qiita

逆にサポートの切れた Mac マシンがもったいない場合は、Linux を入れてしまい [KVM](https://ja.wikipedia.org/wiki/Kernel-based_Virtual_Machie) などで macOS を仮想化するという手もあります。

- [OSX-KVM](https://github.com/kholia/OSX-KVM) @ GitHub
</sup>
:::


## HighSierra のインストール ISO イメージを Mojave で作成

1. AppStore から [macOS High Sierra のインストーラーを入手](https://apps.apple.com/jp/app/macos-high-sierra/id1246284741?ls=1&mt=12)します。
    -  最初から Mojave 入りのマシンの場合は別途インストーラーを入手[^oldOS]する必要があります。
      -  「[インストーラで「確認できない」または「署名に使用された証明書が期限切れ」だと表示される場合](https://support.apple.com/ja-jp/HT208052)」@ Apple 公式（期間限定で Yosemite もダウンロード可能）

2. ダウンロード完了後、開けない旨のメッセージが出ますが閉じて大丈夫です。
3. 「アプリケーション」フォルダ内に「macOS High Sierraインストール」があることを確認します。
4. ターミナルより以下を実行するとデスクトップに "`HighSierra.iso`" が作成されます。一発作成スクリプトをダウンロードして実行するだけです。
    
    ```shell-session:作業手順（AppStoreからダウンロードした場合／「アプリケーション」内にある場合）
    $ # 出力先のディレクトリ作成
    $ cd ~/Desktop
    $ mkdir iso
    $ cd iso
    $ # 一発作成スクリプトのダウンロード
    $ curl -LO https://gist.github.com/raw/3b139cbf785a16727501dd4e5c0cf4bf/create_dmg_highsierra.sh
    $ # 作成スクリプトの実行
    $ chmod +x create_iso_highsierra.sh
    $ sudo ./create_iso_highsierra.sh
    ```

- 上記の ISO イメージ作成スクリプトの中身を見る
    - [create_dmg_highsierra.sh](https://gist.github.com/KEINOS/3b139cbf785a16727501dd4e5c0cf4bf#file-create_dmg_highsierra-sh) @ gist
    - [create_dmg_mojave.sh](https://gist.github.com/KEINOS/3b139cbf785a16727501dd4e5c0cf4bf#file-create_dmg_mojave-sh) @ qiita
    - [create_dmg_catalina.sh](https://gist.github.com/KEINOS/3b139cbf785a16727501dd4e5c0cf4bf#file-create_dmg_catalina-sh) @ gist
    - [create_dmg_bigsur.sh](https://gist.github.com/KEINOS/3b139cbf785a16727501dd4e5c0cf4bf#file-create_dmg_bigsur-sh) @ gist
    - 不具合を見つけた場合は [gist にコメントを残してください](https://gist.github.com/KEINOS/3b139cbf785a16727501dd4e5c0cf4bf)。

[^oldOS]: **最初から Mojave 入りのマシンの場合:** Mac は購入時にインストールされていた OS より古い OS はインストール及びダウンロードできません。そのため、新規購入の Mac で最初から Mojave だった場合は、別途入手する必要があります。古いマシン経由で入手するのが一番確実ですが、[サードパーティーのツールでダウンロード](http://osxdaily.com/2017/09/27/download-complete-macos-high-sierra-installer/)するか Vagrant を使って [Vagrant Cloud から古い OS の BOX イメージを利用する](https://app.vagrantup.com/boxes/search?utf8=%E2%9C%93&sort=downloads&provider=virtualbox&q=OSX)必要があります。<br>関連記事：「[HighSierra/Mojave の検証環境をワンライナーで一発構築する（Vagrant+VirtualBox）](https://qiita.com/KEINOS/items/328a613a9cf19122a3f3)」@ Qiita

### 別ドライブに保存したダウンロードファイルから ISO イメージ作成

**HDD の空き容量が足りない**などで、ダウンロードした OS インストールのアプリケーションバンドル[^appbundle]（「macOS High Sierraインストール」アプリ）が別のドライブに置いてある場合は、**引数にアプリのパスや ISO イメージの出力先のパスを指定できます**。

```
create_iso_highsierra.sh "<macOS Install.appのパス>" "<HighSierra.isoのパス>"
```

[^appbundle]: 【アプリケーション・バンドルとは】 [アプリケーションパッケージ](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8)と同じ意味。AppStore よりダウンロードしたアプリは単一のファイルではなく、実際には「xxxxxx.app」という名前のディレクトリです。このディレクトリを１つのアプリのように束ねた（バンドルした）ものをここではアプリケーション・バンドルと呼んでいます。

```shell-session:作業手順（別ドライブにインストールイメージがある場合）
$ cd <作業したい先のパス>
$ mkdir iso
$ cd iso
$ curl -OL https://gist.github.com/raw/3b139cbf785a16727501dd4e5c0cf4bf/create_dmg_highsierra.sh
$ chmod +x create_iso_highsierra.sh
$ sudo ./create_iso_highsierra.sh "<Install macOS Sierra.appのパス>" "<ISO出力先のパス>/HighSierra.iso"
```

- `hdiutil: attach failed - ファイルまたはディレクトリがありません` エラー
    - パスにスペースや記号が入っている可能性があります。スクリプトの内容自体は簡単なので、何をしているのか確認しながら、ステップごとに手動で実行してみてください。

## 動作確認環境

- macOS Mojave（OSX 10.14.3）
- MacBookPro, Retina 13インチ, Early 2015

## 参考文献

- 「[インストールISOイメージ作成：macOS Sierra (10.12)](https://qiita.com/mt08/items/0e22d636206f27e3e5f5)」 @ Qiita
- [「create_iso_highsierra.sh」のソースコード](https://github.com/kholia/OSX-KVM/blob/master/HighSierra/create_iso_highsierra.sh) @ GitHub
- 「[README.md for HighSierra](https://github.com/kholia/OSX-KVM/blob/master/HighSierra/README.md)」 OSX-KVM @ GitHub