トップ > コンピューティング環境 > coLinux 環境構築メモ

[前ページ] [次ページ]


coLinux 環境構築メモ

Author: Takeshi Fujiyoshi
Last update: 2010/07/02

目次

coLinux とは

Windows アプリケーションとして動作するように改造された Linux カーネル。 以下のような特徴がある。

coLinux のサイトには代表的な Linux ディストリビューション用の ファイルシステムイメージが用意してあるが、 おそらくそのバージョンのカーネルで動かせるディストリビューションなら 何でも使えるのではないかと思われる。

実験環境について

筆者の PC に入っているのは Windows XP の英語版である。 英語版ではメニューや設定ボックス内での記述が全て英語表記になっているため、 この文書でもそのまま書いている。 例えば、"コントロールパネル" は "Control Panel"、 "ネットワーク接続" は "Network Connections" となっている。

coLinux本体のインストール

  1. coLinux のインストーラをダウンロード

  2. インストーラ coLinux-0.7.7.exe を実行しインストール

    • インストール先は好きな場所で良い。 自分は C:\coLinux にしたので以下の説明はそれを前提とする。
    • WinPcap がうんたらと表示されるので、手動でDLしてインストール。
    • ディストリビューションは選んでもいいけど手動でDLできるので 選ばなくても良い。
    • TAP-win32 Adapter が Windows logo test をパスしてないから 中止を勧めるとか言われるが、無視して続行を選ぶ。

    インストーラが終了すると指定した場所(自分は C:\coLinux)以下に 関連するファイルが置かれているはず。

ディストリビューションの入手と実行

coLinux はカーネルの機能しか提供しないので、 実際に動かすためにはディストリビューションが必要である。

coLinux のサイトにはいくつかのディストリビューションについて 最小構成のルートファイルシステムのイメージが置いてあるので、 まずはそれらをダウンロードして立ち上げても良い。

一方、coLinux は実パーティションをファイルシステムとして使うことが できるため、既にHDDに何らかのディストリビューションがインストール されていて、それが coLinux カーネルのバージョンで動くものであれば そのまま使うことができると期待できるが、試したことはない。

いくつかのディストリビューションを試してみたが、 最終的には Debian を使うことに決めた。理由は、

Debian GNU/Linux 5.0 のインストール

とりあえず動かす

  1. coLinux のサイトから Debian のアーカイブをダウンロード (現時点では Debian-5.0r2-lenny.7z)
  2. 以下のファイルを取り出し coLinux と同じ場所 (C:\coLinux) に置く
    • Debian-5.0r2-lenny.ext3.2gb (ルートファイルシステムのイメージ)
    • debian-lenny.bat
    • debian-lenny.conf
  3. 起動バッチファイル debian-lenny.bat を実行

以上で起動するはずである。 なお、root のパスワードは colinux 。

Debian 以外のディストリビューションでも概ね同じである。

パーティション切り

coLinux だけではなくネイティブ環境で起動して使用することも考えて ファイルシステムを実パーティション上に作成することにする。

筆者のPCにおけるパーティション構成を以下に示す。 プライマリの1〜3は既に存在している。 残りの未使用領域 49GB 全体を拡張パーティションとし、 その中に Linux 用に論理パーティションを切ることにする。

目指す構成:

  1. Primary1: Aspire one リカバリ (約5GB)
  2. Primary2: Windows XP (約45GB)
  3. Primary3: NetBSD (約50GB)
  4. Extended: (約49GB)
    1. Logical: Linux スワップ (約1GB)
    2. Logical: Linux ホーム (約28GB)
    3. Logical: Debian ルート (約5GB)
    4. 残り約15GBは実験用に空けておく

パーティションを編集するツールは色々あるとは思うが、 今回は Windows XP に付属の diskpart コマンドを使用した。

C:\> diskpart
DISKPART> select disk 0
DISKPART> list partition

  Partition ###  Type            Size     Offset
  -------------  --------------  -------  -------
  Partition 1    OEM             4997 MB    32 KB
  Partition 2    Parimary          45 GB  4997 MB
  Partition 3    Unknown           50 GB    50 GB

