公開日: 2014年01月02日(Thu)
LinuxOSがまるっと動くという小型の基板 Raspberry Pi に興味をひかれ、いじくってみることにしました。これまでに Arduino をさわったことはありましたが、Arduino は Processing ベースの独自言語でプログラムを書きますので、ツッコんだことをやろうとするとややハードルが高いかも知れません。Linux が動くということは、既にあるさまざまなプログラムやリソースが使える、ということだと思うので、期待高し、です。
初心者なので、書籍『Raspberry Piで遊ぼう!』を参考に進めていきたいと思います。
とりあえず今回は、起動して終了するところまでをやってみます。そこまでの操作に必要な最低限の機材は次の通りです。
ということで、下記は機材集合写真。これに加えて、ディスプレイとしてお部屋のテレビを使いました。
その他、デスクトップGUI環境を動かすならマウスがあるとよいとか、LANにつなぐならLANケーブルがあるとよいとか、スピーカーをつなぐと音も聞こえるとかありますが、なくても起動はできるので今回は用意しませんでした。
Raspbian は、Raspberry Pi 向けに最適化した Debianベース のOS、とのことです。他にも Raspberry Pi 向けのOSがたくさんあるようですが、今回はRaspbianを使ってみることにします。
書籍によると、4GB以上のSDカードが必要とのこと。ウェブを検索すると 2GB のカードでもできている人もたくさんいますが、4GBのカードを用意しました。ちなみに、選んだSDカードと Raspberry Pi との相性があるそうです。RPi SD cards のページに、SDカード製品の相性表が掲載されているので、ここで「ok」表示のあるカードを選んでおくとベターでしょう。今回は、「ELECOM SDHC 4GB Class10」というSDカードを使用します。
OSのイメージファイルは ダウンロードページ から入手できます。
書籍を読むと、Windows用には 「Win32 Disk Imager」や「DDforWindows」、Mac用には Raspberry Piの起動ディスクを作るためのツール「RPi-sd card builder」をお勧めしていますが、ここでは dd
コマンドを使うことにします。(ちなみに Mac OS X Mountain Lion でやっています)
OSだけに、784MBとなかなか大きいファイルです。ダウンロードに時間もかかりますが、気長に待ちます。ダウンロードされてきたZIPを解凍すると、 2013-12-20-wheezy-raspbian.img というディスクイメージファイルが得られます。このイメージをSDカードに復元して、起動ディスクを作成します。
Mac では、SDカードは挿入すると、/Volumes/{$カード名}
という場所に認識されます。カード名は、SDカードそれぞれに固有のボリュームラベルがつけられるので、決まった名前になりません。SDカードをMacに挿入すると名前がわかるので、必ず調べてからコマンドを実行してください。
ここでは、わかりやすいように "RASPBIAN" というボリュームラベルをつけました。
注意:出力先のボリューム名は絶対に間違わないように注意してください。このコマンドを間違ったデバイス(例えば "Macintosh HD" とか!)に実行すると、ディスクの中身がぜんぶ一瞬で消去されてしまいます!
まず、df
コマンドで、RASPBIAN がどのデバイスで認識されているか調べます。
$ 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
/dev/disk2s1
が RASPBIAN であるいることがわかります。このディスクにイメージを展開するのですが、その前に /dev/disk2s1
をアンマウント(umount
コマンド)します。
$ sudo umount /Volumes/RASPBIAN
成功したら、dd
コマンドでイメージをSDカードに展開します。
dd
コマンドのifオプションで入力ファイル(この場合 2013-12-20-wheezy-raspbian.img)を、ofオプションで出力先(この場合 SDカード)を指定します。 unmount は/dev/disk2s1 でいいんだけど、ddで書き込むときはdisk2s1の先頭にrをつけて、s1を削る
(出典) らしいので、コマンドは次のようになります。
$ 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カードを抜き取る前に、/dev/disk2s1
をアンマウントします。
$ diskutil unmount /dev/disk2s1
Volume boot on disk2s1 unmounted
起動ディスクの書き込みができたら、SDカードを抜いて、いよいよ Raspberry Pi に挿入して起動してみます。
機器は次の写真のように接続します。
コンポジットケーブルは黄色い端子(映像用)だけ使います。片側を Raspberry Pi の黄色い端子に、もう一方をテレビのビデオ入力につなぎます。
写真では、Raspberry Pi がクリアケースに入っていますが、普通はハダカです。気にしないでください。
USBポートは2つついています。マウスとキーボードをつなぐということで2つ付いているんだと思いますが、今回はキーボードだけつなぎます。
Raspberry Pi は、電源が供給されると自動的に起動します。電源を供給する前に起動ディスクを挿入してください。
起動が成功すると、次の動画のような画面が表示されるはずです。
はじめに虹色の正方形(?)が一瞬表示されます。コマンドがだーーーーーっと流れていくような起動中の画面が表示されたあと、Raspberry Pi Software Configuration Tool(raspi-config) の画面が表示されます。これは、Raspberry Pi の初期設定を行うメニューで、初回起動時にのみ表示されます。(2014/5/6追記:初回設定後にもう一度この設定を変更したい場合は、コマンドで $ sudo raspi-config
を実行するとできます)
よくわからないメニューがたくさんありますが、とりあえず本を見ながらやってみた操作が下記です。
<Yes>
としておきました。Enable
を選択。ここまでやって、<Finish>
を選択して次に進みます。
Would you like to reboot now?
に <Yes>
と答えると、Raspberry Pi は再起動されます。
次に Raspberry Pi を起動して、
raspberrypi login: _
が表示されたら、Raspberry Pi のセットアップは完了です。
Raspbian "wheezy" OS には、あらかじめ pi というユーザーが作られているので、pi
と入力してEnterキーを押します。すると、パスワードを求められるので、パスワードを入力します。ユーザー pi のデフォルトのパスワードは、"raspberry" です。
ログインが成功すると、Linux の標準のコマンドが普通に使えます。cd
とか ls
とかで内部を徘徊してみると面白いでしょう。(そうでもないかw)
起動できたので、最後にシャットダウンをしてみます。 いきなり電源を抜くとデータが破損する可能性があるので、ちゃんとシャットダウンの処理をしてから電源を抜くようにします。
$ sudo shutdown -h now
まず、このコマンドを入力します。しばらくまっていると、終了処理が画面に流れて、最後に画面が真っ暗になります。
電源供給を示す PWR という赤いランプの横にある ACT というランプが点滅している間は、SDカードにアクセスしています。シャットダウンコマンドを発行してもしばらくは ACT ランプが点滅しています。これが消えるまで待って、電源ケーブルを抜きます。
ここまでで入門完了とします。
参考にした書籍には、無線LANに接続する方法、ウェブカメラを接続する方法、センサーやモーターなどのデバイスを制御する方法も載っているので、引き続きこれらにもチャレンジしていきたいと思います。
公開日: 2014年01月02日(Thu)