メインコンテンツに移動

ワンボタンで macOS を初期化インストール

カテゴリー: Jamf Pro, Enterprise, Education, Security

ワンボタンで macOS Catalina を初期化インストール

Apple は、macOS High Sierra 10.13.4 で、startosinstall と呼ばれる1行のコマンドを使って Mac オペレーティングシステムを消去してクリーンインストールする機能を導入しました。2年経った今でも、Mac 管理者にとって貴重なツールとして、改良が続けられています。

先日のウェビナー Reinstall a Clean macOS with One Button では、これらの改善点について議論し、Mac 管理者が自分の環境で使用するためのワークフローを構築するためのアドバイスを提供しました。ここでは、ウェビナーの内容を振り返り、聴衆からの質問に答えたいと思います。

これまでの歴史

OS X El Capitan 10.11以降のすべての Mac OS インストーラアプリには、アプリバンドルにstartosinstallコマンドラインツールが含まれています。このツールにより、Mac 管理者はスクリプトで Mac OS をインストールできるようになり、Jamf Proのような管理ツールを使ってアップグレードを展開できるようになりました。

macOS High Sierra 10.13.4では、startosinstallツールに新しいオプション --eraseinstall が追加され、既存の Mac のupdateupgradeだけでなく、既存の Mac を完全に消去して macOS を初期化インストールできるようになりました。これは、起動可能なサムドライブのような追加の機器を必要とせずに、現場でMacをリフレッシュすることができるという点で画期的なものでした。すべての管理設定、アプリケーション、ユーザーアカウント、ユーザーデータが消去されます。

現在、Apple はmacOS Catalina 10.15で、起動中のアプリでインストールプロセスが妨げられるのを防ぐために startosinstall--forcequitapps オプションを追加したほか、macOS のアップデートをダウンロードしてインストールするための softwareupdateコマンドに --fetch-full-installer を追加するなど、機能を拡張しています。

それでは、これらを一つのボタンにまとめて macOS Catalina を初期化インストールする方法を見ていきましょう。

新しい macOS インストーラをダウンロード

Mac の App Storeには Install macOS Catalina Appがありますが、すでに Catalina にアップグレードされた Mac 上にダウンロードすると、システム環境設定の「ソフトウェアアップデート」にダウンロードされます。新しい OS インストーラのダウンロードは、Safari やセキュリティなどの OS のアップデートを取得するのと同じ仕組みで処理されるようになりました。

Software Update に相当するコマンドラインは softwareupdateで、これもまた、Catalina だけでなく、App Store では入手できなくなったMojave や High Sierra のインストーラのダウンロードをサポートしています。

最新のフル8GB Install macOS Catalina Appを手動でダウンロードするには、アプリケーション > ユーティリティでターミナル App を開き、新しいオプションを指定して softwareupdateコマンドを実行します。このコマンドを実行するには、管理者権限でログインする必要があります。(行末のバックスラッシュは、次の行へと続くことを意味します。このような場合はいつでも、バックスラッシュを省略してコマンド全体を1行に記述することができます)。

 sudo /usr/sbin/softwareupdate --fetch-full-installer

ターミナルには、アプリのダウンロードやインストールの進行状況が表示されます。この「インストール」の意味は、App Store から他のアプリをインストールするのと同じです。Install macOS Catalina App はアプリケーションフォルダにダウンロードされます。実際にはインストーラは実行されません。

ターミナルウィンドウでは、以下のように表示されているはずです。

 sudo softwareupdate --fetch-full-installer
Downloading and installing (null) installer
Installing: 51.0%|

ターミナルを使用してインストーラアプリをダウンロードすると、ソフトウェアアップデートでダウンロードするのとほぼ同じ時間がかかります。

以前の macOS のバージョンを取得するには、--full-installer-version オプションの後に macOS のバージョン番号を追加します。このコマンドは最新の Mojave インストーラを取得します。

 sudo /usr/sbin/softwareupdate \
--fetch-full-installer \
--full-installer-version 10.14.6

消去とインストールの対象となる Mac を特定

