coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

coLinux0.7.4でNDISを使ってネットワーク

2009-05-26 23:40:04 | インストールと設定
前回インストールした coLinux 0.7.4 の大きな変更は、ネットワークで NDIS が使えるようになったことです。そのため、

colinux-ndis-net-daemon.exe

が追加されました。

NDIS(Network Driver Interface Specification)の詳細は、ウィキペディアなどで分かります。このネットワークカードのためのAPIがWindows Vista SP1 でも標準でサーポートされているのですから、これは待ち望まれた機能ですね。

colinux-daemon.txt を参考に、早速試してみましょう。

オプションの指定方法は、WipPcap と同じようです。そこで、Fedora-10.bat を次のように修正して、Fedora-10-ndis.bat を作ります。

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256
cobd0="C:/coLinux/Fedora-10.img" cobd1="C:/coLinux/swap.img" root=/dev/cobd0 ro
eth0=ndis-bridge,"ローカル エリア接続",00:FF:38:40:03:03

早速これを実行してみたところ、あっさりネットワークにつながりました。

このマシン(TOSHIBA AX/55E)の場合は、NDIS においても、 MACアドレスに対して何らかの制限がある可能性がありますので、MACアドレスは WinPcap で成功したものを使いました。

NDIS の良いところは、Slirpと同様に、Windowsに対して特に何もしなくてよいところです。wiki で WinPcap を置き換えると言っているのも納得できます。

既存のDHCPサーバから値を得て、IPアドレスも以下のように設定されました。
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:FF:38:40:03:03
          inet addr:192.168.1.230  Bcast:192.168.1.255  Mask:255.255.255.0
..................................
#

同様に既存のDHCPサーバから値を得て、ゲートウェイとネームサーバも設定されています。

ブートメッセージは、Linux version 2.6.22.18-co-0.7.4 の行の前に、

conet-nids-daemon: Bridge on: ローカル エリア接続

と表示されています。

NDISでは、WinPcap と同様に、新しいIPアドレスが1つ必要になりますので、IPアドレスが登録制のところでは、Slirp を使うことになります。

coLinux 0.7.4 にしたおかげで、NDIS も使えるようになって本当に良かったです。これも、このマシン(TOSHIBA AX/55E)で生じた WinPcap の問題無事解決できたからだと思います。そこでいろいろ試した方法は、もし coLinux でネットワークがうまくつながらない場合に、何かの役にたつのではと密かに思っています。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

coLinux 0.7.3 を coLinux 0.7.4 にアップデート

2009-05-25 23:07:42 | インストールと設定
2009-05-14に、新しい coLinux の安定版 coLinux 0.7.4 がでました。

coLinux-0.7.4.exe 5306359 bytes

ですね。早速アップデートするためにインストールしてみました。

coLinux-0.7.4.exe を実行すると、「Cooperative Linux 0.7.4 Setup」ウィンドウが開くので、指示にしたがってインストールします。

最初に「Next」をクリックします。

「License Agreement」で、「I Agree」をクリックします。

「Choose Components」で、「Root Filesystem image Download」のレ点を外し、「Next」をクリックします。

「Choose Install Location」で、「Destination Folder」は、C:\colinux\ にして、「Next」をクリックします。アップデートのときは前のフォルダが表示されるみたいです。

「Get WinPCAP」で、「Next」をクリックします。

アップデートが開始されます。

「Installation Complete」が表示されたら、「Next」をクリックします。

「Finish」をクリックして、README.txt を読んだら終了です。

これで、上書きされて無事にアップデートできました。
colinux-daemon.exe などの主要ファイルはすべて、2009/04/16 3:59 になりました。batファイル等の自分で作ったファイルや、ルートファイルシステムのファイルなどはそのままです。

前回の fedora-10.bat で立ち上げると、

Fedora release 10 (Cambridge)
Kernel 2.6.22.18-co-0.7.4 on an i686 (tty1)

localhost login:

となって、無事にアップデートできました。

変わったところでは、0.7.3 でブートメッセージに出ていた、

eth0: duplicate address detected!

が出なくなりました。また、WinPcap 関連のブートメッセージは以下のようです。

