Laspberry pi とLinuxの調理

今回のRPiは電子機器とのインターフェースというよりもサーバーとして使おうとしているので、少しLinuxが使いやすくできるように調整しておく。
まずは新規ユーザー名を追加する。Piと同じグループアクセスを行えるように、まずはpiの所属するグループ名をチェック

groups pi

自分の環境では以下が出力された

pi : pi adm dialout cdrom sudo audio video plugdev games users netdev input

これを参考にしてuser1というユーザーを追加するには

sudo useradd -m -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input user1

次に以下のコマンドを入力し、入力を即されたらパスワードを入力(2回)

sudo passwd user1

sshを使ってコマンドラインのみでヘッドレスで動かしているわけだが、ターミナルモードからRaspbianのGUIにアクセスすることもできる。 このためにはTightvncというパッケージを使う。英語のHowtoはここに詳しいが、いかに簡単に手続きだけを述べておくと

sudo apt-get install tightvncserver //vnc server をインストール
tightvncserver //vncserverを起動 password設定を催促されるので8文字以下で入力
vncserver :0 -geometry 1440x900 -depth 24 //画面精度に合わせて適宜調整

これをいちいち入力するのは面倒なので、上記のサイトではConfig fileの書き方などが書いてある。
これでxウィンドウがセットされるので、Windows あるいはLinuxが動いているパソコンからVNC準拠のViewerでIPアドレス、パスワードを入力すればGUI画面がアクセスできる。
tightvnc-pi

インストールされているアプリケーションは左下のスタートメニュー(?)をクリックすればカテゴリーごとに選択できるようになっている。いつも使うアプリケーションについては項目を右クリックし、add to desktopを選べばデスクトップ上にアイコンを置くことができる。

手間をかけてGUIを実現させた理由はWifi-adapterの設定をコマンドラインでやった経験がないからで、(爆) GUI上だとwpa_guiというwifi network への接続設定ツールが使える。 まあほかにもScratchとかRaspberry PiのGUI体験を実感したいという理由も無きにしも非ず。

デスクトップ画面をパソコン上に出した状態で、 作動が確認されている、ということでRPiと一緒に購入したEdimixのEW-7811UNというWireless nano USB Adapterをusbポートに差し込み、internetカテゴリーからwpa_guiを起動する。アダプタはあっさりwlan0と認識されているので、あとはscanを実行し、自宅のRouter のwifi networkをみつけてパスワード等を入力し接続すればよい。 これはシステム上に記憶されるので一度の設定であとはリブートするごとに自動接続される。 これでEthernetケーブルをはずしてもネットワークに接続できるようになった。

電源プラグ、SDカードおよびusb wifi mini adapter で一丁前のコンピューター

物理的につながっているのは電源プラグのみ、SDカードおよびusb wifi mini adapter装備 で一丁前のheadlessコンピューター

現在使っているCISCOのWifi Router にはネットアダプターのMACアドレスに固定IPアドレスを割りつける機能がある。 router のBasicセットアップのページからDCHP Reserveというボタンをクリックすると 現在割り当てらているIPアドレスの一覧が出るので、それでraspberry piを選び、固定アドレスを指定するという作業になる。 raspberry piの電源を一度落としてから再度起動すると新しい固定アドレスが割り当てられた状態でネットワークに接続される。

ここまでできたら、あとはApache, PHP, MYsqlをインストールすればdynamic web server が完成するわけで、そういうチュートリアルもネットを探せばいくらでもあるわけだが、それでは面白くないので、apacheの代わりに近頃勢いを得つつあるnginxを導入してみることにする。 説明を読んでいるとReverse proxyにも使えるということなので、現在NASで構築してるsquidを使ったreverse proxy をついでに置き換えることができないかとも思っているわけである。 その顛末は次回。

Raspberry Pi を 頭を使わずに食べてみる(Eating Raspberry Pi Headless)

