NetBeans でクロスプラットフォーム開発環境を作る

BBBやRasPiで使うC/C++のプログラムをWindows上のNetBeans IDE で開発してしまおう、という話。 NetBeansはもともとJavaの開発環境だが、plugin で c/c++ もサポートしている。自分のようにWeekend hoby でプログラミングをやっているものにとってはAutocomplete やSyntax check、変数の使用状況のチェックなどを自動的にやって間違いを指摘してくれるeditor というのは重宝する。 こちらに、Eclipseを使ったアプリケーションの開発及びクロスコンパイルの方法を説明したビデオがあったので、NetBeansを使って同じようなことができないか調べてみた。 リソースの乏しいRasPi上ではなく、普通のデスクトップコンピューターでIDEを使ったアプリケーション開発を行い、コードの生成だけはRasPi上で行う。という環境を作りたかったわけだが、NetBeans.orgにちゃんとやり方の説明が載っていた。 設定は以外と簡単にできた。  Netbeans からLinux BoxにSSHで接続し、さらにLinuxBox からはSambaを使ってLinuxのfile system をWindows側にネットワークドライブとしてシェア、 netbeans のプロジェクトをこのシェアされたフォルダーに書き込んでいき、デバッグはLinuxBox側から行う。 設定さえきちんとできれば、すべてWindows上のnetbeans IDEから処理できる。 この場合、gcc, make, gdbなどのツールはlinuxbox 上に存在するものがsshを使って操作される。よって、こられのツールがLinux側にインストールされている必要があるが、きちんとインストールされていれば、設定の途中でnetbeansがちゃんと検出してくれる。 Linux Box 側からは以下の下準備が必要 1.Sambaのインストール及びsmb.configの設定。(sudo apt-get install samba samba-common-bin) 2.SSH (RasPiもBBBも初期設定でインストール済み) 3.g++, gcc, make, gdb のインストール(sudo apt-get install g++ gcc make gdb) 詳細はこのヘルプページの解説に従えばよい。 Sambaを使ってFolder を Shareする方法のほかにファイルの作成管理はWindows側で行って、コンパイル時にLinux側にすべてコピーするscpを使ったautomatic copy という方法も述べてある(小さなプロジェクトではこちらのほうが早いとある)のだが、自分の環境ではうまくできなかった。

Ruby と Python

どちらもInterpreter Languageだが、ひとつを選べと言われたらどちらを覚えたほうがよいのだろう。  日本ではRubyがかなり人気があるようだが、WorldwideのUser BaseではPythonのほうが多い。 多いと言ってもPHPとかに比べるとかなり少ない。 Ruby # Old “coke” program from 80’s Basic programming book in Ruby answer = Random.rand(1..100) count,guess = 0,0 puts ‘I am thinking about number between 1 and 100. Can you guess?’ while (answer != guess) guess = gets.to_i count += 1 if guess > answer puts “#{guess} is too high” elsif guess < answer puts "#{guess} is too low" else puts "you got it right in #{count} try!" end end Python """Old "coke" program from 80's Basic programming book, in Python""" import random answer = random.randrange(1,100) print ("I am thinking a number between 1 and 100. Hope you can guess") guess, count = 0,0 while (answer != …

Raspberry Pi に頭をつけてみる。

