CoLinux
インストールのログ(悪戦苦闘ともいう)は CoLinuxLog にあります
- coLinux とはなんですか
Windows(XP/2000)上で動くLinux のカーネルです。そのため、Windows のネイティブアプリとして、Linux のそのものが動作します
- なにがいいんですか
個人的には、ノートPCに、Windows と Linux の両方を入れておけること、そして、**同時**に立ちあげておけることが素晴しくいいです。自宅では二台(以上)動かしっぱなしにして、CPU switcher で切りかえることもできますが、流浪のモバイラ〜となっている現在では、二台持ちはこぶことは無理ですし
- ノートでも、パーティション切って入れておけると思いますが
**同時**に使用できることです。パーティション切って入れた場合、切り替えは早くても2分くらいかかりませんか?
ただ、難点もいくらでも挙げられますけど(^^;;
- 難点はなんですか
- 設定がわかりづらい。特にネットワーク
3ヶ月程度使ってますが、XP なら TAP + NAT がいいです。まぁ、ノートなので、母艦以外からアクセスさせることを考えなくてもいいというワリキリが前提ですが
また、Debian 初使用だったので、そっちでひっかかった時間も多かったです。いまは Fedora Core 3 ベースにしました。こっちのほうが慣れてていいです
- X がネイティブでない
それだけではなく、cygwin は必須だと思ったほうがいいです
cygwin X よりは Xvnc + UltraVNC のほうがパフォーマンスやカスタマイズ性はよいと個人的には感じます
- 0.6.1 と 0.6.2 が続き番号なのに全然連続性がない
TAP デバイスの ver. も違うので、同時に使えません。2.4 は捨てさることになってしまいました・・・
思いつくのはこんなとこかな・・・
- 設定がわかりづらい。特にネットワーク
- ネットワークと Xは致命的じゃないですか
ネットワークはなんとかなりました。X は vnc に頼ってますが、現実的な速度で使えます。この文章も、データセンタのPlone を母艦経由で coLinux の Xvnc(+ Windowsの UltraVNC)で表示している Firefox 1.0 から external Editor で emacsclient で書いてますが、違和感も遅さもありません
逆に、Windows で IE, Mozilla、Linux で Firefox なんてのの見栄えをチェックするには最高ですよ
- 遅くないですか
母艦のメモリは最低512MBでしょう。そのうえ、WindowsXP の設定をいじってなるべく軽くする必要があると思います。私は768ですが、同時使用時に重いアプリをうごかしまくったりしなければそんなにひどく遅い感じはありません
- 使ってみたくなりました。慣れてる Fedora がいいです
http://www.geocities.co.jp/SiliconValley/1596/coLinux/colinux.html
がとっても参考になるでしょう、というか、スバラしいデス。これで一発インストールです。
ただし、cygwin で X も入れておく必要があります。最初に system-config-package するときにあったほうが楽です
わたしの環境ではちゃんと動きませんでしたが、充分に参考になってホント、たすかりました。動かなかったのは、私がすでにいろいろ入れていて、手も入れてたせいだと思います。ssh のとこをみて、これは通らないなと思いました。cygwin で ssh の設定をほとんどしてない状態であることが必須のスクリプトかなぁ、と思いました
- 2GB だとすぐうまってしまうのですがどうしましょ
Fedora でいろいろ入れてると2GBなんてすぐですね。
expand は難しそうなのであきらめて、別のファイルを root fs にすることにしました。
- まず、cygwin で5GBのファイルを作ります。ただ、cygwin は bc のためだけに使っているので、コマンドそのものは cmd でも実行できます
$ fsutil file createnew rootfs5.fs `echo ’1024*1024*1024*5’ | bc`
- conf.xml に項目追加
<block_device index="2" path="\DosDevices\v:\colinux\rootfs5.fs" enabled="true"> </block_device>
あっしはblock_device を閉じわすれました(^^;; - coLinux を再起動
- mkfs.ext3 /dev/cobd2
ext3以外がよければそうしてください。
- mount /dev/cobd2 /mnt
- cd / ; find [a-lnoq-z]* | cpio -pdum /mnt
- cd mnt; mkdir mnt proc
- shutdown -h now
- mkfs.ext3 /dev/cobd2
- conf.xml を編集します
block_device の "0" と "2" を交換しましょう
- coLinux を起動すれば、あたらしい root fs になっているはずです(この場合5GB)
- まず、cygwin で5GBのファイルを作ります。ただ、cygwin は bc のためだけに使っているので、コマンドそのものは cmd でも実行できます
- swap がない・・・
- ファイルを作りましょう(とりあえず512MB)
$ fsutil file createnew swap.fs `echo ’1024*1024*512’ | bc`
- conf.xml に項目追加
<block_device index="1" path="\DosDevices\v:\colinux\swap.fs" enabled="true"> </block_device>
- coLinux を起動して、mkswap /dev/cobd1 したあと、/etc/fstab を編集
/dev/cobd1 none swap sw 0 0 という行を追加する
- ファイルを作りましょう(とりあえず512MB)
- 突然ネットワークが動かなくなりました
それはわたしのように、少しでも軽くしようとして、Windowsのサービスのうち、Routing を止めませんでしたか?winpcap の場合は、routing サービスは不要ですが、TAPの場合は必要です。
- でもさらにネットワークでハマります
そう思います。あなたのPC も、無線、有線両方内蔵で、しかも両方場合分けして使うんではないでしょうか。
- 無線なら TAP でないとうまくいきません
適当なIP を設定して、TAPデバイスを上げときましょう。無線でブリッジはうまくいかないことが多いので、外からcoLinux が見えませんが、共有でやりましょう。そんなにしょっちゅう環境がかわるならモバイルってことですよね?まぁ、見えなくてもいいじゃないですか・・・
- 有線なら winpcap がお手軽です。
インストールしてください。coLinux もDHCPクライアントとして動作させるとさらにお手軽です(DHCP環境の場合だけですが)
- 無線なら TAP でないとうまくいきません
- コマンドラインから毎回入力するのは面倒だし、ネットワークの設定とか、片方は固定で片方はDHCPだったりすると、起動時に毎回止まったりして面倒です
- まずシェルスクリプトにしましょう(cygwinから起動してます < jack)
#!/bin/sh # 必要なことがあったらこのヘンに追加 v:/coLinux/colinux-daemon.exe -c $*
- xml ファイルを複数作り、前述のシェルスクリプトに食わせるデスね。
- まずはTAP 用
<?xml version="1.0" encoding="UTF-8"?> <colinux> <block_device index="0" path="\DosDevices\v:\colinux\root.fs" enabled="true"> <block_device index="1" path="\DosDevices\v:\colinux\sw1.fs" enabled="true"> <block_device index="2" path="\DosDevices\v:\colinux\swap.fs" enabled="true"> </block_device> <bootparams>root=/dev/cobd0</bootparams> <image path="vmlinux"></image> <memory size="128"></memory> <network index="0" type="tap"></network> </colinux>
- 次にWPcap 用
<?xml version="1.0" encoding="UTF-8"?> <colinux> <block_device index="0" path="\DosDevices\v:\colinux\root.fs" enabled="true"> <block_device index="1" path="\DosDevices\v:\colinux\sw2.fs" enabled="true"> <block_device index="2" path="\DosDevices\v:\colinux\swap.fs" enabled="true"> </block_device> <bootparams>root=/dev/cobd0</bootparams> <image path="vmlinux"></image> <memory size="128"></memory> <network index="0" type="bridged"></network> </colinux>
- /etc/fstab で /dev/cdbd1 を /sw あたりにマウントするようにして、/etc/network/interfaces あたりは /swにおいてシンボリックリンクするようにすると、環境毎に設定を切りかえられると思うです。
- でも、DNSの設定は母艦がDHCP設定なので毎回違うのでどうにかしたいのですが
TAPの場合は、母艦側がDNSをリレーしてくれるので、/etc/resolv.conf に 192.168.246.1(Windows側のTAP LANのIP) を書いておけばいいです。
- なんかうまくいきません
答えようが無いですよ・・・それ。でも、気持ちはわかります。てゆーかそうなったっす。
どこかでいろいろ見た気がするのですが、ぐーぐるセンセに聞いても同じページに行きあたらない(探しかたが悪いだけ)のでメモしておきます。
- netsh dump > netsh.backup で、現状のネットワーク設定が取れます
- netsh -f netsh.backup で、その状態まで戻せます
- シェルスクリプトに漢字とかはいってるのはキモチワルイので、コントロールパネルから、ワイヤレスとTAPのやつをrename して、Wireless と TAPLAN に変えてみました
- で、もいっこシェルスクリプトを書きます
#!/bin/sh netsh routing ip nat install netsh routing ip nat add interface "Wireless" full netsh routing ip nat add interface "TAPLAN" private netsh routing ip dnsproxy install
うまくいくといいですねぅ。
**でも、モバイラ向けおすすめの設定は、TAP にして NAT(インターネット接続の共有)をネットワーク接続画面から有線、無線切りかえることです**
そうすると、設定のスイッチも必要ないですし
/etc/resolf.conf は TAPの母艦側のIPを指定しておきます。外のDNS解決ができないようなら、cygwin上で
netsh routing ip dnsproxy install
としてみてください
- あれこれやってたら、うまくいかなくなったので、前のイメージ(コピーがあってよかった・・・)とかいろいろマウントしようとしてたら、ボリュームを一杯マウントしたくなりました。しかし、/dev/cobdは3までしかありません。もっとマウントしたいデス(これはdebian 1Gのイメージの話ですね。FC3 はだいじょうぶ)
coLinux 自体は
loop: loaded (max 8 devices) cobd0 size: 5242880 kb cobd1 size: 524288 kb cobd2 size: 1048576 kb cobd3 size: 5120 kb cobd4 size: 5242880 kb cobd: loaded (max 32 devices) conet: loaded (max 16 devices) conet0: initialized
といってくれてますので、loopback device として数えても8コ、cobd* が loopback 1コの扱いなら、32コはいけるはずです。
結論からいうと、ただ単にデバイスファイルが用意されていないだけです。
mknod -m 0644 /dev/cobd4 b 117 4 mknod -m 0644 /dev/cobd5 b 117 5 mknod -m 0644 /dev/cobd6 b 117 6
のように書けば増やせます。もちろん rootでないとダメですよ。**とりあえず5コ目はいけました**
- 2.4 base の 0.6.1 と 2.6ベースの 0.6.2 を併用したいです
TAP のバージョンが違い、うまくいきませんでした
- Fedore Core 3 にしたら kterm がありません。別のでもいいけど、kterm がやっぱり欲しいです
案外面倒でした・・・結論からいうと
http://www.macmil.co.jp/macmil/linux003.htm
で作ってくれたパッチが有効でした。
ソースを落してきて、パッチを二つあてて、xmkmf; make; sudo make install です
- Fedora Core 3 が重いです・・・
まあ、FC3(というか coLinux)に割けるメモリは128〜256がせいぜいでしょうから、それなりに工夫しないと厳しいと思います。
まずは system-config-package でサウンド・ビデオ系のものはどんどん削ります。プリンタも母艦側に頼っていいんじゃないでしょうか。わたしはまったく設定してません。これはあくまで開発環境?的に使っているので、人によるでしょう。
わたしの chkconfig --list | grep 3:on の結果は以下の通りです
network 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off cpuspeed 0:off 1:on 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off portmap 0:off 1:off 2:off 3:on 4:on 5:on 6:off xinetd 0:off 1:off 2:off 3:on 4:on 5:on 6:off jackx 0:off 1:off 2:off 3:on 4:off 5:off 6:off
ハードウェアを追加することはないので kudzu や pcmcia も不要ですよね。cron や at も不要なLinux 開発端末として割り切ってます。
jackx というのは Xvnc を上げるスクリプトです(sudo して jack で上げてます)
#!/bin/bash . /home/jack/scripts-vncstart/env cd /home/jack sudo -u jack -H vncserver :$XID -depth $DEP -geometry $GEO sudo -u jack -H /usr/local/bin/fvwm -display localhost:$XID &
このように vncserver と fvwm2 を上げ、.fvwm2rc で Xの設定をしてます。抜粋すると
AddToFunc InitFunction "I" Module FvwmButtons + "I" Desk 0 0 + "I" Exec exec xset +fp /home/jack/fonts + "I" Exec exec xset +fp /home/jack/monafont-2.90/dist + "I" Exec exec xset fp rehash + "I" Exec exec xsetroot -solid darkgray + "I" Exec exec kterm +sb -fn jpn.10x20 -fr jpn.10x20 -fk j16.20x20 -geometry 80x36+0+0& + "I" Wait kterm + "I" Desk 0 3 + "I" Exec exec /usr/local/bin/emacs -geometry 88x30+0+0 & + "I" Wait emacs + "I" Desk 0 0 EndFunction
自分用フォントとモナーフォントを足して、kterm と emacs を上げてるだけです。これで、.xinit を通らない問題も回避できます。
fvwm は、個人的には必要な機能(desktop切り替え、メニューカスタマイズ等いろいろ)が充分にあって軽いので便利です。KDEのようなハデさとは無縁ですが。
sshdも動いてて、X が上がって、Firefox から external Editor 経由 emacs で書いてる現状で36プロセスです。ロードは 0.1以下、メモリも free の結果を見れば余裕がちょっとあるみたいです
total used free shared buffers cached Mem: 208068 180068 28000 0 12340 102724 -/+ buffers/cache: 65004 163064 Swap: 524280 0 524280
なんと、スワップは使われてない・・・自分でもおどろいた(まぁ、だから軽いんだろうとは思うけど) - ssh(scp) で母艦と通信できるので困りませんが、デカいファイルを二重に置くのはムダっぽいデス
そーですね。「デカいファイル」が iso image なら
<block_device index="1" path="\DosDevices\f:\Downloads\FC3-i386-disc1.iso" enabled="true"/>
でcobdXに割りあててしまうこともできます。母艦側ではdaemontools とか使えば、どっちからでもiso image をマウントできます
あとは snapshot になりますが、colinux1024(0.6.2) を使うことで、cofs という、母艦参照ファイルシステムを使うことができます
ただ、日本語ファイル名はまったく使えません。asciiでないファイル名のあるフォルダでls してみたら
/bin/ls: /mnt/win Input/output error
などという、意味不明のエラーメッセージが出て、まいっちんぐ(古)でした。あと、個人的には、前述のようなことをして、xmlファイルがかなり長くなってしまっているので、http://scratchpad.fc2web.com/colinux/cofs-patch-20041024.html から、.xml で cofs が使えるように改造したバージョンをありがたくダウンロードさせてもらって使ってます
<cofs_device index="0" path="\DosDevices\c:\" type="flat" enabled="true" />
で、C:\Colinux にはAscii文字列からのみなるファイル名を置くようにして、coLinux 上で
# mount -t cofs cofs0:/Colinux /mnt/win
などとすると、coLinux 上から、C:ドライブが見えます。共通するファイルはここに置けば両方から見えます、が、まだ fstab に設定するほど勇気ないです > cofs
# user noauto で書いとけばいいか?