
名刺ケースに入れたBeagle Bone Black
【ご注意】以下の記事中で使われているUbuntu/armhfのapt-getできるリポジトリが9月半ばくらいから使えないようです。一発でいろいろ入れてくれて便利だったのに。
【進展あり】こちらのサイトに、ARMHf関係は移ったようで、最新版がダウンロードできます。
【更に進展あり】2013/12/19:とりあえず、この記事にあるURLで再度インストールその他ができるようになっているみたいです。apt-getも問題なく、リポジトリが更新されています。
【無線LANの部分書き換え】2014/01/23:無線LANの部分、やっとまともに動き始め、現在BeagleBoneBlackと自宅LANのあいだは完全にワイヤレスになりました。つまり、電源がつながっているだけのBBBがネットに接続されています。
【以後の経過】この分野は数ヶ月ですべてがらっと変わってしまいます。以下の方法はすでに古くなっている可能性があり、ご自分でネット上の情報をリアルタイムにとってきて変更していく必要があります。一字一句同じ方法ではできない可能性があります。たとえば、binaryのイメージは日付が新しくなっている場合があります。
◆First Impression
8月18日 : 昨日Amazonで頼んだ、ARMの小型で安価なボードコンピュータ、「Beagle Bone Black(以下、長いのでBBBとする)、Rev.A5C」が到着。USBを接続すると、電源もUSBから供給され、勝手に立ち上がって、PCにUSBのTCP/IPを勝手にインストールしに来る。ボードではsshdまで勝手に動いてるので、そのまま、DHCPで振られた新しいIPアドレスにsshでアクセスすると、あっさりとログイン。
このBBBは、電源を入れたとたんに、開発環境もほぼ入っている。たしかに、2GBのフラッシュメモリ実装だから、最低限のものが入る。あれもこれも、というと、そんなに簡単にあれこれはできないが、とにかく必要最低限のものが入っている。しかもC言語の開発環境も入っていて、セルフコンパイル可能だ。ちょっとした実験にはこれで十分だろう。
フラッシュメモリのストレージはこの最初の状態で500MBほど空いている。正直言ってこれだけでも、小さなツールを動かすくらいなら、いろいろなことができる。省電力で5V/1A以下で動く。外部I/FもUSBが2つ、イーサネット、アナログやデジタルのポートI/O、などなど、これだけあれば十分。他にもHDMI、ストレージ用にmicroSDソケットがついている。
値段はこれで¥4,950-。Audrinoに比べても安い。しかも開発ソフトウエアは自分が使い慣れたLinuxのCUIだけではなく、IDEも元から入っている。外付けのHDD(もちろんバスパワーではなく別電源)もつなげてみたが、簡単につながった。
電気を食いまくっている自宅サーバ群も、Webだけのものであれば、これにHDD外付けにしたりして使えるかも知れない。
◆Ubuntuを入れてみる
リポジトリが充実していて、慣れているapt-getが使えるUbuntu13.04のARM版も「Beagle Born Black」に入れてみた。バージョンは他のWebで書かれているものが古かったので、新しい今年の7月22日版だ。Ubuntuは、
http://rcn-ee.net/deb/rootfs/raring/
にアクセスし、そこで一番新しいバージョンをダウンロードして来るのをお勧めする。これはプレビルドされたものなので、Ubuntuが動いている他のPC上で展開した後、BBBに挿すmicroSDにインストールして一発で動く。ダウンロード後、ファイルが壊れたり改ざんされていないかを以下のコマンドで調べる。なお、以下は同じUbuntuのLinuxのコンソールでのオペレーションである。
% md5sum (ダウンロードしてきたファイル名)
ファイル展開
% tar xJf (ダウンロードしてきたファイル名)
展開後にそのディレクトリに移動し、SDに書き込む。これもシェルスクリプトがあるので一発でOK。なお、「/dev/sdb」は、microSDが認識されているデバイスファイルだ。
% cd (展開されたディレクトリのトップ)
% sudo ./setup_sdcard.sh –mmc /dev/sdb –uboot bone
あとは待つこと数分でUbuntuの入ったBBB用のブートつきmicroSDが出来上がるので、これを電源が切れているBBBに差し込んで、LANケーブルを接続してから電源を入れると、Ubuntuが動き出す。
起動後はDHCPが動いているので、ローカル環境ではDHCPでIPアドレスが振られている。そこで、そのIPアドレスに向かってsshを叩くと、BBBでsshdが既に動いているので、「ubuntu:temppwd」でログインできる。

