Cooperative Linuxプロジェクト 30
ストーリー by wakatono
Linux-runs-on-everywhere 部門より
Linux-runs-on-everywhere 部門より
LKMLのメールによると、
Windows上で動くLinuxカーネルと、周辺のコマンドセットとかを組み合わせたdistroであるCooperative Linuxの開発が進んでいる。ちなみにスポンサーは産業技術総合研究所。
現在、プロジェクトとしてリリースしているものはソースコードとビルド方法が記述されたドキュメント類。まずはこれらからなんとかしてくれということだろうが、非常に楽しそうだ。なお、現在Windows上でのビルドの方法が示されているが、ReactOS上へのポートも作業中のようだ(Project Home Pageより)。
類似のProjectであるUML for Win32がどうも進展ないだけに、こちらの方にも注目したい。
トップページの翻訳 (スコア:4, 参考になる)
coLinuxとは何か
... "Linuxが全てのアーキテクチャ上で動作するなら、別のオペレーティングシステム上でも動作すべきでないか?"...
Cooperative LinuxはMicorsoft Windows上でネイティブにLinuxを最適に実行できる最初の動作するフリーでオープン
ソースな手法です。より一般的には、Cooperative Linux(略称coLinux)はLinux kernelの移植の一つで、一つのマシン上で
別のオペレーティングシステムとともに協調的に動作するようにします。例えば、VMwareのような商用のPC仮想化ソフト
なしに、Windows 2000/XP上でLinuxを自由に実行でき、汎用PC仮想化ソフトを使用するよりより効率的に実行できます。
現在の状況は、KNOPPIX 日本語版をWindows上で実行できます(スクリーンショットを参照)。
動作手法
UML(や前述のVMware)等の他のLinux仮想化手法と異なり、ホストオペレーティングシステム上で特別なドライバソフトを
使って、coLinux kernelを特権モードで実行します(リング0やスーパバイザモードとして知られている)
ホストOSの状態とcoLinux kernelの状態間でマシンの状態を定期的に切り換えることにより、coLinuxは自身の特別に割り
当てられたアドレス空間内で物理マシンのMMUの完全な制御(つまり、ページングや保護)を提供し、ネイティブカーネルの
ように振る舞うことが可能で、同じマシンのスタンドアロン状態で実行する通常のLinuxから期待されるのとほぼ同じ
性能や機能を獲得しています。
coLinuxはユーザスペース実行可能プログラムにネイティブLinuxと同じバイナリフォーマットを使用しているので、
coLinuxはホストOSと同時に既存の無改変のLinuxディストリビューションを読み込み、実行できます。
ハードウェア仮想化
ホストオペレーティングシステムとハードウェアを協同的に共有するために、coLinuxはI/Oデバイスを直接アクセスしません。
代わりに、ホストOS内のcoLinuxドライバが提供するエミュレーションデバイスと接続します。例えば、Windows内の通常の
ファイルがcoLinux内ではブロックデバイスとして使用できます。全ての実ハードウェア割り込みは透過的に透過的にホスト
OSに送られ、そのため、ホストOSが実際のハードウェアを制御する方法は妨害されず、それゆえスムーズに実行を続けます。
移植性
User Mode Linuxと異なり、coLinuxは全てのLinuxプロセスに対して常にホストOSで単一のプロセスになり、ホストOSに実装
されている方法とは独立した手法で、独自にスケジューリングやリソース、フォールトを管理します。実は、coLinuxは動作
するためにホストOSカーネルから共通してエクスポートされるプリミティブの大変小さなセットのみ必要とし、それゆえ、
SolarisやLinux自身など他のどのオペレーティングシステム下で動作するようにかなり簡単に移植できます。
coLinuxはオープンソースWindowsクローンReactOS下で動作するよう移植されています。
Re:トップページの翻訳 (スコア:0)
ReactOS上で linuxサブシステムを実装している... とは
違うのかな。
ReactOSカーネル上でカーネル? むむぅ..
Re:トップページの翻訳 (スコア:0)
(Winの)カーネルドライバとして実行されれば、特権モードで任意のコードを実行することが出来る=カーネルも動くしMMUも触れる、
Re:トップページの翻訳 (スコア:1)
開発者の Dan Aloni 氏 (スコア:2, 興味深い)
というか、 開発者のDan Aloni氏は元々 UML を cygwin に移植しようとしてた人みたいですね。 Development Team Members [colinux.org] の説明に書いてあります。
最近 windows をさわる時間が長いので、こういう試みはとても楽しみです。
これはどういうものなのでしょうか? (スコア:1, 参考になる)
少しはググったのですが素人な私にはちょっと違いがわからなくて・・・
無知を承知での質問ですが識者の方からお教え頂ければと思います。
(質問の方向性からしてぜんぜんはずれてたらゴメン)
Re:これはどういうものなのでしょうか? (スコア:2, 参考になる)
coLinux = Windows上に用意したデバイスドライバを利用して Linux カーネル自身をエミュレーションするもの。
VMware/bochs = x86環境そのものをエミュレーションするもの。
wine = Windows API をエミュレーションするもの。
ということになります(coLinuxだけはドキュメントからの情報)。
Cygwinはソースコードレベルでの互換性しかなく、ネイティブLinuxでコンパイルされたバイナリは動作できないのに対して、coLinuxは同一のバイナリが動作するとのことです。
また、VMware/bochs はx86環境そのものをエミュレーションするため何らかの方法でインストラクションコードを変換する必要がありますが、coLinux は単にLinuxのAPIとシステムコールをエミュレーションするだけのようです。
あくまでも推測ですので間違ってたら修正お願いします。
Re:これはどういうものなのでしょうか? (スコア:1, 参考になる)
bochsはCPUもエミュレートします。
Re:これはどういうものなのでしょうか? (スコア:1, 参考になる)
「Linux API を利用できるようにする」という言い方だと *BSD の Linux Emulation のような実装を指すのではないでしょうか。
まだ「POSIX 風 API を間接的に利用できるようにする」といったほうが良いかと思います。
(Windows と UNIX の機能の差から、POSIX で規定されているいくつかの関数がかつての Cygwin では実装できてなかった記憶があります)
比較的近い実装は Services for UNIX 2.0 についてきた MKS Toolkit だと思います。
(SFU 3.0 の Interix サブシステムは Windows NT Micro Kernel のフェイスとして実装されているので、ちょっと違うでしょう。Interix サブシステムと同じような実装で Linux API を直接解釈できるサブシステムを作ることができると思いますが、かなり実現は難しいと思います)
Re:これはどういうものなのでしょうか? (スコア:0)
Re:これはどういうものなのでしょうか? (スコア:0)
#481467の例にならってまとめるとこんな感じになるのでしょうか。
(一応、より低いレベルでエミュレーションを行っているものから順に並べたつもりです)
アプリケーションレベル(user mode)でPCそのもののエミュレーションをおこなう。
(VMwareでは安全なコードをそのままCPUに実行させて速度を稼いでいるが、bochsはCPUのエミュレーションも行っているため遅い)
要、ゲストOS。
VMware/bochs上で動いているプログラムはホストOS(Windows)上から個別に認識できない(←あたりまえ)。
SFU無料化 (スコア:1)
スポンサーってどういう? (スコア:0)
webにも書いてあったんだけど
どういう風なスポンサーなのか書いてないなぁ..
そして、どういう風な経緯で英語圏の人が
わざわざ日本語版のKnoppixをベースにやることになったんだろ?
ひょっとして、aistの研究員の人?
Re:スポンサーってどういう? (スコア:1)
Re:スポンサーってどういう? (スコア:0)
もちろん責任というのはGPL的なNO WARRANTYという意味の責任ではなく、プロジェクトを推進すべき責任とか、社会的責任とか、要するに「AISTがやってんだろ」的な話は勘弁してくれと。
ややこしい (スコア:0)
産業技術総合研究所
他にも似たようなものってあるのかな?
Re:ややこしい (スコア:1)
産業技術研究所 [google.co.jp]ならかなりあるようです。
Re:ややこしい (スコア:0)
PS2対応キーボード(PlayStation2)
Re:ややこしい (スコア:0)
レポート (スコア:0)
Re:レポート (スコア:2, 参考になる)
make oldconfig して適当に設定して make してみたんですが、make dep でエラーになって先に進めません。
そんなわけで現在私はとりあえずここで詰まってます。
うーん、やっぱりドキュメントが早く充実して欲しいものです。
Re:レポート (スコア:0)
make vmlinux じゃ駄目ですか?
by な@ac
Re:レポート (スコア:0)
同じく駄目でした。
by な@ac
Re:レポート (スコア:0)
次のリリースから可能になるらしい。
次のリリースって事は、
tarballを作る時の失敗じゃなくて、致命的な何かがあったんでしょうね。
---
by な@ac
Re:レポート (スコア:0)
起動時にread onlyでfsckを促されたままプロンプトが出て
そのまま動いてはいますが...。コマンド打てば結果が返って
はきますし。
NTFSなCドライブにdebian 1gbのイメージを置いたのがいけない
のでしょうか NTFSへの書き込みはlinuxのサポート外?
Re:レポート (スコア:0)
Re:レポート (スコア:0)
X ServerみたいなものはWin32ネイティヴで走らせてもよろしかと。 スクリーンショット例ではCygwinのXFree86使ってたけど。
# AstecX使おうと思い立ったときはいつも試用版どまりだったのでAC
本家 (スコア:0)