CUBE SUGAR CONTAINER

技術系のこと書きます。

macOS で Raspbian のブートイメージを SD カードに書き込む

久しぶりに Raspberry Pi を扱う機会があったので、思い出しがてら書いておく。

使った環境は次の通り。

$ sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.14.2
BuildVersion:   18C54

使ったカードリーダーはこちら。 特にドライバなどをインストールしなくても認識してくれる。

Raspberry Pi と SD カードは相性問題があるので、起動するかはレビューを確認したり以下のサイトで調べておくと良い。

elinux.org

書き込むイメージファイルを用意する

まずは公式サイトからイメージファイルをダウンロードしてくる。

$ wget --trust-server-names https://downloads.raspberrypi.org/raspbian_full_latest

念のためファイルのハッシュが一致することを確認する。

$ shasum -a 256 2018-11-13-raspbian-stretch-lite.zip
47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d  2018-11-13-raspbian-stretch-lite.zip

確認できたらファイルを解凍する。

$ unzip 2018-11-13-raspbian-stretch-lite.zip
Archive:  2018-11-13-raspbian-stretch-lite.zip
  inflating: 2018-11-13-raspbian-stretch-lite.img

書き込み先を確認する

カードリーダーに SD カードを挿入したら Mac につなげる。 自動で認識するはずなので diskutil を使ってデバイスを確認する。

$ diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         251.0 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:                 Apple_APFS Container disk1         250.7 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +250.7 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            101.4 GB   disk1s1
   2:                APFS Volume Preboot                 67.5 MB    disk1s2
   3:                APFS Volume Recovery                1.0 GB     disk1s3
   4:                APFS Volume VM                      3.2 GB     disk1s4

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.8 GB    disk2
   1:             Windows_FAT_32 boot                    58.7 MB    disk2s1
   2:                      Linux                         15.7 GB    disk2s2

上記では /dev/disk0/dev/disk1 が macOS が使っている領域なので /dev/disk2 になる。

確認できたら、マウントされているパーティションを全てアンマウントする。

$ sudo diskutil umount /dev/disk2s*

イメージを書き込む

dd コマンドを使ってブートイメージを書き込む。 書き込み先のデバイスを間違えると macOS がインストールされている領域が壊れる恐れがあるので注意する。 必ず先ほど確認した SD カードリーダーのデバイスで、かつ RAW デバイス (s がついていない) を指定する。

$ sudo dd bs=1m if=2018-11-13-raspbian-stretch-lite.img of=/dev/disk2
1780+0 records in
1780+0 records out
1866465280 bytes transferred in 1220.928058 secs (1528727 bytes/sec)

書き込みが終わると自動でマウントされるはず。 中身はこんな感じになる。

$ ls /Volumes/boot
COPYING.linux           bcm2710-rpi-3-b.dtb     issue.txt
LICENCE.broadcom        bcm2710-rpi-cm3.dtb     kernel.img
LICENSE.oracle          bootcode.bin            kernel7.img
bcm2708-rpi-0-w.dtb     cmdline.txt         overlays
bcm2708-rpi-b-plus.dtb      config.txt          start.elf
bcm2708-rpi-b.dtb       fixup.dat           start_cd.elf
bcm2708-rpi-cm.dtb      fixup_cd.dat            start_db.elf
bcm2709-rpi-2-b.dtb     fixup_db.dat            start_x.elf
bcm2710-rpi-3-b-plus.dtb    fixup_x.dat

あとはディスクをアンマウントした上で物理的にカードを抜き取る。

$ sudo diskutil umount /Volumes/boot

抜き取ったカードを Raspberry Pi にぶっさして起動すればおっけー。

めでたしめでたし。