Windowsで書いてcoLinux環境で実行

Core2で速いPCをオフィスに置いたので、coLinux環境作ってみた。

coLinuxで快適開発環境1 の記事がとても参考になりました。

ダウンロード

http://www.colinux.org/ のDownloadから、 coLinux-0.7.1.exe を落とします。あと、下のほうに2.4系と2.6系のkernelのイメージが何個ずつか置いてあるので、好きなものをダウンロードします。僕は Debian-4.0r0-etch.ext3.1gb.bz2 をダウンロードしました。

coLinux本体のダウンロード

coLinux-0.7.1.exe を実行してインストールします。インストール先は、c:/coLinux としました。インストールする内容は、Root Filesystem image Download のチェックをはずして、あとは coLinux 内の上4つを選択すればOKで、途中TAPの警告は続行でOK。これでcoLinux本体のインストールは完了します。

Debianのインストール・設定

さきほどダウンロードしたDebianの bz2 ファイルを解答すると、Debian-4.0r0-etch.ext3.1gb というファイルがあるはずなので、これを c:/coLinux フォルダへ移動します。インストールはこれで終わりです。

次に、起動の設定を行います。c:/coLinux に start-Debian.bat のようなバッチファイルを作り、中身に以下のように記述します。mem は使用するメモリ量、cobd0 はカーネルのイメージ、codb1はスワップのイメージみたいです。最後に ネットワークの設定をするようです。 tcp:Windows側から見たポート:coLinuxのポート という形で書くようです。以下の例だと、 Windowsの 127.0.0.1 の 8022番ポートが coLinux側の 22番ポートへ向いていることになります。Webサーバ、Railsの開発環境くらいが思いついたので以下のようになってます。あと、RascutとかMySQLのポートも追加したほうが使いやすいかも。

実際は一行で書かないとだめです。

colinux-daemon.exe
 kernel=vmlinux
 initrd=initrd.gz
 mem=256
 cobd0="C:/coLinux/Debian-4.0r0-etch.ext3.1gb"
 cobd1="C:/coLinux/swap.img"
 root=/dev/cobd0
 eth0=slirp,,tcp:5901:5900/tcp:8022:22/tcp:8080:80/tcp:13000:3000 ro

起動

先ほど作った start-Debian.bat から起動します。初回起動時は、user: root / password : root がデフォルトで設定されています。起動したときからネットワークにつながっていますが、ping はつながらないので疎通テストで ping を打っても何も帰ってきませんので、wget でテキトーなURLたたいてみるとわかるかも。

Windows側からputtyなどでつなぐ場合は、SSHサーバが起動しているとして start-Debian.bat で設定した SSHのポートへ向けたWindows側のポートにつなぎに行けばOKです。上の例だと tcp:8022:22 としているので、coLinux側で22番でSSHサーバを立ち上げておけば、Windowsからputty等で 127.0.0.1 の 8022番ポートでつながります。

coLinuxからWindowsのフォルダをマウント

sambaでつなぎにいきます。たぶんこれだけでいけたはず。

# apt-get install smbclient smbfs

適当にマウントポイント作ります。

$ mkdir /home/chihaya/windows
$ mountpoint -d /home/chihaya/windows

Windows側で共有フォルダを作成します。フォルダ名はなんでもいいです、共有名が参照される名前になります。ここでは Windows側に linux_share という共有フォルダを作っておきます。IPアドレスは 192.168.1.10 だったと仮定して進めます。

coLinux側からlinux_shareフォルダをマウントします。ファイルシステムは smbfs になります。

# mount -t smbfs //192.168.1.10/linux_share /home/chihaya/windows -o username=chihaya,password=mypass

エラーメッセージが出なければマウントされているはずです。ためしに、Windows側で linux_shareフォルダにファイルを作って、ls /home/chihaya/windows とすれば、見れているはずです。無事マウントできることを確認したら、 起動時に常にマウントされるように /etc/fstab に書いておきます。一番下に、以下の行を追加します。

//192.168.1.10/linux_share   /home/chihaya/windows   smbfs   rw,username=chihaya,password=mypass   0   0

ちなみに、NFSについてはNFSでネットワーク越しにマウント とかで詳しく。

容量を増やす

作業していたら、セッションのファイルを作る空き容量がないとか言われた…。見てみると、デフォルトでは1GBしか容量が確保されていないので、すぐいっぱいになってしまう。

http://clouder.jp/yoshiki/mt/archives/000406.htmlの記事を参考にして容量9.4GBにしたよ。

Windows側のコマンドプロンプトで、以下の操作をする。(c:\coLinux は coLinux のインストールディレクトリ)

C:\coLinux>fsutil file createnew disk10gb.img 10000000000

これで、100… バイトのイメージが出来る。これをcoLinux側から ext3 でフォーマットする。

上の方で作ったバッチファイルに、以下を追加。codb1=… の直後で。

cobd2="C:/coLinux/disk10gb.img"

これで coLinux を再起動します。すると、/dev/cobd2 にさきほどのイメージがあるはずなので、これをフォーマットします。その後、現在のルート直下の内容をコピーします。

# mkfs.ext3 /dev/cobd2
# mkdir /mnt2
# mount -t ext2 /dev/cobd1 /mnt2
# cd /
# tar cpf - `ls -1 | grep -v proc | grep -v mnt2` | (cd /mnt2; tar xpf -)
# mkdir /mnt2/proc

あとは、coLinux起動時のパラメータを変えてバッチを作ります。

実際は一行で書かないとだめです。

colinux-daemon.exe
 kernel=vmlinux
 initrd=initrd.gz
 mem=256
 cobd0="C:/coLinux/disk10gb.img"
 cobd1="C:/coLinux/swap.img"
 root=/dev/cobd0
 eth0=slirp,,tcp:5901:5900/tcp:8022:22/tcp:8080:80/tcp:13000:3000 ro

これで設定は終わり。共有フォルダでコード書いてれば、書いたり調べたりはWindowsで行って、実行はlinuxみたいな感じで使える。Linuxじゃないと環境作るのが難しいものがあったりするから、そういうので有効に使っていけるといいね。

Windowsで書いてcoLinux環境で実行