LinuxザウルスをiMonaサーバーとして使う
Linuxザウルスは、非力ではあるが、消費電力が3W程度という非常に低消費電力なLinuxマシンである。 2chビューアiアプリ iMona の通信用サーバとして、つまり2chのdatファイルを転送するだけのサーバとして使用するには申し分ない。
iMona 環境を自前で用意する手順については、iMonawiki - iMonawiki-自鯖設置支援等まとめサイト が詳しい。ここではLinuxザウルス用にまとめた。
ちなみに使用した機種は SL-C860 である。
前準備(zaurusの作業環境整備)
Linuxザウルスを Linux として主にサーバ利用に関しては、この書籍にまとめられているので、ここではその最低限の部分だけ記す。
ハッキングLinuxザウルス SL-C3100/SL-C1000対応版
- 作者: 塚本牧生,吉岡玲子,ichitokumei,山田哲靖,古川大輔,鈴木晃,田村俊生
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/08/13
- メディア: 単行本
- 購入: 1人 クリック: 24回
- この商品を含むブログ (14件) を見る
エディタのインストール
→ ダウンロード ザウルス 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カード挿抜する。更にファイルを格納するディレクトリを作成する。
apacheがzaurusユーザ権限でアクセスを行うようにしたので、/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出来なくする。
ファイル配置
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://(zaurusのIPアドレス)/(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を選べばオートパワーオフしなくなる。
クライアントの用意
ビルドしなくても、iMona14.zip に入っている iMona.jar/jam がそのまま使用可能だし、公開鯖で配布されているファイルでも可能。
iアプリの用意 - iMonawiki-自鯖設置支援等まとめサイト の通りにファイルを配置すればOK。
ソースファイルの前準備
ソースファイルは、マルチプラットフォームになっていて、複数の環境用の記述が混じっている。それらを削除するために、perlが必要。Windows用なら ActiveState が楽。ザウルス上でなら上記の通り既にインストール済み。
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/トラステッド動作設定」を開いて、
- AppName → 適当に
- SPSize → 65536
- AppClass → iMona
- AppParam → #1の 2.cgi を除いたURL
- UseNetwork → チェックを入れる
- MyConcierge → チェックを入れる
- UseBrowser → チェックを入れる
- GetSysInfo → チェックを入れる
- DrawArea → 端末に応じて変更する。作ろうiモードコンテンツ:iアプリ対応端末の情報 | サービス・機能 | NTTドコモ を参照。N903iなら"480x480"。
ビルド&仮想環境で動作確認
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)を使いたかったのだが、N903i の iモードブラウザでは 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のダウンロード」からダウンロードする
ファイル配置
/mnt/card/www/htdocs/ の下にrep2のファイル一式を置く。
rep2/.htaccess を作成して、中身を次のように記述する。
AddDefaultCharset Shift_JIS
ユーザ認証 - p2Wiki と セキュリティ対策 - p2Wiki を良く読むこと。
order deny,allow deny from all
で。
PEARの用意
インストール - rep2 機能拡張パック の 「動かそう」の 手順 2,4,5,6,7 を行う(手順3は上で実施済み)。PEAR はインストール不要で、includes/ ディレクトリに指定のファイルをコピーするだけで良い。