startosinstallを実行して Macを消去してインストールする前に、まず、Apple のシステム要件を満たしているかを確認する必要があります。

推奨システム条件

  • OS X 10.9以降
  • 4GB以上のメモリ
  • OS X El Capitan 10.11.5以降で利用可能な12.5GB以上のハードドライブ空き容量(※余裕のために2倍にしたい)。

ハードウェア要件

  • MacBook (Early 2015 以降)
  • MacBook Air (Mid 2012 以降)
  • MacBook Pro (Mid 2012 以降)
  • Mac mini (Late 2012 以降)
  • iMac (Late 2012 以降)
  • iMac Pro (2017)
  • Mac Pro (Late 2013 以降)

そのために、新しいスマートコンピュータグループを作成して「macOS Catalina Compatible Macs」という名前にし、以下の条件を追加します。

 Operating System Version: greater than or equal to 10.9

and Total RAM MB more than 4095

and Boot Drive Available MB more than 25600

and Model Identifier matches (see regex below)

Mac のモデル識別子を使って、Apple が指定する Catalina の対象モデルをピンポイントで特定する必要があります。これは60モデル近くになります。60行もの基準でスマートコンピュータグループを肥大化させるよりも、正規表現(regex)を使用しましょう。正規表現を使用すると、モデル識別子などの特定の文字列にマッチするパターンを作成することができます。この1行のテキストは、今月発売された新しい16インチ MacBook Pro を含む、対象となるすべてのモデルにマッチします。これをコピーして、上記のスマートコンピュータグループのモデル識別子基準のフィールド値に貼り付けます。

 (MacBookAir[5-8]|MacBookPro(9|1[0-6])|MacPro6|iMac(Pro)?1[3-9]?|MacBook(10|9|8)|Macmini[6-8]),.*

保存後、グループが期待通りに動作していることを確認するために、必ず「表示」ボタンをクリックしてください。

その間に、"Install macOS Catalina App Cached"という名前の2つ目のスマートコンピュータグループを作成し、以下の条件を追加します。

 Application Title is Install macOS Catalina.app

and Application Version like 15.1

これにより、Jamf Pro が再度インストーラアプリをダウンロードするのを防ぐために、すでにCatalinaのインストーラアプリがダウンロードされている Mac を特定することができます。インストーラアプリを選択し、「ファイル」→「情報を取得」の順に選択して、最新バージョンのインストーラアプリを入手してください。

macOS Catalinaのインストーラを展開

スマートコンピュータグループ「macOS Catalina Compatible Macs」で抽出された Mac にmacOS Catalina Appをインストールする必要があります。

対象の Mac のmacOS のバージョンがすでに Catalina である場合は、インストーラをダウンロードするのが最も効率的な方法です。そうでない場合は、 Composer のようなパッケージングツールを使ってインストーラをパッケージ化し、展開する必要があります。(Jamf Proをお使いの方は、Jamf Nation にログインして「My Assets」を見ると、 Composer を見つけることができます。ダウンロード・ボタンをクリックしてください)。

Jamf Pro で、「Cache Install macOS Catalina.app」という名前の新しいポリシーを作成します。ここでいう「Cache(キャッシュ)」とは、単純に、対象の Mac のアプリケーション・フォルダ内に置くことを意味します。まだインストーラを実行していません。ポリシー内の以下のペイロードとスコープを完了させます。

General

  • 表示名:Cache Install macOS Catalina.app
  • トリガー: Recurring Check-In
  • 実行頻度: Ongoing

メンテナンス

  • Update Inventory: 有効

ファイルとプロセス

  • コマンドを実行: /usr/sbin/softwareupdate --fetch-full-installer

スコープ

  • Targets: macOS Catalina Compatible Macs (スマートコンピュータグループ)
  • Exclusions: Install macOS Catalina App Cached (スマートコンピュータグループ)

ポリシー一覧でポリシーを表示すると、以下のようになります。

