coLinuxで任意のディストリ/バージョンをandLinuxライクに使えるようにする!


coLinuxWindows上で動作するLinuxカーネルで、PCエミュレータよりも軽快に、Cygwinよりもネイティブに、デュアルブートよりもシームレスにWindowsLinuxを共存させるソフトです。

また、coLinuxをより簡単に使えるパッケージとしてandLinuxがあります。これは、coLinuxUbuntuがインストールされたディスクイメージを使い、Xmingを用いてGUIを利用できるようにまでしたものです。

andLinuxはインストールするだけですぐに使うことができ非常に便利なのですが、ディストリビューションがUbuntu7.10以外に選べないことが難点でした。特に、7.10は今年の4月にサポートが終了してしまったので、インストール直後にアップグレードしなければaptも使えません。

また、coLinux用のイメージファイルも存在するのですが、全てのディストリビューションが存在するわけではなく、最新バージョンのリリースからかなり遅れて出ることも多いです。

そこで、どうせならイメージファイルから自分で作って好きなLinuxを入れ、andLinux程度の使用感になるまでを一気に手順化してしまおう、というのが今回のモチベーションです。

用意するもの

まず用意するものは以下の通り。

  1. coLinuxの本体
  2. Linuxのisoイメージ
  3. QEMU
  4. CygwinLinuxなど、ddコマンドが使える環境
  5. XmingXming-fonts
coLinux本体

Cooperative Linux
coLinuxのサイト左側の「Downloads(binary and source)」から「coLinux-stable」の最新版をダウンロードします。

Linuxのisoイメージ

任意のディストリビューションのサイトからisoイメージ(CDもしくはDVD)をダウンロードします。
ダウンロードしたイメージを置くディレクトリを決め、そこを今後作業の拠点とします。場所はどこでも構いませんが、インストール後もファイル類を動かさないで済む場所(例えば後述するcoLinuxのインストールフォルダなど)にしましょう。このディレクトリを今後「IMAGEDIR」と表記します。

QEMU

http://homepage3.nifty.com/takeda-toshiya/
サイト左側の「QEMU on Windows」から「QEMU on Windows Ver 0.10.6」をダウンロードします。

XmingXming-fonts

Xming X Server for Windows download | SourceForge.net
サイトの「Download Now!」からXming本体をダウンロード。さらに下のほうの「Xming-fonts-(最新のバージョン)-setup.exe」をダウンロード。

各アプリケーションのインストール

必要なものが揃ったら、まずはインストールをしていきます。順番は関係が無いので好きな順でインストールしてください。

coLinuxのインストール

ごく普通にインストールしていきます。ただしイメージは自分で作成するので、「Choose Components」の画面で「RootFile system image Download」のチェックをはずします。
また、途中で「ハードウェアのインストール」の警告が出ますがそのまま続行してください。

なお、coLinuxをインストールしたディレクトリを今後「COLINUXDIR」と表記します。

QEMUのインストール

ダウンロードしたファイルを解凍し、適当な場所に保存します。

なお、QEMUをインストールしたディレクトリを今後「QEMUDIR」と表記します。

Xmingのインストール

ダウンロードしてきたインストーラXmingXming-fontsの順でごく普通にインストールしましょう。Select ComponentsはFull Installationで特に問題ありません。

イメージファイルの作成

ここからが気合の入れどころです。1つ1つしっかりと手順を踏みましょう。
まずコマンドプロンプトを開いてIMAGEDIRまで移動してください。
ここで、以下のようにコマンドを打ちます。

"QEMUDIR\qemu-img" create rootfs.img 5G
"QEMUDIR\qemu-img" create swap.img 256M

これで「rootfs.img」という5GBのファイルと「swap.img」という256MBのファイルが生成されるはずです。続いて次のコマンドを一行で打ちます。

"QEMUDIR\qemu" -hda rootfs.img -hdb swap.img -cdrom (CD/DVDイメージのファイル名) -net nic -net user -no-acpi -vga std -no-reboot -m 256 -L . -boot d

これでQEMU上でLinuxインストーラが起動するので、手順に従ってインストールしていきます。

Linuxインストール上の注意