RasPiにキーボードとモニターを接続しようと思ったとき、キーボードはUSB接続のキーボードで20ドルくらいからあるし、昔のキーボードがどこかに転がっていればそれを転用するので大したことはないが、困るのはモニターである。 RCA入力端子のある中古のTVというのも選択肢としてはあるわけだが、せっかくならHDMIで高解像度を楽しみたいわけである。 AmazonやNewEgg,Tigers Directなどで探してみても100ドルくらいはする。 するとキーボードと合わせると120ドルから150ドルくらいの出費になってしまう。 ところが世の中よくしたもので、RasPiにぴったりのガジェットがある。 Motorola が出しているLapdockというスマートフォーン用のドッキングステーションなのだが、これが液晶モニター、キーボード、タッチパッドとUSBハブ付きで充電バッテリ内蔵なのだが、本来は400ドルくらいするはずのものが、あまりにも売れなかったらしく、安売りになっている。 自分は”Lapdock for AT&T Atrix 4G”というモデルを80ドルでアマゾンから入手。ネットの情報では50ドルくらいで手に入る、ということだったが、みな同じことを考えて購入するらしく、市場の原理が働いたようで、残念ながら50ドルというのは見つけることができなかった。 RasPiとの接続だが、コネクタがやや特殊である。 クレードルにはHDMIのミニコネクタとUSBのマイクロコネクタがついていて、これに接続すればよいのだが、それぞれオスのコネクタなので、ケーブル側にメスのソケットが必要になる。よって、HDMI D-Female からHDMI Maleというケーブルまたはケーブルとアダプタの変換をしないとRasPiにはつながらない。 またUSBのほうだが、これはクライエント側(下流)のコネクタではあるのだが、同時にスマートフォーンをチャージする機能を持っているので、+5Vが供給されている。 本来ならば、パワーライン(4本の心線のうち赤い線)を切断して、データラインだけ、USBホストコネクタ(RasPiの大きいほうのUSBソケット)と接続し、 ラップドックから電源供給を行う場合パワーラインのほうはここからマイクロUSBソケットに赤(5V)と黒(グランド)の心線をスプライスして供給する、あるいはUSBハブからのホストコネクションを使うべきなのだが、実はRasPiに関していえば、全部のラインをホスト側に差し込んでもOK。回路図を見ると、RasPi内部でフューズをかましているだけなので、5Vが保障されればどちらから供給されても問題ない設計になっている。 (きちんとパワーマネジメントICが入っているBeagleBoneでは恐ろしくてできない) ラップドック自体はHDMIの接続と画面を開けた二つの信号を見て電源をオンする構造になっているようだ。 自分の環境ではHDMIケーブルのソケットの勘合が緩いようで、ショックなどで接触が悪くなると電源が落ちてしまう。 写真では電源を別に取ってあるのはそういうわけである。 参考にしたサイトは以下。 英語 http://rpidock.blogspot.com/ http://www.instructables.com/id/The-Raspberry-Pi-Lapdock-Connection/ http://www.raspberrypi.org/phpBB3/viewtopic.php?t=31416&p=272789 上記3つのサイトは写真が豊富 コネクタ・ケーブルなどの小売サイトへのリンクなどもある。 http://www.element14.com/community/groups/raspberry-pi/blog/2012/09/27/raspberry-pi-lapdock-hdmi-cable-work-around このサイトはHDMIがRasPiをセンスしないと電源がONにならない、というところから議論をはじめていて、非常に参考になった。またHDMIが接続しっぱなしだと、センス電流が常時流れる状態になる、ということで、これをカットするためのスイッチを組み付ける方法の紹介がある。

American Piのほうが好きかもしれない。

