コマンド備忘録

OS イメージなどの .img ファイルが手元にあり、それを SD カードに焼きこむ方法。

デバイスの検出

SD カードをリーダー/ライター等に差し込むと、カーネルがイベントを記録する。 dmesg コマンドでイベントログを見れるので、ログ末尾のほうに記録されているはずのデバイス割り当てログを確認してデバイスを調べる。

$ sudo dmesg
[20466.141180] sd 0:0:0:0: [sda] 62333952 512-byte logical blocks: (31.9 GB/29.7 GiB)
[20466.143163] sda: detected capacity change from 0 to 62333952
[20466.144469]  sda: sda1 sda2

ドライブは、マシンから検出された順に sda, sdb, sdc … のようなアルファベットの順が付与されたドライブ名が割り当てられる。また、そのドライブに複数のパーティションがある場合、 sda1, sda2, … のように数字が振られてパーティションが区別される。

この段階で /dev を確認すると、検出されたドライブが存在することを確認できる。

デバイス詳細の閲覧

fdisk コマンドを利用して、デバイスの詳細について確認できる。

$ sudo fdisk -l /dev/sda
Disk /dev/sda: 8.21 GiB, 8810098688 bytes, 17207224 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x92a5a1c0

Device       Boot   Start      End  Sectors  Size Id Type
/dev/sda1 *       2048  1050623  1048576  512M  c W95 FAT32 (LBA)
/dev/sda2      1050624 17207223 16156600  7.7G 83 Linux

イメージの焼きこみ

dd コマンドを使用して、イメージファイルをデバイスに書き込む。

書き込む際、既存のファイルシステムに対して書き込むわけではない (すでにあるものを破壊してデバイス先頭から書き込む) ので、デバイスをマウントする必要はない。パーティションも無視する。
(書き込み先のデータはすべてロストする)

$ sudo dd if=sd-blob-b01.img of=/dev/sda bs=8M status=progress
8810098688 bytes (8.8 GB, 8.2 GiB) copied, 1694 s, 5.2 MB/s
1050+1 records in
1050+1 records out
8810098688 bytes (8.8 GB, 8.2 GiB) copied, 1693.8 s, 5.2 MB/s