このページではcoLinux 0.6.xからの変更点を記載します。
変更点
NEWSファイルを適当に訳しておきます。
0.7.2 → 0.7.3
- バグ修正:
- カーネルvmlinuxにアクセスする前にELFヘッダをチェックするように修正(例外の修正)
- カーネル:
- カーネルのバージョンを2.6.22.18に更新
- セキュリティ問題(splice local root exploit)対策を導入。 詳細はhttp://www.kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.22.18を参照のこと。
- cofsでの"vim fsync"を修正。
- 重複してオープンしているブロックデバイスにたいするget_sizeを修正。
- インストーラ:
- ArchLinux-2008.08-2のイメージを更新。
- "* Note"のテキストが時々"*"しか表示されない問題をフィールドの調整することで修正。
- インストールしたフォルダを環境変数%COLINUX%に保持
0.7.1 → 0.7.2
- バグ修正:
- #1324092: cofsのrenameが既存のファイルを置き換えてしまう問題
- #1791993: Shipモジュールの所有者とグループがrootの問題
- #1853578: メモリ使用の制限: 4GBメモリのマシンで0MBとなる問題
- cofsでのワイルドカードを用いたchdirが既存の上/下ディレクトリに影響する問題(?)
- 設定ファイルの最終行がCRLFで終わってなくても、最終文字を取りこぼさなくなった。
- コンソールとDaemons:
- FTLKコンソールに新メニュー
- Power off
- coLinuxカーネルを高速でシャットダウンする。ファイルはSyncされない!
- Reboot
- ctrl-alt-delシグナルを送る。initプロセスはランレベル6に移行する。
- Shutdown
- "/sbin/halt"の替わりに"/sbin/shutdown -h now"を呼ぶ。 Shutdownはサービスの停止か、あるいはユーザがcolinux-daemonのクローズを クリックした場合に自動的に呼ばれる(?)。
- New: "colinux-daemon -p pidFile"により coLinuxのIDがpidFileファイルに格納される。 "colinux-console-fltk|nt -p pidFile"格納されたIDにモニタをアタッチする。 この仕組みにより現在のID(プロセスID)を知ることなく 名前つき(?)コンソールを開くことができる。 pidFileは通常のシャットダウン時に削除される。
- ネットワークデーモンTAP, Bridged and Slirpが高プライオリティで動作する。
- "About"ボックスにナイスなcolinux 3Dロゴイメージを追加。(Nlucas)
- デバイス(cobd,cofs,eth,exec)が多重定義されていた場合はエラーで停止する。
- DEP/noexecute問題にたいしより最適な対処。(flush tlb).
- カーネル:
- カーネルが2.6.22にアップデート。 (Thanks to Anders Eriksson for 2.6.13, 2.6.14, 2.6.15)
- パッチファイル一式が複数のカーネルバージョンに対応。 (2.6.12, 2.6.13, 2.6.14, 2.6.15, 2.6.17, 2.6.22)
- cloopが2.06にアップデート(Knoppixで使われている圧縮ループブロックデバイス)。
- インストーラ:
- インストーラの説明ボックスの文字が大きかった[Bugs item #1819219]。
- Ubuntu 6.06.1をイメージページに追加。 Fedora 7にアップデート。 それぞれのイメージの注意書きにwebへのリンクを追加。 ‘other images on SF’へのリンクがクリック可能になった。
- インストーラ/アンインストーラが古いファイルの上書きか削除をする前に coLinuxが動いているかどうかをチェックするよう変更。 [Bugs item #1396459, #1549148]
- 古い実行ファイルとレジストリ情報から古いcolinuxを安易ストールする(?)。 [Support Requests-1553923]
- tapinstall.exe (alias devcon)をDDK 3790.1830 (Mar 24 2005)に従ってアップデート。
- 64bitシステムでインストールを不可能に変更。
- ビルドシステム:
- Linuxがホストの場合: colinux.koのビルド方法を見直し、ホストのkbuildシステムを使用するように変更。 regparam=3とされているホストも使用可能(2.6.22のホストでテスト済み)。
- Linuxカーネルとデーモンが異なるgccバージョンでコンパイル可能になった。 ABIは実行時にチェックされる。
カーネルに使用可能なgccは3.4.x, 4.0.x, 4.1.x, 4.2.x~4.3.0である。- gcc4.xでの警告を修正。
- デバッギング:
- New: colinuxの起動問題をデバッグするためのヒントを記載したDebugging.txtを追加。
- "-v level"オプションにより、 コンソールへのより多くのメッセージとデバッグプリントを有効になる。
- colinux-debug-daemon: 引数に-sが指定された場合は、ドライバにのみ接続する(?)
- Dbgview.exe (www.sysinternals.com)にたいするレベル付けされたデバッグ出力。
事前に、colinux-debug-daemonのデバッグ機能とレベルを指定する必要がある。- ライブラリとツールの更新:
- gcc 4.1.2 (パッチ不要)
- binutils 2.17.50
- mingw 3.11
- w32api 3.9
- WinPcap 4.0.1
0.6.4 → 0.7.1
- colinux-daemon:
- XML形式の設定ファイルを廃止。 それに替わって、コマンドラインのname=valueという書式 を1行に1個記載したテキストファイルを使用する。 書式に関してはREADME.TXTを読み、インストールディレクトリ中の EXAMPLE.CONFも参照のこと。
- 設定ファイルを渡すための@オプションをコマンドラインに追加。
- 起動時のカーネルメッセージを抑制するために `-k`オプションを追加。 これによりdaemonの出力が見やすくなる。
- モニタの最大値を16から64に増加。
- cobd, eth, cofs, tty, execで重複したインデックスに警告を追加。
- 不正なlinux.sysがインストールされた場合の エラーメッセージを改善。
- エラーを示す値を返すようにした(通常実行, –install-driver, –status-driver等の終了時) エラーコードは次のとおり。0=OK, 3=driver version mismatch, 14=driver no installed, 255=gerenral fail (-1)
- 新機能: 設定ファイル中の"execX=…"により外部プログラムが起動。
- バグ修正: 次のような設定ファイルや引数中のダブルクォーテーションマークの処理。
eth0=tuntap,"LAN-Connection 14",00:11:22:33:44:55
cofs0="C:\My files"- 新機能: 設定ファイル中の"ttysX=…"によりcoserial daemonが起動。 パラメータは"-f DeviceName -m Mode"。 Serial daemonはWinNT上で軽く、/dev/ttyS0でのログインや、 シリアルポート(COM1など)にリダイレクトが可能。
- XeonとP4のDEP/noexecute問題に対処(flush_tlb)。
- Console:
- "set COLINUX_CONSOLE_EXIT_ON_DETACH=1"により、 coLinuxが終了してコンソールからデタッチされると、 FLTK/NT consoleが閉じる。
- Menu Monitor Selectにより起動中のインスタンスのうち一つを 選択できる。
- Service running:
- Windowsの終了時にサービスを終了させる。
- ‘–install-service’では絶対パスを設定する必要がなくなった。
- Kernel:
- 2.6.11から2.6.12にアップデート
- Bug #1479042: エミュレーションが有効になっていない場合は、 "no387"というブートパラメータを無視。
- Bug #1665812: カーネルの設定で/proc/kcoreを無効化。 このファイルを読むとホストがクラッシュする。
- Updated libraries:
- MinGWを3.7から3.9にアップデート。
- w32apiを3.2から3.4にアップデート。
- WinPcapを3.1-beta4から3.1にアップデート。
- FLTKを1.1.4から1.1.6にアップデート。
- XMLライブラリをソースコードから削除。
- Installer:
- 新しいディスクイメージ(ArchLinuxとFedoraCore5)を追加。
- Gentooのディスクイメージを更新。
- オーストラリアと南アフリカを追加。
- NSIS version 2.22を使用
- initrd:
- cofs31がvmlinux-modules.tar.gzのパスとして 自動的に使用される
- initrdがロードできない場合にはエラーをコンソールに出力。
- バグ修正: ‘root=/dev/…’を最初のブートパラメータとして使用禁止。
- cofs:
- ファイル名の長さ制限を改善。 ファイル名は256文字まで。 フルパスは最大のディレクトリの深さが256ということが 制限になる。
- Bug #1151757: 2重マウントを禁止。
- TAP-Win32 device driver:
- openvpn-2.1_beta15aからversion 8.4にアップデート。
- 管理者権限がなくても使用可能。
- Vistaクラッシュを修正
- 接続速度を100MBit/sとして表示。
- ‘Check for truncated IPv4 packets’を無効化。
- デバッグシンボルの除去。
- pcap/Bridged:
- 名前を空欄にすることで接続するLANインタフェースを自動検出
- slirp:
- SLiRPはcolinuxのネットワークの最初の選択肢である (セットアップが簡単)
- パラメータ’:count’によりマルチプルリダイレクション(?)
- UDP受信バッファのサイズを32Kに増加(Win32のデフォルトは8k)。 現在の最大のパケットサイズは32767。
- TCPのMSSを512から1460に増加。
- UDPでhonypot ports (517, 518, 7648)をリスンしないように。 TalkとCu-Seemeは未実装。
- 実行時のデバッグコードは無効化。
- Introduce a new build system:
- ターゲットカーネルディレクトリがsourceとobjectsに分割。 configureの古いパラメータ–targetkerneldirは、 新パラメータ–targetkernelsourceと–targetkernelbuildに 置き換えられた。
- ccacheの使用が可能(http://ccache.samba.org/)。
- quiltがインストールされていれば、カーネルのパッチにquiltを使う。
- ‘make package’はデバッグシンボル付とデバッグシンボルなしの zipアーカイブをそれぞれ生成する。 デバッグシンボルのみのzipファイルは作られなくなった。
- configureに新パラメータ –gcc-guest-build を追加。 これは、もしシステムのgccに互換性がなければ、 クロス用gccのソースからgccのコアシステムを作成する。
- configureに新パラメータ –verbose for configure を追加
- Python bin/make.py colinux:
- ヘッダファイルの修正を自動認識
- 異なるcoLinuxのコンパイル間で’make clean’が不要になった。
- 綺麗で柔軟で保守しやすくなった。
- 他の実行ファイルにもアイコンを追加。
- Linux as host: 多くテストされたカーネルは2.6.17と2.6.18
設定ファイルについて
0.6.4以前のcoLinuxユーザにとって一番の大きな違いが XMLファイルによる設定が廃止されたことだと思います。
XMLファイルが廃止されたことでユーザはcoLinuxの設定情報を
- コマンドラインオプションで指定
- プレーンテキストの設定ファイルで指定
のいずれかでcoLinuxに渡さなければいけません。
プレーンテキストの設定ファイルはコマンドラインで指定するオプションを 1行に1個記述したテキストファイルとなります(つまり指定できる内容は同じです)。 このファイルはcolinux-daemon.exeに対して’@ファイル名’として 指定することができます。
このサイトでは、編集のしやすさを考えて、 プレーンテキストの設定ファイルを中心に説明します。
一応、以下にドキュメントに書かれているオプションをリストアップしておきます。
- kernel=vmlinuxファイル
- vmlinuxファイルへのパスを指定する。
- 設定例:
kernel=vmlinux- initrd=initrdファイル
initrdファイルへのパスを指定する。
coLinuxのインストール時のinitrd.gzは、 あなたのカーネルモジュールをアップグレードする。 新しいcoLinuxのバージョンを1度実行すれば、 このパラメータを設定ファイルから削除してよい。
- 設定例:
initrd=initrd.gz- mem=メモリサイズ
このパラメータではメモリサイズを指定することができ、 単位はMBと仮定される。 従って、64を指定すれば64MBとしたときと同じになる。 このパラメータを指定しなければ、 デフォルトでRAMの4分の1(RAMが128MB以上の場合)になる。 それ以外の場合は16MBになる。 デフォルトのままで通所はOK。
- cobdX=イメージファイルへのパス
ディスクイメージファイルのブロックデバイス番号として <X>を使用すること。
<イメージファイルへのパス>は、 通常はイメージファイルのファイル名になる。 例えば、解凍したルートファイルシステムになる。
必要なところに\DosDevices\が自動的に付加される。 コマンドシェルを使う場合は、\\を使用することに注意すること。 (設定ファイルを使用する場合は、この必要はない)
<イメージファイルへのパス>は \Device\HarddiskX\PartitionYフォーマットのパーティションを 使用することもできる。 ハードディスクの番号は0から始まり、パーティションの番号は1 からはじまる。 アクセスを確認するために、最初はリードオンリーでマウントして、 中身を確認すること。 Windowsが使用しているパーティションはマウントしないこと。 パーティションの指定は、デュアルブートをしたい非初心者向けである。
- 設定例:
cobd0=rootfs.img cobd1=C:\temp\swapfs.img cobd2=\Device\Cdrom0- alias=イメージファイル | :cobdX
これは生活をかなり楽にする。もしデバイスノードを直接マップすれば、 cobdの割り当てが自動的に行われ、それ様のaliasが作成される。
指定の仕方は、QEMUの文法と同じである(hda=という指定も可能)。
<alias>は、linuxの通常のハードディスク(hda1, sda1など)の いずれかである。 <イメージファイルへのパス>は上記と同じである。
- 設定例:
hda1=rootfs.img # cobdXは最初から自動的に割り当てられる hdc=\Device\Cdrom0 # CDROMをそのまま使用。iso9660としてマウントあるいは、デバイスノードの別名を指定する。
‘:’はdaemonにcobdXがパス名でないことを通知する。 <cobdX=…>を事前に定義した後ならば、 このcobdXの別名を設定することができる。 詳細は次の例を参照のこと。
- 設定例:
cobd0=rootfs.img # ここでは/dev/cobd0はイメージファイル hda1=:cobd0 # これにより/dev/hda1とcobd0が同じ物を指す- cofsX=Windowsのディレクトリ
Cooperative Host filesystem device(ホストのディレクトリを coLinuxのローカルマウントポイントにマウントする)を 指定するために<X>を使用する。 ここでは、Windows上と同じファイル名の制限(‘:’や’\’)がある。
<Windowsのディレクトリ>は、Windows上の任意のディレクトリが 指定できる。 coLinuxはマウントポイント上の管理者権限をもっているので、 ドライブ全体(C:\)を指定する場合は特に注意すること。 リードオンリーでマウントするのはよい感慨である。
- 設定例:
cofs0=C:\coLinux # (ディレクトリ) cofs1=R:\ # (CDROMドライブ, USBドライブ等)より詳しいcofsとmountオプションは、 インストール後のcofs.txtに記載されている。
- ethX=slirp | tuntap | pcap-bridge,<options>
ネットワークインターフェースを指定するために<X>を使用する。 最初の引数えホスト側のインターフェースタイプを選択し、 その後にオプションが続く。
インストールとネットワークタイプの使用についてはREADME.TXtを 調べること。 また、Wikiの’Network’ページにはたくさんの設定例が記載されている。
- ethX=slirp,<MAC>,<redirections>
Slirpはインターネットにつなげる最も簡単な方法である。 これは、Windows側に変更や何かのインストールを必要としない。 SlirpはWindows API(WinSock)を使って、現在のアクティブなアダプタと TCP・UDPパケットを送受信する。 ICMPメッセージの送受信はできない。 つまり、pingやtracerouteは機能しない。 ネットワークをチェックするためには、 他のコマンド(例えばwget, ftpなど)を使用しなければならない。
SlirpはcoLinuxから外部への"外向けのみ"として機能する。 通常では外部からcolinuxへの接続はできない。 これを可能にするためには<redirections>を使用する。
Windows上にファイアウォールがある場合には、 colinux-serial-daemon.exeというプログラムに外部接続を 許可しなければならない。
<X>はネットワークインターフェースを指定するために使用し、 <MAC>と<redirection>はオプションである。
<redirection>は、 tcp|upd:hostport:linuxport[:count]という形をとり、 複数のリダイレクトは/で分けられる。すなわち、 tcp:2222:22/tcp:8080:80の様になる。 <redirection>は、プロトコル名(tcpあるいはudp)で始まり、 次にセパレータ":"、Windowsホストのポート、 セパレータ":"、 coLinuxゲストのポートと続く。 3番目のセパレータ":"はオプションで、 連続したポート番号数を表す。 複数のリダイレクトは、同じ形式で"/"で区切られる。
- 設定例:
eth0=slirp # もっともシンプルなslirpモード(外向けのみ) eth0=slirp,,tcp:22:22 # SSHをホストからゲストに転送する eth0=slirp,,tcp:2222:22 # ホストの2222をゲストの22として転送する eth0=slirp,,tcp:2222:22/tcp:4000:80:3 # 複数のポートをホストからゲストに転送する # (2222→22, 4000→80, 4001→81, 4002→82)coLinuxないではパラメータを取得するためにDHCPクライアントか、 静的なパラメータを指定すること。
- ethX=tuntap,<ネットワーク接続名>,<MAC>
TuntapはcoLinuxとHost間専用のプライベートネットワークである。 これは、WindowsホストとcoLinux間でもっとも高速なネットワーク 接続方法である。 このネットワークは、Windowsの他のネットワークアダプタで 使用されていないサブネットとして設定されなければならない。 tuntapを外部の実際のネットワークにルーティングさせることは 可能であるが、これは複雑で、WindowsとLinuxのネットワーク スペシャリストが必要になる。 初心者は、tuntapをWindosホストとcoLinux間での SSHログインかVNC接続のためだけに使用すべきである。
<X>はネットワークインターフェースを指定するために使用し、 <ネットワーク接続名>と<MAC>はオプションである。
<ネットワーク接続名>は、インストールされたホストでの、 TAPアダプタの名前であり、通常は"ローカル接続 1"の ようになる。 ネットワーク接続名を指定しないと、coLinuxは最初のTAPアダプタ を使用する。 もしTAPアダプタが1つしかインストールされていない場合は、 ネットワーク接続名は指定しなくてもよい。 もし、一定のMACアドレスが必要な場合には、 <MAC>を指定すること。そうでない場合には、coLinuxは ランダムな値を使用する。
- 設定例:
eth0=tuntap # 最初のTAPアダプタを使用する eth0=tuntap,"Local Area Network" # 名前を指定する場合 eth0=tuntap,,11:22:33:44:55:66 # MACアドレスを指定する場合- ethX=pcap-bridge,<ネットワーク接続名>,<MAC>,<promisc>
Pcap-Bridgeは、様々なethernetフレームを、 実際のネットワークカード上で送受信するためのethernetライブラリを 使用する。 これは、実在するネットワークカード上の 新たなネットワークカードとして動作する。 これにより、coLinuxを実ネットワークに接続することができる。 外部から見ると、Windowsホストが、 実際のネットワークカードとは異なったMACアドレスの もう一つのネットワークカードを持つように見える。 coLinux側から見ると、 ethernetカードでしたいこと (Ping, DHCP, TCP/IP, IPXなど多くのプロトコル)を 全て行うことができる。 この方法は、 ネットワークに仮想的なネットワークカードを追加することになり、 一部のITセキュリティ下では機能しないことに、注意すること。 また、MACアドレスが他と異なっていたとしても、 一部のワイヤレスカードにたいしてはpcap-bridgeは機能しない。 Pcap-bridgeは、実際のネットワーク接続がないと動作しない。 これは、実際のネットワークカードが使用されていない場合 (ネットワークに接続されていない場合)には、 この方法が利用できないということである。
<X>はネットワークインターフェースを指定するために使用する。 <ネットワーク接続名>は、実際のethernetカードあるいは ワイヤレスカードの名前でなければならない。 スペースを含む名前にはダブルクォーテーションを使用すること。 通常は、"ローカル接続"である。 <MAC>と<promisc>はオプションである。
デフォルトは’promisc’である。プロミスカスモードでは、 アダプタのアドレスを指定していないパケットを受信することができる (すなわち盗み見モード)。 これはEthernetアダプタで機能する。 一部の場合(ワイヤレスカードなど)では’nopromisc’と指定した場合 のみ動作する。
- 設定例:
eth0=pcap-bridge,"Local Area Network" # PCAPのブリッジを使用 eth0=pcap-bridge,"Local Area Network",11:22:33:44:55:66,nopromisc # MACアドレスを指定 # プロミスカスモードを無効化- ttysX=<シリアルデバイス名>,<パラメータ>
<X>はシリアルインターフェース(ttys0)と ホストの固有のデバイス名(COM1)を指定するのに使用する。 <パラメータ>は、ボーレート・データフォーマット・ライン規則 を指定する。 詳細はホストシステムでのヘルプ(MODE /?)を参照のこと。
シリアルデバイスはでたの送受信のみをサポートする。 コントロール(モードの設定)は、coLinux側からはサポートされない。 coLinuxは起動時に設定したボーレートと設定でのみ動作する
- 設定例:
ttys0=COM1 # linuxのシリアルデバイス/dev/ttyS0をホストのCOM1に接続する。 # colinuxを起動する前に、ホストシステムでシリアルポートの # パラメータを設定すること。 ttys0=COM1,"BAUD=115200 PARITY=n DATA=8 STOP=1 dtr=on rts=on" # 複数のシリアルポートのデフォルトパラメータを指定している。 # 詳細はマニュアルか、ホストシステムのヘルプ("MODE /?")を参照のこと。- execX=<実行プログラム>,<パラメータ>
起動と、linux停止時の終了順を指定するために<X>を指定する。 もし複数のパラメータがあるなら、ダブルクォーテーションを使用すること。
- 設定例:
exec0=C:\Programs\Xming\Xming.exe,":0 -clipboard -multiwindow -ac" # プログラムXming.exeをcolinuxにあわせて起動し、 # colinux停止時に終了する。- root=<root device>
ルートデバイスを指定する。
当然、カーネルにroot=を渡す必要がある。
- 設定例:
root=/dev/cobd0- その他
他のパラメータはそのままcoLinuxカーネルのブートパラメータとして 渡される。 例えば、"init 5"は、linuxのランレベルを指定する。
完全なサンプルとして、coLinuxをインストールしたディレクトリの "example.conf"を参照すること。
コメント