というわけで、BeagleBone Black(以下BBB)である。 値段が$45ドル。Raspberry Pi (以下RasPi)の実勢価格が$42なので比較してしまうわけだが、あちらが英国製なのに対して、こちらはTIがサポートするコミュニティハードウエア・ソフトウエア。米国製なので、別名 American Pi  ハード的にはアームプロセッサも一つ格が上のグレード、そしてクロックも1Mhzと優位である。回路図を眺めるとちゃんとパワーマネージメントのICが実装されていて、Raspberry Piとは大違い。USBクライエントからの5Vととバレルプラグからの5Vの供給も別チャンネルでしっかり管理されている。(ICの仕様書では7V AC入力となっているんだけど、交流でも大丈夫ということか?)基盤上にはリチュームイオンセル用のパッドまで用意されている。 そのかわり、USBホスト側から5Vぶっこんで電源元にする、というRasPi では許されるいい加減なことがこちらではできない。RasPi に触発されてこの値段になったのは明らかで、前のGeneration (Beaglebone、以後BB)は90ドルくらいした。自由競争というのはいいことだ。  BBにはついていなかったHDMIソケットもBBBにはついていて、かつ2ギガバイトの内臓eMMCにはLinux が実装されているため、付属してくるUSBケーブルをPCに接続(してminiUSBソケットにPC側から電源を供給)するだけでとりあえずは始動する。 イーサネットを使わなければ、専用のUSBドライバーを組み込まないとWindowsとはお話しをしないが、Windows 8 ではコントロールセンターから第3者のドライバーを組み込むことを許可しないとWindows 側がインストールを拒否するので注意。 親機がLinuxの場合は専用ドライバは必要ない。何もしないでもUSB経由のIP接続が可能である。 eMMCに最初から組み込んであるLinuxはAngstromという組み込み系のもので、その起源を紐解けば、Free Zaurus などというものまで出てきて日本人としての因縁をかんじたりする。 自分の環境ではすぐにDebian Wheezy に書き換えてしまったが、これは単にRasPiのRaspbian がDebian そのもので、新しいディストロを覚える手間を省きたかったということが大きい。 で、これにNginx +mysql + php5を実装してWeb Serverを試してみた。 手順はRasPi のときとまったく同じなので、詳しく述べないが、ModX Revolutionという、バックエンドがかなり重いCMSをインストールしてみたところ、問題なく使える。 RasPi では、WEB作成画面の反応が遅くなって実用にならなかった。 RasPi でも少し軽めのModx Evolutionのほうは軽快に使えるので、それはそれで良いのだけれど、あらためて、パワーの違いを感じたわけで、 なんとなく、RasPiよりはBBBのほうになびくわけである。 ちなみに内蔵のeMMCメモリーへのアクセス速度は14MB/S と、RasPiでクラス10のSDカードを差した場合とほとんど変わらず、単純にプロセッサの能力の差がでているようだ。あとはramの違いかRAMの速度も400Mhzと同様。 その他に気が付くところとしては、 RTC が実装されている。 外に出ているIO ピンが 多い(実はそのうちの半分くらいはHDMIとeMMCの入出力ピンとして使われているので、全部使うにはこれらのデバイスを無効化する必要がある。が、それでもRasPiよりも多い。)。 このIOピンはメールコネクタヘッダになっていて、リード部品などそのまま差し込めるので、RasPiのヘッダーピンより使いやすそう。 パワースイッチ、リセットスイッチ、 そして、ブートをSDカードから行うためのスイッチ、とミニボタンスイッチが三つもついている。 パワーLEDのほかにユーザーがコントロールできるLEDが4つついている。 Shutdown -h now を実行すると、ちゃんと電源が落ちる。前述の電源コントローラICがついていることによると思われる。再起動はパワーボタンを押すだけ。 RasPiに比べて見劣りするのはUSBホストソケットが一つしかついていないことくらいか。 それとVideo Codecがハードウエア処理ではないので、HTPC用途ではRasPiに軍配が上がりそうだ。 BoneScriptというNode.js上で動くJavascript ライブラリがAngstromには実装されていて、これをやはり実装されているCloud9 というブラウザベースのIDE上で開発していく、ということらしいが、Debian で置き換えてしまったので、とりあえずはRaspiと同様、Pythonを使えばGPIOモヂュールを使って外部とのインターフェースも可能なようだ。(Adafruit.comに多くの教材がアップされている) BoneScriptもそのうちDebian/UbuntuをサポートするようなのでJavaScriptによる外部機器のコントロールのほうは少し待つとしようか。 Physical Computingとして、去年まで熱を上げてたArduinoはどうするよ、と自分に突っ込みをいれたくなるが、これが答えが出ていて、「両方とも使う」というもの。 Arduinoのスケッチ自体はサーバーとの通信とそれに基づく外部接続部品とのインターフェースに特化させ、つまり、簡略化したループを回し、難しいところはBBBでPytonなり BoneScriptを使って行ってシリアル通信でArduinoに指示をしたり、データを受け取ったりする、 従来はこのサーバーの側がPCでDelphiクローンのオープン版Lazarus。 いかにももったいない感じだったが、BBB/RasPiにすると見た目にも機能的にもバランスが取れると思う。 BBB とRasPi 比較表

Raspberry Pi、SD カードのアクセス速度と, カード破損の原因について