DISKPART> create partition extended
DISKPART> create partition logical size=1000
DISKPART> create partition logical size=28000
DISKPART> create partition logical size=5000
DISKPART> list partition

  Partition ###  Type            Size     Offset
  -------------  --------------  -------  -------
  Partition 1    OEM             4997 MB    32 KB
  Partition 2    Parimary          45 GB  4997 MB
  Partition 3    Unknown           50 GB    50 GB
  Partition 4    Extended          49 GB   100 GB
  Partition 5    Logical         1024 MB   100 GB
  Partition 6    Logical           28 GB   101 GB
  Partition 7    Logical         5005 GB   129 GB

DISKPART> exit

ルートファイルシステムを実パーティションへ移動

  1. coLinux のコンフィグファイルを作成

    ここではファイル名を tata.conf とし、 coLinux と同じディレクトリに置く:

    kernel=vmlinux
    cobd0="Debian-5.0r2-lenny.ext3.2gb"
    cobd1="\Device\Harddisk0\Partition4"    # Linux swap
    cobd4="\Device\Harddisk0\Partition5"    # Linux ext3 /home
    cobd5="\Device\Harddisk0\Partition6"    # Debian
    root=/dev/cobd0
    initrd=initrd.gz
    cocon=80x50
    eth0=slirp
    

    備考:

    • cobd2 は Debian の fstab で CD-ROM マウント用になっていたので避けた
    • 論理パーティションの番号の付け方には注意が必要。 詳しくは colinux-daemon.txt や http://colinux.wikia.com/wiki/FAQ を読んで理解すること。
  2. 起動用のバッチファイルを作成:

    ここではファイル名を tata.bat とし、 coLinux と同じディクトリに置く:

    set COLINUX_CONSOLE_FONT=Lucida Console:12
    set COLINUX_CONSOLE_EXIT_ON_DETACH=1
    colinux-daemon.exe -v 3 -t nt @tata.conf
    
  3. バッチファイル(tata.bat)を実行し coLinux を起動

  4. root でログイン (初期パスワードは colinux)

  5. ファイルシステムを初期化:

    # mkswap /dev/cobd1
    # mkfs.ext3 /dev/cobd3
    # mkfs.ext3 /dev/cobd4
    
  6. ルートファイルシステムのデータを実パーティションにコピー:

    # mount /dev/cobd3 /mnt
    # cp -ax / /mnt
    # cp -ax /dev/* /mnt/dev/    # udevを使っているため必要
    
  7. ついでに /mnt/etc/fstab に以下の行を追加:

    /dev/cobd1  swap   swap   defaults   0  0
    /dev/cobd3  /home  ext3   defaults   0  1
    
  8. コンフィグファイル(tata.conf)を修正:

    cobd0="..." の行を削除し、代わりに cobd4 を cobd0 に変更

  9. coLinux を再起動 (shutdown してから tata.bat を再実行 (?)):

    df -h してみて期待通りパーティションがマウントされていればOK

あとは、好きなように設定すれば良い。 初期状態で外部のネットワークへ出て行けるようになっているはず (仕組みはドキュメント等で slirp の説明を参照)。

ホスト名の変更

ホスト名は初期状態で colinux となっている。 変更するには /etc/hostname を書き換える。 /etc/hosts も変更した方が良い。 再起動するか /etc/init.d/hostname.sh start を実行すると反映される。

一般ユーザの登録とパスワード設定

ユーザ fujiyosi の登録:

# useradd -m -s /bin/bash fujiyosi
# passwd fujiyosi

ついでに root のパスワードも変更:

# passwd root

外部ネットワークへの接続

coLinux のコンフィグファイルで eth0=slirp の指定により、 仮想的な NAT ルータ(DHCP/DNSサーバ付き)が内部に構築されている。 Debian では DHCP クライアントが初期状態で動いているので、 何も設定しなくても外部ネットワークにアクセスできるはず。

