1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MacBookでMicroSDカードにRaspbianを書き込むまでの道のり

Last updated at Posted at 2019-01-27

はじめに

MicroSDカードが余っていたのでRaspberryPi Zero WH買ったのですが、
いつもMicroSDに書き込むまでの道のりを忘れてググっているので道標として投稿することにしました。

MacBookでとかタイトルにありますが、多分Mac全般に通用すると思います。

書き込むまでの道のり

公式からzipファイルをダウンロードする

https://www.raspberrypi.org/downloads/raspbian/
からダウンロードすればオッケー:thumbsup:

とりあえずLiteの方を落とします。curl -OL https://downloads.raspberrypi.org/raspbian_lite_latestとか、名前をつけたければcurl -o raspbian.zip -L https://downloads.raspberrypi.org/raspbian_lite_latestなどでもおそらく大丈夫。

デスクトップ版がいい場合は国内ミラーとかいうのがあるんでそちらから落としたほうが早いかも。

ダウンロードしたら念の為ハッシュ値の確認を行います。
今回ダウンロードしたのはStretchというバージョンのようです。

> openssl sha256 2018-11-13-raspbian-stretch-lite.zip
SHA256(2018-11-13-raspbian-stretch-lite.zip)= 47ef1b2501d0e5002675a50b6868074e693f78829822eef64f3878487953234d

openssl入っていない場合は以下のコマンドでも確認できるようです。

> 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カードをフォーマット

(注)新品のMicroSDカードをお持ちで、容量が32GB以下ならばここの手順は不要と思われます。
32GBを超えている場合はRaspberryPiでサポートしていないexFAT形式の可能性があるため、その場合はこの手順が必要になります。

MicroSDカードをお手持ちのMacbookに挿し込み、ターミナルを開きます。
その後、**diskutil list**と入力し、MicroSDカードが認識されているか確認します。

> diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         121.1 GB   disk0s2

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

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *63.9 GB    disk2
   1:             Windows_FAT_32 BE340262                524.3 MB   disk2s1
   2:                 Linux_Swap                         536.9 MB   disk2s2
   3:                      Linux                         2.1 GB     disk2s3

**/dev/disk2**が該当のディスクの模様。
見て思い出したのですが、すでにLinuxイメージを書き込んだことがあるMicroSDのようですね。

次に**diskutil eraseDisk**でMicroSDカードをフォーマットします。
RaspberryPiのブートローダーはFATファイルシステムのみをサポートしているとのことなのでFAT32でフォーマットします。

> diskutil eraseDisk FAT32 RASPBIAN /dev/disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as MS-DOS (FAT32) with name RASPBIAN
512 bytes per physical sector
/dev/rdisk2s2: 124334400 sectors in 1942725 FAT32 clusters (32768 bytes/cluster)
bps=512 spc=64 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=124364800 bspf=15178 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2

ddrescueを使い、MicroSDカードに書き込む

ここで普通はddコマンドで書き込むのですが、今まで使っていて、

  • 進捗の確認がしづらい
  • エラーからの復帰がきつい

などいろいろ感じることがありまして、単純にddコマンドよりも使いやすい**ddrescue**をここで使うことにします。
入っていない場合はbrew install ddrescueなどで入れてしまいましょう。

まず、書き込む前にアンマウントする必要があるのでdiskutil unmountDiskコマンドを使い、アンマウントしてしまいます。

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

その後、ddrescueを使い、MicroSDカードにイメージを書き込みます。

> sudo ddrescue -f -v -r1 2018-11-13-raspbian-stretch-lite.img /dev/disk2 rescue.log

ここのオプションですが、
**-f, --forceは強制上書きで、-v, --varboseは詳細表示、-r, --retry-passes**はリトライ回数指定です。
こちらに詳細な説明ありますが、 まあだいたい上のやつを知っておけばいいと思います。
最後のrescue.logはログファイルとなります。

> sudo ddrescue -f -v -r1 2018-11-13-raspbian-stretch-lite.img /dev/disk2 rescue.log
GNU ddrescue 1.23
About to copy 1866 MBytes from '2018-11-13-raspbian-stretch-lite.img' to '/dev/disk2'
    Starting positions: infile = 0 B,  outfile = 0 B
    Copy block size: 128 sectors       Initial skip size: 128 sectors
Sector size: 512 Bytes

Press Ctrl-C to interrupt
     ipos:    1866 MB, non-trimmed:        0 B,  current rate:    393 kB/s
     opos:    1866 MB, non-scraped:        0 B,  average rate:    587 kB/s
non-tried:        0 B,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:    1866 MB,   bad areas:        0,        run time:     52m 56s
pct rescued:  100.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Finished

入力後しばらくして上のようにFinishedと出力されれば書き込み終了です。
終了が確認できたら、diskutil eject /dev/disk2などしてMicroSDカードを取り出して終わりです。

おつかれさまでした。:white_flower:

さいごに

書いている途中で気づいたのだが、公式にすでに似たようなことやっているのページがあった

のですが、そっちではddを使っているのでまあ投稿する意味あるだろうと思い投稿することにしました。
公式ページのリンクも含めた備忘録と思ってもらって構いません。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?