Catalina インストーラを macOS Mojave またはそれ以前の Mac に展開するには、 Composer を使用してインストーラアプリをアプリケーション・フォルダに展開するパッケージを作成し、そのパッケージを PKG としてビルドします。このパッケージを Jamf Pro のクラウド配布ポイントにアップロードします。

上記と同じポリシー設定を使用しますが、ファイルとプロセス・ペイロードをパッケージ・ペイロードに置き換え、 Composer から Catalina パッケージを追加します。

Mac が次にチェックインしたとき(デフォルトでは15分ごと)、エンドユーザに作業を中断させることなく、静かにインストーラをダウンロードしてキャッシュします。スコープの設定により、インストーラが存在しない場合にのみダウンロードされます。これで Install macOS Catalina Appがターゲットの Mac に展開されました。次に、 startosinstallコマンドをSelf Service に展開します。

コマンドを構成

先に述べたように、--eraseinstall オプションは、Install macOS Catalina Appのバンドルの中にある startosinstallコマンドラインツールの一部です。コマンドラインツールを見つけるには、Install macOS Catalina.app ファイルを右クリックするか、Control キーを押しながらクリックし、「パッケージの内容を表示」>「Contents」>「Resources」を選択します。startosinstallファイルを見つけてターミナルウィンドウにドラッグし、最後に ‑‑usage を追加します。

 '/Applications/Install macOS Catalina.app/Contents/Resources/startosinstall' ‑‑usage

いくつかの引数(それぞれがダブルダッシュで始まる)をリストアップし、それぞれについて説明します。

  • --eraseinstall : 魔法をかけるオプション
  • --agreetolicense : プロセスを完全に自動化するために必要
  • --forcequitapps : 実行中のアプリのインストールを妨げるのを防ぐ
  • --newvolumename : オプションで、Macintosh HD の名前を定義または名前を変更します。

一行でコマンド全体をまとめると以下のようになります。

 '/Applications/Install macOS Catalina.app/Contents/Resources/startosinstall' ‑‑eraseinstall
--agreetolicense --forcequitapps ‑‑newvolumename 'Macintosh HD'
image:alt_text

初期化インストールの機能概要

インストーラーアプリを対象のMacにコピーし、上記のオプションで startosinstallコマンドを実行すると、Mac 上の空き領域を素早く確保し、一時的なパーティションを作成します。パーティショニング後、コマンドはInstall macOS Catalina Appを一時パーティションにコピーし、それを起動可能なボリュームにして Mac を再起動します。

Erase & Install ボタンをクリックしてから数分以内に Mac が再起動し、インストールが開始されます。

image:alt_text

そして、一時的なパーティションから、インストーラが実行され、プライマリパーティションが削除されます。これで、パーティションのデータがすべて消去されます。これで、プライマリパーティションに新しい macOS Catalina をインストールし、起動可能な状態にして、Mac を再起動します。あとは一時的なパーティションを削除すれば、Mac の準備は完了です。

ボタンの作成

では、startosinstallコマンドをポリシーに入れて、Self Service で利用できるようにしてみましょう。

上記の最初のポリシーでは、対象の Mac に macOS Catalina App をインストールするようにしています。これが成功すると、"Install macOS Catalina App Cached"スマートコンピュータグループに、消去とインストールの準備ができた Mac がリストアップされます。

Jamf Proで "Erase and Install macOS Catalina "という名前の新しいポリシーを作成します。以下のペイロードとスコープを完了させます。

General

  • 表示名: Erase and Install macOS Catalina
  • トリガー: なし(代わりに Self Service でポリシーを使用可能にする)
  • 実行頻度: Ongoing

ファイルとプロセス

  • コマンドを実行

'/Applications/Install macOS Catalina.app/Contents/Resources/startosinstall' ‑‑eraseinstall --agreetolicense --forcequitapps ‑‑newvolumename 'Macintosh HD'

スコープ

  • Targets:macOS Catalina Compatible Macs (スマートコンピュータグループ)
  • Exclusions: Install macOS Catalina App Cached (スマートコンピュータグループ)