BogoMIPSで300くらい
◆Ubuntuの軽量GUI環境を動かす
Raspberry Pieに比べて起動するまでの手軽さ、起動してから開発に入るまでの時間が非常に短い。加えて、デフォルトで入って動いているsshdなどがあるから、外部I/Fの他はネットワークケーブルと電源だけで動作する。外部I/Fもアナログ入力・出力から、デジタルの入力・出力まで、かなり揃っているだけでなく、ディスプレイを接続し、キーボードやマウスを接続すれば、そのままGUIも動く。正直、この値段ではほとんど期待していなかったが、かなり使える。GUI環境は(ダウンロードしたOSのバージョンによっても変わるが)、
/boot/uboot/tools/ubuntu/small-lxde-desktop.sh
を動かすと、必要なファイルを勝手にダウンロードしてインストールしてセットアップしてくれる。このシェルスクリプトが終わった後は、HDMIにディスプレイを接続し、USBにキーボードとマウスを接続(BBBにはUSBのホスト用ポートが1つだけなのでハブが必要かもしれない)し、rootになって、
# shutdown -r now
で再起動させると、GUI環境が使えるようになる。マウスのの認識までの時間が多少遅く、なかなかマウスカーソルが出てこないこともあるが、気長に待つ。

GUIもUbuntu上で動いた
◆GUIではなくネット用サーバとして
BBBのUbuntuは、なんと最初からsshdだけではなくApache(Ver.2.2.2)も動いてる。ネット情報では、他のOSを入れるときには必ず、ttyのコンソールからしか入れない、とか書いてあるのが多いが、少なくともUbuntuの最新版は、ネットワークケーブルをつなげて、電源をつなげたら、そのままsshdが動いていて、簡単にログインできる。さらに、C言語の開発環境を入れるには、
$ sudo apt-get install build-essential
とする。さらにLAMPも入れたいときは(Apacheは既に入っているが)、
$ sudo apt-get install lamp-server
で終わりだ。終わったとたん、全部動いている。インストール途中でMySQLのrootのパスワード設定を聞かれる。他にも、bind9を入れたり、メールサーバにpostfixを入れたりしてみたが、ほぼバイナリでarm-v7のアーキテクチュアのものが揃っているようだ。ここまで入れて、32GBのmicroSDカードの使用は多く見て5%ほど。
ただし、インストールグループの「lamp-server」が設定されていないリポジトリもあり、その場合は、以下の順序で順に入れていくしかない。
$ sudo apt-get install mysql-server
この後、mysqlのrootのパスワード設定の画面が出るので設定する。また、/etc/mysql/my.cnfファイルの[mysqld]セクションに以下の二行を加える。
character-set-server=utf8
skip-character-set-client-handshake
次にApacheをインストールする。
$ sudo apt-get install apache2
(ただし、これは既に入っている場合が多い)
phpのインストール。
$ sudo apt-get install php5
$ sudo apt-get install php5-mysql
$ sudo apt-get install php5-curl
(あとは、お好きなライブラリを入れることになる)
この時点で、BBBに接続しているのは、ネットワークケーブルと電源のみ。つまり、サーバとかをインストールした直後の状態なんですね。USBにNTFSのHDDとかつなげてみると。。。普通に動く。当たり前ですが。
BBBを使うと、組み込みの開発とかの環境設定に時間がかかっていたものが、かなり楽になる。
◆結論1:BBBは「教育用」ではなく「仕事用」
BBBはこれまでのRaspberry Piとか、Arduinoなどが「教育」に重点を置いているのに比べて、明らかに「リアルな仕事用」に仕上がっている。非常に安定したLinuxが、AndroidやUbuntuなどの人気ディストリビューションも含めて動いているうえ、USB、HDMI、アナログ/デジタルのI/Oをはじめとしたインターフェイスも充実しており、そのデバイスファイルも最初からできていて、余計なものをインストールする必要がない。そのため、買ってきて、必要なディストリビューションを入れるだけで、開発環境+稼働環境が手に入り、デフォルトのAngstrom Linuxであれば、電源を入れるだけで、sshdも動いていて、いつでもログインして開発環境ができている。
Ubuntuなどのダウンロードして来て使うディストリビューションも、ブートローダつきのものをmicroSDメモリに書き込むだけで動く。ちょっとした制御のためのものだったら、Angstrom Linuxをそのまま使っても、C言語でも開発環境が整っているし、sshdに加えてWebサーバも動いている。なお、UbuntuにはC言語やPHPなどの言語はapt-getなどで後で入れる必要があるが、みな普通の「apt-get」でできるので、手間はない。
メインメモリ容量512KB、外部ストレージが2GBという基本容量だけでも、GUIを使わない制御関連のアプリケーションだったら、そのまま使える。
この中身で5千円を切る。外部電源は5V/1Aもあれば十分で、通常はmicroUSBからの電源供給で十分だから、ACアダプタは手持ちのありもの(スマホ用でも)でいい。CPUも省電力で十分使える。今どきのAndroid搭載のスマートフォンから、綺麗な外装とタッチパネルで動くGUIを取り去ったもの、という感じだ。CPUはシングルコアとはなるけれども、余計なものを動かさないのであれば、これで十分だ。
結論として「Beagle Bone Black」はこれまでの安価なシングルボードコンピュータのような教育用ではなく「仕事用」だ、と感じた。制御関連のコンピュータを使った「もの作り」の手間を大幅に軽減するメインプロセッサになる。この価格のI/Oインターフェイスつき・1GHzクロックARMプロセッサ使用の小容量ストレージつき・開発環境つきシングルボードコンピュータが5千円以下。ARMをCPUとした小規模制御用コンピュータの「ゴールが見える位置」に、来てしまった、という感じがする。
◆結論2:ARMの時代の入り口
最近は、データセンターで使われるハードウエアでも、省電力のためにIntel-CPUではなくて、ARMのものが出始めている。ARMのCPUのほうがはるかに消費電力が低いからだ。Intelでも低消費電力ではAtomがあるが、NetBookの時代の終わりとともに、fade-outした感じがあって、低消費電力といえばARM、という時代になりつつある。そのため、ARMアーキテクチュアでのOS、特にAndroidをはじめとしたLinux系、そして、その上で動く数々のアプリケーションも充実してきていて、こういったARM系の動作環境のみならず、開発環境もかなり整って来ている感じがある。
いま、ちょうどその時代の入り口にいる感じだ。その入口で、「Beagle Bone Black」は、これまでの教育用の安価なシングルボードコンピュータから一皮むけたものに仕上がっている感じがする。これまでの「教育用」のシングルボードよりスペックが一段上(というか、ほんのちょっと上)なので、大規模とは言わないまでも適当な規模のものが搭載できる。仮想環境に耐えられるほどではないにしても、あまりアクセスの多くないサーバ1つを乗せるのであれば、これで十分、という感じだ。
BBBを触っていると「ARMの時代」を感じさせる。ハードウエアだけではなく、周辺の環境も整ってきた。
あくまで自分の予想だが、MicrosoftのSurfaceなども出て来ているということは、今後、ARMでのMacBookなども出てくることだろう。面白い時代になってきた。
◆無線LAN
USBに接続した無線LAN経由でのネットワークへの接続は、ドライバがあって、ちゃんと動く。最初は動かなかったりしてちょっと手間取ったが、とりあえず動くようになった。/etc/network/interfaces を以下のように設定した。これは、無線LAN経由で固定IPアドレスにするときの設定だ。
auto lo
iface lo inet loopback
# WiFi
auto wlan0
iface wlan0 inet static
wpa-ssid “SSID”
wpa-ap-scan 1
wpa-key-mgmt WPA-PSK
wpa-psk “キー”
address IPアドレス
netmask ネットマスク
network ネットワークアドレス
broadcast ブロードキャストアドレス
gateway ゲートウェイアドレス
dns-nameservers DNSサーバアドレス
これができると、無線LANで接続するサーバができるので、外目には電源ケーブルだけでネットのサーバを作ることができる。
とりあえず、最大消費電力2.4Wくらいの、DNSサーバ、メールサーバ、proxyサーバはできた。GUIも動いたが、これは後でアンストールし、まだメモリも少々余裕があったので、LAMP環境も入れてみた。が、これはこれから試験してみる。BogoMIPSが300くらいなので、あまりスピードには期待できないが。
◆補足
「Beagle Bone Black」のGUIだが、日本語の表示はまだおかしい。日本語の文字フォントを拾ってきていないが、これは後で解決するとして、しかし、apt-getで持って来られるFireFoxまで動いている。この時点で、メインメモリ利用は512MBの半分くらい。GUIが軽いのが幸いしている。microSDメモリカードは全部で1GBくらいの利用だ。ということは、ここまでであれば、2GBのメモリカードでお釣りが来る。
しかし、気がついたのだが、GUIが動いているのに、runlevelが2のまま。普通GUIが動いていれば、6のはずだ。また、それまでにCUIでnamedなどをインストールし設定すると、GUIにしたときに勝手にbind9を殺してresolv.confを上書きする。GUIが入ったときはあくまでそういうことなんだろうな、と、妙に納得した。
◆補足のおまけ-ケースについて
Beagle Bone Blackはボードコンピュータなので、ケースがない。Amazonなどを見ると、2千円台であるようだが、名刺の樹脂製のケースに入れてみたらちょうどよかったので、入れてみた。特に、microSDカードはちょっと押しただけで外れてしまうので、運用中の安全のためにもケースを付けておいたほうがいい(冒頭写真)。熱はほとんど出ないので、特に通気を考えなくても大丈夫だ。ぼくはドリルでケースに穴を開けてBBBのPCBをスペーサで固定した。
◆その後
その後、このボードを3か月ほどmicroSDカードで動作させたところ、特に問題なく、落ちることもなかった。そこで、自宅のサーバ群のDNSサーバ、メールサーバに仕立て、現在稼働している。bind9、postfix、ntpなども動かしておいた。もちろんFirewallも設定してある。こういう軽いサーバにはBBBは良い選択肢かもしれない。