conet-bridged-daemon: Looking for interface "ローカル エリア接続"
conet-bridged-daemon: checking connection: 'ローカル エリア接続'
conet-bridged-daemon: listening on: Marvell Yukon Ethernet Controller....
conet-bridged-daemon: Filter rule: (ether dst 00:ff:38:40:03:03) or
(multicast and not ether src 00:ff:38:40:03:03)

前回の 0.7.3 のときのメッセージと最後の行が変わっていますね。

また、Windows Vista のスリープ状態から復帰した後に、ネットワークを使うと、cmd.exe のウィンドウに、

conet-bridged-daemon: offline
conet-bridged-daemon: online

のメッセージがでて、問題なくネットワークがつながるようになりました。0.7.3 では、一度切れると再起動しないとネットワークが使えなかったので大きな改善ですね。

ちなみに、前回のMACアドレスの制限はそのままでした。

今後は Windows Vista 上で、この coLinux 0.7.4 を使って作業を進めていきたいと思います。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

WinPcapとMarvell Yukon 88E8039 解決編

2009-05-21 12:52:25 | インストールと設定
前回、WinPcap を使ったネットワークがうまくいかなかったのですが、
ふと、MACアドレスを指定したのが良くなかったのではないかと思いなおし、
Fedora-10.bat を、

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256
cobd0="C:/coLinux/Fedora-10.img"
cobd1="C:/coLinux/swap.img" root=/dev/cobd0 ro
eth0=pcap-bridge,"ローカル エリア接続"

として、起動してみました。結果は、うまく通信できるようになりました。
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:FF:38:40:00:00
          inet addr:192.168.1.202  Bacst:192.168.1.255  Mask:255.255.255.0
.......
#

どうも、MACアドレスに制限があるらしく、何も指定しないで立ち上げたときに設定されるMACアドレスの上位3オクテットはそのままに、下位3オクテットだけを変更するのがよさそうです。

ためしに、Fedora-10.bat を以下のように修正したところ、

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256
cobd0="C:/coLinux/Fedora-10.img"
cobd1="C:/coLinux/swap.img" root=/dev/cobd0 ro
eth0=pcap-bridge,"ローカル エリア接続",00:FF:38:40:03:03

こちらもうまくいきました。
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:FF:38:40:03:03
          inet addr:192.168.1.240  Bacst:192.168.1.255  Mask:255.255.255.0
.......
#

つまり、MACアドレスの上位3オクテット(OUI)に何らかの制限があるようです。

謎が深まるMACアドレスの制限ですね。いったいどこで制限されているのかよく分かりません。ここで、OUI 00:FF:38 はどこにも登録されていないようです。

ちなみに、WinPcap の、ブートメッセージは以下のとおりです。

conet-bridged-daemon: Looking for interface "ローカル エリア接続"
conet-bridged-daemon: checking connection: ローカル エリア接続
conet-bridged-daemon: listening on: Marvell Yukon Ethernet Controller....
conet-bridged-daemon: listening for: (ether dst 00:ff:38:40:03:03) or (ether broadcast or multicast) or (ip broadcast or multicast)

また、Windows Vista が、スリープ状態になるとネットワークがつながらなくなるようです。

ともかく、WinPcap が使えるようになって本当に良かったです。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

WinPcapとMarvell Yukon 88E8039

2009-05-20 22:02:50 | インストールと設定
前回、Slirp を使ったネットワークについて見てみましたが、WinPcap を使った場合はどうでしょうか。

実は、この TOSHIBA AX/55E では現在のところうまくいきませんでした。今回は、この詳細を報告したいと思います。

最初に Fedora-10.bat を修正してみます。

ここで、WinPcap を使った時の設定に変更します。

Vista の場合は、