Linuxをインストールする上で、大部分は自分の好みに設定しても良いのですが、パーティションの部分だけは十分注意しなければいけません。
パーティションを設定する画面では、rootfs.imgがsdaとして、swap.imgがsdbとして見えています。
ディストリビューションによって多少違いはありますが、「ディスクの全ての部分を使う」、「sdaとsdbを使う」、「パーティションの確認/変更を行う」という方針で選択していくと、パーティションの設定をする画面になります。
ここで、論理パーティションを一切使わずに(デフォルトで設定されていたら削除してください)、sdaの全ての領域を基本パーティションにし、ファイルシステムext3、マウントポイントは「/」(ルート)に、プライマリパーティションとして設定してください。またsdbも同様に、全ての領域で基本パーティションファイルシステムはswap、プライマリパーティションに設定します。
sdaのext3に関しては、ext2ext4、その他のファイルシステムでも可能かもしれません。とにかくパーティションを切らずに1つのディスクに対して1つのパーティションとなるようにします。
ここが終わればあとは自由にしても大丈夫だと思います。ただQEMUは動作が非常に遅くインストールに時間がかかるので、最小限のパッケージをインストールし、後からyumやaptで追加するのが良いかと思われます。

さて、次の作業には(本末転倒気味ですが)CygwinLinuxが必要になります。
先程Linuxをインストールしたイメージファイルを使い、Cygwin/Linux上でrootfs.imgに対して以下のコマンドを実行します。

dd if=rootfs.img of=rootfs-colinux.img bs=512 skip=63

ここで作成された「rootfs-colinux.img」がcoLinuxで使用するファイルになります。IMAGEDIRに移動させましょう。rootfs.imgは削除してもかまいません。swap.imgはそのままで大丈夫です。

coLinuxの起動

さて、いよいよ起動です。まず以下のようなバッチファイルを作り、「boot.bat」という名前でIMAGEDIRに保存します。

set P=
set P=%P% kernel="COLINUXDIR\vmlinux"
set P=%P% initrd="COLINUXDIR\initrd.gz"
set P=%P% mem=256
set P=%P% cobd0="rootfs-colinux.img"
set P=%P% cobd1="swap.img"
set P=%P% cofs0="C:\\"
set P=%P% eth0=slirp,52:54:00:12:34:56
set P=%P% eth1=tuntap,"TAP-coLinux",00:FF:77:C6:30:00
set P=%P% root=/dev/cobd0
set P=%P% fastboot

"COLINUXDIR\colinux-daemon" %P% -t nt

このバッチファイルを起動してcoLinuxがログイン画面まで行ければcoLinuxの起動は成功です!ひとまず第一関門は突破しました。なお、普段使うユーザアカウントはここで早々に作っておきましょう。

coLinuxのサービスへの登録

coLinuxWindows起動時に自動的に起動するサービスとして登録します。先程のバッチファイルの最終行を以下のように書き換えます。

"COLINUXDIR\colinux-daemon" %P% -t nt --install-service "coLinux"

これで起動をするとサービスに「coLinux」という名前のサービスが登録されます。
コントロールパネル→パフォーマンスとメンテナンス(Vistaはシステムとメンテナンス)→管理ツール→サービス
coLinuxという名前のサービスがあることを確認してください。ダブルクリックして「スタートアップの種類」を「自動」にすれば次回以降のWindows起動時に自動的にcoLinuxが起動します。
サービスから起動したcoLinuxにアクセスするには、coLinuxのインストールフォルダにある「colinux-console-fltk.exe」または「colinux-console-nt.exe」を使います。

cofsの設定

WindowscoLinuxでファイル共有するためのcofsの設定です。sambaを使って共有することも可能ですが、cofsの方が簡単なのでこちらを使います。まずマウントするディレクトリを作成します。

# mkdir /mnt/win

つぎにエディタで/etc/fstabに以下の行を追加します。

cofs0 /mnt/win cofs uid=ユーザ名 0 0

これで再起動すると/mnt/winにCドライブがマウントされます。お好みでandLinuxのように~/windowsでアクセスしたい場合は以下のようにシンボリックリンクを張ります。

$ ln -s /mnt/win ~/windows

ネットワークの設定

