とぴやまのブログ(アーカイブ)

元はてなダイアリー

LinuxザウルスをiMonaサーバーとして使う

Linuxザウルスは、非力ではあるが、消費電力が3W程度という非常に低消費電力なLinuxマシンである。 2chビューアiアプリ iMona の通信用サーバとして、つまり2chのdatファイルを転送するだけのサーバとして使用するには申し分ない。

iMona 環境を自前で用意する手順については、iMonawiki - iMonawiki-自鯖設置支援等まとめサイト が詳しい。ここではLinuxザウルス用にまとめた。

ちなみに使用した機種は SL-C860 である。

前準備(zaurusの作業環境整備)

Linuxザウルスを Linux として主にサーバ利用に関しては、この書籍にまとめられているので、ここではその最低限の部分だけ記す。

ハッキングLinuxザウルス SL-C3100/SL-C1000対応版

ハッキングLinuxザウルス SL-C3100/SL-C1000対応版

ターミナルソフトのインストール

いとしの liza qpe-embeddedkonsole-ja ワイド版

敢えて書かなくても、ザウルス持っている人は必ずインストールしているはず。

エディタのインストール

ダウンロード ザウルス ZEditor
こちらも同様に必須ツール。GUIのZEditor を入れる。viとかemacsを使いこなせるユーザーは、そもそもこんなサイトを見ない。

前述の書籍には、zaurusメニューにroot起動のショートカットを作る手順が書いてある。要約すると、zeditor のシンボリックリンク "zeditor_r" 作成し、それを「ホーム画面設定」で登録し、出来たアイコンをタップ&ホールド(押しっぱなし)でプロパティを表示させ、「ルート権限で実行する」をONにする。

unzip のインストール

Linuxザウルス/ダウンロード - Walrus, Visit.

zipファイルを解凍するため。同じ所に sudo, timeadjust, zsh, lha とかもある。便利なので一緒に落としておく。

apache の準備

インストール

LinuZau ToolBox Wiki - LinuxZaurus向けビルド/Apache+mod_perl から、apache_1.3.33-2_arm.ipk と mod-perl_1.29-1_arm.ipk をダウンロードしてインストール。

httpd.conf の編集

root権限で編集する。(オリジナルファイルをバックアップしておくこと!)

Option Indexes FollowSymLinks MultiViews 

を、"None" にして全OFF にする。(少なくとも Indexes を外して、ディレクトリ一覧を見られなくする)

Option None

User と Group を変更して apache の実行ユーザを設定する。ユーザ作成は、 SL-C860 だとコマンドが効かないからファイルの直接編集しないといけない。ファイルアクセス権等面倒なので上記の本にもあるように、User は "zaurus"、 Group は "qpe" で。

ストレージの確保

2chのdatを残しておきたいとか、他にもいろいろなファイルをwebで読めるようにしたいとかいう場合は、本体ストレージ容量の都合上、外部ストレージを使う必要がある。web用のファイルを置く /home/www/htdocs/ をSDカードに置く(logs/も)。こまめにdatファイルを消すのであれば、本体ストレージでも十分だろう。

パーミションを設定出来るようにするために、ファイルシステムext2 にする。ただし、そのSDカードは、Windows が動作している PC に挿して直接アクセス出来なくなる。

% su
# cd /
# umount /mnt/card
# fdisk /dev/mmcda
# mkfs.ext2 /dev/mmcda1

fdisk の対話入力は、

d → 1
n → p → 1 → (空リターン) → (空リターン)
t → 1 → 83
w

でOK。コマンドが終了したら、SDカード挿抜する。更にファイルを格納するディレクトリを作成する。

apachezaurusユーザ権限でアクセスを行うようにしたので、/mnt/card/www/htdocs を zaurus ユーザ所有にしてしまう。 /usr/mnt.rom/card/ は /mnt/card/ のリンク元

% su
# cd /mnt/card
# mkdir www
# chown root:qpe www
# chmod 755 www
# mkdir www/htdocs
# mkdir www/logs
# chown zaurus:qpe www/htdocs/
# chown root:qpe www/logs/
# chmod 755 www/logs/
# ln -s /usr/mnt.rom/card/www/htdocs /home/www/htdocs
# exit
% chmod 755 www/htdocs/

フォーマットすると、"Documents" ディレクトリが作られる(※"lost+found" も出来る)。プレインストールされているツールで使うことがある(うろ覚え)ので、 zaurusユーザが操作可能にするため権限を変更する。

ほかにも必要なディレクトリは、root権限で作って、サブディレクトリ内をGUIから操作出来るように zaurusユーザに移管したほうが良いかもしれない。

% su
# cd /mnt/card
# chown zaurus:qpe Documents
# exit
% chmod 700 Documents

iMonaサーバの準備

ファイルの準備

