macOSのAPFSボリュームをクローニングする方法

個人的メモを兼ねて。ここで記述してあることが必ず再現できるとは保証しません。

動作確認したバージョンは Mojave 10.14.6 / Catalina 10.15.2です。

はじめに

macOS High SierraになってからAPFSボリュームが導入され、Mojave以降はAPFSが強制になりました。

(High SierraはHDD端末のみMacOS ジャーナル 形式でのフォーマットが有効でしたが、MojaveからはHDDもAPFSの対象です)

APFS以前はNetinstallを利用して複数端末へ一斉に同一イメージをコピーする(モノリシックイメージング)ことが簡単にできましたが、Mojaveになってから「Mac OS Server」からNetinstallの項目が消えました。

まだBsdpyを利用した配信サーバーの構築は可能でしたが、さらに「システムイメージユーティリティ」まで削除されたのでNetinstall用のデータを取得することが不可能になりました。(これ、だれか取得できる方法があったら教えてください)

というわけで長らくコピーの方法が(私の中で)Time Machineしかなかったのですが、復元モードを利用してイメージングコピーできることがわかりました。

T2セキュリティチップが入っているMacと、入っていないMac間でイメージの使い回しはできないそうです。ただし私は同一構成のMac間以外でコピーしたことがないので、そもそも型番が違うMacでコピーできるかは未検証です。

クローンイメージの取得

復元モードの起動

「macOS 復元」を起動します。わかりづらいので以降は「復元モード」と記述します。

復元モードの起動は3通りあります。

  1. ストレージ内蔵の復元モード(あれば)
  2. ネットワークから最新の復元モードを取得
  3. 外付けストレージ(USBメモリなど)からの復元モード

復元モードは、Mac電源投入時に Rのキーコンビネーションで起動できますが、 Rでネットワークから(起動可能なバージョンのうち)最新の復元モードを起動できます。

ネットワークからの起動の場合有線で接続してる場合は有線で自動的に接続されます。接続していない場合、無線の選択画面が現れるはずです。

USBからの復元モードは、正確には復元モードの起動ではありません。macOSのインストールディスクを起動することで復元モードと同様の操作ができます。

最新の復元モードを使用することをお勧めしておきます。

イメージのコピー(前準備)

復元モードを起動させ「macOSユーティリティ」から「ディスクユーティリティ」を起動します。

ディスクユーティリティのメニューバーで[ファイル]→[新規イメージ]→[空のイメージを作成]からファイルを作成します。

このファイルの保存場所は外付けHDDなどにしてください。もしくは、メインで使ってるストレージにパーティションを区切って保存してください。

ファイルのサイズはコピーするmacOSが入っている領域の総容量を超える必要があります。つまり、macOS上で全部で500GB使えるならサイズは501GB以上は必要があります。

フォーマットはAPFSでイメージはスパース・ディスクイメージスパースバンドル・ディスクイメージ、あるいは読み出し/書き込みディスクイメージにしてください。

読み出し/書き込みディスクイメージは非推奨です。おなじみの.dmg形式のファイルになりますが、.dmg形式は最終的なイメージコピーを反映させる手順の中でマウントする必要がないというメリットがありますが、例えば前述のサイズで501GBで指定した場合、その時点で501GBのファイルが作成されます。作成が長いし、何よりストレージを圧迫します。

その点、スパース系のイメージは中身に合わせた可変サイズなので、501GBのファイルが作成されたとしたらファイルの保存上限が501GBというだけになります。極端な話、2TBにしても問題ありません。2種類ありますが、今回はどちらを選んでもそう変わりません。スパースバンドル・ディスクイメージが新しいし普段使いはこちらを推奨しますが、イメージングの作業中はスパース・ディスクイメージの方が個人的には好きです。

以降、紛らわしいのでここで作成したイメージファイルのことを『イメージコンテナ』と記述します。この記事独自のものなので注意してください。

イメージのコピー(GUI操作によるもの)

イメージコンテナを作成すると、自動的にマウントされるはずです。それを選択し、ディスクユーティリティ上部の「復元」ボタンをクリックします。

画像はmacOS起動中に撮ったものなので実際にやると差異があります
画像はmacOS起動中に撮ったものなので実際にやると差異があります

「復元」ボタンを押して、復元元をクローニングしたいmacOS領域に合わせて開始します。

Catalina以降はOSが起動領域(Macintosh HD)と個人領域(Macintosh HD - Data)のボリュームに分かれています。Macintosh HDをコピーするとMacintosh HD - Dataも同時にコピーされるので、あまり悩む必要はないはずです。

イメージのコピー(CUIによるもの)

上記で失敗する場合はターミナルによるasrコマンドを使用します。

ディスクユーティリティを終了し、macOSユーティリティを表示した状態で、上部メニューより[ユーティリティ]→[ターミナル]と進みます。

asr restore --erase --source /Volumes/Macintosh\ HD --target /Volumes/作成したイメージ

上記のコマンドで復元を開始できます。

この際、作成したイメージコンテナはマウントしてある必要があります。ディスクユーティリティ(GUI)でマウントされていたら問題ないです。イメージコンテナを作成してシャットダウンなどしていなければマウント解除などもされていないはずです。

もしマウントが必要なら以下のコマンドで可能です。

hdiutil attach /イメージコンテナのある場所

クローンイメージの配置

イメージコンテナはmacOSで使用する領域以外に配置してください。外付けHDDなどを使うか、適当なパーティションを区切ってそこに配置するかです。

クローンイメージの展開

ここまで来たら簡単で、同様の手順で復元モードを起動します。

イメージコンテナのマウント

ディスクユーティリティを起動し[ファイル]→[ディスクイメージを開く]からイメージをコピーします。

イメージを展開

イメージコンテナにmacOSイメージをコピーした手順と同様に、今度は逆にイメージコンテナからmacOS領域にコピーをします。

サイドメニューからMacintosh HDを選択し、上にある「復元」ボタンをクリック。復元元をイメージコンテナに指定して、復元。

asrコマンドを利用してやっても良いです。その場合、--target--sourceの指定先が逆になります。

これでコピーできるはずです。

その他

macOS Mojaveの復元モードではなんでか失敗することがありました。最新版を使うことをお勧めします。

大量展開する必要がある場合、予めパーティションを区切っておいて、Apple Remote Desktop(ARD)を使ってそこにイメージコンテナを流し込むのが一番いいのかな〜と思います。あとは手作業でポチポチ。

いい手順があればお教えください。

Bootcamp領域のクローニング

Wincloneを使うと良いでしょう。こっちはマジで何も考える必要がないので楽です。

Winclone 10 Standard