Raspberry Pi に入門してみた。


LinuxOSがまるっと動くという小型の基板 [Raspberry Pi](http://www.raspberrypi.org/) に興味をひかれ、いじくってみることにしました。これまでに [Arduino](http://arduino.cc/) をさわったことはありましたが、Arduino は Processing ベースの独自言語でプログラムを書きますので、ツッコんだことをやろうとするとややハードルが高いかも知れません。Linux が動くということは、既にあるさまざまなプログラムやリソースが使える、ということだと思うので、期待高し、です。

初心者なので、書籍『<a href="http://www.amazon.co.jp/gp/product/4899773528/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4899773528&linkCode=as2&tag=pxt25503-22">Raspberry Piで遊ぼう!</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=pxt25503-22&l=as2&o=9&a=4899773528" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />』を参考に進めていきたいと思います。


# 用意するもの

とりあえず今回は、起動して終了するところまでをやってみます。そこまでの操作に必要な最低限の機材は次の通りです。

- Raspberry Pi 本体<br />
まずは Raspberry Pi の本体が必要です。<a href="http://www.amazon.co.jp/gp/product/B00CYA6UKI/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00CYA6UKI&linkCode=as2&tag=pxt25503-22">Type A</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=pxt25503-22&l=as2&o=9&a=B00CYA6UKI" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> と <a href="http://www.amazon.co.jp/gp/product/B00CBWMXVE/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00CBWMXVE&linkCode=as2&tag=pxt25503-22">Type B</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=pxt25503-22&l=as2&o=9&a=B00CBWMXVE" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> があります。Type A は廉価版で、メモリが少なくて、有線LANが使えません。私はちょっとリッチに<a href="http://www.amazon.co.jp/gp/product/B00DGKUHFE/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00DGKUHFE&linkCode=as2&tag=pxt25503-22">クリアケースがセットになってる Type B</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=pxt25503-22&l=as2&o=9&a=B00DGKUHFE" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />、を買いましたが、ケースは特に必要ありません。
- 電源アダプタと接続用のマイクロUSBケーブル<br />
1ポートで1000mA以上出力できる電源アダプタが必要です。PCのUSBポートは普通500mAなので、ちょっと足りません。iPhoneについてくるアダプタなどが使えます。<br />
![電源アダプタとマイクロUSBケーブル](https://qiita-image-store.s3.amazonaws.com/0/28914/c967cdec-48b3-b20a-d363-2fcf40020b54.jpeg)
- SDカード<br />
Raspberry Pi にはディスク領域がついていません。そのため、SDカードを挿して使う必要があります。このカードは、Raspberry Pi の起動ディスクになります。今回は、ありあわせで「ELECOM SDHC 4GB Class10」というSDカードを使用します。<br />
![SDCard.jpg](https://qiita-image-store.s3.amazonaws.com/0/28914/bc586bd5-26e3-7925-2fa5-d60e24c26e41.jpeg "SDCard.jpg")
- キーボード<br />
起動ができると、とりあえずコマンドラインでいろいろ操作することになるので、キーボードは必要です。
- ディスプレイとディスプレイケーブル (HDMIケーブル、またはコンポジットケーブル)<br />
一旦、ディスプレイに繋がないと、動いたかどうかわからないし、操作もできないので、用意しましょう。Raspberry Pi にはHDMIとコンポジット出力がありますが、どっちでもよさそうです。ディスプレイはテレビでもOKです。今回は、ありあわせで、コンポジットでご家庭のテレビにつなぐ、という構成でやってみます。

ということで、下記は機材集合写真。これに加えて、ディスプレイとしてお部屋のテレビを使いました。

![今回用意した機材](https://qiita-image-store.s3.amazonaws.com/0/28914/a2aa8827-2a6c-979c-0560-64c4822099b2.jpeg)



その他、デスクトップGUI環境を動かすならマウスがあるとよいとか、LANにつなぐならLANケーブルがあるとよいとか、スピーカーをつなぐと音も聞こえるとかありますが、なくても起動はできるので今回は用意しませんでした。



# Raspbian "wheezy" OS の起動ディスク(SDカード)を作る

Raspbian は、Raspberry Pi 向けに最適化した Debianベース のOS、とのことです。他にも Raspberry Pi 向けのOSがたくさんあるようですが、今回はRaspbianを使ってみることにします。

書籍によると、4GB以上のSDカードが必要とのこと。ウェブを検索すると 2GB のカードでもできている人もたくさんいますが、4GBのカードを用意しました。ちなみに、選んだSDカードと Raspberry Pi との相性があるそうです。[RPi SD cards](http://elinux.org/RPi_SD_cards) のページに、SDカード製品の相性表が掲載されているので、ここで「ok」表示のあるカードを選んでおくとベターでしょう。今回は、「ELECOM SDHC 4GB Class10」というSDカードを使用します。


OSのイメージファイルは [ダウンロードページ](http://www.raspberrypi.org/downloads) から入手できます。

- [2013-12-20-wheezy-raspbian.zip](http://downloads.raspberrypi.org/raspbian_latest) (784MB)

書籍を読むと、Windows用には 「Win32 Disk Imager」や「DDforWindows」、Mac用には Raspberry Piの起動ディスクを作るためのツール「RPi-sd card builder」をお勧めしていますが、ここでは <code>dd</code> コマンドを使うことにします。(ちなみに Mac OS X Mountain Lion でやっています)

OSだけに、784MBとなかなか大きいファイルです。ダウンロードに時間もかかりますが、気長に待ちます。ダウンロードされてきたZIPを解凍すると、 2013-12-20-wheezy-raspbian.img というディスクイメージファイルが得られます。このイメージをSDカードに復元して、起動ディスクを作成します。



Mac では、SDカードは挿入すると、<code>/Volumes/{$カード名}</code> という場所に認識されます。カード名は、SDカードそれぞれに固有のボリュームラベルがつけられるので、決まった名前になりません。SDカードをMacに挿入すると名前がわかるので、必ず調べてからコマンドを実行してください。

ここでは、わかりやすいように "RASPBIAN" というボリュームラベルをつけました。

<strong>注意：出力先のボリューム名は絶対に間違わないように注意してください。このコマンドを間違ったデバイス(例えば "Macintosh HD" とか！)に実行すると、ディスクの中身がぜんぶ一瞬で消去されてしまいます！</strong>

まず、<code>df</code>コマンドで、RASPBIAN がどのデバイスで認識されているか調べます。

```Bash:command
$ df
```

すると、次のような表示が得られます。

```
Filesystem    512-blocks      Used Available Capacity  iused   ifree %iused  Mounted on
/dev/disk1     234643592 194054152  40077440    83% 24320767 5009680   83%   /
devfs                379       379         0   100%      656       0  100%   /dev
map -hosts             0         0         0   100%        0       0  100%   /net
map auto_home          0         0         0   100%        0       0  100%   /home
/dev/disk2s1     7798784      6016   7792768     1%        0       0  100%   /Volumes/RASPBIAN
```

<code>/dev/disk2s1</code> が RASPBIAN であるいることがわかります。このディスクにイメージを展開するのですが、その前に <code>/dev/disk2s1</code> をアンマウント(<code>umount</code>コマンド)します。

```Bash:command
$ sudo umount /Volumes/RASPBIAN
```

成功したら、<code>dd</code>コマンドでイメージをSDカードに展開します。

<code>dd</code>コマンドのifオプションで入力ファイル(この場合 2013-12-20-wheezy-raspbian.img)を、ofオプションで出力先(この場合 SDカード)を指定します。 <q>unmount は/dev/disk2s1 でいいんだけど、ddで書き込むときはdisk2s1の先頭にrをつけて、s1を削る</q>([出典](http://qiita.com/hfm/items/96d20d9cc29fb46fd8a3)) らしいので、コマンドは次のようになります。

```Bash:command
$ cd (ZIP解凍先のフォルダ)
$ sudo dd bs=1m if="./2013-12-20-wheezy-raspbian.img" of="/dev/rdisk2"
```

数分待つと、次の様に出て、完了します。

```
2825+0 records in
2825+0 records out
2962227200 bytes transferred in 154.902121 secs (19123219 bytes/sec)
```

これで Raspberry Pi の起動ディスクはできているはず。SDカードを抜き取る前に、<code>/dev/disk2s1</code>をアンマウントします。

```Bash:command
$ diskutil unmount /dev/disk2s1
```

```
Volume boot on disk2s1 unmounted
```


# Raspberry Pi を起動して初期設定

起動ディスクの書き込みができたら、SDカードを抜いて、いよいよ Raspberry Pi に挿入して起動してみます。

機器は次の写真のように接続します。

![全体の接続イメージ](https://qiita-image-store.s3.amazonaws.com/0/28914/17eddae9-44f1-e26a-a7d6-46884c3bec38.jpeg)

コンポジットケーブルは黄色い端子(映像用)だけ使います。片側を Raspberry Pi の黄色い端子に、もう一方をテレビのビデオ入力につなぎます。

![接続イメージ アングル1](https://qiita-image-store.s3.amazonaws.com/0/28914/902536d9-4321-66db-eea8-0d36c45e12e5.jpeg)

写真では、Raspberry Pi がクリアケースに入っていますが、普通はハダカです。気にしないでください。

![接続イメージ アングル2](https://qiita-image-store.s3.amazonaws.com/0/28914/5ebc9eda-f1d0-e362-ebd6-2eac4985249a.jpeg)

USBポートは2つついています。マウスとキーボードをつなぐということで2つ付いているんだと思いますが、今回はキーボードだけつなぎます。

Raspberry Pi は、電源が供給されると自動的に起動します。電源を供給する前に起動ディスクを挿入してください。


起動が成功すると、次の動画のような画面が表示されるはずです。

- http://youtu.be/ZhiDy5mukjs


はじめに虹色の正方形（？）が一瞬表示されます。コマンドがだーーーーーっと流れていくような起動中の画面が表示されたあと、Raspberry Pi Software Configuration Tool(raspi-config) の画面が表示されます。これは、Raspberry Pi の初期設定を行うメニューで、初回起動時にのみ表示されます。

![raspi-configの画面](https://qiita-image-store.s3.amazonaws.com/0/28914/080ada44-ad4a-c869-1f46-c5e9fd5ed9e6.jpeg)


よくわからないメニューがたくさんありますが、とりあえず<a href="http://www.amazon.co.jp/gp/product/4899773528/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4899773528&linkCode=as2&tag=pxt25503-22">本</a>を見ながらやってみた操作が下記です。

- 1 Expand Filesystem<br />
OSをセットアップした直後は、空き容量が数百MBくらいで固定されていて、容量の大きいSDカードを使っていても認識されていない状態。このメニューを実行すると、使える容量を増やすことができます。
- 4 Internationalisation Options > I3 Change Keyboard Layout<br />
キーボードの配列を選択します。WindowsPCでよく使う普通の日本語キーボードを使っている場合、次のように選択します。
    - Keyboard models で「Generic 105-key (Intl) PC」を選択
    - Keyboard layout に日本語配列の選択肢がないので、「other」 を選択
    - Country of origin for the keyboard で「Japanese」を選択
    - 再び Keyboard layout に戻ります。今度は日本語キーボードが選択肢にあるので、「Japanese - Japanese (OADG 109A)」を選択
    - Key to function as AltGr で「The default for the keyboard layout」を選択
    - Compose key で「No compose key」を選択
    - 最後に、Use Control + Alt + Backspace to terminate the X server? と問われるので、<code>\<Yes></code> としておきました。
- 4 Internationalisation Options > I2 Change Timezone<br />
タイムゾーンの設定を行います。Asia、Tokyo を順に選択。
- 8 Advanced Options > A4 SSH<br />
SSH接続の有効・無効を切り替えます。<code>Enable</code> を選択。

ここまでやって、<code>\<Finish></code> を選択して次に進みます。
<q>Would you like to reboot now?</q> に <code>\<Yes></code> と答えると、Raspberry Pi は再起動されます。

# Raspberry Pi セットアップ完了！

次に Raspberry Pi を起動して、

```
raspberrypi login: _
```

が表示されたら、Raspberry Pi のセットアップは完了です。

![ログイン画面](https://qiita-image-store.s3.amazonaws.com/0/28914/e9cb4715-7506-866f-2edd-91a406a7e752.jpeg)


Raspbian "wheezy" OS には、あらかじめ pi というユーザーが作られているので、<code>pi</code> と入力してEnterキーを押します。すると、パスワードを求められるので、パスワードを入力します。ユーザー pi のデフォルトのパスワードは、"raspberry" です。

ログインが成功すると、Linux の標準のコマンドが普通に使えます。<code>cd</code> とか <code>ls</code> とかで内部を徘徊してみると面白いでしょう。(そうでもないかｗ)

# Raspberry Pi をシャットダウンする

起動できたので、最後にシャットダウンをしてみます。
いきなり電源を抜くとデータが破損する可能性があるので、ちゃんとシャットダウンの処理をしてから電源を抜くようにします。

```Bash:command
$ sudo shutdown -h now
```

まず、このコマンドを入力します。しばらくまっていると、終了処理が画面に流れて、最後に画面が真っ暗になります。

電源供給を示す PWR という赤いランプの横にある ACT というランプが点滅している間は、SDカードにアクセスしています。シャットダウンコマンドを発行してもしばらくは ACT ランプが点滅しています。これが消えるまで待って、電源ケーブルを抜きます。

# まとめ

- SDカードに Raspbian "wheezy" OS をインストールし、起動ディスクを作りました。
- 起動ディスクを Raspberry Pi に挿し、起動しました。
- Raspberry Pi を初期設定しました。
- Raspberry Pi をシャットダウンしました。

ここまでで入門完了とします。

参考にした<a href="http://www.amazon.co.jp/gp/product/4899773528/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4899773528&linkCode=as2&tag=pxt25503-22">書籍</a>には、無線LANに接続する方法、ウェブカメラを接続する方法、センサーやモーターなどのデバイスを制御する方法も載っているので、引き続きこれらにもチャレンジしていきたいと思います。



※この記事はこちらにアーカイブしました。→ http://www.pxt.jp/ja/diary/article/287/