ファイルは、 ファイルの用意 - iMonawiki-自鯖設置支援等まとめサイト を参照。

iMona14.zip を解凍して出来る iMona/ディレクトリのファイルに、 iMona142.zip, iMona144.zip, iMona145.zip の中身を順番に上書きで置き換える。 但し、iMona/index.html は不要なので削除する。

板リストの設定

上記のURLを参照。 「作者版板リスト」は修正が遅いので、「BBS板リスト」か「独自版板リスト」にする。
brd4.txt, brd5.txt, brdflex.txt を iMona/ ディレクトリに格納。

editboard.cgiの編集

$password を変更する(使用者の任意で)。 $syncfrom を、「BBS板リスト」か「独自版板リスト」のURLの "brd4.txt" を外したパスを指定する。あるいは、$nosync を 1 にしてクライアントの「板リスト更新」でsync出来なくする。

setting.plの編集

下記の4変数を変更する。

$windows = 0;
$log = 1;
$packmode = 2;
$unzipmode = 2;	
ファイル配置

iMona/ディレクトリを、/mnt/card/www/htdocs/ の下に置く。直下でなくても良い。

更にパーミッション設定を行う。 パーミッション設定 - iMonawiki-自鯖設置支援等まとめサイト に従って、iMona/のファイルに対して chmod を行い、iMonaLog.txt を新規作成する。