旅行から帰ってきたらRPi が届いていたので早速食べてみた。本来ならば、キーボードとモニターを接続して初期設定することになるのだが、最初から小規模のhtmlサーバーとして使おうと考えているのでモニターやキーボードは接続せず (いわゆるheadless)、EtherNetへの接続だけでの設定を試みた。 ネット上から拾ってくるオフィシャルOSであるRaspbian ”wheezy” (Debian LinuxのRPiポート)のイメージではsshが最初から組み込まれているのでこのイメージを展開したSDカードをスロットに挿入し、ネットワークケーブルを接続しておいてから電源を接続する。 RPiのLEDが華やかに点滅を始めるので、これが一段落したのちに、ラウターのDHCPテーブルを眺めてみるとRaspberrypiの名前でIPが設定されているのでこのIPに対してSSH接続を行う。自分の環境では192.168.1.122 に設定されていたので

 ssh pi@192.168.1.122

これをcygwin ターミナルから入力する。

最初の設定ではuser がpi, password がRaspberry と設定されている。
なお、母艦はWindows 8なのだが、巷で人気のあるPutty ではaptitude や、raspi-configなどAscii Codeでグラフィック表示を行うアプリでは表示が崩れるようなので、ここではcygwin からオプションでインストールしたSSHクライアントを使ってアクセスしている。

Putty terminal でrapsi-configを実行。

Putty terminal でrapsi-configを実行。

cygwin TerminalからのSSH アクセスで raspi-configを実行

cygwin TerminalからのSSH アクセスで raspi-configを実行


最初のログインでは「まずRaspi-configを起動して設定を行ってください」というような意味のメッセージが出る。 モニターとキーボードを使っていれば、自動的に起動するようだが、headlessではマニュアルで進めることになる。
sudo raspi-config

このraspi-config の設定画面、インターネットなどで見る設定画面とはメニュー構成が異なっている。バージョンが上がっているのだろう。 去年の今頃から発売開始になって以来、環境は日々進化しているようなのでネット上の情報は十分吟味する必要がありそうだ。ネットでみると大変そうな作業がツール側の対応が進んでいて実は簡単にできるようになっていました、というような事例が多々ありそうだ。

例えば、最初に使うOSのイメージは2GBなので、サイズの大きなSDカードを使っている場合、このRaspi-configの最初のオプションexpand rootfsを実行することにより、ファイルシステムのサイズをSDカードのサイズいっぱいまで拡大する作業、 は必須項目なのだが最初のころはこれも手作業でやっていたようなのだ。

次の項目、Change Password は、後々別のユーザーを追加するにしても、やっぱりやっておいた方がよい。
Boot to desktopは、モニターを使っていた場合、いちいちstartxとコマンドラインから立ち上げるのではなく、直接GUIを立ち上げてしまおう、というオプションだが、今回の使用目的とは関係ないのでスキップ。

Internationalized option ではkeyboard、locale,time zoneなどが変更できる。 Default ではUKのキーボード配列、使用場所英国になっているため、適宜変更。
Advanced option ではメモリースプリットやhostnameなどが変更できる。モデルBの512MBバージョンではGPUに64MBが振り分けられている。headless で使うということであまりグラフィック関係にメモリーは必要ない、と考えられるのでメモリースプリットにかんしては16MBに変更しておく、
OverClock は興味のある分野ではあるが、とりあえずはパス。 ちなみにつかうとRPi内部のフューズが切れて例えクロックを元に戻しても履歴がわかるようになって、保証対象外となるそうである。というのは古い情報で、Raspi-configで設定するオーバークロックはターボモードと称し、温度が85度以上になると自動的にステップダウンする仕組みになっているらしい。補償対象内の設定だそうだが、チップのばらつきにより、設定によってはブートしなくなる可能性あり。この場合、シフトキーを押しながらリブートしろ、とあるが、こちらはヘッドレスで動かしているので、復帰の仕様がない。
Enable Camera というのはそのうち出てくるPI カメラモジュールに関した設定。
Add to RasTrack はRPiのユーザーがそれぞれ自分のPiを登録し、それをマップで確認できるサービスで登録するのは任意だ。日本はまだ100個台の登録状況であるが、隠れユーザーはこの何倍もいるはず。 街のレベルまで登録するので、ご近所さんで食べてる人が何人いるか確認できてそれなりに楽しい。

Finish を選択するとリブートするか聞いてくるのでYESを選択。

ファイルシステムのサイズ変更にしばらくかかるので他の仕事をやりながら気楽に待ち、LEDの点滅が落ち着いたら、もう一度sshでログイン。 このタイミングでraspbianのアップデートも行っておく。

sudo apt-get update
sudo apt-get upgrade

