pie001's room

about PC, etc...

coLinuxを別マシンに移動

2006-08-10 13:18:08 | パソコン
coLinux を別マシンに移動しようとしてハマりました。

ファイルを移動するだけで動くだろう、簡単っ!なんて思ってたら、思いがけない落とし穴が待ってた。

結局は単純なミスだったのですが…。


きっかけ


coLinux 便利だけど、私のメインマシン Windows XP で、X サーバ、ブラウザなどと一緒に起動したりすると、メモリが 256MB しかないせいか、動作が重いんですよね。

最近、古いマシンの OS を Windows Me から Windows 2000 にアップグレードしました。

「そうだ、この Windows 2000 で coLinux を動かそう。そして Windows XP マシンからリモートアクセスすれば、快適な環境で Linux が使えるに違いない」

そう思って coLinux を移動することにしました。


準備


「ルートディスク用ファイルとスワップファイル、起動用設定ファイルさえあれば coLinux を移動できる」

と、coLinux 用 インストーラが置いてあるサイトに書いてあった。

問題はネットワークか。

Windows XP では「TAP-Win32 を使ったブリッジ接続」が簡単にできたけど、Windows 2000 ではそうはいかないらしい。(ERROR STORM

別マシンからも coLinux にアクセスしたい。

となると、候補は「WinPCap を使ったブリッジ接続」か「TAP-Win32 でのルータ接続」。(Cooperative Linux(coLinux)のメモ

とりあえずお手軽そうな WinPCap を試してみて、それでパフォーマンスが出なければ TAP でのルータ接続にしよう。


移動


Windows XP 上の coLinux ファイル群を DVD に焼いた。バックアップも兼ねて。

そして Windows 2000 にコピー。これが思いの外時間がかかった。4GB のファイルで 75 分。マシンが古いということか。

ネットワークの設定に入る。


WinPCap でのブリッジ接続


coLinuxのメモ - WinPCapを使ったブリッジ接続を見て設定したけど、Host PC→coLinux、coLinux→Host PC 共に接続できず。

「-t nt」を付けずに coLinux を起動(例: colinux-daemon.exe -c default.colinux.xml)すると起動時のログが見れる。それを見ると「ローカル エリア接続」という名前で検索してるみたいだ。

設定ファイルの network 要素 name 属性を「ローカル エリア接続」に変えてみる。

→起動すらできず。日本語が通らないみたい。

「コントロールパネル」→「ネットワークとダイアルアップ接続」の「ローカル エリア接続」を「local area connection」に変えて、設定ファイルの name 属性も「local area connection」に変えると、接続できるようになった。

<network index="0" name="local area connection" type="bridged"/>

coLinux のバージョン(私が使ってるのは coLinux 0.6.3-pre13)によるのかもしれないが、設定ファイルの network 要素 name 属性は、具体的なデバイス名(「NVIDIA nForce MCP Networking Controller」など)ではなく、接続名(「ローカル エリア接続」など。英語にしないといけない?)なのかもしれない。


しかし使ってみると、、重い。kterm はなんとか動くけど、emacs を起動すると固まって落ちてしまう。しかも Host PC ごと。

TAP でのルータ接続にしよう。


TAP でのルータ接続


coLinuxのメモ - TAP-Win32でのルータ接続を見て、とりあえず Host PC⇔coLinux の設定をしたけど、Host PC→coLinux、coLinux→Host PC 共に接続できず。

Host PC で
>tracert colinux
すると、パケットが coLinux のネットワークに向かわず、デフォルトゲートウェイの方へ流れているようだ。

なにか設定が足りないらしい。そういえば、

NAT接続の設定をしてしまった人は、Host PCのインターネットの共有の設定を必ずオフにしておいてください。

と書いてあった。「もしかして、、」と思い、ちょっと回り道だけど一度NAT接続の設定(coLinuxのメモ - TAP-Win32でのNAT接続参照)をし、その後ルータの設定に戻すと、接続できるようになった。いきなりルータの設定はよくなかったらしい。。


しかし、問題は解決できず。kterm はいいけど、emacs を起動するとフリーズする。しかも coLinux のネットワークが死ぬ。

% /etc/rc.d/init.d/network restart

しても復活しない。強力だ。


一回一回 coLinux を再起動しながら、emacs -nw -q --no-site-file してどこで落ちるのかを調べると、どうも canna を起動した後に落ちるらしい。

別サーバの canna を見に行くよう設定すると、落ちずに emacs を起動できた。

でもおかしい。同じディスク用ファイルで、Windows XP ではなにも問題なく canna を使えた。どこが違うんだろう。。。。。。

 ハマりました。canna のログを出力させて見比べたりすること、計 4 ~ 5 時間くらい。

もうあきらめよう、、そう思いつつ、なにげなく設定ファイルのメモリサイズを 128MB → 64MB に変更して起動すると、、emacs を起動できた!!

すごいあっけなく。なんだ、メモリが足りなかったのか。それならそうと言ってくれればいいのに。そういえば Windows 2000 マシン、メモリ 192MB だからなぁ。。

emacs が起動できなかったのは WinPCap のせいではなかったかもしれない。まぁいいや、ルータ接続の残りの設定をしよう。


TAP でのルータ接続(残りの設定)


coLinux からインターネットに接続するために、無線 LAN アクセスポイント(WHR-G54S/P)に、coLinux 向けのパケットは Host PC に転送するよう設定をした。



あとは、他マシンから coLinux にアクセスできるよう設定するだけ。

 他マシンといっても、Linux とかならルーティングテーブルを操作できそうだけど、Windows にもできるのか?

と思ってたら、@IT - route~ルーティングテーブルの表示/設定を行うに書いてありました。

コマンドラインで設定可能。だけど、ヘタすると接続できなくなるので、試す方は注意してくださいね。


私の環境では、Host PC は 192.168.11.8 なので、

>route add 192.168.0.0 mask 255.255.255.0 192.168.11.8

とした。しかし、tracert するとパケットがループしてる!

metric(優先度)を設定しないといけなかったらしい。Windows XP を再起動して再度設定。

>route add 192.168.0.0 mask 255.255.255.0 192.168.11.8 metric 20 if 2

これで接続できるようになった。

>route -p add 192.168.0.0 mask 255.255.255.0 192.168.11.8 metric 20 if 2

で起動時に有効にする。


おお、確かに WinPCap より速いかもしれない。TAP によるルータにして良かった。



以上で coLinux の移動完了。一日仕事でした。

(メモリ不足にもっと早く気づいていれば…)