% cd /mnt/card/www/htdocs/(指定のディレクトリ)/
% touch iMona/iMonaLog.txt
% chmod 701 iMona
% chmod 700 iMona/dat
% chmod 701 iMona/*.cgi
% chmod 400 iMona/*.txt
% chmod 400 iMona/*.pl
% chmod 600 iMona/brd*.txt
% chmod 600 iMona/iMonaLog.txt

iMona/の直下に .htaccess ファイルを作成し、次のように記述する。 "ExecCGI" はCGI実行許可。


  Options ExecCGI
  AllowOverride All

サーバーの動作確認
sudo /home/www/bin/apachectrl start

して、 中間鯖の動作確認 - iMonawiki-自鯖設置支援等まとめサイト に従って、まずはローカルから、http://zaurusIPアドレス)/(htdocsからのディレクトリ名)/iMona/2.cgi にアクセスして確認する。これを#1とする。

止めるときは、

sudo /home/www/bin/apachectrl stop
Dynamic DNSに登録

iアプリIPアドレス直指定のURLからはダウンロード出来ないため、何らかのホスト名が必要になる。固定IPを持っていなかったら Dynamic DNS サービスを使ってホスト名を登録する。

Free Dynamic DNS(無料ダイナミックDNS一覧) から適当なサーバーを選ぶ。

http://(DynamicDNSが提供する名前)/(htdocsからのディレクトリ名)/iMona/ というURLでアクセスするようになる。これを#2とする。

次に、Dynamic DNS に対して定期的にIPアドレスを通知するため、cronを用意する。ファイルは、 Zaurus Software Index vixie-cron から取得。

インストール手順は、 SL-C7x0の電源自動ONの問題と対策 を参照。

# tar zxvf vixie-cron-arm.tar.gz
# mv cron /usr/sbin/crond 
# mv crontab /usr/bin
# /usr/sbin/crond start

私が使用している所は、mail受信 (pop3) アクセスで出来るので、fetchmail を使用。
SourceForge.jp: Project Info - zaurus-ja から fetchmail_5.9.11-1_arm.ipk を取得。 ".fetchmailrc" を編集、crontab に読み込ませるファイルを編集して、crontab -u zaurus で登録する。

zaurus の自動パワーオフを無効化する

effyの日記 - リナザウSL-C700にpukiwiki より、

/home/zaurus/Settings/qpe.conf
を開く。
[Screensaver]

(中略)

Interval_AC_00 = 900

Interval_AC_00 = 0

にしてしまう。

(中略)

0secondsを選べばオートパワーオフしなくなる。

ルータ設定

ルータのTCPポート80を zaurusIPアドレスTCPポート80 にフォワードするように設定する。以下、外部からアクセス可能なるので取り扱い要注意。

これにて、サーバ側の準備は完了。

クライアントの用意

ビルドしなくても、iMona14.zip に入っている iMona.jar/jam がそのまま使用可能だし、公開鯖で配布されているファイルでも可能。

iアプリの用意 - iMonawiki-自鯖設置支援等まとめサイト の通りにファイルを配置すればOK。

開発環境の準備

手持ちの携帯電話がN903iなので DoJa-5.0 を使用する。開発環境はeclipseで。

DoJa-5.0API iαppli Development Kit

ソースファイルの前準備

ソースファイルは、マルチプラットフォームになっていて、複数の環境用の記述が混じっている。それらを削除するために、perlが必要。Windows用なら ActiveState が楽。ザウルス上でなら上記の通り既にインストール済み。

ActiveState - ActivePerl

iMona14.zip を解凍して出来た、dev/ディレクトリに行く。

まず、src\iMona.java_ をエディタで開いて、27行目の #define JPHONEP5 をコメントアウトする。

次に、下記コマンドを実行。これによって生成される iMona.java と DOJAPanel.java に加えて、src\ZipArchive.java と src\iappli\GraphicsMIDP2DOJA.java がソースファイルとなり、res\iappli\m2.gif がリソースファイルとして必要になる。

> type src\iMona.java_ | perl tool\iMonapp.pl DOJA505 > iMona.java
> type src\iappli\DOJAPanel.java_ | perl tool\iMonapp.pl DOJA505 > DOJAPanel.java
eclipseプロジェクト設定

eclipse でプロジェクトを作成したら(メニュー「ファイル」→「プロジェクト」の「Java → Doja-5.0プロジェクト)

"src" に DOJAPanel.java, GraphicsMIDP2DOJA.java, iMona.java, ZipArchive.java
"res" に m2.gif を登録する。

ソース編集

iMona14.zip に格納されたファイルのままだと、板リストを収納しきれないので、その領域を拡張する。

iMona.java の 10529行目 と 10730行目 の "32000" を "60000" に変更する(値は適当です)
根本的には、板一覧を格納する "21010" と入れ替えるべきである。壁紙のサイズはm2.gifのファイルサイズ、1,153 Byte。

jamの設定

eclipse メニュー「プロジェクト」→「Doja-5.0」→「ADF/トラステッド動作設定」を開いて、

ビルド&仮想環境で動作確認

eclipseメニュー「実行」→「構成および実行」。上手く動かない場合は「デバッグモード起動」を外す。

eclipseワークスペース・プロジェクトディレクトリの下の bin/ に Download.html, iMona.jar, iMona.jam が出来ていることを確認する。

最後に iMona.jam の AppParam を外部アクセス用に変更する。

この3ファイルを、ザウルスの iMona/ディレクトリに格納する。パーミッションは604。

% chmod 604 iMona/Download.html
% chmod 604 iMona/iMona.jar
% chmod 604 iMona/iMona.jam

携帯電話にダウンロード

あとは、携帯電話のiモードブラウザから、#2 のURLの下のDownload.html をアクセスして、iアプリをダウンロードする。


以上、クライアントマシンとしては遊休になっていたSL-C860を、サーバとして活用することが出来た。




おまけ1 iMona.javaの改造

本当の動機は、クライアントとなるiアプリを自分で改造したかったためである。が、iMona作者鯖では既にN903i用の改造が施されているものが提供されている。

書き込み時に終了させない

5662行目を下記のように変えることで、書き込み等でiモードブラウザを開いたとき、閉じてもすぐにiアプリに戻ることが出来る。

  parent.launch( IApplication.LAUNCH_BROWSER, browse); 

を次のように改造

  parent.launch( IApplication.LAUNCH_BROWSER_SUSPEND, browse); 
フォントサイズ

N903i ではフォントサイズ指定に getFont(int,int) が使える。20ドットは 小と中の中間で見やすい。また、文字の線が細いので太字にすると読みやすくなるかも。getFont() の第一引数で指定する Font.STYLE_PLAIN を Font.STYLE_BOLD にすると太字になる。

フォント処理は、859,3353,7714 行目あたり。

おまけ2 p2 のインストール

本当はp2(rep2)を使いたかったのだが、N903iiモードブラウザでは VGA+ の高解像度を生かすことは出来ないのでやめた。(もっと文字を小さく表示出来たら良かったのに)また、PC用としてアクセスする分には zaurus は遅い。公式p2 (p2.2ch.net) の方が速い。

PHP4のインストール

LinuZau ToolBox Wiki - LinuxZaurus向けビルド/Apache+PHP からダウンロードして、インストール。ページ中盤の「PHPの設定」を参考に、php.iniとhttpd.conf を編集する。

rep2のダウンロード

p2 - PHPでつくった2ch Viewer 「rep2のダウンロード」からダウンロードする

httpd.confの編集

DirectoryIndex に index.php を追加

ファイル配置

/mnt/card/www/htdocs/ の下にrep2のファイル一式を置く。

rep2/.htaccess を作成して、中身を次のように記述する。


 AddDefaultCharset Shift_JIS

ユーザ認証 - p2Wikiセキュリティ対策 - p2Wiki を良く読むこと。

dataディレクトリの.htaccess

order deny,allow
deny from all

で。

PEARの用意

インストール - rep2 機能拡張パック の 「動かそう」の 手順 2,4,5,6,7 を行う(手順3は上で実施済み)。PEAR はインストール不要で、includes/ ディレクトリに指定のファイルをコピーするだけで良い。