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