はじめに
自宅や職場のマシンでは、VMware Player や VirtualBox を使って Windows 上の仮想マシンに Linux をインストールして使っていますが、僕の持っているノートパソコン (VAIO X) は薄い代わりに非力なので、動作が軽いと噂の coLinux を入れてみることにしました。
coLinux は昔、10年くらい前に使っていたことがあって、その当時のノートパソコン (Celeron M 1.3MHz, 256MB RAM) でも十分に動作していたので、VAIO X (Atom Z550 2.00GHz HT, 2GB RAM) でも結構いけるんじゃないかと思いまして。
coLinux の開発はほとんど止まっているみたいで、Windows 64bit に対応させようという動きもあるようですが、まだまだ時間が掛かりそうです。
なので、メインマシンの Windows 7 64bit 上に仮想マシンを構築するときには、候補として coLinux という選択肢は選べなかったのですが、VAIO X の OS は Windows 7 32bit なので、なんの問題も無く導入できました。
手順
coLinux で用意されている Linux のイメージファイルはとても古いので、空の仮想 HDD のイメージファイルを用意し、そこに CentOS 6.5 を自分でインストールします。
以下のサイトで CentOS 5.6 のインストール方法が紹介されていますが、基本的にはこの通り作業を行います。
手順としては、以下のようになります。
- coLinux のインストール
- QEMU のインストール
- KQEMU のインストール
- 仮想 HDD ファイルの作成
- QEMU を使って CentOS 6.5 をインストール
- QEMU で CentOS 6.5 にログインして inode を作成
- dd コマンドで仮想 HDD ファイルを coLinux 用に加工
- coLinux の設定
- coLinux の起動
- ネットワークの設定
- coLinux をサービスに登録
ここでは、上記のサイトの通りにやってうまくいかなかった点だけ紹介していきます。
4. 仮想 HDD ファイルの作成
容量はこことか使って計算しました。
C:\> md C:\coLinux\CentOS
C:\coLinux\CentOS> fsutil file createnew swap.512mb 536870912
C:\coLinux\CentOS> fsutil file createnew root.3gb 3221225472
5. QEMU を使って CentOS 6.5 をインストール
QEMU という仮想マシンを使って CentOS をインストールします。
インストールディスクには、CentOS-6.5-i386-minimal.iso を使いました。
C:\usr\qemu> qemu.exe -hda C:\coLinux\CentOS\root.3gb -hdb C:\coLinux\CentOS\swap.512mb -cdrom C:\coLinux\CentOS\CentOS-6.5-i386-minimal.iso -m 1024 -boot d -L .
しかし、これがとても重いので、KQEMU というソフトを使って高速化します。
これでだいぶ早くなるようなのですが、CentOS 6.5 のインストールは GUI で行われるので1 、それでも VAIO X では時間が掛かりすぎて、インストールできませんでした。
そこで、デスクトップマシンでインストールを行い、ノートパソコンにイメージファイルをコピーすることにしました。
うちのデスクトップマシンは、Windows 7 64bit なので、KQEMU による高速化は行えませんが、それでもだいぶ早く進みました。2
インストールができたら次のステップに進みます。
6. QEMU で CentOS 6.5 にログインして inode を作成
ここちょっと何やってるのかわからない。
# cd /dev
# for i in `seq 1 10`; do mknod cobd$i b 117 $i; done
7. dd コマンドで仮想 HDD ファイルを coLinux 用に加工
CentOS 5.6 の時代は、先頭から 63 セクタを切り取っていましたが、最近の OS ではここの大きさが変わったそうです。
以下のサイトに書いてあるように、2048 セクタを切り取ります。
僕の環境では Cygwin がインストール済みだったので、Cygwin の dd コマンドを使いました。
dd if=/cygdrive/c/coLinux/CentOS/root.3gb of=/cygdrive/c/coLinux/CentOS/root.3gb.ext4 bs=512 skip=2048
8. coLinux の設定
conf ファイルを gist にアップしましたので参考にして下さい。
イメージファイルのファイル名には適当に .fs って拡張子付けました。
TAP の MAC アドレスは、coLinux で CentOS にログインして、ifconfig -aで確認して出てきた MAC アドレスを設定しました。
9. coLinux の起動
設定ファイルが centos.conf だとすると、起動コマンドは次のような感じです。
C:\coLinux> colinux-daemon.exe @C:\coLinux\centos.conf -t nt
起動時にエラーが出たので、以下のサイトを見てドライバをインストールしました。
C:\coLinux> colinux-daemon.exe --install-driver
10. ネットワークの設定
まず Windows 側で、TAP に IP を割り当てます。
僕はとりあえず、192.168.100.1としました。
次に、CentOS 側で固定 IP の設定をします。
NETWORKING=yes
HOSTNAME=colinux
GATEWAY=192.168.100.1DEVICE=eth1
BOOTPROTO=none
HWADDR=00:FF:AE:0F:18:00
ONBOOT=yes
DEFROUTE=yes
IPADDR=192.168.100.40
NETMASK=255.255.255.0
PEERDNS=no
GATEWAY=192.168.100.1
IPV6INIT=yesnameserver 8.8.8.8
nameserver 8.8.4.4これで Windows から CentOS へは ping が通るようになったのですが、逆が通りません。
どうやら Windows 7 のファイアウォールが邪魔をしているようです。
「ネットワークと共有センター」を見ると、TAP に繋がっているネットワークが、「識別されていないネットワーク」になっており、これが「パブリックネットワーク」に分類されています。
ここを「ホームネットワーク」に変更できればよいのですが、そうするためには、Windows 7 Home Premium の場合レジストリをいじらなくてはならず、難しそうだったので3 、ファイアウォールの設定の方を変えることにしました。
ファイアーウォールの「受信の規則」で、192.168.100.40からのアクセスを許可します。
ファイアーウォールの設定については、まだちょっと不安が残るので、時間ができたらまた調べてみます。
もしかしたら CentOS 側で DHCP サーバーを立てれば、Windows からネットワークが識別されるかも?
11. coLinux をサービスに登録
準備が整ったら、最後に coLinux を Windows のサービスに登録します。
C:\coLinux> colinux-daemon.exe @C:\coLinux\centos.conf --install-service "coLinux-CentOS"
サービスに登録すると、Windows の「管理ツール」の「サービス」から、Windows の起動時に自動的に起動するように設定できます。
感想
インストールにはだいぶ手間取りましたけど、わりと快適に使えています。
少し遅いのは確かですけど、Cygwin よりかは遙かに速いです。
いずれ、VMware との速度比較とかもやってみたいなあ。