(Update でデータベースのアップデートをおこない、upgradeで最新のモジュールに更新する。)

自分はDebian Base のUbuntuをデスクトップで使ったり、使っているNAS(Wester ditigal 製 Mybooklive)がDebian で動いているなどの経緯からDebian Linuxはある程度馴染みがあるのででほとんどストレスがなく設定できた。

ところでRPiには電源スイッチがない。電源を落とすにはプラグを抜くことになるのだが、その前にシステムをシャットダウンしておくのが利口なようだ。プラグを引っこ抜いてSDカード上のイメージが破損してしまった、というような報告がネット上に散見される。

sudo shutdown -h now

五個あるLEDのうち電源表示の赤いLEDだけの点灯になったら多分安全。 ここでプラグを抜くのだが、機械的ストレスをPRi本体に与えない、という観点からRPi側ではなく、電源プラグ側のコードを抜く。

電源だが、700mA以上必要、となっている。 携帯の充電器では 400mA定格が多いという記述もネット上で見ていたので、手持ちのスマホ携帯の定格を調べてみたがいずれも1Aとなっており、問題なさそうだ。

裸のままのRPiではケーブルをいくつも接続すると非常に不安定になる、のでケースは必須に思われる。ネット上では厚紙で作るケースの設計図なども落ちてはいるのだが 自分は見栄えに引かれてアクリルの透明なケースを買った。が、電源を入れっぱなしにしておくと、結構暖かくなる。 オーバークロックなどヘビーな使い方をするのであればヒートシンクを追加するか、最初からアルミのケースのほうがよいかもしれない。

次回は母艦からのGUIアクセスのためのTightVNCの導入、Wifi モジュールのインストールおよびIPアドレスの固定をおこなった後、nginx, php, mysqlの導入の顛末を述べる。

Raspberry Pi を注文してみた

去年の初めころからRaspberry Pi というクレジットカードサイズの電子モジュールのプロジェクトがMakerサイトなどで話題になっており、Arduinoと同じようなものかなあとぼんやり思いつつも、あまり趣味の幅を広めてもしょうがないので手つかずになっていた。

今年の初めに久々に手にした手作りPCの雑誌に80ドルでパソコンを作成、という記事があり、興味をもって読んでみれば、Raspberry Piを使ってLinux machine を作りましょうという記事であり、 これで初めてRaspberry Piのなんたるかを知ることとなった。(以下、Raspberry Piといちいち書くのが大変なのでRPiと略します)

さらにYoutubeでもこのRPiを32台クラスタ化してミニスーパーコンピューターをつくりました、ちなみに機械構造はレゴブロックです、という、なんともおいしそうな話がアップされていた。

で、ネットで調べてみると、ヘッダーでIOピンを直接接続できるということはさておいて、HMDI,SDカードソケット、USBソケットx2、EtherNetソケットX1と最初からコンピューターの周辺機器への接続が可能なようになっている。
それでもすでに自宅には3台のデスクトップパソコン、2台のノートブックとと2台のNASが稼働しているわけで、これ以上コンピューターを増やしてもしょうがないのでほおっておいたのだが…

昨日、他の方のBlogを見ていたら、RPiにWeb Serverを実装する云々、という記述を見つけた。 考えてみれば、 使われているハードの能力が初代のXBoxと同等または若干上、 実装されているRAMが512MB。 SDカードスロットから使うLinuxのImageが2GB程度ということなので、8GBくらいのSDカードを使えば WEBサーバーとして十分いけそうである。 電減が5V700ミリA以上の携帯用チャージャー(パワープラグがミニUSBなのだ)ということなので、520W電源のPCをサーバーとして常時つけっぱなしにしておくのに比べれば、電気代の節約になりそうだ。 ということで言い訳ができたので、さっそくAmazonを眺めてみれば現在主力で売られているmodel Bという機種は42ドルである。 従来見ていた雑誌などの記述では35ドルとあるが、最近ドルは弱いからねえ。

さっそく注文すると同時に、Raspberry PI User Guide というebookを購入した。 ebookのほうは即Nexus 7 Tabletにdownload できたので、現物が到着するのを待ちながら、こちらをぼちぼち読みだしている。

