Mac Plus改 G3 をLinuxルータにする
自慢じゃないが、メッセ(gaim)のファイル転送がとてもとても遅い。
平均毎秒2~3Kbである。
長らくだましだまし知らないフリをして使ってきたが、「この遅さはなんとかならんか」と先日はっきりツッコまれた。
そこで「これはuPnPのないOSXなルータのせいに違いない」と脳内直結された結果、「新しいuPnPルータをまた買うか……」というところへおぼろげに考え至っていたところ、ほこりをかぶって部屋の向こうで休眠しているMac Plus改がふと目につく。
余っているG3 MacでuPnPルータ……Linuxインストール……改造Plus復活……
「ヤルシカ」
機体はAlchemy+G3 240のppcマシンとなるが、さて、どのディストリを入れましょうか。
NetBSD 入れたい。
入れたいが情報が少ない
Fedora あやしい
Gentoo 面倒そう
debian debパッケージ関係の挙動をまた調べ直すのが面倒
ubuntu 同上
Vine-2.6 良さそうだしマシンの世代にも合ってるとは思うが、古すぎか
Vine-3.1 良さそうだが、やや古いか
Vine-4.1 入れてみたいがサポート対象外、kernel-2.6なのでAlchemyで動くかどうかあやしい
いかんせん、ppcサポートがどうなってるのかよくわからず、いずれも偏見度90%である。
とりあえず手軽にハードディスクからローカルインストールしたいので、情報があるVine-3.1に決定。
やりかたはVine ftp内、Vine-2.6のところのテキスト参照。
仕組み上、嫌がおうでもMac OS9とデュアルブートになるので、データを退避しておけば現状のままインストール可能。
お手軽である。
データ退避の後、6Gbずつ3個のHFS+で切ってあったパーティションのうち、一個をLinux用につぶし、もう一個をHFSにフォーマットし直す。
そのHFSパーティションへインストール用データを配置、インストールを開始するが、
*ローカルインストールに必要なVine- 3.1用のmapsフォルダ&中身がネット上のどこにもない。
Vine-3.1-cd.isoを丸ごと落としてその中からコピーする必要あり
*BootXからインストール前起動時にRAMディスクの容量を16384にする必要あり
*メモリ72Mbだと要swap128Mb。
swapパーティションを用意するのが面倒なのでfileでswap
辺りでまずハマる。
さらに、Plusは内蔵IDEを殺してPCI上のPromise-ATAカードにHDDを繋いでいるので、素では認識されずインストーラが異常終了した
(Linux自体はRAMディスクから起動する)。
PromiseのATAカード用
FAQテキストを参考にしてうまく認識に至る。
ありがたや。
とはいえ「認識できた」だけでこのままでは最低限の状態でしか動かない。
kernelをリビルド、Promise/Fastek関係を対応させてHDDのDMA転送をオンにしる。
これでシャキシャキと動くようになり、尚よし。
ちなみに数値的には、
DMAなし(リビルド前)
# hdparm -t /dev/hde
Timing buffered disk reads: 6 MB in 3.06 seconds = 1.96 MB/sec
DMAあり(
hdparm -u1 -m16 -d1 -c1 -A1 -a64 -X69 /dev/hde
)
# hdparm -t /dev/hde
Timing buffered disk reads: 44 MB in 3.12 seconds = 14.10 MB/sec
である。
kernelソース/ヘッダパッケージは2.4.26-0vl17.6を使用。
ついでに、G3 CPUカードのL2キャッシュ
(いわゆるバックサイドキャッシュ)がちゃんと動いているのかどうか調べてみた。
# cat /proc/sys/kernel/l2cr
0xa9000000: L2 enabled, no parity, 512Kb, +2 clock, pipelined burst SRAM, copy-back, 0.5ns hold
ロジックボードの2次キャッシュスロットに刺さっているトンデモなCPUな割には、素で普通に動いている模様。
しかもコピーバックモードである。
素晴らしい。
Vineがインストールできたらapt-get update; apt-get dist-upgrade。
eth0にeth0:0のエイリアスを張り、route設定をし、dhcpdをソースからインストール。
ルータ機能の核であるiptablesは最初から使える状態になっているのだが念のため、Vine Plusのところにあったiptables-1.3.6のSRPMを落としてきてアップデート。
その後、iptablesでCubeのサーバ群にDNAT で飛ばし設定、その他基本的な設定をしてルータ機能の整備完了。
ただ、一部何をどーーーしても、
iptables: No chain/target/match by that name
と怒られる。
どうなっとんじゃと1日ほど悩んだのだが、kernelモジュールのipt_LOGをビルドしていないのにLOG機能を使っていたせいだった。
まあ、エラーメッセージはわかりにくいけども、OSXでnatdとipfwを使っているよりも百倍便利で使い易いことをたっぷり実感中。
あとは新規に入れるlibupnp、linuxigdをソースからビルド。
いざ始めるとlinuxigdのビルドでg++が無い、とやはり怒られる。
紆余曲折を経てこれまたVine Plus-3.1のところにあるV2.9のgccセットをインストールしてビルド続行。
各々インストール完了。
chkconfigで設定できるよう各々サービス登録し、起動。
というわけで、Macintosh Plus改ルータ(G3 240MHz メモリ72Mb+swap128Mb)無事稼働中。
が、しかし。
Win上のMSNメッセを起動してもupnpdがうんともすんとも反応しない。
gaimの転送速度も変わらない。
肝心のupnp計画の方は失敗の模様。
もとよりNIC一枚ではそもそもダメか。
で、Linuxにおける各種MSNメッセ互換の転送速度について
……とかなんとかここまで来てからわかった話。
VMware上のWinのMSNメッセだと毎秒2~300Kb出るでわありませんか? upnp、関係ないガナ。
いま一度、gaimのファイル転送の遅さについてぐぐってみたところ、本家に:
Gaim only supports tranferring files over MSN via the MSN servers. This means all your data is sent to an MSN server and then forwarded to the person at the other end of the transfer. It is unknown whether we will support true peer to peer file transfer over MSN.
と、しっかり書いてあった。
ナルホド。
っていうか前にも読んだ気がするのはデジャブか。
近頃、記憶の維持管理がとみに怪しい。
kopeteでテストしてみても、やはり遅い。
こちらもよくよく調べてみると今のところ転送部分は腐っているらしい。
なるほど、元からダメなら仕方ない。
どうやら今現在、互換メッセでMSNメッセのP2Pファイル転送がうまく動いているのはaMSNだけらしい。
ちゅうことでtcl4/tk4を整備して、aMSNをインストール。
転送してみたら速い。
速いザンス。
ちゃんとP2P転送してくれております。
tkで動いているため、日本語フォント表示が前時代的なのが若干マイナス点か。
しかし、おもしろい。
WinのMSNメッセとそっくりに表示するように作ってある。
よくできてるなぁ。
しばらくaMSNでいってみよう。
というわけでPlusでルータを構築していたはずが、妙なオチになってしまった。
しかし「ルータ化は無駄だったジャン」とはいうなかれ。
CubeOSXからルータが分離したのは、保守がしやすくなったし、iptablesでファイアウォールもパワーアップ、それよりなにより改造されたまま死にさばらえていたPlusが生き返ったのは、とてもとても良いことである。
ということにしておく。
完
全然関係ないが、PlusにNetBSDを入れてこの
バッチを貼ってみたい(みーはー)。