Raspberry Piを買った

組み込み弱者のくせにPC用のOSが動くなんて反則ぽいと思って手を付けてなかったんだけど、ある日酔っ払って帰ってきたら日経Linuxの Raspberry Pi 同梱ムックが再版てのを見つけてしまい、買ってしまった。そう、本当は欲しくてやせ我慢していたのだ。


外装

箱はオモチャっぽくていかにも教育用といった風情でかわいらしい。対して右隣はイタリアンなオシャンティーを前面に出したArduino

感想

Arduino はアートな方面や日曜組み込みエンジニアへの敷居を低くする用途なので、組み込み的なプログラミングの障壁を下げる工夫がたくさんある。

対して Raspberry Pi はコンピュータの教育用として産まれたそうで、そういう工夫はあまりなさげ。なんかコンピュータというかほとんどパソコンな気がするけど。

これ、プログラマ的には敷居が低いけど、ちょっとした組み込みの部品に使うような目的の人には逆にハードルが高いんじゃないかなと感じた。聞いてみないと分かんないけど。「OSが動くのでいつもの感じのプログラミングなのに組み込みっぽいことが出来て敷居が低く見える」ってのはプログラマだから感じるんだろうなぁ。OSとかシステムコールの仕組みを学ぶオーバーヘッドがあって、電子的な制御でおもしろいインタラクションなモノを作ろうかという目的の人にはたすきに長しという感じだと思う。逆に、小さなサーバ的用途というか常駐するプロセスを物理的に小さくして、その辺に置いておいて何かするというプログラマ的な発想からはじめるとすると丁度良いハードだと思った。

Linux のインストール

HDD代わりにSDカードが Raspberry Pi のストレージ。そこにLinuxをインストールする。

日経Linuxには、 NOOBS とかいうツールをSDカードに入れて、USBのマウスとキーボードとHDMI対応のディスプレイに繋げばインストールの操作が出来ると書いてある。いらないマウスとか引っ張り出してテレビの前に行く(HDMI対応のディスプレイってテレビしか無いのだ)のなんか面倒くさいな、と思ってたら、OSイメージを直接SDカードに書き込めばそのまま動くのがあるとさらっと書いてあった。

ということで、その直接書き込むやり方でインストール。 Raspbian という Debian ベースのディストリビューションが定番らしいのでそれを入れてみる。ここからDownloadページに飛んで、「Raspbian “wheezy”」の圧縮されたイメージファイルをダウンロード。大きいので一応チェックサムを確認して展開。MacBookに指したSDカードにddで書き込んでおしまい。ダウロードが一番時間かかった。

SDカードのデバイスファイルは、指した状態でdfで確認。なんかうまく書き込みできないのでggったところによると、/dev/disk1s1の場合は、RAWなデバイスとして/dev/rdisk1と読み替えるそうな。しらんかった・・・。何気に危険。あと、ddで書き込む前のアンマウントもdiskutilでやること。あ、これは Mountain Lion の場合のはなし。

$ shasum 2013-07-26-wheezy-raspbian.zip
f072b87a8a832004973db4f5e1edb863ed27507b  2013-07-26-wheezy-raspbian.zip
$ unzip 2013-07-26-wheezy-raspbian.zip
Archive:  2013-07-26-wheezy-raspbian.zip
  inflating: 2013-07-26-wheezy-raspbian.img
$ df
Filesystem    512-blocks      Used Available Capacity  iused   ifree %iused  Mounted on
/dev/disk0s2   488555536 447158096  40885440    92% 55958760 5110680   92%   /
devfs                371       371         0   100%      642       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/disk1s1      114576     37840     76736    34%      512       0  100%   /Volumes/Untitled
$ diskutil umount /Volumes/Untitled
$ sudo dd bs=1m if=2013-07-26-wheezy-raspbian.img of=/dev/rdisk1

書き込みが終わると勝手にbootという名前で再マウントされる。今度は普通にfinderでアンマウント。

SDカードを挿して、電源のためのUSBを差し込むと起動する。ディスプレイもキーボードもマウスも要らない超お手軽インストール。

けど、そのままじゃOS操作できない。ただ、賢いことにsshdも動いてるしネットワークはDHCPクライアントで動いてるらしい。IPさえ分かればsshでログインして操作出来るわけだ。ということで、ルータのログに残ってたDHCPサーバから払い出されたIPを確認して、接続できた。原始的〜。

初期設定だと ID/Password は pi / raspberry .

$ ssh pi@192.168.2.125
pi@192.168.2.125's password:
Linux raspberrypi 3.6.11+ #474 PREEMPT Thu Jun 13 17:14:42 BST 2013 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Aug 13 16:25:11 2013
pi@raspberrypi ~ $

Lチカ

毎度おなじみLチカです。LEDチカチカです。Hello Worldですね。
GPIO22にLEDを繋いだ状態で、出力モードにして0か1をデバイスファイルっぽいのに書き込むと、電圧がハイになったりローになったりする。やる前はピンの操作とかどうやるんだと思ってたけど、そういうことかとここで感心。なるほど簡単だけど、わりと基本っぽい感じ。ちゃんとコードで書くときはmmapで特定のアドレスへアクセスすればいいらしい。

$ sudo -s
# echo 22 > /sys/class/gpio/export 
# echo out > /sys/class/gpio/gpio22/direction
# while [ 1 ]; do echo 1 > /sys/class/gpio/gpio22/value; sleep 1; echo 0 > /sys/class/gpio/gpio22/value; sleep 1; done

動画はこんな感じ↓。
https://vine.co/v/hMh0exLOMJu
(はてダでvineの動画埋め込みの方法がわからない(T-T))

とはいえ、せっかくなのでデスクトップも拝んでみたい

HDMI対応ディスプレイって、我が家じゃテレビになるんですね。妙な光景になったw。