「コントロール パネル」 > 「ネットワークの状態とタスクの表示」 の中で、
「ネットワーク(パブリックネットワーク)」の部分で「接続」というところに現れる名前(ここでは「ローカル エリア接続」)を使います。

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 cobd0="C:/coLinux/Fedora-10.img"
cobd1="C:/coLinux/swap.img" root=/dev/cobd0 ro
eth0=pcap-bridge,"ローカル エリア接続",11:02:AA:40:10:20

 ここで、MAC アドレスを指定していますが、複数の coLinux を動作させる場合は、重複する可能性がありますので指定しました。ちなみに、11:02:AA は、 http://standards.ieee.org/regauth/oui/oui.txtにおいて、なにも指定されていないものを使いました。

Fedora10側の設定は、dhcp を使う設定のままにして、coLinux を立ち上げると、ここで使っているブロードバンドルータの dhcp サーバから情報を得て、IPアドレスとゲートウェイ設定が行われていました。

ping は、内から外と外から内の両方とも OK になりました。

しかし、ssh 等がまったくつながりません。

Wireshark でパケットを調べると、coLinux からはパケットが出ていくのですが、相手がACKを返しても反応がなく、coLinux が応答なしとみなして、またパケットを送りだすのを繰り返しているように見えます。

また、dig の応答はあるので、UDPの一部は正常に通信できるようです。

Slirp ではうまく通信できるので、Fedora10の設定の問題でないですね。

そこで、http://scratchpad.fc2web.com/colinux/winpcap.htmlを参考にして、

「ローカル エリア接続のプロパティ」ウィンドウで、「接続の方法」をみると、

Marvell Yukon 88E8039 PCI-E Fast Ethernet Controller

となっていました。これのプロパティで、
 IPv4チェックサム オフロード
 TCPチェックサム オフロード
 UDPチェックサム オフロード
のすべてを、オフにしてもだめでした。

また、http://support.microsoft.com/kb/888750/の方法2も関係ありませんでした。

さらに、ドライバのバージョンが、10.0.4.3 だったので、http://www.marvell.com/driversから、新しいドライバ 10.69.2.3 (すこい更新の頻度ですね。)を持ってきて試しましたが、(Marvell Miniport Driver をアンインストールしてから、setup.exe を実行すればインストールできます。)これもダメでした。

Fedora-10.bat で、eth0 に nopromisc オプションを付けるのもダメです。

ということで、Marvell Yukon 88E8039 の場合は、coLinux 0.7.3 で WinPcap を使ったネットワークはできない場合があるというのが、現時点でのこのブログの結論です。

(この問題の解決には、解決編をご覧ください。この記事は、ダメな場合の対処方法がいくつか書いてあるので、その点が少しだけ役立つかもしれませんね。)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

coLinux0.7.3でSlirpを使ってネットワーク

2009-05-17 20:55:56 | インストールと設定
coLinux0.7.3+Fedora10のインストールが終わったので、ネットワークを見てみます。
実は、前回の Fedora-10.bat で eth0=slirp,,tcp:5901:5900 と指定しているので、すでにネットワークにつながっています。

