MacOSXでISOやIMGファイルからブータブルUSBの作成手順。
毎度「macOS(今回はHigh Sierra)でどう作るんだっけ?」とググる自分に嫌気を覚えたのでメモ。

書き込みにはddコマンドを利用しますが、/dev/rdiskX/dev/diskXの速度比較を行った結果、 やはり/dev/rdiskXに軍配が上がりました。

用意するもの

  • インストールメディアのISOファイル
  • ISOファイルのサイズ以上の容量があるUSBメモリ
  • Macのターミナルアプリ

USBを初期化する

USBメモリをMacに接続しフォーマットします。”ディスクユーティリテ”アプリから行ってもいいのですが、 スクリーンショットを取るのがめんどくさかったので今回はコマンドラインから操作しました。

デバイス名を確認します。
私の環境では、以下のように表示され、/dev/disk2というのがわかりました。
※私はディスク容量などで判断していますが、USBをさす前・さした後の差分で確認する方法もあります。

$ diskutil list
/dev/disk0
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      GUID_partition_scheme                        *251.0 GB   disk0
1:                        EFI EFI                     209.7 MB   disk0s1
2:          Apple_CoreStorage                         250.1 GB   disk0s2
3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:                  Apple_HFS Macintosh HD           *249.8 GB   disk1
Logical Volume on disk0s2
03010883-5866-4002-BDA4-FF6EDA3E4A96
Unlocked Encrypted
/dev/disk2
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      GUID_partition_scheme                        *15.6 GB    disk2
1:                        EFI EFI                     209.7 MB   disk2s1
2:       Microsoft Basic Data UNTITLED                15.4 GB    disk2s2

MS-DOS(FAT)形式で対象(/dev/disk2)を初期化します。

$ diskutil eraseDisk MS-DOS UNTITLED /dev/disk2

ISOファイルの書き込み

ddコマンドを利用してISOイメージをUSBに書き込むわけですが、USBをフォーマットした状態では Finder上でマウントされたままなので以下のコマンドでアンマウントします。

$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

ddコマンドでISOファイルを書き込みます。なおデバイスファイル(/dev/diskN)は一般ユーザでのアクセス権がないためsudoが必要です。

$ sudo dd if=./CentOS-7-x86_64-Minimal-1708.iso of=/dev/rdisk2 bs=1m

USBメモリを取り外す

ddの実行にはしばらくかかります。気長に待ちましょう。
USBメモリへ書き込みが完了したら、以下のコマンドで取り外せる状態にします。

$ diskutil eject /dev/disk2

念のため、diskutl listを確認しましょう。/dev/disk2のエントリーがなくなっているはずです。

/dev/rdiskX と /dev/diskXの速度比較

書き込み速度の比較を行うため、2つのイメージファルをUSBメモリへ書き込みを行ってみました。

  • CentOS-7-x86_64-Minimal-1708.iso : 792MB(830472192bytes)
  • 2017-11-29-raspbian-stretch-lite.img : 1.7GB(1858076672bytes)

CentOS-7-x86_64-Minimal-1708.isoでの比較

まずは/dev/rdiskXから

$ time sudo dd if=./CentOS-7-x86_64-Minimal-1708.iso of=/dev/rdisk2 bs=1m
792+0 records in
792+0 records out
830472192 bytes transferred in 214.985391 secs (3862924 bytes/sec)

real	3m36.033s
user	0m0.026s
sys	0m0.995s

続いて/dev/diskX

$ time sudo dd if=./CentOS-7-x86_64-Minimal-1708.iso of=/dev/disk2 bs=1m
792+0 records in
792+0 records out
830472192 bytes transferred in 866.579114 secs (958334 bytes/sec)

real	14m28.131s
user	0m0.024s
sys	0m11.338s

rdiskの方が4倍くらい早いですね!

2017-11-29-raspbian-stretch-lite.imgでの比較

まずは/dev/rdiskXから

$ time sudo dd if=./2017-11-29-raspbian-stretch-lite.img of=/dev/rdisk2 bs=1m
1772+0 records in
1772+0 records out
1858076672 bytes transferred in 344.975275 secs (5386115 bytes/sec)

real	5m46.314s
user	0m0.031s
sys	0m1.859s

続いて/dev/diskX

$ time sudo dd if=./2017-11-29-raspbian-stretch-lite.img of=/dev/disk2 bs=1m
1772+0 records in
1772+0 records out
1858076672 bytes transferred in 415.503828 secs (4471864 bytes/sec)

real	6m56.569s
user	0m0.029s
sys	0m23.069s

思ったほど差は出ませんでした。


試行回数が少ないので、速度差を細かく出してはいないですが/dev/rdiskXを指定してddコマンドを実行した方が良さそうですね。

以上で、BootableUSBの作成は完了です。