Raspberry Piのブート用SDカードの作成 (2012/07/21)
SDカードの準備
今回は最近のメインマシンである MacBook Pro17 (MacOSX 10.7.4) を使って Raspbian の公式ディスクイメージ(Debian 7.0 wheezy) を使ってSDカードを準備しました。 17インチのMacBook Pro にはSDカードスロットが無いので、USB接続のmicroSDカードリーダを介して16GBのclass 10 microSDカードへ書き込みました。
より新しいバージョンに関する記事 2012-08-16-wheezy-raspbian のインストール 2012-09-18-wheezy-raspbian のインストール 2012-10-28-wheezy-raspbian のインストール 2012-12-16-wheezy-raspbian のインストール 2013-02-09-wheezy-raspbian のインストール 2013-05-25-wheezy-raspbian のインストール 2013-09-25-wheezy-raspbian のインストール 2013-12-20-wheezy-raspbian のインストール 2014-06-20-wheezy-raspbian のインストール 2014-09-09-wheezy-raspbian のインストール 2014-12-24-wheezy-raspbian のインストール 2015-01-31-raspbian のインストール (Pi2) 2015-05-05-wheezy-raspbian のインストール 2015-09-24-raspbian-jessie のインストール 2016-02-03-raspbian-jessie のインストール 2016-02-26-raspbian-jessie のインストール(Pi3対応) 2017-11-29-raspbian-stretch 2021-10-30-raspios-bullseye
SDカードイメージのダウンロード
https://www.raspberrypi.org/downloads から 2012-07-15-wheezy-raspbian.zip をダウンロードしました。 ダウンロードしたファイルのSHA-1 を求めて、公式サイトのSHA-1 の値と一致することを確認しました。
$ shasum 2012-07-15-wheezy-raspbian.zip
3947412babbf63f9f022f1b0b22ea6a308bb630c 2012-07-15-wheezy-raspbian.zip
SDカードイメージのSDカードへの書き込み(MacOS X 編)
MacOS X ではデバイス名の指定方法が異なるだけで、Linuxと同じく dd コマンドを使ってSDカードに ディスクイメージを書き込みます。まずは SDカードのデバイス名を調べます。以下の例は、私のMacBookでの例です。適宜読み替えてください。
dd コマンドのデバイスの指定を間違えると最悪ハードディスクがすべて消えるなどの悲惨な結果が待っています。十分に注意して行なってください。
カードリーダ接続前
$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s2 698Gi 94Gi 604Gi 14% /
devfs 182Ki 182Ki 0Bi 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% /net
map auto_home 0Bi 0Bi 0Bi 100% /home
カードリーダ接続後
$ df -h Filesystem Size Used Avail Capacity Mounted on /dev/disk0s2 698Gi 94Gi 604Gi 14% / devfs 184Ki 184Ki 0Bi 100% /dev map -hosts 0Bi 0Bi 0Bi 100% /net map auto_home 0Bi 0Bi 0Bi 100% /home /dev/disk1s1 15Gi 2.2Mi 15Gi 1% /Volumes/NO NAME
SDカードのデバイス名が /dev/disk1s1 であることを確認しました。 SDカードをアンマウントします。
$ diskutil unmount /dev/disk1s1
Volume NO NAME on disk1s1 unmounted
SDカードのデバイス名は /dev/disk1s1 でしたが、書き込みは同じデバイスでバッファリングしないrawデバイス(/dev/rdisk1)を指定して行いました。
$ sudo time dd bs=1m if=2012-07-15-wheezy-raspbian.img of=/dev/rdisk1
1850+0 records in
1850+0 records out
1939865600 bytes transferred in 104.871126 secs (18497614 bytes/sec)
104.97 real 0.00 user 0.94 sys
ディスクイメージの書き込み速度は 18MB/s でした。Class 10 のSDHCカードの転送速度は 10MB/sec 以上ということなので十分速いことが確認できました。
マウント状況を確認します。
$ df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/disk0s2 698Gi 96Gi 602Gi 14% /
devfs 186Ki 186Ki 0Bi 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% /net
map auto_home 0Bi 0Bi 0Bi 100% /home
/dev/disk1s1 56Mi 34Mi 22Mi 61% /Volumes/Untitled
先頭のパーティションはFAT32なのでマウントして内容を確認することができます。16GBのSDカードに2GBのディスクイメージを書き込んでいるため、残りの12GBが気になりますが、Raspberry Piをブートした後に残りの容量を使い切るように設定できるので大丈夫です。
$ cd /Volumes/Untitled/ $ ls -l total 69024 -rwxrwxrwx 1 jun staff 2051056 7 15 18:10 arm128_start.elf -rwxrwxrwx 1 jun staff 2051056 7 15 18:10 arm192_start.elf -rwxrwxrwx 1 jun staff 2051056 7 15 18:10 arm224_start.elf -rwxrwxrwx 1 jun staff 16536 7 15 18:10 bootcode.bin -rwxrwxrwx 1 jun staff 142 7 15 20:06 cmdline.txt -rwxrwxrwx 1 jun staff 1180 7 15 20:06 config.txt -rwxrwxrwx 1 jun staff 137 7 15 20:44 issue.txt -rwxrwxrwx 1 jun staff 6263772 7 15 18:10 kernel.img -rwxrwxrwx 1 jun staff 4189540 7 15 18:10 kernel_cutdown.img -rwxrwxrwx 1 jun staff 16321844 7 15 18:10 kernel_emergency.img -rwxrwxrwx 1 jun staff 275235 7 15 18:10 loader.bin -rwxrwxrwx 1 jun staff 2051056 7 15 18:10 start.elf
SDカードをアンマウントして、カードを取り出します。
$ sudo diskutil unmount /dev/disk1s1
Volume (null) on disk1s1 unmounted
Raspberry Piの起動
作成したブート用のSDカードをRaspberry Pi に取り付けて電源をつなぎます。
最初の起動時に表示される設定画面
起動すると、最初の1回だけ初期設定を行う以下の画面が表示されます。Linuxのデスクトップが表示されると思っているとちょっと面食らいます。
上下のカーソルキーで項目を移動して、[TAB]キーで <Select> を選択、[Return]キーを押して各項目の設定画面に移動します。
- info
- このツールの情報が表示されますが、特に内容はありません。
- expand_rootfs
- 【重要】容量の大きいSDカードを使用しても、最初は先頭の2GB程度のパーティションを使うだけになっていて無駄になるため、このコマンドを選択してSDカードの容量全体を使うように設定できます。設定後、再起動が必要です。
- overscan
- 画面の周囲をちょっと空けるオーバースキャンを設定します。画面周囲が切れるような場合(テレビ?)に使用します。
- configure_keyboard
- キーボードの配列を指定します。普通は「Generic 105-key (Intl) PC」を選択して「Japanese - Japanese (OADG 109A) 」でいいでしょう。
- change_pass
- 【重要】'pi' ユーザのパスワードを変更
- change_locale
- ロケールの設定です。最初は設定しないほうがいいでしょう。 「ja_JP.UTF-8 UTF-8」を選択するとメニューなどが日本語化されますが、最初は日本語フォントがインストールされていないため、文字化けします。
- change_timezone
- 時間の設定です。日本時間は 「Asia」、「Tokyo」 と指定します。
- memory_split
- CPUとGPUへのメモリの配分を変更します。GPUへは32MiBのまま変更しないほうがいいでしょう。
- ssh
- ネットワーク越しにコマンドラインに接続する場合には「Enable」を選択します。
- boot_behaviour
- 起動時に直接GUIな画面(Xのデスクトップを表示)に移行する場合は「Yes」を選択します。
- update
- この raspi-config の新しいバージョンがあれば取得します。
2番めの「expand_rootfs」と「change_pass」で'pi' ユーザのパスワード変更は実行しておいたほうがいいでしょう。「sudo raspi-config」でいつでも実行できるので、後からでも設定できます。
再起動
再起動後、ログインして「startx」を実行するとデスクトップが表示されます。下のスクリーンショットは背景の色を変更しています。
参考
expand_rootfsを実行する前後のSDカードのパーティションの状態を示します。上(実行前)はUSBポートに接続、下(実行後)はSDカードスロットに接続して fdisk を実行しました。
# fdisk -l /dev/sda Disk /dev/sda: 16.0 GB, 16021192704 bytes 64 heads, 32 sectors/track, 15279 cylinders, total 31291392 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 Disk identifier: 0x000714e9 Device Boot Start End Blocks Id System /dev/sda1 8192 122879 57344 c W95 FAT32 (LBA) /dev/sda2 122880 3788799 1832960 83 Linux
総セクター数が 31,291,392 のところ、3,788,800 しか使っていません。
# fdisk -l /dev/mmcblk0 Disk /dev/mmcblk0: 16.0 GB, 16021192704 bytes 4 heads, 16 sectors/track, 488928 cylinders, total 31291392 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 Disk identifier: 0x000714e9 Device Boot Start End Blocks Id System /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA) /dev/mmcblk0p2 122880 31291391 15584256 83 Linux
すべてのセクター(31,291,392セクター)が使用されています。