Self Service

  • ボタンの名称: Erase & Install
  • 説明: 警告 - あなたの Mac は完全に消去され、macOS が再インストールされようとしています。先に進む前に、すべての重要なファイルとユーザーデータを別のコンピュータまたはバックアップシステムにコピーしてください。Mac が消去された後は、削除されたデータを復元することはできません。(メッセージを強調するためにマークダウンを使用することを検討してください。下記 Self Service の画像を参照してください。)
  • ユーザーが説明を表示することを確認: 有効

ボタンアイコンを追加し、カテゴリを割り当て、ポリシーを保存します。ポリシー一覧でポリシーを表示すると、以下のように表示されます。

image:alt_text

ボタンをクリック

対象の Mac でSelf Service を開き、「Erase & Install」ボタンをクリックすると、先に進む前に警告が表示されます。

「Erase & Install」ボタンをクリックしてから数分以内に Mac が再起動し、インストールが開始されます。

約10~15分後、Macはインストールを完了し、再起動して Mac の設定アシスタントが表示されます。

消去ではなくアップグレード

たった1つの簡単な変更で、このワークフロー全体が、アプリケーション、データ、ユーザー設定を保持したまま、MacをOS X 10.9以降のオペレーティング・システムから macOS Catalina にアップグレードすることができます。また、既存のCatalinaオペレーティングシステムの上に Catalina を再インストールすることもできます。同じバージョンの macOS をインストールすると、破損したインストールを修復できることがあります。

「Erase and Install macOS Catalina」ポリシーを編集するか、ポリシーをクローンして新しいものを作成し、「Upgrade to macOS Catalina」に名前を変更します。そして、ファイルとプロセス・ペイロードの「コマンドを実行」で --eraseinstall--newvolumename オプションを省略します。

 '/Applications/Install macOS Catalina.app/Contents/Resources/startosinstall' --agreetolicense --forcequitapps

よくある質問

Q: startosinstallを使って Mac を以前のバージョンの macOS にダウングレードすることはできますか?
A: いいえ、同じバージョンをインストールするか、新しい macOS へのアップグレードのみがサポートされています。

Q: FileVault 2が有効な Mac で startosinstallを使用できますか?
A: はい! もし --eraseinstall オプションを使用した場合、暗号化されているかどうかに関わらず、プライマリパーティションを削除します。既存のオペレーティングシステムを新しいものに upgrade するために使用する場合、ディスクはすでにロックが解除されており、インストーラは FileVault 対応ボリュームで動作するために必要に応じて認証された再起動を実行します。

Q: このワークフローを使用して、コンピュータ名を設定したり、リモート管理を有効にしたりすることはできますか?
A: いいえ、コンピュータ名は、アップデート後に表示される設定アシスタントで設定します。Jamf Pro に登録した Mac の名前を変更するには、スクリプトやポリシーを使ってください。Jamf Pro から送られてくる MDM コマンドを使ってリモート管理を有効にする必要があります。

Q: startosinstall--installpackageオプションを使うと、Jamf Pro からパッケージをダウンロードできますか?
A: はい。ただし、startosinstallコマンドを実行する前に、Mac 上の好きな場所にパッケージを置いておく必要があり、コマンドにはパッケージのパスを指定する必要があります。

Q: --installpackageオプションを使って QuickAdd パッケージをインストールできますか?
A: はい! startosinstallを使って QuickAdd パッケージをインストールすると、設定アシスタントが完了する前にMacをJamf Pro に登録することができます。ただし、これでは User Approved MDM (UAMDM) は有効になりません。Mac を使用するユーザーが手動で MDM プロファイルを承認する必要があります。

Q: --installpackageオプションを使って、いくつのパッケージをインストールできますか?
A: このオプションは複数のインストーラをサポートしていますが、Apple は上限を公表していません。

Q: 承認されていないユーザーが Self Service のErase & Install ポリシーにアクセスできないようにするにはどうすればいいですか?
A: ポリシーをユーザーまたはユーザーグループにスコープして、Self Service への認証を許可してください。その後、スコープを設定したユーザーのみがポリシーを見ることができます。