表題の件。自分はなんとなく、SDカードのアクセス速度はハードディスクのアクセス速度よりも早いのだ、と思っていたのだが、これは実は大変な思い違いだった。 思い込んでいた理由は、機械部品に読み書きするより、半導体のほうに読み書きするほうが早いのだろうと単純に考えていたのだが、どうも違うらしい。 SDカードの構造が関係しているようだが、同じカードでも初期のSDカードと現在普通に売っているSDHCでももちろん差がある。 それでもハードディスクのスピードにはかなわないのだ、という。 ちなみに Raspberry Piとlinux のddコマンドを使ってカードのアクセスの速度を簡易的に測ってみた報告が このサイトに載っていたので、同じ方法で、今回自分のパイに使ったTranscend の8GBカードのアクセス速度を測ってみたら、15.7MB/Sと出た. root@raspi1:/home/pi# time dd if=/dev/zero of=./ddfile bs=8k count=20000 && sync 20000+0 records in 20000+0 records out 163840000 bytes (164 MB) copied, 10.4644 s, 15.7 MB/s real 0m10.657s user 0m0.080s sys 0m2.400s (ここで使っているddというコマンドはパラメーターの使い方を間違えるとハードディスクの中身が綺麗になくなってしまったり、こわれてしまったりする、というlinux killerとも言われる至極危険なコマンドなので、ご注意を。自分でやってみてファイルシステムの中身が蒸発したと文句を言われても責任を持てません。) クラス10のカードなので保証最低速度が10MB/Sだからこんなものか。 上記のサイトの結果と比較しても同じくらいのスピードだ。 サイトの情報を眺めていると、SDカードが破損する、という報告が多数見られるのは、SDカードのメモリー構造が激しい書き換えで摩耗してしまう結果だから、一度SDカードからブートしたら、OSはUSBスティックのメモリー上で動作したほうがよい、というように書いてあるブログが結構ある。 SDカードでダメならUSBのフラッシュカードだって同じだろうと思うのだが真偽のほどは分からない。上のサイトでもUSBのサムドライブで動作させた場合のアクセス速度を測っているが、SDカードの約半分以下のスピード。測ったメモリースティックがSandisk 16GB Cruiser、一部のサイトで言っているようなスピードが改善した、というような結果にはなっていない。 他にも個人のブログでやはりスピードに改善はない、という報告がある一方、 早くなり、かつ動作が安定した、と言っているサイトには具体的な数値が出ていない。 一方、USB経由でHDDに接続した場合は速度向上の効果が得られそうだ。。  ただ、興味をそそられる部分があって、それはOSのカーネルの立ち上がりからの処理は、USBに接続されたデバイスから実行することができる、SDカード上に必要なのは/bootフォルダに置かれたファイルのみ、と説明されているところで、つまりはSDカードに展開される2GBの実装イメージのうち、本当にSDカード側において置かなければならない部分はFATのパティションの部分のみ、ファイルサイズで言うと20メガバイトにも満たない、ということが判った。オリジナルの2GBのイメージはパティションが二つあり、一つは56メガバイトのFAT、もうひとつは(2GB-56MBの)Linuxのファイルシステムになっている。 この起動の途中からUSBデバイスを使う方法の説明はこのサイトに載っている記事がわかりやすいが、自分の場合、キーボードがダメになって放ってあったHPmini というネットブックに16GBのSSDが入っていたのでこれを取り出し、昔notebookのハードディスクのゴースティングをするために買ってあったUSBのSATA/PATA Enclosure に入れ込んで、Raspbian のイメージをコピーし、gpartedを使ってパティションをディスク容量分まで拡大。 SDカードのほうは、昔のカメラかなにかに使っていたと思われる東芝の256MBのSDカードを普通のPCでフォーマットしたのちにSSDのFATpatition の部分のファイルをすべてコピーし、 その中からcmdline.txt に書かれている /dev/blk0p2というブートデバイス指示を/dev/sda2と書き換え それぞれRPiに接続して準備完了。電源を入れてみれば256MBのSDカードから 見事に立ち上がった。 この状態で、SSDの読み書き速度を調べて見れば、 16GB SSD salvaged from HP mini notebook (ca. 2009) connected through SATA-USB enclosure. root@raspi1:~# time dd if=/dev/zero of=./ddfile bs=8k count=20000 && sync 20000+0 records in 20000+0 records out 163840000 bytes (164 MB) copied, 3.83869 s, 42.7 MB/s real 0m3.858s user 0m0.050s sys 0m2.380s この42.7MB/S というのは、上記のサイトで報告されている、HDDの読み書き速度とほぼ同程度。 それでもSDHCのほぼ3倍の早さがでている。 SSDも半導体ドライブだが、こちらはHDDよりも早い、という宣伝文句で高くても皆文句を言わず買っているわけなので、もっと早くてもよさそうなものだが、290ドルのネットブックに付属してきたものなので、高性能を期待するのが無理か。 そもそもUSB2 の公称最高速が60MB/Sで、そのうち10~15%はオーバーヘッドというこどなので、50MB/SくらいでUSBのほうが飽和するから、そちらの影響かも。 どちらにしても消費電力は低いはず。 ちなみに256MB のSDカードのほうは、さすがに古いだけあって、 ご覧のとおり、たったの2MB/S。 つまりクラス2のカードで、RPiの要求仕様であるクラス4をも満たしていないが問題なく起動する。この使い方では書き込むことはなく読み込み専用. すぐにコントロールがUSB側のstorageに移るのでよしとしておく。 256BM SD card from old digital camera root@raspi1:/boot# time dd …