筆者の環境では以下のようになっていた。たぶん固定と思われる。

  • MACアドレス: 00:ff:55:8f:5c:40
  • IPv4アドレス: 10.0.2.15/24
  • ネームサーバ: 10.0.2.3
  • デフォルトルータ: 10.0.2.2

SSH で接続できるようにする

コンソールウィンドウははっきり言って使いにくいので、 PuTTY などの端末ソフトから SSH でアクセスできると嬉しい。

  1. リダイレクトの設定

    コンフィグファイル tata.conf の eth0 の行を以下のように修正し、 coLinux を再起動する。:

    eth0=slirp,,tcp:55522:22
    

    これにより、Windows の TCP ポート 55522 が代理ポートとなり、 ここへの接続は coLinux の TCP ポート 22 へリダイレクトされる。

  2. Debian/coLinux で sshd を動かす:

    # apt-get install ssh
    

    たぶんインストールすると自動的に sshd が起動されると思う。 もし動いていなければ手動で起動する。:

    # /etc/init.d/sshd start
    

Windows もしくは外部から coLinux へ SSH で接続する際は、 ポート 22 の代わりに代理ポート(上の例では 55522)を使用する ように端末ソフト(SSHクライアントソフト)の設定が必要になることに注意。

ここでは Slirp のリダイレクト機能を利用しているが、 後で説明する TAP を使用すれば直接ポート 22 で接続できる。

サービスの登録・削除

coLinux を Windows のサービスとして登録し実行することができる。

サービスの登録:

C:\coLinux> colinux-daemon.exe --install-service coLinux @tata.conf

サービスの削除:

C:\coLinix> colinux-daemon.exe --remove-service coLinux

サービスの開始:

C:\coLinux> sc start coLinux                  #または net start

サービスの停止:

C:\coLinix> sc stop coLinux                   #または net stop

サービスの起動オプション:

C:\coLinix> sc config coLinux start= demand   #手動起動の場合(デフォ)
C:\coLinix> sc config coLinux start= auto     #自動起動の場合
注意: start= の後ろに空白が必要

コンソールを開くには、coLinux のフォルダ以下にある colinux-console-nt.exe か colinux-console-fltk.exe を直接実行する。

サービスを停止すると coLinux は自動的にシャットダウンしてくれる。

詳しくは README.txt と colinux-daemon.txt を参照のこと。

TAPによるネットワーク接続

TAP は仮想ネットワークアダプタであり、 Windows と coLinux を仮想的なプライベートネットワークで接続できる。 ここでは、coLinux から外部ネットワークへのアクセスには上で設定した Slirp をそのまま使用し、coLinux と Windows 間の通信にのみ TAP を 使用することにする。

目指す構成はこう:

Windows 側の設定

coLinux をインストールしたとき、 TAP ドライバが1つ自動的にインストールされているはず。

Control Panel -> Network Connections を開くと Device Name に "TAP-Win32 Adapter V8 (coLinux)" などと書かれた ネットワークアダプタが存在するはずである。

以下に必要な設定手順を示す。

  1. インタフェース名を "coLinux TAP" に変更 (初期の名前は分かりにくいので)

    やり方は通常のファイルの場合と同じく 右クリック -> Rename とか

  2. プロパティの設定

    右クリック -> Properties を開いて以下を行なう。

    1. Internet Protocol (TCP/IP) の Properties を開き以下の設定をする
      • Use the following IP address を選ぶ
      • IP address: 10.0.3.2
      • Subnet mask: 255.255.255.0
    2. Advanced -> Settings で Windows FIrewall ウィンドウを開き、 Off (not recommended) を選択。それ以外はデフォルトでいい。
  3. coLinux のコンフィグファイル tata.conf に以下を追加:

    eth1=tuntap,"coLinux TAP"
    
  4. coLinux を再起動

    ifconfig -a で eth1 が存在することを確認。

Debian/coLinux 側の設定

  1. /etc/network/interfaces に以下を追加:

    auto eth1
    iface eth1 inet static
            address 10.0.3.15
            netmask 255.255.255.0
    
  2. インタフェースの有効化:

    # ifup eth1
    
  3. 通信できるか確認:

    # ping 10.0.3.2
    PING 10.0.3.2 (10.0.3.2) 56(84) bytes of data.
    64 bytes from 10.0.3.2: icmp_seq=1 ttl=128 time=10.0 ms
    64 bytes from 10.0.3.2: icmp_seq=2 ttl=128 time=0.000 ms
    ...
    

