coLinuxを導入して,Windows上でLinuxを快適に動かそう

coLinuxは,Windows上で動くLinux専用エミュレーターだ。読み方は「コーリナックス」らしい。

ボクは以前からcoLinuxをアプリケーションの開発に使っている。みんなは,エミュレーターと聞くとネイティブで動かすのと比べて重いイメージがあると思っているんだろうけど,こいつは専用だけあって十分に快適なスピードでLinuxを動かすことが出来るんだ。
Linuxにはプログラミングのための強力なツールが簡単にインストールできるから,プログラミングライフを快適にそして加速させてくれる。
ただ単にマシンにLinuxをインストールするという選択肢もあるんだけど,ボクらはXのもっさり感が好きじゃないからね。

今回は,この最高にクールなcoLinuxの導入方法を紹介しちゃおう。

coLinuxをダウンロードする

Snapshots」ここから安定版のcoLinuxを落してこよう。stable branchって書いてあるところだ。ボクが落したときの最新安定版は「stable-coLinux-20080524.exe」だった。
開発版(devel-coLinux-20090113.exe)も試してみたんだけど,ネットワークアダプタの設定がうまくいかなかった。

インストール

インストーラーを立ち上げて,まず始めの選択肢は次のようなものだ:

coLinuxがネットワークに接続するためのドライバやプログラムがいくつか用意されていて,採用する接続方法でインストールしなければならないプログラムが変わる。そして僕らは,いつでも一番簡単な方法を好む。

  • Cross-platform Linux Console(FLTK) - これはcoLinuxで使うコンソールプログラムで,今回はcolinuxがちゃんとインストールできたかを確認するために使う。
  • Virtual Network Daemon(SLiRP) - coLinuxがネットワークに接続するためのプログラムで,用意されている接続方法の中で一番簡単に設定(Windows側での設定がまったくない)できる。

チェックするのはこれだけで,他のチェックは全部外してしまおう。「Root Filesystem image Download」も外す。
あとはそのまま進めればインストールが完了する。

設定ファイルを書く

A. 新しくLinuxを使いたい場合

Windowsを使っている大半の人はこちらの場合を参考にすればいいんじゃないかな。そうならば,下のB. は読み飛ばして構わない。
coLinuxエミュレーターだから実行にはLinux本体が必要だ。必ずしも,Linux本体はHDDに直接インストールする必要は無くて,用意されている,LinuxをインストールしたHDDを仮想化したイメージファイルを使えばいい。
イメージファイルはこちらからダウンロードしてこよう:
SourceForge.net: Cooperative Linux: Files
いくつかのディストリビューションが用意されているんだけど,ボクはDebianを使っている。Downloadをクリックして次にファイルを選択しよう。このときの最新版は「Debian-4.0r0-etch.ext3.1gb.bz2」だった。サイズが大きいから少し時間が掛かるかもしれない。
bz2という形式で圧縮されているから,各自お気に入りの解凍ソフトで解凍しよう。解凍できたら短く解りやすい「debian.img」にリネームする。
それと,ここからスワップのイメージファイルもダウンロードしてこよう:
Index of /colinux/swap
いくつかのサイズが用意されている。スワップとはWindows仮想メモリに相当するもので,一般的にスワップサイズは物理メモリの二倍用意することが良いとされている。今回はcoLinuxにはこれから128MBのメモリを割り当てる予定だから,256MBのイメージファイルをダウンロードすればいいね。これもLinux本体と同様に解凍して,「swap.img」にリネームする。

この二つのファイル(debian.img, swap.img)はcoLinuxがインストールされているフォルダ「C:\Program Files\coLinux」に移動する。
そしたらそのフォルダに「debian.conf」という名前で設定ファイルを作成する。

設定ファイルには次のようなテキストを記述する:

kernel=vmlinux
root=/dev/cobd0
initrd="c:\Program Files\coLinux\initrd.gz"
cobd0="c:\Program Files\coLinux\debian.img"	# Linux本体の指定
cobd1="c:\Program Files\coLinux\swap.img"	# スワップの指定
mem=128						# 使用するメモリの指定
eth0=slirp,,tcp:2222:22/tcp:8080:80		# 接続方法

ボクらが気を付けるべきところは太字の部分だ。cobd0=にはLinux本体を,cobd1=にはスワップを指定してあげよう。
eth0=には接続方法を記述する。前述の通り今回は一番設定の簡単なSLiRPを採用した。

B. ディユアルブートを使っていて,別パーティションLinuxを動かしたい場合

こちらを参考にする人は,そこそこかとても知識がある人だろうし,助長な説明は退屈だろうと思うから,なるべく短く必要な情報だけ記述しよう。
coLinuxは,例えば次のようにして一番初めのHDDの先頭のパーティションを指定できる:

sda0="\Device\Harddisk0\Partition1"

ボクの設定ファイルは次のように記述してあって,太字の部分を適当に変える必要がある:

kernel=vmlinux
root=/dev/sda2
initrd="c:\Program Files\coLinux\initrd.gz"
sda1="\Device\Harddisk2\Partition2"
sda2="\Device\Harddisk2\Partition3"
sda3="\Device\Harddisk2\Partition4"
mem=128
eth0=slirp,,tcp:2222:22/tcp:8080:80

いよいよcoLinuxを起動してみよう

コマンドプロンプトを開いて,次のコマンドで作業フォルダを移動する:

>cd C:\Program Files\coLinux

そして次のコマンドで設定ファイルを指定coLinuxを起動する:

>colinux-daemon @debian.conf

どうかな?起動すれば次のようなコンソール(FLTK)が現れる:

debian login:」と文字が表示されているからここにログインユーザー名,そしてパスワードを入力しよう。
ダウンロードしてきたイメージファイルを使用している場合,それぞれ次を入力する:

ユーザー名: root
パスワード: root

Linuxではブランクパスワードといってパスワードの入力に文字が表示されないから。Windowsのようにパスワードの入力で*が表示されなくても心配しないでね。

Linux側の設定

coLinuxがネットワークに繋がるにはLinux側であと少しだけ設定をしなきゃいけない。
次のコマンドでネットワーク設定ファイルを編集しよう:

#nano /etc/network/interfaces

次のような画面になる:

ボクらが書き換えるか書き足すのは次の二つの行だ:

auto lo eth0

この行にeth0を無ければ追加する。これは起動時に有効にされるインターフェイスで今回はeth0を使う。

iface eth0 inet dhcp

「iface eth0 inet 」にはeth0の接続方法を指定する。無ければ書き足し,今回はdhcpと指定してあげよう。

書き換えたらCtrl-oと打ってエンターで変更を保存,Ctrl-xで編集を終わろう。
そして,次のコマンドで設定を反映させる:

#ifdown eth0; ifup eth0

ネットワークに繋がっているか確認してみよう

pingというコマンドでネットワークが繋がっているかを確かめられるから,ローカルネットワークのルーター[192.168.1.1(環境によっては192.168.0.1かもしれない)]にpingが届くか確認してみよう:

#ping 192.168.1.1

次のような返事が返ってくれば正常に繋がっている証拠だ:

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=10.0 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.000 ms

Ctrl-cでpingを終わる

同じように外部にもpingが届くか確認してみよう:

#ping 0.pool.ntp.org
PING 0.pool.ntp.org (64.247.17.249) 56(84) bytes of data.
64 bytes from ns1.kirkforcongress.com (64.247.17.249): icmp_seq=1 ttl=255 time=220 ms
64 bytes from ns1.kirkforcongress.com (64.247.17.249): icmp_seq=2 ttl=255 time=210 ms

sshで接続しよう

インストーラーで入れたコンソール(FLTK)は単純な機能しか提供してくれないので,高機能なsshクライアントを使って接続してみよう。
sshで通信をするにはLinux側にsshサーバーが入っていないといけないから,インストールしよう。
通常,Linuxのアプリケーションはリポジトリで管理されていて,コマンドを使うことで簡単にインストールできる(Windowsのようにインストーラーを探してきてインストールするといった手間が無いんだ)。
次のコマンドでリポジトリ情報を更新して:

apt-get update

次のコマンドでsshサーバーをインストールできる:

apt-get install openssh-server

そしたら,windows側からお気に入りのsshクライアントを起動して接続してみよう。
ボクは「PuTTY ごった煮版」を使っている。

次のように入力してして接続してみよう:

ホスト名:localhost
ポート:2222

ログイン画面が現れれば成功だ。
sshの接続の時に警告がでるかもしれないけど,そのときは「はい」をクリックしないと先に進めないよ。

coLinuxをバックグラウンドで起動させよう

sshで接続することができたから,もうコンソール(FLTK)はいらないね。coLinuxを起動するのにいちいちコマンドプロンプトを開くのも面倒だから,coLinuxWindowsのサービスとして登録して,バックグラウンドで起動させよう。
先ほど開いたsshクライアントを閉じて,コンソール(FLTK)のメニューバーからシャットダウンをクリックし,コンソール(FLTK)を閉じ,coLinuxを終了しよう。
前項で開いたコマンドプロンプトだけ残るので(閉じてしまったら前項を参考にプロンプトを開き作業フォルダを移動しよう),次のコマンドを実行する:

colinux-daemon.exe @debian.conf --install-service "coLinux"

コントロールパネル>管理ツール>サービス
と進んでWindowsサービスにcoLinuxという項目が追加されていることを確認しよう
そしたらその項目のプロパティを開き,次のように設定しよう:

スタートアップの種類を「自動」にすれば,Windows起動時にcoLinuxがバックグラウンドで起動されるようになる。
そしてサービスの開始をクリックすればcoLinuxがバックグラウンドで起動される。

これで必要最低限の設定はおしまい!

あとはsshクライアントのフォントやサイズを設定して,日本語を使う場合は文字コードUTF-8にしておこう。

これでおしまい。
やったね。よく出来ました!

以上の解説で解らないことがあればコメント欄で遠慮せずに質問してね,だってこの解説はcoLinuxを君に使って欲しくて書いたんだから。