この書籍は2012年の6月頃に出版されており、実際のLinuxの導入などについてはすでに情報が古いと思われるが、この本を書いているEben Uptonという人がRaspberry Pi 産みの親であり、RPiを開発し、販売に至る経緯が詳しく載っていて非常に面白い。

この本を読んでわかったのだが、筆者の思い描くRPiの第一の使用用途は子供たちのコンピューター教育だ。 プログラミングができる若い世代が育っていないことへの危惧、それは現状を眺めてみればゲームを開発したいという希望を述べる高校生がいても実際に聞いてみれば学校”IT class”で習っているのは特定のOSのGUIをエンドユーザーとしてどう使うか、エクセルやワードの使い方や簡単なWEBページの書き方ぐらいで、肝心のプログラミングについては全く知らない。 自宅にある”コンピューター”と言えばxBox とかWiiで実際にプログラミングを勉強できる環境はなく、 例えパソコンが自宅にあったとしても、親が実用として使っていれば、パソコンを壊してしまう可能性が無きにしも非ずのプログラミング学習に避けるような状況でもない。

いわゆるデジタルデバイスの類は用途が固まりすぎていて、子供たちの創造意欲を掻き立てるようなツールにはなりえない。

筆者はプログラミングを教えることによって個人の能力がコンピューターばかりではなく、ほかの分野でも問題解決の思考に役立つという信念を持っていて 大学で教えた経験、そして実際の企業の開発部門の長としての経験から このような(英国の)現状を嘆いていた、ということが文面からひしひしと伝わってくる。

そんな状況で、実質25ドルくらいで10代の子供でも作れるようなプログラミング可能なコンピューターボードを作ってしまおう、という思いからこのプロジェクトは育っていった。 本人に言わせれば”25ドル”と言った覚えはなく、”教科書1冊くらいの値段で購入できる”ということをインタビューで述べたのが、レポーターが親切にドルに置き換えてくれたようで、本人は教科書はもっと高価だと思っていた節がある。
この「子供のために、裕福な家族でなくても出費がかさまないで、個人のパソコンが作れる」いう設計思想が、実機の仕様を決めている。
1)HDMIの出力のほかに古いTVにも接続できるようにRCA出力を備えている。
2)マイクロやミニのSDでは小さすぎて子供たちが扱えないので、普通サイズのSDカード。←古いカメラ類からリサイクルすればよい。
3)電源は巷にあふれているはずの携帯電話の充電器が使えるようにする。
などなど。
OSはフリーのLinux, 最初の試作機の時点ではハードの能力が低かったため、プログラミング言語はPythonに限定。(Raspberry PiのPIはPythonからきている)

ところで 筆者は最初RPi を ABCMicroと呼んでいたらしい。 これと現在発売されている機種がmodel A (Ethernetなし、USBx1)とModel B(Ethernetあり、USBx2) と命名されていることにピンとくる人は英国のパソコン事情に相当通じた人だ。 80年代にBBCが英国の子供たちのコンピューター教育を推進するためにBBCマイクロという構想を立ち上げ、これにコンペで参加したAcorn社のパソコンがその後大量に英国の学校で採用されたという経緯がある。 model A, Model B はその時のBBCMicroのモデル名なのだ。 さすがに英国人である。 茶目っ気がある。

筆者たちが最初にRPiを持って行ったのもBBCだったという。 ところが30年前とは環境が変わっていた。 法律が変わり、テキストブックの販売、教育番組のプロモーションと一緒にハードウエアをうるような以前のような行為は独占禁止の制限からBBCとしてはできない、ということがわかる。

そのかわり、テックジャーナリストが自分のブログに紹介ビデオを掲載してくれることになって、このプロジェクトの存在が知られるようになる(2011年5月)。 最初は数千個のバッチ生産で終わらせることになっていた計画が2011年のクリスマス時点でそれではすまないことが認識されはじめ、購入の意思表示をした人たちが2月29日の発売前にすでに10万人に達した。出荷までに10万台の部品を収集できるめどはなんとか立てたものの、オンラインオーダーの処理、梱包出荷の手間を考えるとプロジェクトの有志だけではいかんともしがたいことを悟り、英国のマイクロ専門業者2社が販売を代行するという合意をとりつけ、2月29日の発売にこぎつけた。
この2社(RS Components, Element14)のWEBサイトは両社とも発売当日注文が殺到したためにクラッシュしてしまい、接続できない状況が続いたという。 一人につき1台という制限がついていたのにもかかわらず、Element14のサイトではピーク時1秒間に7台のRPiが注文された。 この日のグーグルでは”Raspberry Pi”の検索数が”Lady Gaga”を上回った。