Windows から coLinux への SSH 接続も TAP 経由で行けるはずなので確認する。

X を使う1 - Xming + XDMCP

Debian/coLinux 上で X アプリケーションを使用するためには Windows 側で X サーバ (X端末ソフト)を動かす必要がある。 今回は Windows 上で動くフリーの X サーバである Xming を使用した。

ここでは XDMCP を使ってセッションを開始する方法について記載する。 ただし、TAP のネットワーク設定が済んでいることを前提とする。

Xming のインストール

Xming のダウンロードサイト から Xming と Xming-font のインストーラをダウンロードし実行すると インストールできる。

Debian/coLinux 側の設定

  1. xdm をインストール:

    # apt-get install xdm
    
  2. /etc/X11/xdm 以下のファイルを編集

    xdm-config

    DisplayManager.requestPort: 0 の行を 0 から 177 に変更 (デフォルトが何で0になってるのか?)

    Xaccess

    * だけの行を追加 (#* の行の先頭の # を除去)

    Xservers

    :0 local /usr/bin/X :0 vt7 -nolisten tcp の行をコメアウト (行頭に # を入れる)。

    理由は Debian/coLinux 上で X サーバを起動することがないため。 しかしながら、後々ネイティブ環境で起動できるようにするなら これが必要になるかも知れないのでし、ちょっと悩む。

  3. xdm を起動:

    # /etc/init.d/xdm start
    

Xming のコンフィグ

Windows で XLaunch を実行しコンフィグファイルを作成する。

  1. Select display setting
    • Multiple windows 以外 で好きなのを選ぶ。筆者は Fullscreen を選択。
    • Display number は 0 のままでいい。
  2. Select how to start Xming
    • Open session via XDMCP を選ぶ
  3. Configure a remote XDMCP connection
    • どっちを選んでもいい。 Search for hosts (broadcast) の方が簡単。
  4. Specify parameter settings
    • 設定不要。次へ進む。
  5. Configuration complete
    • Save Configuration で設定を保存
    • Finish を押すと Xming 起動

Xming を実行すると Debian のログイン画面が表示されるはず。 表示されなければうまく行ってないので、 頑張って調べて対処するか、XDMCP を諦めて SSH 経由でやる。

問題点:

/etc/init.d/xdm start すると /var/run/xdm.pid が作られるが、 一度 Xming から XDMCP 接続したあと Xming を強制終了すると 何故か /var/run/xdm.pid が消えてしまう。 /etc/init.d/xdm のバグなのかその中で使っている start-stop-daemon に 問題があるのか。

X を使う2 - Xming + SSH

まだ TAP の設定をしていない場合は SSH トンネルを使うのが簡単。 SSH の使う場合、plink を使う方法と ssh.exe を使う方法があるが、 plink のことは良く分からんので ssh.exe を使う方法について記載する。

ただし、Xming のパッケージには ssh.exe は含まれていないので、 自分で調達する必要がある。 邪道かも知れないが筆者は Cygwin の ssh.exe を使用した。

Debian/coLinux 側での設定

Windows から Debian/coLinux に SSH で接続できるようになっていれば良い。 詳しくは前述の説明を参照。

Xming のコンフィグ

XLaunch を実行しコンフィグファイルを作成する。

  1. Select display setting

    • Multiple windows 以外 で好きなのを選ぶ。筆者は Fullscreen を選択。
    • Display number は 0 のままでいい。
  2. Select how to start Xming

    • Start a program を選ぶ
  3. Enter or choose one X client to Run Local or Remote

    • Start program -- Debian 上で実行するプログラムを指定。 筆者は /etc/X11/xdm/Xsession にした。
    • Using SSH (ssh.exe) を選択
    • Connect to computer には、
      • TAP が使えるなら coLinux のIPアドレス(10.0.3.15とか)を指定し、
      • Slirp のリダイレクトで接続するなら localhost を指定
    • Login as user にはログイン名(fujiyosi とか) を指定

    次へ進むと ssh.exe のパスを聞かれるので、 Cygwin の ssh.exe (C:\Cygwin\bin\ssh.exe など) を指定。

  4. Specify parameter settings

    Additional parameters for PuTTY or SSH に設定:

    • Slirp のリダイレクトで接続するなら -p 55522 のように 代理ポート番号を指定。
    • 公開鍵認証を使用してパスワードなしでログインするなら -i /home/fujiyosi/.ssh/id_rsa のように秘密鍵ファイルを指定。
  5. Configuration complete

    • Save Configuration で設定を保存
    • Finish を押すと Xming 起動

上手く行かなかれば、設定ファイルを右クリックして Edit を選べば 設定を修正できる。

問題点:

Cygwin の ssh.exe が動いている間コマンドウィンドウが表示されるのが邪魔。 Cygwin では run.exe を使って run.exe ssh.exe 引数.... とすることでコマンドウィンドウを隠すことができるのだけど、 Xming のコンフィグ設定でそれを指定する方法がない。

ファイル共有1 - coLinux → Windows 方向 by cofs

cofs を使えば coLinux 側から Windows 側のファイルシステムへ 直接アクセスできる。詳しい使い方は cofs.txt を参照のこと。

Windows の C:\ を coLinux の /Windows にマウントする方法:

  1. コンフィグファイル tata.conf に以下の行を追加:

    cofs0=C:\
    
  2. coLinux を再起動

  3. マウントする:

    # mkdir /Windows
    # mount -t cofs cofs0 /Windows
    

この例では、Windows の C:\ が coLinux の /Windows にマウントされる。 cofs0 の代わりに cofs0:/Cygwin/home/fujiyosi を指定すると C:\Cygwin\home\fujiyosi がマウントされる。

共有したいドライブが複数ある場合は cofs1, cofs2, … として複数設定する。

ファイル共有2 - Windows → coLinux 方向 by TAP + Samba

Samba を使うことで Windows 側から coLinux 側のファイルシステムへ 直接アクセスできる。 ただし、TAP のネットワーク設定が済んでいることを前提とする (たぶん Slirp では出来ない)。

Debian/coLinux 側

  1. Samba をインストール:

    # apt-get install samba
        => Workgroup 聞かれるので Windows 側と同じ名前を入力
    
  2. Samba 用のユーザのパスワードを設定:

    # smbpasswd fujiyosi
    

    パスワード情報はたぶん /var/lib/samba/passwd.tdb に格納される。

  3. /etc/samba/smb.conf を編集:

    • [homes] セクションで read only = no (初期値は yes)に変更し、 書き込みを許可する。
  4. Samba を再起動:

    # /etc/init.d/samba restart
    

Windows 側

  1. 仮想ネットワークインタフェース "coLinux TAP" に Client for Microsoft Network を追加

    1. Control Panel -> Network Connections を開く
    2. "coLinux TAP" の Properties 開く
    3. General タブ -> Install を実行し、Client を Add
  2. コンピュータ名とワークグループを設定

    すでに好みの名前になっているなら何もしなくて良い。

    1. Control Panel -> System を開く
    2. Computer Name タブで Change を開き
    3. Computer name と Workgroup を好きな名前に適切に設定

    これを行なうとたぶん再起動を要求されるので再起動する。

エクスプローラで Entire Network -> Microsoft Windows Network -> ワークグループ名 -> ホスト名 -> ユーザ名 と辿ると そのユーザのホームディレクトリを開くことができる。 あるいは \\ホスト名\ユーザ名 (例えば \\tata\fujiyosi) のように直接パスを指定してアクセスすることも可能。

その際、ユーザ名とパスワードの入力を要求される。 ユーザ名とパスワードが Windows のものと同じならば自動で認証してくれるみたい。


トップ > コンピューティング環境 > coLinux 環境構築メモ

[前ページ] [次ページ]