Day1 RaspbianをSDカードへ書き込む

Raspberry Piのセットアップの上で最初の関門はOSイメージがフラッシュされたSDカードの作成である。手順を整理するとともに、多岐に渡る関連事項を整理してみた。



###############ハードウェアについて##################
#MacBook(母艦)
MacBook 13-inch, Aluminium, Late2008
Processor 2GHz Intel Core 2 Duo
Memory 8 GB 1067 MHz DDR3
Software OSX 10.9.1(13B42)

#外付けSDカードリーダー
ELECOM カードリーダライタ USB2.0対応 39メディア対応 シルバー MR-A39HSV(http://www.amazon.co.jp/ELECOM-%E3%82%AB%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%A9%E3%82%A4%E3%82%BF-USB2-0%E5%AF%BE%E5%BF%9C-39%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E5%AF%BE%E5%BF%9C-MR-A39HSV/dp/B001QXCZRQ)


#SDHCメモリカード
Kingston SDHCカード 8GB Class10 SD10V/8GB KF-C198G-4R
http://www.amazon.co.jp/Kingston-SDHC%E3%82%AB%E3%83%BC%E3%83%89-Class10-SD10V-KF-C198G-4R/dp/B00EU7N754/ref=sr_1_2?s=computers&ie=UTF8&qid=1392366097&sr=1-2&keywords=SD10V%2F8GB
//SDカードは容量により、SD(2Gまで)、SDHC(4-32G)、SDXC(48G-)の3つの規格が存在する。また、データの読み書きの速度によりClass 2, 4, 6, 10(読み書き時のデータ転送速度が最低2,4,6,10MB/秒)の4つに分類される。
###################################################



###############SDメモリカードのチェック##################
Macに固有のコマンドであるdiskutilを使用
$ sudo diskutil list


大抵のUNIXに存在するdfコマンドを使用。ただしこの方法ではファイルシステムが表示されない。
$ df -h

sdカードである/dev/disk1を直接指定してfdiskを実行するのもよい。
$ sudo fdisk /dev/disk1

###################################################



###############Raspbianのイメージファイルのダウンロード##################

http://www.raspberrypi.org/downloadsより2014-01-07-wheezy-raspbian.zipをダウンロード。


適当なディレクトリに移動させて展開。
$ unzip 2014-01-07-wheezy-raspbian.zip

適当なサイズでファイルの大きさを表示
$ ls -lh

###################################################



###############ddコマンドを用いて、Raspbianのイメージファイルの構成を直接SDカードに第1セクタからイメージファイルの大きさの領域まで書き込む)##################
これからいよいよSDカードにRaspbianのフラッシュを行う。
まずはSDカードをアンマウントする。
SDカード(disk1)がマウントされていることの確認
$ mount 

disk1s1をアンマウント
$ sudo diskutil umount /dev/disk1s1

アンマウントされたことの確認。
$ mount


ddコマンドを持ちいてRaspbianをSDカードへフラッシュする。
bsは一度に読み書きするデータの量を指定する。デフォルトでは512byteと小さいため、1024KB(1MB)を指定して実行する
謝ったデバイスを指定すると母艦の環境が破壊されるので注意が必要。
/dev/rdisk1のようにrを頭に付けると、SDカードにアンバッファモードで書き込むため、完了が早くなる。rを付けない場合は、バッファモードとなり、書き込みが非常に遅くなるので注意。
下記のコマンドでおよそ、5分の時間を要した。
$ sudo dd if=2014-01-07-wheezy-raspbian.img of=/dev/rdisk1 bs=1m

SDカードのパーティションを確認
$ sudo diskutil list

しっかりとSDカード(dsik1)にRaspbianのパーティションが構築されていることが確認できる。

ここでトータル、2.9GB程度のRasbianを書き込んだあと、SDカードの残りの領域はどうなっているのだろうか。最後に、その点について考察をしたい。
###################################################



###############SDメモリカードの空き領域についての考察##################

diskutilの実行により以下の情報が得られた。
第1パーティション:FAT 58.7MB
第2パーティション:Linuxプライマリパーティション 2.9GB

もともとのSDカードの容量が8Gなので、OS部分を除いた残りのおよそ5GBの領域はどうなっているのだろうか。これは、質問を変えれば、「OSイメージよりも大きい容量の記憶媒体にddコマンドを用いて書き込みを行ったときに、余った部分はどうなるのか」といえる。

この問いに対する回答は恐らく、”そのまま”ではないかと考えている。
HDDを初めとした記憶媒体を管理する上でMBR(Maser Boot Record)と呼ばれる、パーティションテーブルやブートローダーを保存している領域がある。ddコマンドは、変に細かい事はせず、イメージファイルに記述された1-0の2進数のデータを記憶媒体の第0セクタ(すなわちMBRの領域)からイメージの最大容量まで順に書き込んで行くだけの機能を持っている。

書き込んだ後の余った領域が空き領域と見えるのは、各種コマンドでパーティションの構成を取得するときは、MBRのパーティションテーブルにアクセスしているからであると考えられる。
ここまでのイメージは以下のように表す事ができる。

【購入した当初のパーティション】

【Raspbianのイメージを書き込みした後】

ここで当然有効に使えていない残りの領域を使用したい願望が出てくる。これを行うには、expand_rootfsというRaspbianに備え付けのツールを用いる。
以下は、Raspberry Piを実際に起動させてから、Raspberry Piの中で行う作業である。
$ sudo raspi-config
により、raspi-configを開き、expand_rootfsを選択
結果、以下の様な構成になる。



###################################################



###############参考文献##################
Eben Upton、Gareth Halfacree著、株式会社クイープ訳『Raspberry Piユーザーガイド』インプレスジャパン 2013
Japanese Raspberry Pi Users Group『Raspberry Pi[実用]入門』技術評論社 2013
nekosan『「Raspberry Pi」でつくる電子工作』工学社 2013
###################################################