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 分。マシンが古いということか。
ネットワークの設定に入る。
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 でのルータ接続にしよう。
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 のせいではなかったかもしれない。まぁいいや、ルータ接続の残りの設定をしよう。
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 の移動完了。一日仕事でした。
(メモリ不足にもっと早く気づいていれば…)
ファイルを移動するだけで動くだろう、簡単っ!なんて思ってたら、思いがけない落とし穴が待ってた。
結局は単純なミスだったのですが…。
きっかけ
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 の移動完了。一日仕事でした。
(メモリ不足にもっと早く気づいていれば…)