NGINX ん、じんくす? 違わい、エンジンXだい!

nginxと書いてエンジンエックスと読むそうである。webサーバーとして動くことは勿論だが、その他, リバースプロキシとしてはWEBのみならず、mailも扱えるということなので、 今回raspberry piにインストールしてみた。 徐々に使い方を覚えていき、他のサーバーからの移行を画策していこうと思う(狙いは省電力化)が、とりあえずはPHPおよびmysql を一緒に実装し Lamp ではなく、LNMPとして動かすことをやってみる。 Wikipediaの解説によれば非同期のイベント駆動モデルを使っており、プロセス・スレッド駆動のapacheなどのサーバーに比べると高負荷になっても動きが鈍くならない、という利点があるらしい。なんとなくraspberry pi にぴったりのサーバーのような気がしてきたが、実際は如何に。 実装後のテスト画面は以下。ごらんのとおり、PHPが実装でき、phpmyadminが動いている、という証拠スナップ。 いくつかネット上の記事を参照したが、メインはこちらの記述に従った。 上記サイトのコピー記述になるのでどうかとも思うが、とりあえず実行したコマンドだけ羅列すると以下になる。 なお、ヘッドレスでアクセスをしているので、入力はすべてsshによるリモートターミナル経由だ。 mysql-server をまずインストール sudo apg-get install mysql-server [Enter] mysql のルートパスワードを要求されるので入力したパスワードは忘れないようにしよう。 次にnginx本体をインストール。 ところで、サイトによっては、「ディストロについてくるnginxは0.6とえらく古いのでソースを落としてきてコンパイルしよう、」とその方法を詳しく説明してるところがあったが、apt-get update; apt-get upgrade 後にインストールしたバージョンは1.2.1であった。 ソースをみるとすでに1.51がリリースされているが、ものすごく古い、というわけでもなかったので、パッケージ品をそのまま使うことにする。 自分も齢60歳。いちいち凝っている時間はもうないので次に次にと進むのである。 sudo apt-get install nginx [Enter] sudo service nginx start [Enter] sudo apt-get install php5-fpm [Enter] sudo apt-get install php5-imagick [Enter] sudo apt-get install php5-curl [Enter] sudo nano /etc/php5/fpm/php.ini [Enter] 最後のコマンドではnano editor が起動するので、Ctl-W で、以下の部分を探し、修正。 “upload_max_filesize=2M” => “upload_max_filesize=10M” Dynamic Extentions のセクションに 以下を追加 extension = imagick.so あとはCtrl-O でセーブし、Ctrl-x で終了。 phpmyadminをインストール sudo apt-get install phpmyadmin [Enter] Web-server selection の画面でApache か lighttpdかどちらのサーバーかと、と聞いてくるが、どちらでもないので、チェックを外しておく。 次の画面でパスワードを設定。 sudo service php5-fpm restart 以上すべてsudo で暫定ルート権限で実行しているが、面倒であれば、sudo su でルートになれば、sudoは省ける。 ここまでで必要なサービス(nginx,mysql,PHP5)はすべて導入された。 ちなみにこの状態でRPiのIPアドレスをブラウザで見ると”Welcome to NGinx”という簡単なメッセージが出て、nginxが無事動いているということがわかる。 ただし、この状態では静的なファイルしか表示しない。 PHPファイルを認識させるにはconfig file をいじる必要があるが、その前にサイト用のダイレクトリを設定しておく。 ルートフォルダにある/srvにフォルダーツリーを作っていく. sudo mkdir /srv/www [Enter] sudo chown -R USER1:www-data /srv/www [Enter] sudo chmod -R 755 /srv/www …

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 1440×900 -depth 24 //画面精度に合わせて適宜調整 これをいちいち入力するのは面倒なので、上記のサイトではConfig fileの書き方などが書いてある。 これでxウィンドウがセットされるので、Windows あるいはLinuxが動いているパソコンからVNC準拠のViewerでIPアドレス、パスワードを入力すればGUI画面がアクセスできる。 インストールされているアプリケーションは左下のスタートメニュー(?)をクリックすればカテゴリーごとに選択できるようになっている。いつも使うアプリケーションについては項目を右クリックし、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ケーブルをはずしてもネットワークに接続できるようになった。 現在使っている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クライアントを使ってアクセスしている。 最初のログインでは「まず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の導入の顛末を述べる。