Q: macOS Mojave またはそれ以前のバージョンで --fetch-full-installer オプションを使用できますか?
A: いいえ、これはmacOS Catalina のみの機能です。

Q: Jamf Now はこのワークフローをサポートしていますか?
A: いいえ、Jamf Now の機能セットには、このワークフローに必要なすべてのサポートが含まれていません。

Q: 法人一括購入(Volume Purchasing)を使って、Catalina のライセンスを購入し、アプリを展開することはできますか?
A: 法人一括購入(Volume Purchasing)を使用して macOS Catalina アプリのインストールを展開すると、過去には、フルインストーラではなく、スタブインストーラしかダウンロードできませんでした。しかし、startosinstallコマンドを実行すると、残りのインストーラのダウンロードが開始されます。つまり、Macがインターネットに接続されている必要があり、ダウンロードによって消去やインストールにかかる時間が大幅に延長されてしまいます。また、macOS が不意に警告を出してインストーラを実行してしまうこともあります。この方法は、もし使用する場合でも、無人ラボ用 Mac にのみにしてください。

Q: Catalina を消去してインストールするために USB インストーラディスクを作成した方が簡単で速いのではないでしょうか?
A: 必ずしもそうとは限りません。T2セキュリティチップ対応の Mac は、まずリカバリー HD を起動し、外部メディアからの起動を可能にするためにセキュリティを下げる必要があります。また、オペレーティングシステムを初期化インストールする前にディスクを消去するには、さらに手動の手順が必要です。時間を節約し、セキュリティを維持するためには、この消去とインストールのワークフローに従ってください。

Q: どのバージョンのJamf Pro がこのワークフローをサポートしていますか?
A: すべてのJamf Pro 環境でこのワークフローをサポートしています。ここで使用している機能は数年前から利用可能です。

Q: --fetch-full-installer オプションで High Sierraやそれ以前のバージョンもダウンロードできますか?
A: このオプションは macOS Mojave 10.14.6とmacOS High Sierra 10.13.6の両方のダウンロードをサポートしています。以前のバージョンのインストーラをダウンロードするには、 Apple のインストーラページを参照してください。

Q: このワークフローは DEP を必要としますか?
A: いいえ。Mac への導入を容易にするためには、Jamf Pro のような管理サーバーを使用してください。

Q: このワークフローはインターネット接続が必要ですか?
A: 主要な macOS のバージョンから別のバージョン(例:Mojave から Catalina へのアップグレード)へのアップグレードには、必要なファームウェアのアップデートをダウンロードするために、Macをインターネットに接続しておく必要があります。同じオペレーティングシステムのバージョンを再インストールする場合は、必ずしもインターネット接続が必要ではありませんが、インターネット接続することをお勧めします。

Q: Composerで PKG または DMG として Catalina デプロイメント・パッケージをビルドすることは重要ですか?
A: Jamf Proによる展開では、問題ありません。Jamf Pro はどちらも同じように扱います。他の管理ツールで展開する場合は、PKG としてビルドすることをお勧めします。

Q: それぞれの Mac で Apple 設定アシスタントを行う必要がありますか?
A: はい、このワークフローでは、設定アシスタントを自動化したり、バイパスしたりすることはできません。

Q: ダウンロードプロセスを高速化できますか?
A: softwareupdateコマンドを使用して Catalina インストーラをダウンロードする場合、ネットワーク上の堅牢な Mac でコンテンツキャッシュを有効にすると、ダウンロード時間を50パーセント以上短縮することができます。

Q: softwareupdateコマンドは、インストーラをダウンロードしているかのように動作しますが、いつも同じ古いインストーラです。何が起こっているのでしょうか?
A: Finder で、Macintosh HD 上または外付けドライブに別のインストーラが存在する場合、そのインストーラを使用しようとします。古いインストーラをすべて削除し、ゴミ箱を空にして新しいコピーがダウンロードされるようにしてください。

以降のディスカッションについては、Jamf Nation への投稿をお願いします。