coLinuxが最近ずいぶん安定してきたらしいので入れてみることにした。
現在、めでたくWinXPとDebian sargeがデュアルブート可能になっている。ここでcoLinux 0.6.2をインストールして、デュアルブート且つWinXPからcoLinuxとしてもDebianを利用可能という状態を目指す。
主に次の資料を参考にした。
公式サイトより、インストーラー(colinux-0.6.2.exe)を取得。
TAPにてネットワークを提供する予定なので、WinPcapは不要。またファイルシステムイメージも不要。coLinux本体とTap-Win32のみをインストールする。

インストール先は"C:\coLinux"とした。
c:\coLinux\vmlinux-modules.tar.gzをDebian側に移す。方法は何でも良いが、私はFAT32のパーティションを経由した。
runlevel 4をcoLinux専用のレベルとして使うことにする。/etc/rc4.d/はあらかじめ、それを想定して適当に設定しておく。とりあえず重要なのはgdmを起動しない設定にしたぐらい。
先ほどのvmlinux-modules.tar.gz内の2.6.10-co-0.6.2以下を/lib/modulesに配置。その後、update-modulesする。
再びWinに戻ってC:\coLinuxで作業する。設定ファイルdefault.colinux.xmlをコピーして、それをベースにcolinux-debian-sarge.xmlを作成。パーティションは昨日の記事に書いた通りに切ってあるので、それに合わせるとcolinux-debian-sarge.xmlの内容はこんな感じ。Debianの単独起動時と/etc/fstabを共用できるように、ブロックデバイスに適宜aliasを作成してある。
<?xml version="1.0" encoding="UTF-8"?>
<colinux>
<!-- /etc/fstabが参照しているブロックデバイスを定義 -->
<!-- (root) -->
<block_device index="0" alias="sda7" path="\Device\Harddisk0\Partition6" enabled="true" />
<!-- (swap) -->
<block_device index="1" alias="sda6" path="\Device\Harddisk0\Partition5" enabled="true" />
<!-- /home -->
<block_device index="2" alias="sda8" path="\Device\Harddisk0\Partition7" enabled="true" />
<!-- original /boot -->
<!-- このデバイスは不要だが、マウント失敗のメッセージが鬱陶しいので一応定義しておく。 -->
<block_device index="3" alias="sda5" path="\Device\Harddisk0\Partition4" enabled="true" />
<!-- /interos -->
<block_device index="4" alias="sda9" path="\Device\Harddisk0\Partition8" enabled="true" />
<!-- /media/cdrom -->
<block_device index="5" alias="hda" path="\Device\Cdrom0" enabled="true" />
<!-- /media/floppy0 -->
<block_device index="6" alias="fd0" path="\Device\Floppy0" enabled="true" />
<!-- bootparams allows you to pass kernel boot parameters -->
<!-- ランレベルは4を使用 -->
<bootparams>ro 4 root=/dev/sda7</bootparams>
<!-- Initial RamDISK (initrd) support -->
<initrd path="initrd.gz" />
<!-- image allows you to specify the kernel to boot -->
<image path="vmlinux" />
<!-- this line allows you to specify the amount of memory available
to coLinux -->
<memory size="128" />
<!-- This allows you to modify networking parameters, see the README
or website or wiki for more information -->
<network index="0" type="tap" />
</colinux>
コマンドラインから次のように起動。
colinux-daemon.exe -c colinux-debian-sarge.xml -t nt
以上で、一応起動に成功した。メモリの割り当てが128MBだとちょっと動作が重い。物理メモリは1GBあるので、もうちょっと割り当ててやってもWinの動作は問題ない気もする。
coLinuxからネットワークにつなぐには、何とかしてcoLinuxからのパケットをネットワークに中継してやらなければならない。WinXP自身がルーターになるとか、いろいろ方法はあるらしいが、WinXPの場合ネットワークブリッジを作ってしまうのが簡単でパフォーマンスもよいらしい。
WinXPの「ネットワーク接続」を開いて、作成されているTAP-Win32のネットワークアダプタの名前をTAPに変更。
「TAP」と「ローカルエリア接続」を選択して、右クリックメニューから「ブリッジの作成」を選択。ブリッジが作成される。
うちの環境の場合、DHCPを使うようになっているのでこれで設定終了。あとは今行った変更を読み込ませればおしまい。
WinXP側は、なんか初めはpingも通らなかったけれど、暫くしたらネットワークブリッジが勝手にIP等取得してつながるようになった。coLinux側は/etc/init.d/networking restartでネットワークを再初期化。
とりあえず、こんな感じ。今はcoLinuxとして起動した場合、デフォルトの2.6.10-co-0.6.2カーネルを使ってることになるのだけれど、そのままだと多少不便もあるのでそのうちカーネル再構築してみる予定。とりあえず、debianのunstableからkernel-source-2.6.10だけインストールしておいた。