■西川和久の不定期コラム■
玄柴(KURO-SHEEVA) |
Windows 7やCULVノートPC真っ盛りの年末商戦。突如、素人では全く扱えないと思われるキワモノ的なマシンが登場した。しかも限定販売とは言え即日完売! 大人気の小型Linux搭載BOXだ。長らく品切れがつづいていたが、今月末からようやく再出荷されるという。
ただ“ものがもの”なので「一体何に使うんだろう?」という疑問もあるのだが、編集部から1台届いたので、早速遊んでみることにした。なお、テストは昨年(2009年)12月中に初期出荷されたバージョンで行なっている。あらかじめご了承いただきたい。
●小型ボディにかなりのスペックがぎっしり!
この「玄柴(KURO-SHEEVA)」は、一般的なIntel CPUを搭載しておらず、Marvell製の「Sheeva」CPUコア搭載Kirkwood SoCプロセッサ「88F6281」(1.2GHz)という、PCユーザーには馴染みの無いCPUを搭載している。ARMアーキテクチャで、筆者も詳しくないのだが、身近な例としては、NASなどに使われているものらしい。
そのCPUに加え、NANDフラッシュメモリ512MB、DDR2メモリ512MB、インターフェイスにUSB 2.0×1、eSATA×1、SDカードスロット×1、Gigabit Ethernet×1、そしてコンソール用のUSB 1.1(TYPE miniB)×1を搭載。大容量のストレージなどは、USB 2.0もしくはeSATA、SDカードスロットで増設できる。CPUが非Intel系以外は標準的なインターフェイスばかりが乗っており、かなり使いやすそうな雰囲気。SDカードで32GBなどを入れれば、それなりのストレージを0スピンドルで構成することも可能だ。
サイズは96.5×110×48.5mm(幅×奥行き×高さ)と、ちょっと大き目のACアダプタと言ったところか。電源も内蔵している。最大消費電力は約11Wとかなり省エネだ。
更に内蔵しているNANDフラッシュメモリ512MBには「Ubuntu 9.0.4」(Linux)が必要最小限(と思われる)の構成でインストール済みとなっている。電源スイッチに相当する部分は無く、ACケーブルをコンセントに差し込んだ瞬間にOSが起動する。価格は約16,000円程度。内容を考えるとリーズナブルと言えよう。
パッケージを開けて驚いたのは、マニュアルに相当するものは一切無いことだ。付属品としては「Development CD-ROM」、「USB-miniUSBケーブル」(コンソール用)、「Ethernetケーブル」、「ACケーブル」、そして「プラグアダプタは国内で使えないため、付属のACケーブルを使用するようにと書かれた紙1枚」となっている。 「rootのパスワード」すら記述はなく、ネットで検索することになる。玄人志向らしい商品構成だ。なお、このシステムは、海外で「SheevaPlug Development Kit」の名称で販売されている製品がベースとなっている。
ボディは単にプラスチックの箱。用途を考えれば高級感がある必要も無いのだが、正にACアダプタチックだ。注意書きにあったプラグアダプタは簡単に外れ、その下からメガネタイプの見慣れたAC用コネクタが現れる。
フロントにはEthernet、eSATA、USB 2.0を配置、リアにはACコネクタ、左側上部にステータスLED、そして右側にはコンソール用のUSB 1.1(miniB)とSDカードスロット、リセット用の穴がある。いろいろなポートへケーブルを接続しだすと、タコ足配線になってしまい、見栄えは良くないものの、本機の性質上、よく見える場所へ置く性質のものでもないため大丈夫だと思われる。
ノイズなどは、ファンレスなだけに無音だ。発熱に関しては、丸1日つけっ放しにしたところ、全体的に温かくなる程度。これなら1年中運用しても機械的に壊れる部分が無いため、メンテナンスフリー。安心して付けっぱなしにできる。
●セットアップとにもかくにもLinuxへログインしないと何も始まらない。グラフィックエンジン非搭載で、ディスプレイ出力もなく、USBポートへマウスやキーボードを接続しても意味なしという環境だ。
方法としては2パターンある。1つは「ネットワーク経由」、もう1つは「本体右側にあるUSB 1.1ポートを使ったコンソール接続」となる。前者の場合、内蔵しているLinuxのネットワーク初期設定がDHCPクライアントになっているため、同一ネットワーク内にDHCPサーバーがあれば、IPアドレスなどが自動的に割当てられ、sshでそのIPアドレスを指定すれば良い。
後者の場合は、本体右側の「USB 1.1(TYPE miniB)」へ付属のUSBケーブルを使ってPCへ接続、Development CD-ROMの中にある「SheevaPlug_Host_SWsupportPackageWindowsHost.zip」を解凍し、「WindowsHost」フォルダにあるUSB-擬似シリアルドライバ(64bitのWindows Vista/7対応)をインストール、割当てられたCOMポートへ「Tera Term」などターミナルエミュレーターを使って接続する。
筆者の環境は前者で接続可能なのだが、シリアルコンソールという響きが懐かしかったので、まず後者のセットアップを行なった。ホストにしたマシンは、少し前に購入したAcer「AspireRevo ASR3610-A44」。64bit版Windows 7 Home Premium搭載機だ。
ドライバの組込みは、ケーブルを接続、KURO-SHEEVAの電源をONにすると、自動的に認識するので、先に解凍したドライバのフォルダを指定すればいい。
注意する点として、ドライバを組み込んだ直後は、9,600bpsになっているので、プロパティを開き、115,200bpsへ変更すること。その他のパラメータは、8bit、ノンパリティ、1ストップbit、フロー制御無しと、デフォルトのままだ。また合わせてターミナルエミュレータ側も同じ設定をする。間違いなく接続できれば、ターミナルエミュレーターに起動中のいろいろな文字が表示され、最後にlogin:のプロンプトとなる。
まずはユーザー「root」、パスワード「nosoup4u」でログイン、基本的な環境を整備する。
シリアルドライバとプロパティ | Tera Termを使ってコンソールアクセス | ssh(PuTTY)でネットワーク経由のログイン |
無事、rootでログインできたら、パッケージ管理ソフト「apt-get」を使うための初期設定を行なう。と言っても難しい話でなく、情報を更新するだけ。手順は以下の通りだ。
# apt-get update # apt-get upgrade |
ちょっと時間はかかるが、これでパッケージリストなどが最新のものになるので、後は必要なパッケージを同じく「apt-get install パッケージ名」でインストールして行く作業となる。
●いろいろ試して見る環境が整ったところで、このKURO-SHEEVAの用途を考えながらセットアップすることにした。まず手始めに「NAS化」。これは比較的簡単で、新しいパッケージをインストールしなくても初期状態でsambaが入っているので/etc/samba/smb.confを設定し、/etc/init.d/samba startでサービスを起動するだけでOKだ。Windows 7のネットワークに、KURO-SHEEVAのホスト名「DEBIAN」が表示され、共有フォルダがリード$ライト可能になっている。
今回はテストと言うこともあり、NANDフラッシュメモリ上の/var/sambaを公開しているが容量が少ないので、本格的に使うには、USB 2.0、SDメモリカード、eSATAなどにストレージをマウントし、その上のフォルダを公開すればいいだろう。ちなみにUSBメモリは「/dev/sda1」、SDメモリカードは「/dev/mmcblk0p1」が、該当するデバイス名。「mount /dev/mmcblk0p1 /media」などとすればマウントされLinux上からアクセス可能になる(eSATAは機器が無く未確認)。
Windows 7のネットワークで「DEBIAN」というホストが見えている | 2GBのSDメモリカードを入れたところ。SDメモリカードは裏側になる | マウントしたフォルダ。デジカメでフォーマットしたFATのままでもOK |
次はWebサーバーとして使うことを考え、「WordPress」をインストール。blogエンジンであるこのWordPressを動かすには、「Apache2」、「PHP」、「MySQL」など、「LAMP」と呼ばれる(Linux+Apache+MySQL+PHP/Perl/Python)環境が必要となる。これらのパッケージは初期状態では入ってないので、コンソールから「apt-get install apache2」、「apt-get install mysql-server」、「apt-get install php5」と入力し、パッケージを新たにインストールしなければならない。
この時引っかかったのはMySQLだった。「apt-get install mysql-server」でパッケージ自体のインストールは問題なく行なわれ、その途中、rootのパスワードを設定するパネルが開く。
はじめは「テストなのでブランクでいいや!」と何も入力せずに[OK]ボタンを押し、チェックで「mysql -u root」としたところ「パスワードが違うエラー」となった。もちろん「mysql -u root -p」でPassword:で[Enter]を押しても同じ状況だ。「さっきブランクにしたのがまずかったのか!?」と、「apt-get --purge remove mysql-*」で、一度mysql関連のモジュールを全て削除、再インストールし、先のMySQLのパスワードを設定する部分で適当な文字を入力。チェックしても駄目だ。やはりパスワードエラーとなってしまう。
MySQLを削除しては再インストールと、5回ぐらい行なったものの結果は同じ。不思議に思って「/usr/bin/mysqld_safe --user=root --skip-grant-tables &」でMySQLを起動、データベースをmysqlへ切り替え、ユーザーを見たところ「debian-sys-maint@localhost」1つしかなく、そもそもユーザーrootが存在しない。インストーラのバグだろうか。rootユーザーが無ければMySQLに接続できないのは当たり前だ。そこで新たにユーザーrootを作成、全権限を与えることで難を逃れた。
MySQLがOKとなれば後は簡単。Apache2の設定を行い、「/etc/init.d/apache2 start」でサービスを起動、該当するURLをWebブラウザで開き動いている事を確認する。次にPHPも動いているかチェックする。これは例えば「test.php」の中身を「<?pho phpinfo();?>」として、Webブラウザからアクセス、結果が表示されれば大丈夫だ。
準備も整ったので、WordPressのパッケージをwget(これもapt-get install wgetが必要)する。ところがURLが見つからないエラーとなる。どうやらネームサーバーが動いていないようだ。ただapt-getする時は名前を引けていたのでおかしいなと思って調べると、/etc/hostsにダイレクトに「91.189.88.36 ports.ubuntu.com」の記述がある。なるほどapt-getだけは動くはずだ。/etc/resolv.confのnameserverのIPアドレスを書き換え、名前が引けるようになった。この辺りのトラブルはハマってしまうと解決するのにかなり時間がかかる。
MySQLのユーザーにrootを手動で追加 | Apache2の作動確認。/var/www/index.htmlが表示された | phpの作動確認。作動環境などが表示される |
ここまでできれば「WordPress」のインストールは簡単だ。まずMySQLへWordPress用のデータベースを作成(今回はblogとした)、「wget http://ja.wordpress.org/wordpress-2.8.6-ja.zip」で(現時点の)最新版をダウンロードし、適当なフォルダで展開、wp-config.phpにあるデータベース名、ユーザー名/パスワードをシステム合わせて書き換え、Webブラウザで「http://xxx.xxx.xxx.xxx/wp-admin/」を入力すると、WordPressのインストーラが動き出すので、ウィザードの通りに入力すれば作業完了となる。
さて、ここで数あるblogエンジンの中でWordPressを選んだのは、ページ作成が基本的に動的生成だからだ。つまり管理画面も含め、(キャッシュするプラグインもあるが)どのWebページを開くにしても必ずデータベースをアクセスし、PHPが動く。従ってCPUのパフォーマンスが感覚的に分かりやすいのだ。
筆者の場合、VMware上の仮想マシンで動くLinux、AtomプロセッサやXeonクラスの単独サーバー上、そしてリソース共有タイプのレンタルサーバーなど、いろいろなサーバーへWordPressをインストールした経験があるので、管理画面やトップページが開くのにどの程度時間がかかるかで、おおよそパフォーマンスの見当がつく。
結果的には「混んでいる時間帯のリソース共有タイプのレンタルサーバー」程度の速度だった。つまり、結構重い。ただこれはCPUのパフォーマンスのみならず、Apache2やMySQLのチューニングは行なっていないので、無駄にメモリを使っている可能性もある。実際、WordPressが動いている時はほぼ空きメモリが無くなっている状態だ。
いずれにしても、このクラスのマシンでWebサーバーを運営する場合は、できるだけ静的htmlを吐き出す、例えば「Movable Type」などを使った方がいいだろう。もちろんページ生成時にはデータベースをアクセスするのでかなり重いが、いったんhtmlが出来てしまうと、CPUなどに負荷がかからないし、ページの表示も速い。
WordPressの管理画面 | 標準テーマのトップ画面 | この時のメモリ状況 |
なんとなくKURO-SHEEVAのパフォーマンスが分かったところで、最後はDLNAサーバー化してみる。USB 2.0、SDメモリカード、eSATA接続で大容量ストレージをマウントできるので、NASと共に用途として考えられるからだ。
LinuxのDLNAサーバーの定番は「Media Tomb」。これもパッケージがあるので「apt-get install mediatomb」で簡単にインストールできる。特に注意する点は無いのだが、標準設定ではデータベースが「sqlite3」になっている。このsqlite3も初期設定では入っていないので、apt-getする必要があるのだが、正直あまり速くない。数百以上のファイルを扱うのならMySQLを使った方が良い。
この時、「/etc/mediatomb/config.xml」の中にあるデータベース関連の部分を修正する。
この他、実用的に使うには日本語を扱う方法など、若干config.xml内を修正する必要があるが、検索すれば直ぐに情報が見つかるので、いろいろ試して欲しい。
config.xmlの設定が終わると、「/etc/init.d/mediatomb start」でサービスを起動する。はじめての起動の時は、先に設定したデータベースに必要なテーブルなどを作成するスクリプトが同時に動く。エラーも無く起動したらWebブラウザから「http://xxx.xxx.xxx.xxx:49152」(:49152は、通常のポート80ではなく、ポート49152の意味)を入力するとMedia Tombの画面が開く。あとは、[Filesystem]を選び、データの入っているフォルダやデータを[+]で追加して行く作業となる。一通りデータを追加し[Database]の表示に切り替えると、いろいろなカテゴリにツリー化されデータが左側に表示される。
無事、DLNAサーバーとして動いているか、PCで調べるには、Windows 7なら「Windows Media Player」を起動すると「Media Tomb」ライブラリが見えるので、あとは好みに応じて再生すればOKだ。PC以外でオーソドックスなDLNAプレーヤーとしては「SONY PS3」があげられるだろう。また余談になるが、以前記事で紹介した「SONY VGF-WA1」もDLNAプレーヤー。Media Tombで設定した楽曲にアクセスできる。
Media Tomb/Database。タグを読み、アーティストやジャンルなどいろいろデータベース化され、ツリー構造で表示している | Windows 7はDLNA対応なので、Media Tombが見えている。もちろん再生もOKだ | 以前記事で紹介した「SONY VGF-WA1」。DLNAプレーヤーなのでMedia Tombを認識している |
今回はパッケージのインストールのみで利用できる、LAMPを使ったblogエンジン「WordPress」、そしてDLNAサーバー「Media Tomb」をKURO-SHEEVA上に構築してみた。この他にもVPNサーバーやWebカメラサーバーなど、いろいろな用途が考えられる。いずれにしても「Ubuntu 9.0.4」がベースになっているので、分かる人なら何でもありの世界。ただ欲を言えば、メモリがもう少しあれば、本格的にデータベースをガンガン使うWebアプリケーションも更に実用的に運営できそうな雰囲気だが、それをこの手のマシンに求めるのはお門違いなのかも知れない。
ファンレス、1.2GHzのCPU、512MBのメモリ、大容量ストレージはUSBやeSATA経由でいくらでも増設可能なLinux搭載機、玄柴。今回紹介したようにパッケージをインストールするだけでも十分楽しめるが、用途に応じてカーネルをコンパイルしたり、ソースコードからビルドしたり、外部ストレージからブートせさたり、もっと高度にカスタマイズするユーザーも多いと思う。いずれにしてもアイディア次第で何にでも化ける超小型サーバーとして非常に面白い製品と言えよう。