ではRPiで実際に何ができるか? 前述したようにIOピンが出ている(GPIO=>,SPI,I2C)ので、直接ハードウエアをたたけるようになっており、Pythonを使ってほかの機器の制御が可能。
メディアセンターとして使用。もともとメディアセンター用に設計されたワンチッププロセッサなのでビデオデコーディングなどに最適。
3Dグラフィックとマルチメディア機能があるので自作ゲームのプラットフォームに使える。
などなど。

実は30年以上前、自分が最初に手にしたコンピューターは英国Sinclair社のZX-80というものである。パーソナルコンピューターとして初めて200ドルを割ったものだった。当時日本から米国に駐在となった自分は日本でNECのTK-80がほしいなあと思いながら手が出せずにいた。米国ではほかにもタンディとかAtariとか売り出しはじめていたのだが、通信販売でSinclairを買った。箱を開けてみたら、何とも小さいおもちゃのような代物がでてきたのを覚えている。しかしながら、Z80のプログラミング、Basicの基本はこれで覚えた。多くのユーザーと同じように(RFIがあまりにもひどかったので)DIYでアルミの箱に基盤を移し、メモリを亀の子はんだ付けで2倍に増やし、メンブレーンのキーボードもフルキーボードに移植した記憶がある。 その後、フロッピー付きのTRS-80 に移行したが、Sinclairにはかなりの思い入れがある。 上記のユーザーガイドでもSinclairのZX-81 やspectrumに触れるくだりがあり、非常に懐かしかった。

今回購入したRPiについてはサーバーにしてしまうつもりだが、なんといっても30~40ドルの品物である。 もう一台買って少し遊んでみようか、と最初の一台が到着する前からいろいろ妄想を膨らませている。

Nexus7の使い方

最初はPDA的な使い方をするかなあ、と思いつつ購入したNexus7だったが、実際に今便利さを感じているのは 個人的な映画鑑賞とKindleの購読。 特に映画はGoogle Playから簡単に1日レンタルできてしまうのが、かなりやばい。

KindelのほうはKindle touchという専用端末があるのだが、両方使って別々の書籍を読んでいたりする。飛行機の長旅などでは電池の持ちが良いKindle Touchのほうが安心だが、Nexusのカラー表示というのも分野によっては捨てがたい。

Nexus 7 のバッテリーの持ち

先月くらいから急にNexus7のバッテリーの持ちが悪くなった。一日たつともう起動しなくなるくらいにバッテリーが減る。 これは変だとネットをあさってみると、OSの4.2.1アップグレード以後に電池の持ちが悪くなったという書き込みを多数発見。

で、JuiceDefender というスマホのほうで使っていたパワーセーブのアプリを入れたりしてしのいでいたが、先日 4.2.2のアップデートがプッシュされ、これを反映したら元に戻ったようだ。

Nexus 7 が起動しなくてびっくりした、という話

朝、いつものように、タブレットを充電プラグから外して画面をみようとしたら、画面が出てこない。 Power buttonを何度も押してみたがだめ。Nexus 7 が起動しない。 画面が出ない。

電池がだめになったか、とかいろいろ考えたが、考えるよりはまずグーグル。 dead nexus 7というキーワードで検索したら、パワーリセットの方法を書いた書き込みが見つかった。

1.パワーボタンとボリュームダウンボタンを同時に10秒間押し続ける。

2.パワーボタンから指を離す。

これでBios のような画面が出る。

あとはボリュームボタンで、Startを選びパワーボタンを押して回復した。

こいつもやっぱりコンピューターだった、という認識をあらたにしたのでした。

WRT 54G の退場

過去10年ほど、家庭内のネットワークハブにLinksysの WRT54Gを使ってきた。 Bestbuyのカタログを見ると、いまだに後期モデルの54GLを販売している。 最近の大勢として、802.11Nが安価で販売されているのにもかかわらず、802.11Gで頑張っている、かなりのロングセラーである。

