Raspberry Pi のインストール方法いろいろ

遅ればせながら、Raspberry Piを触ってみることにしました。
新しく購入した Raspberry Pi 2 model B とかなり昔のどこかの勉強会の懇親会でのじゃんけん大会に勝ってもらったものの、ずっと放置していた Raspberry Pi 1 model B(初期型。RAM 256MB) です。

本家のインストール手順の説明に従ってまずはNOOBSというツールでインストールしてみます。
ダウンロードはここから。
NOOBSとNOOBS Liteの2種類があったので、それぞれ試してみました。今回は全てRaspbianをインストールしています。
(以降、標準サイズのSDカードもマイクロSDカードも区別せずに「SDカード」と記述しています。)

NOOBS

NOOBS_v1_4_1.zipというサイズが約800MBのファイルをダウンロードします。それを展開して、その中身のファイルをSDカードのトップディレクトリにコピーします。コピーの前にSDカードをフォーマットし直せと書いてあったのですが、今回は新品をおろしたので、フォーマットせずにそのままできました。
後は、Rasberry Pi にそのSDカードを挿し、HDMIでテレビに、USBでキーボードとマウスをつないで、マイクロUSBで給電します。
テレビの画面のGUIを操作してRaspbianを選択してインストール開始。40分くらい待つとインストール完了。
インストールの時間はファイルの書き込み速度が支配的なので、速いSDカードを使うとその分早く終わります。今回はclass 4のものを使ったので遅めでした。
起動すると、テレビの画面にログインプロンプトが出るので、ID:pi, Password:raspberry でログインできます。
最初のログインでは自動的にraspi-configコマンドが実行されるので、ここでLocaleやTimezoneを設定します。
startxを実行するとX Windowのデスクトップが起動しますが、Raspberry Pi 2であってもあまり快適な速度ではないので、私はデスクトップを使うことはあまりなさそうです。

NOOBS Lite

もう一台あるので、Raspberry Pi 1のほうは、NOOBS Liteでインストールしてみました。
NOOBS_lite_v1_4.zipは22MBしかなくて、ずっと小さいです。Raspberry PiEthernetにつなぐ以外は、NOOBSと全く同じようにインストールできます。ネットワークからダウンロードしながらファイルを書き込むことになるのですが、結局SDカードの書き込み速度が支配的なので、NOOBSのときと変わらない時間でインストールが完了しました。
固定回線のある環境では、NOOBS Liteはおすすめです。

NOOBS について

NOOBS とは New Out of Box Software のことだそうです。
ソースコードGithubで公開されており、詳細な説明もここに書いてあります。
実際にこれはramdisk上で動作するLinuxシステムで、UIにはQtが使われいるようです。
インストール後も、NOOBSはリカバリ用のパーティションに格納されていて、起動時にシフトキーを押すとリカバリのためにNOOBSが起動するそうです。

NOOBSを使わずにRaspbianをインストール

確かにNOOBSを使うと初心者でも簡単にインストールすることができます。でも、コマンドラインでddコマンドを使うことをいとわなければ、もっと直接的にRaspbianをインストールすることができます。
Download Raspbian for Raspberry Pi
サイズが約1GBの2015-05-05-raspbian-wheezy.zipというファイルをダウンロードします。それを展開するとサイズが約3GBの2015-05-05-raspbian-wheezy.imgというファイルができるので、それをddコマンドでSDカードに書き込みます。

MacからddコマンドでSDカードに書く手順。
まずは、diskutil list コマンドでSDカードのデバイスファイルを確認します。

koba-mac:raspi koba$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            499.4 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *8.0 GB     disk1
   1:             Windows_FAT_32 boot                    58.7 MB    disk1s1
   2:                      Linux                         7.9 GB     disk1s2

/dev/disk0と/dev/disk1の2つが見えますが、容量からdisk1のほうがSDカードだとわかります。
SDカードをアンマウントします。

koba-mac:raspi koba$ diskutil unmountDisk /dev/disk1
Unmount of all volumes on disk1 was successful

次にddコマンドを使って書き込みを行います。Macの場合はデバイス名のrawを表すrがついた/dev/rdisk1に書き込みます。
コマンドを実行する前に、デバイスファイル名が間違っていないか指差し確認してください。
sudo でddコマンドを使うのは実は非常に危険で、ここでうっかり/dev/rdisk0に書いてしまうと、Macが起動不能になります。

koba-mac:raspi koba$ sudo dd bs=1m if=./2015-05-05-raspbian-wheezy.img of=/dev/rdisk1
Password:
3125+0 records in
3125+0 records out
3276800000 bytes transferred in 260.141958 secs (12596199 bytes/sec)

書き込みには4分半かかりました。class 10のSDカードを使っています。
このとき自動で再度マウントされているので、SDカードを抜く前にもう一度アンマウントしてください。

koba-mac:raspi koba$ diskutil unmountDisk /dev/disk1
Unmount of all volumes on disk1 was successful

できたSDカードをRaspberry Piに挿して起動します。
最初の段階ではルートファイスシステムの容量は以下のように認識されていて、SDカードの容量いっぱいまで使用でできていません。これはパーティションテーブルごと書き込みをおこなったためです。

pi@raspberrypi:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          2.9G  2.4G  335M  88% /
/dev/root       2.9G  2.4G  335M  88% /
devtmpfs         87M     0   87M   0% /dev
tmpfs            19M  224K   18M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            37M     0   37M   0% /run/shm
/dev/mmcblk0p1   56M   19M   37M  34% /boot

rasp-configコマンドで"Expand Filesystem"の項目を選択して実行します。

pi@raspberrypi:~$ sudo raspi-config

その後、再起動してルートファイスシステムの容量を確認すると以下のようになります。(8GBのカードを使用しました。)

pi@raspberrypi:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          7.2G  2.4G  4.5G  35% /
/dev/root       7.2G  2.4G  4.5G  35% /
devtmpfs         87M     0   87M   0% /dev
tmpfs            19M  224K   18M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            37M     0   37M   0% /run/shm
/dev/mmcblk0p1   56M   19M   37M  34% /boot

raspi-configコマンドはシェルスクリプトなので、何をやっているのかを確認できます。
"Expand Filesystem"ではfdiskコマンドでrootfsのパーテョンを一度削除してから、容量一杯のサイズでパーティションを再作成し、次に起動したときに一度だけresize2fsが実行されるようにinitスクリプトに登録を行っていました。

RaspbianはRaspberry Pi 1/2 どちらも共通

Raspbianをインストール済みのSDカードはRaspberry Piの1と2のどちらでも使えます。1と2ではCPUが異なるのでカーネルは別々になりますが、ブートパーティションの中には両方のカーネルが格納されていて、ブートローダーがCPU種別を判別して適切なカーネルを選んで起動してくれます。
ルートファイルシステムは共通で、armv6向けにFPUを有効にしてビルドされています。Raspbianのgccはデフォルトでそのようなコードを生成するようにconfigされています。

まとめ

Raspberry Pi 1/2 にRaspbianをインストールするいろいろな方法を試しました。
人にすすめるならば、NOOBS Liteかな。安全で簡単なので。自分ではさくっとddで書く方法を使います。
なお、SDカードのサイズは4GBでRaspbianをインストールできますが、それだと残り容量にあまり余裕が無いので8GBをおすすめします。