coLinuxのネットワーク設定は色々な方法がありますが、ここではslirpで外部ネットワークと接続し、TAPでホストWindowsにXを転送します。

Windows側の設定

スタート→接続の表示→すべての接続の表示(Vistaではコントロールパネル→ネットワークとインターネット→ネットワークと共有センター→ネットワーク接続の管理)で、「TAP-Win32 Adapter V8 (coLinux)」を「TAP-coLinux」に書き換えます。
次にTAP-coLinuxをダブルクリックし、プロパティ→インターネット プロトコル (TCP/IP)を選択→プロパティをクリックして、以下のように設定します。

次のIPアドレスを使う
 IPアドレス                    192 168 200 1
 サブネット マスク             255 255 255 0
 デフォルト ゲートウェイ
次のサーバーのアドレスを使う
 優先DNSサーバー
 代替DNSサーバー
Linux側の設定

Linuxのネットワーク設定方法はディストリビューションに依存しますが、ルーティングが最終的に以下のようになればOKです。

$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.2.0        *               255.255.255.0   U     1      0        0 eth0
192.168.200.0   *               255.255.255.0   U     1      0        0 eth1
default         10.0.2.2        0.0.0.0         UG    0      0        0 eth0

以下は設定方法の一例です。環境によって変わるので各自ifconfigなどで確認しながら設定してください。

Redhat

まずrootでログインし、以下のコマンドを実行します。

LANG=C system-config-network-tui

Edit a device paramsを選択し、eth0を選びます。何も変更をせずにOKを選択してください。次にEthernetと選択し、以下のように設定します。

Name                     eth1
Device                   eth1
Use DHCP                 [ ]
Static IP                192.168.200.150
Netmask                  255.255.255.0
Default gateway IP
Primaty DNS Server
Secondary DNS Server

設定をセーブし、rebootで再起動します。以上でネットワークの設定ができているはずです。yumなどを使ってみましょう。

Debian

sudoで/etc/network/interfacesを以下のように設定します。

auto lo
auto eth0
auto eth1
iface lo inet loopback
iface eth1 inet static
  address 192.168.200.150
  netmask 255.255.255.0

再起動してaptなどを試してみましょう。

Xmingの設定

XmingWindowsにXを転送します。事前にGNOMEKDEXFCEなどのデスクトップ環境がインストールされていることを確認してください。
スタート→全てのプログラム→XmingからXLaunchを起動します。

  • Multiple windowsを選択し、次へ
  • Start a programを選択し、次へ
  • Start programにターミナル名(terminal、gnome-terminalなど)を入力し、Run Remoteを以下のように設定
(*) Using PuTTY
Connect to computer  192.168.200.150
Login as user        ユーザ名
Password             パスワード
  • そのまま次へ
  • Save configurationをクリックして設定を保存。推奨はしませんがInclude PuTTY Password as insecure clear textにチェックして保存するとパスワードも保存されます。

これで保存したファイルをダブルクリックするとターミナルがWindowsに転送されるようになります。

まとめ

以上で大体andLinuxと同じ構成になっていると思います。正確にはandLinuxのインストール時に、

  • Do you want to enable sound for andLinux? - no
  • run andLinux automatically as a NT service + use Windows shortcuts
  • using CoFS (easy configuration)
  • All files below this folder can be accessed from andLinux: C:\

をそれぞれ選択した形になります。また、インストールの基本的な手順はhttp://www.geocities.jp/xmlinux2004/coLinux/colinux.htmlの「coLinux 0.7.4 (20090415) 対応 インストールツール Version 2009-05-09」を参考にさせていただきました。この場を借りてお礼を申し上げます。
作業で気をつけるというか、はまりそうなところはインストール時のパーティション設定、ネットワークの設定、それからXmingcoLinuxに接続する部分でしょうか。あとはQEMUでのインストールがかなり時間がかかるので、本を読みながら作業したりすると良いかもしれません。
coLinuxはバイナリレベルの互換性を持つLinuxWindows上で軽快に動き使い勝手が良いという点で、VMwareCygwinに劣らぬ選択肢のひとつになりうると思います。WindowsLinuxの両方の環境を使いたいという方は、一度試してみてはいかがでしょうか。