我が家でも、何の不自由も感じないで使ってきたわけだが、 最近とうとうNラウターに買い替えることになった。 なぜか、どうも本体が故障してしまったようなのだ。

故障したといってもまったくインターネットがつかえなくなったわけではなく、設定したはずのポートフォワードが効かなくなった、という不具合現象。
自宅でWebserver をホストしている関係上、Incomingのポート80をLinux baseのNASにフォワードしている。このNAS自体はSquidを稼働していて、ここからリバースプロキシで複数のWEBサーバーにTrafficを振り分けていた。このNASのIPアドレスが192.168.1.99なのだが、先週突然Websiteにつながらなくなった。いろいろ調べてみると、どうも192.168.1.98にフォワードされている。 ルーターのポートフォワードをセーブしなおすと、一時的に復活するが2時間もするとまた駄目になる。

さんざん他のところをチェック(Web server のセッティング、Squidのセッティング、DDNS Clientの確認、Local DNSの設定など)しなおした後でたどりついたのが、「結局これって、ラウターのメモリーか内部ICの出力が不安定になっていないか」 という結論。

LinksysのNラウターを近くのOfficeMaxで購入。 ラウターの設定画面が10年前の製品とほとんど変わっていない事に感銘(?)をうけながら、交換し、初期設定をすませて運用中。 過去3日間問題が発生しないところをみると、やはりルーターの故障だったようだ。

今回購入したのはCiscoのEA2700。 D-linkやNetgear の同等の製品に比べると割高感があるが、Cisco/LinksysのネームバリューとWRT54Gが予想以上に長く使えたことを考慮して購入。 こいつも10年持ってくれるとよいのだが。

End of life for my WRT54G

Last week, I had a strange phenomena. my home web server was not accessible.

I looked at all kinds of setting I had configured with my home network for the last few years. Local DNS, squid/reverse proxy setup, IIS web server set up (I run my website on Windows 7 PC) and ddns setup. Although nothing was supposed to have changed, I looked at them again and made sure everything is what it supposed to be.

I finally turned my eyes on my trusty router. Linksys WRT54G was servicing me well, for almost 10 years (mine is WRT54G V2.2.)

I looked at port forward option. the port 80 is forwarded to 192.168.1.99. This is a linux based NAS that also runs squid in reverse proxy mode, but for some reason, the traffic appears to be reaching 192.168.1.98, another linux based NAS.
I re-saved the setting and voila! for a while, the web site was accessible. Then after one hour or so, connection was again lost.

I did a factory reset and then updated the firmware. These did not improve the situation. I concluded that the router can no longer retain the port forward information. Maybe one bit of memory chip got bad. Hard to tell. I bit a bullet and bought an N-band router. although a little pricey compared to D-link and/or Netgear, I decided to stick with Cisco/Linksys brand.

After initial setup, everything was back to normal. So here they are, it was indeed my router.

Hopefully my new router can serve me another 10 years. That’s why I paid extra for gigabit ports with this router. Looking at this router, the most striking is a small size of a power brick that comes with it, compared to the power brick from 10 years ago. This is where I see the advancement of technology.

Comcast blocked my port 25

About a week ago, my PC’s mail client (Thunderbird) started to complain that it can not login to mail.comcast.net and i could not send any email.

It continued to do so for about a couple of days. my wife’s PC was in the same condition.

When I logged into Comcast web mail, an e-mail from Comcast was waiting. It basically told me that due to suspicious activity, they blocked my port 25 to protect me being from a victim of security attack.

It also tells me how to setup a client to listen to another port.  So I went ahead and setup my client to use another port.  That was an end of the story for Comcast mails. (outgoing port 25)

However, I also have hMail server running for my own domain in my home server. the mail server receives emails via port 25 (incoming) this was also blocked, so I was not receiving any mails.

The my domain is served by TZO DDNS service.  they also offer the service called Store and forward.  The service can be a proxy receiver for mails sent to my domain, then it will forward them to my PC via port of your choice.  SO I had to buy this service and configured the service to use another port (in my case 8025) to forward emails to my domain.   In the htserver admin panel, I added smtp port 8025 so that the server can listen to the port.

 

Now the home mail server started to receive mails again.

I hope Comcast eventually removes this block after a while so that I can revert back to normal setting and unsubscribe from this Store and Forward service.