ここで、Slirp は、
Slirp, the PPP/SLIP-on-terminal emulator (http://slirp.sourceforge.net/)のことだと思います。ようするに、仮想的に coLinux と接続されたネットワークの口を作って、それに対して、実際のWindows 側のネットワークと PPP/SLIP でつなぎ、NAT を使って通信するわけですね。

このマニュアルの日本語訳 (http://www.pse.che.tohoku.ac.jp/~hoshi/slirp.txt)もありました。

これによると、Slirp は特殊アドレスというあらかじめ決められたIPアドレスがあります。

 10.0.2.0 Slirpのオンライン設定アドレス
 10.0.2.1 Slirpがプログラムを実行するときに使うアドレス
 10.0.2.2 リモートホストのエイリアス
 10.0.2.3 DNSのエイリアス
 10.0.2.15 SlirpがPCに使うことを推奨するアドレス

coLinux で不要な 10.0.2.0 と 10.0.2.1 は使用できなくなっています。

coLinux の Slirp では、この残りの3つのIPアドレスが、dhcp によって設定されるようになっているのですね。

ここでインストールした Fedora10 の設定も標準で、

# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
#
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
#

になっており、実際 Slirp の提供する dhcp サーバによって以下のようになります。
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:FF:38:40:00:00
          inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
          ........................
# route -n
Kernel IP routing table
Destination     Gateway   Genmask         Flags ................ Iface
10.0.2.0        0.0.0.0   255.255.255.0   U                      eth0
169.254.0.0     0.0.0.0   255.255.0.0     U                      eth0
0.0.0.0         10.0.2.2  0.0.0.0         UG                     eth0
# cat /etc/resolv.conf
: generated by /sbin/dhclient-script
nameserver 10.0.2.3
#

またこの coLinux から ssh で別のマシンにログインした後、

# who
espiya pts/0 2009-05-17 20:20 (winvista)
#

となって、coLinux が動いている Windows Vista のマシンからログインしているように見えます。

Slirp の場合、外部から coLinux にアクセスするためには、ポートの対応付けが必要です。これを指定しない外部からのアクセスはすべて、coLinux には到達できません。対応付けの方法は、

 tcp|upd:外部から送り出すポート:coLinux側が受けるポート[:count]

で、複数指定する場合のセパレータは、/ です。例えば、coLinux で、sshd と httpd を動かして外部からアクセスさせるには、以下のよう指定します。

 eth0=slirp,,tcp:22:22/tcp:80:80

count は、連続番号指定の簡略表記のためのものです。例えば、

 4000:80:2 は、 4000:80 と 4001:81 を、

指定したことになります。サンプルで指定されている、tcp:5901:5900 は、VNC のためのものらしいので、ここでは使いません。

また、すでに Windows がポートを開いていると利用できないようです。

Slirp は、IPアドレスが登録制のところで coLinux を使う場合は最適な機能ですね。coLinux は自由自在に MACアドレスが設定できるので、こうした環境では許されないものですから。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

coLinux0.7.3で、Fedora10を使う

2009-05-15 00:03:28 | インストールと設定
前回coLinuxをインストールしましたので、ルートファイルシステムを設定します。今回は、Fedora10 を利用するので、Fedora-10-20090228.exe をダブルクリックして実行します。すると、「WinRAR self-extracting archive」 ウィンドウが開きますから、ここでは、「Destination folder」で c:\coLinux を指定して、「Install」ボタンをクリックしてインストールします。

 README-Fedora-10.txt
 start-Fedora-10.bat
 start-Fedora-10.sh
 swap.img
 Fedora-10.img (4,294,967,296 bytes、Fedora10のルートファイルシステム)
 
の各ファイルが展開されます。スワップファイル swap.img (512M bytes) も一緒に作成されています。これは便利ですね。

ここで、start-Fedora-10.bat の中身は、

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 cobd0="C:/Program Files/coLinux/Fedora-10.img" cobd1="C:/Program Files/coLinux/swap.img" root=/dev/cobd0 eth0=slirp,,tcp:5901:5900 ro


(実際は1行です。)

になっていました。

これを以下のように変更して、Fedora-10.bat ファイルを作成します。

colinux-daemon.exe kernel=vmlinux initrd=initrd.gz mem=256 cobd0="C:/coLinux/Fedora-10.img"
cobd1="C:/coLinux/swap.img" root=/dev/cobd0 eth0=slirp,,tcp:5901:5900 ro


これを実行すると、

「コマンドプロンプト」ウィンドウが開き、「Cooperative Linux console」ウィンドウ(コンソールウィンドウ)が開きます。

コンソールウィンドウでは、

Fedora release 10 (Cambridge)
Kernel 2.6.22.18-co-0.7.3 on an i686 (tty1)

localhost login:

が表示されています。root でパスワードなしでログインできました。メッセージで、X11を利用するために、VNCを使うように言われます。

シャットダウンは、「コンソール」ウィンドウのメニューで「Monitor」のサブメニューの「Shutdown」をクリックすればできます。

ログインしたら、
前と同じようにキーボードの設定を行います。

# loadkeys jp106
Loading /lib/kbd/keymaps/i386/qwerty/jp106.map.gz
#

デフォルトにするには、以前は、/etc/sysconfig/keyboard の KEYTABLE 行を、KEYTABLE="jp106" にすれば良かったような気がするのですが、今回これを利用するようなスクリプトはみあたりません。/etc/rc.d/rc.sysinit の中に、

 /usr/bin/system-config-keyboard

を使うような記述があったのですが、これもありません。そこで、前に設定したように
/etc/rc.d/rc.local に /bin/loadkeys コマンドを記述しました。ようするに、
system-config-keyboard があらかじめインストールされていないということです。

キーボードの設定が終わったら、ネットワークに接続する前に、root のパスワードを設定しておきます。

このブログではテキストモードで操作するのがルールですから、X11 は使わないので、/etc/inittab の以下の行のままです。

id:3:initdefault:

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Windows VistaにcoLinux0.7.3をインストール

2009-05-08 00:19:11 | インストールと設定
先にインストールした coLinux はかなり古くなってしまったので、新しいものをインストールすることにしました。

今回は、Windows Vista Home Premium SP1 のノートパソコンにインストールします。

その仕様は、

 CPUは、Celeron 540(1.86GHz)、
 メモリ2GB

のTOSHIBA AX/55E です。

ここに coLinuxをインストールしてみます。

現在の安定版は、0.7.3-linux-2.6.22.18 です。早速 SourceForge の Cooperative Linux のページ
から、ダウンロードします。
coLinux-stable      : coLinux-0.7.3.exe  2008-06-08 版   4,854,912 bytes
Images 2.6.x Fedora : Fedora-10-20090228.exe           169,622,772 bytes

です。

例によって WinPcap は、Wireshark (ethereal の名前が変わったもの) を入れたときに一緒にインストールしてあります。早速、coLinux をインストールしてみます。

(1) coLinux-0.7.3.exe を実行します。

(2) 「Next」ボタンをクリックし、「I Agree」ボタンをクリックすると、「Choose Components」画面になります。今回は、「Select components to install」の「Root Filesystem image Download」は、事前 にダウンロードしてあるのでチェックボックスのレ点をはずしました。

(3) 同じく「coLinux」 は全部選択しました。具体的には、「詳細」をクリックすると表示される以下のすべてを選択します。

  「Native Windows Linux Console(NT)」、
  「Cross-platform Linux Console(FLTK)」、
  「Bridged Ethernet(WinPcap)」、
  「Virtual Ethernet Driver(coLinux TAP-Win32)」、
  「Virtual Network Daemin(SLiRP)」、
  「Virtual Serial Device(ttyS)」、
  「Debugging」

  FLTKは、a cross-platform C++ GUI toolkit (http://www.fltk.org/ ) のことらしいです。

(4) 「Next」ボタンを押すと、「Choose Install Location」画面になります。ここで「Destination Folder」を、
  C:\coLinux としました。

(5) 「Next」ボタンを押すと、インストールが始まりました。ちょっと遅いのは、TAP-Win32 INSTALL のところです。
  これは使わないのですが念のため入れておきました。Completed と出れば完了です。「Next」ボタンを押して、
  「Finish」ボタンを押すと、README.txt ファイルが表示されてインストール終了です。


これによって作成された、C:\coLinux フォルダの中身は以下のとおりです。

 netdriver\
 cofs.txt (cofs の説明)
 colinux-bridged-net-daemon.exe (Bridge Ethernet を選択すると得られる。)
 colinux-console-fltk.exe
 colinux-console-nt.exe
 colinux-daemon.exe
 colinux-daemon.txt (colinux-daemon の説明)
 colinux-debug-daemon.exe (Debugging を選択すると得られる。)
 colinux-net-daemon.exe
 colinux-serial-daemon.exe
 colinux-slirp-net-daemon.exe
 debugging.txt (Debugging を選択すると得られる。)
 example.conf (設定ファイル、XML形式ではなくなった)
 initrd.gz
 linux.sys
 NEWS.txt
 README.txt
 Uninstall.exe
 vmlinux
 vmlinux-modules.tar.gz

ここでは、 WinPcap を使うので、colinux-bridged-net-daemon.exe は必須です。これが無いとcmd.exe のウィンドウの最初に以下のメッセージがでてネットワークが使えません。

 PID: 3196
 error 0x2 in execution
 WARNING: error launching network daemon!
 colinux: booting

ルートファイルシステムの展開は次回に行います。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする