talosはマルチユーザ、マルチタスクのOSです。 読み方は「たろす」です。 talosの概要で説明されているように マルウェアに強い耐性を持つことや、クラスタ化による管理の容易さ、高可用性などから 極めて低いTCOを実現する...予定です。
名前のtalosはギリシャ神話にでてくる巨人で、クレタ島の番をしていたそうです。
talosプロジェクトの目的は「容易に使え」、「容易に管理でき」、「安全な」システムを提供する事です。 以下にそれぞれの性質についてtalosプロジェクトにおける定義あるいは解釈を述べます。
究極的には「一つの法則がシステム全体を貫いて存在するためにその法則を会得するだけでほとんどの事ができるようになる」とでも言うようなものです。
これは、管理を自動化するためのツールが揃っているという事ではなく、究極的にはメンテナンスフリーで動作し続けるということを意味します。
「ユーザが指示あるいは設定していない事はしない」というのが基本的方針です。
ユーザプロセスがwebのプラグインのように制限された存在となるようなOSを実装する事を当面の目標とします。
なお、既存システムとは設計思想が大きく異るため既存システムの改造では改造範囲が大きくなり、 またそのことで既存システムの変化への追従が困難であると予想されるため、 既存システムの改造ではなく自前で実装することとします。
私(tarosuke)はSystem6の頃からMacintoshを使っていたのですが、時間が過ぎる程にいわゆるアプリケーションのユーザーインターフェイスがバラバラになり使用感が悪化していきました。 そこでそのような勝手なユーザーインターフェイスを実装できないOSとはどのようなものになるかを考えたのがtalosの発端です。
それから暫くしてPDFが普及しました。 しかし、私はそのWYSIWYGという考え方に非常に強い不満を感じていました。 PDFはフォントサイズと占有面積の無用なトレードオフ関係を画面に持ち込みます。 私は「みんなwebのようにリキッドテキストになってしまえばいいのに」と思いました。 今でもそう思ってます。
それから更に時は流れ...今ではマルウェアの蔓延する世界になってしまっています。 実を言うと私がこの問題をテーマとする前にユーザインターフェイスに関する理由で解決策が発見されていたので直接このテーマのために解決策を組み立てたわけではありません。 しかし、マルウェアプルーフなシステムというインパクトの大きいテーマは私を強く鼓舞しました。 そして、この一押しが決め手となってプロジェクトtalosは転がり始めました。
現在のOSが抱える問題には私的にはユーザインターフェイスの出来の悪さと管理の繁雑さがあり、 一方で公的な問題としてセキュリティの問題があります。
背景にもあるようにユーザインターフェイスがアプリケーションごとにバラバラになって使用感が悪化しています。 また、紙メタファを画面に持ち込む事により占有面積と文字サイズとの間のトレードオフなどの幾つかの非常に嫌な問題が発生しています。
アプリケーションモデルの元ではユーザプロセスに例えばjpeg画像を解釈するだとか、メニューを出すだとかのような機能の重複が大量に発生します。 これらは通常、共有ライブラリとしてまとめられるのですが、大量にあるので依存関係の管理をしなければならない状態です。 大抵はこれらライブラリの依存関係管理は自動化されていますが、稀に管理に失敗する事もあるのが現状です。
また、既存システムは環境の引き継ぎが困難であり、現状では新たに設定し直すか 旧システムのディレクトリツリーをそのまま内包させる形でファイルを引き継ぎ、 そこから必要なファイルを取り出すという形で解決を図ろうとするのが現状です。
いわゆるマルウェアの蔓延によりコンピューティングの安全が脅かされ、安全を保つために多大な労力を必要とするようになっています。 そしてその労力を払っていたとしても原理的には危険なままであることに変わりはありません。
基本的にはユーザプロセスには必要最低限の事しかさせません。 特にシステムワイドなリソースや恒久的リソースの作成や指定はさせません。 それらはプロセッサによって保護されているカーネルが主にユーザの指示によって行います。
ユーザプロセスになるべくユーザインターフェイスのための処理をさせません。 そうすればユーザプロセスで勝手なユーザインターフェイスを実装される事はありません。 また、ユーザプロセスにレイアウトをさせない事で紙メタファの侵入を防ぎます。
ユーザプロセスの機能重複を避け、それぞれが単機能になるようにします。 ユーザプロセス同士が直接通信するのではなく、必ずカーネルを通して通信するようにします。 また、ユーザプロセス自体のインターフェイスを機能ごとに標準化し、基本機能部分での互換性を保ちます。 こうすることで共有ライブラリ自体を極々基本的なもののみに限定しつつ、ユーザプロセスの実装による差異も最小限に抑えます。
また、環境の継続性についてはtalosシステムをクラスタシステムにすることで、 環境自体に永続性を持たせる計画です。
マルウェアは、例えばウイルスなら他のファイルを改変する事で、スパイウェアなら他のファイルを開いたりウインドウやドライバなどの資源をフックする事で実現されるので、そもそもそのような機能がなければ実現される事はありません。 そのためにはリソース作成/指定の処理をユーザプロセスではなくカーネルでする必要があります。
また、実行可能領域を書き込み禁止に、読み書き可能領域を実行不可に設定することで、 侵入の基本的な手段である「スタックオーバーフロー」や「バッファオーバーフロー」を完全に封じます。
なお、これはユーザプロセスへの侵入対策で(コンパイラの都合により)カーネルは含まれていませんが、 カーネルへの侵入対策としてはカーネルが通信の端点にならないことで侵入口そのものをなくす方針です。
もう少し具体的には、ユーザプロセスをアプリケーションのような独立した存在ではなくwebブラウザのプラグインのような制限された存在にします。 奇しくもユーザインターフェイス的側面と管理的側面、セキュリティ的側面の示す解決策がこの同一の方向を指していて、この方針が策として自然である事を示唆しています。
まだ開発中であり正式リリースはしていないのでSourcForge.netのダウンロードページには何もありません。 今の所ちょっと古いバイナリのfdイメージかisoイメージを動かすか後述の方法でソースからビルドすることになります。
ちなみに現在の所、動かした時の画面はたとえば左の画像のような感じです。 |
ソースからビルドしてやろうという奇特な方は以下の手順を踏む事になります。
まずは以下のものを用意する必要があります。
これがなければ話になりません。 ここにツリーのままで置いてあります。 tar玉とかではないので取得するならwgetあたりでツリーごと取得する必要があります。 なお、これはSubversionのリポジトリですので、どうせならSubversionを使う方がよいでしょう。 「svn co http://talos-kernel.svn.sourceforge.net/svnroot/talos-kernel/current talos」みたいにして取得できます。
なお、見るだけだったらkrugleあるいはSourceForgeのリポジトリブラウザで。
xBSDやcygwin、他のUNIXでもビルドできるかも知れませんが、現在の所talosプロジェクトではLinux環境以外でのビルドに関しては全くチェックしていません。
開発環境用のセルフ開発環境が必要です。 クロスの開発環境やフォントの変換などのホスト側ユーティリティを構築するのに使います。 要はgccとかgasなどです。 CだけでなくC++も必要ですのでg++も要ります。 大抵のLinux環境には入っていますがUbuntuなどのように最初からは入っていない環境もあります。
http越しにファイルを取得するツールです。 そのようなツールはcurlやftpなど他にもありますがmakefile.inはwgetを使うものとして書かれています。 他のツールを使うならmakefile.inを修正する必要があります。
ブータブルCD用イメージを作るのに使います。 CDを作らなければ不要です。
バイナリイメージを作る時に使います。 これらを使えないLinux環境はないと思いますが念のため。
gccをビルドするのでそれなりにいろいろ必要となります。 それに比べるとtalos自体のビルドは時間的にもリソース的にも大した事はありません。
ソースツリーのルートで「./configure (アーキテクチャ) (ツリー名)」を実行します。 (アーキテクチャ)は今の所「oadg」が入ります。これはいわゆるDOS/Vコンパチの事です。 (ツリー名)は単にディレクトリ名になるだけです。
「cd obsj/(ツリー名)」してオブジェクト置場へ移動したらこの段階はおしまいです。
「make gnutools」します。 gccやbinutilsのソースを取得しビルド、インストールしてくれます。 これにはそれなりに時間がかかるので気長に待ちましょう。 ツールはその場所から見て「../tools」以下にインストールされます。
なお、gccやbinutilsで絶対パスを使っているのでtalosのソースツリーを移動する時はツール類を再ビルドする必要があります。
talosを設定するにはconfig.hを編集します。 中身の説明は追いヽする予定なので、今はそのままにしておきましょう。
とりあえず「make」してみましょう。 makeのターゲットとして「talos.fd」を指定するとフロッピーディスク用イメージが、 「talos.iso」を指定するとブータブルCD用イメージができます。
他のターゲットには開発やサイトメンテナンスのためのツールになっているものなどがあります。 流動的なのでここで解説する事はしません。 必要ならmakefile.inやmakefile(オリジナルはarch/*/makeflie)を読んでみて下さい。
talosは暗黙的にはGPLv2以降でライセンスされます。 また、個別に別の条件でライセンスする用意もあります。 GPL以外のライセンスを希望する場合はまず連絡を下さい。
意思決定は「コンセプトベース」でなされます。 つまり、判断基準は「talos的であるかどうか」で、例えば一般的ないわゆるアプリケーションをtalos上で実装しようとする試みは「talos的でない」と却下されるという具合です。