Site Home Page
What it's good for
Case Studies
Kernel Capabilities
Downloading it
Running it
Compiling
Installation
Building filesystems
Troubles
User Contributions
Related Links
The ToDo list
Projects
Diary
Thanks
Contacts
Tutorials
The HOWTO (html)
The HOWTO (text)
Host file access
Device inputs
Sharing filesystems
Creating filesystems
Virtual Networking
Management Console
Kernel Debugging
gprof and gcov
Running X
Diagnosing problems
Configuration
Installing Slackware
Porting UML
IO memory emulation
UML on 2G/2G hosts
Adding a UML system call
How you can help
Overview
Documentation
Utilities
Kernel bugs
Kernel projects
Screenshots
A virtual network
An X session
Transcripts
A login session
A debugging session
Slackware installation
Reference
Kernel switches
Slackware README
Papers
ALS 2000 paper (html)
ALS 2000 paper (TeX)
ALS 2000 slides
LCA 2001 slides
OLS 2001 paper (html)
OLS 2001 paper (TeX)
ALS 2001 paper (html)
ALS 2001 paper (TeX)
UML security (html)
LCA 2002 (html)
Fun and Games
Kernel Hangman
Disaster of the Month

で、みんなは何に使ってるの?

Kernel development and debugging
UMLは、Linuxのカーネルの開発やデバッグにさいし、普通のアプリのそれとおなじようなプロセスを可能にしている。gdb/gprof/gcov だってつかえるし。さらに、カーネルそれ自身ではなく、たとえばライブラリとか、カーネルに密接した部分も、今使ってるLinuxサーバとは絶縁した形で、自由な実験が可能だ。これ以上の情報は、 ここ ソースからカーネルをコンパイルする、とか、それを デバッグ する、とか、 デバッグ実行例 とかが参考になるだろう。
Process debugging
驚くかもしれないけど、UMLは、普通のアプリのデバッグに有用なときもあるんだ。たとえば、わけのわからないエラー、しかも、システムコール関係のそれがでて、どうすりゃいいか見当もつかない。いや、そこまではいかなくて、カーネルのドキュメントを見て考えるぐらいの余裕はあっても、実際には、たとえば、エラーコードからエラー原因をさぐろうにも、そのエラーコードを返す原因なんてクサるほど記載されていて特定不能だったり、さらには、そもそも、そんなエラーコードなんて、ドキュメントのどこにも載ってなかったり・・・。なんかありがちな状況だよね。
そんなときはUMLを使うのは一案かも。カーネルの中にブレークポイントを仕掛けてアプリを走らせれば、一発で何が悪いのかわかる、、かもね。
Safely playing with the latest kernels
あたらしいカーネルのテストにもUMLはいいかも。UMLはハードを直接たたいてるわけではない。あなたがわざわざ許可した場合は別だけど。だから、新しいカーネルに、たとえば、HDDを吹っ飛ばすような凄すぎるバグがあったばあいでも、吹っ飛ぶのは、UMLの仮想ディスクファイル( ubdとかroot_fs とか)だけだ。
Trying out new distributions
わけのわかんないディストリビューション (訳注:日本ではたとえばカルデラやマンドレークとかも含まれたりして(笑い)) や、既存のディストリビューションの新バージョンとかのテストにも、UMLはつかえるよ。UMLのファイルシステムは、それ全体がホスト(UMLを動かしている本物のLINUX)側から見ればひとつの馬鹿でかいファイルの中に作られる。パーティションを新しく切る必要性はまったくないんだ。 project download page ここには、いくつもの既製のディスクイメージがある。SuSE, Slackware, Debian, そして、Red Hat とかね。これらをダウンロードするだけで、そのディストリビューションが、同じPCのなかに共存できる。
Education
UMLは、教育分野において、強力なツールとなりうる。とくに、生徒にルート権限を渡さないといけないような分野、たとえば、OSの構造に関する教育とか、ネットワーク管理者の養成とか、それ以外でもシステム管理者関係とかのばあい、強力なツールとなりうる。 Jeff Dike の知ってる範囲でも、UMLは、さまざまな教育用途に使われています。ここにおいて特筆すべきことは、一人一台実際のマシン、という環境より、一人一台仮想マシン、という環境のほうが、はるかに便利だということです。
訳注:なぜ便利かというと、一番端的には、試行錯誤が許されるからです。ちょっと時期的に古いかもしれませんが、IT講習会騒動のときに使われればなぁ、といった印象を持ちました。
Experimental development
UMLは、UMLを走らせている本物のマシンではありえない状態に設定できます。たとえば、より多くのメモリ、より多くの周辺機器、そして、(これは今後の開発しだいですが)シングルCPUのマシン上で、マルチプロセッサを持つ(ように見える)UMLをつくり出すこともできます。ですから、対応するハードウェアを持っていない場合でも、そのハードウェアがあればどうなるのか、ということに関し、開発や検証が可能です。
Poking around inside a running system
UMLは、本物のLinux の上で動いています。よって、UMLのなかのLinuxカーネルの内部構造をいろいろイジるのは、普通のソフトのデバッグとあまり変わりません。 ですから、OSの内部構造に関心がある人にとっては、便利でしょう。
As a secure sandbox or jail
特別な許可を与えない限り、UMLの中のLinuxカーネルは、ハードウェアに対する直接のアクセスをしません。ですから、ヤバ目なソフトでも安心して実行できます。ウィンドウズにおいては、すでにウイルスが大流行ですが、それがLinuxにも上陸するでしょう。そんなときには、ヤバ目なソフトのテスト実行などが安心してできるUMLは便利でしょう。
(訳注:sandbox/jail とは、直訳すれば砂場、牢屋だが、コンピュータセキュリティ業界では「隔離施設」のような意味で使われる。)
Virtual networking
UML の仮想マシンは、仮想マシンどうしでも、ほかの(物理的に実在する)マシンとでも、ホスト(UMLを実行しているマシン)とでも、ネットワークを組むことができます。 実験的なデーモンのテストランなどに使えるでしょう。 ここ networking やここ virtual network screenshot とか参照。
As a test environment
ブートさせないとテストできないようなソフト(訳注:たとえば、ディストリビューションや rc で起動させるのが前提のデーモンとか)のテストにもUMLは使えます。UMLなら、そんなテストは簡単に自動かできますし、ここ available には、そのためのユーティリティもあります。 これは、ちょっとした perl のモジュールで、仮想マシンをブートさせ、ログインし、コマンドを走らせ、シャットダウンする一連の過程を、perl のオブジェクトとして提供します。
Disaster recovery practice
ある日突然、あなたのマシンがブートしなくなったらパニックですよね。 UMLは、仮想的にそんな大事件を提供できます。それをつかえば、そのような大惨事からどう復活するかの避難訓練が可能です。でも、そんなに深刻にとらえなくてもいいですよ。やってみると面白いから。
このコマンドを実行したらどうなることか。
rm -rf /
危ぶむなかれ。UMLなら危険なし。
A Linux environment for other operating systems
今のところは、UMLが動くのはLinuxの上だけです。しかし、 これは、将来そうなるかもね、といったレベルの話ですが、将来的には、 Linux以外のOSの上でUMLを動かすこともできるようになるかもしれません。 そうすれば、Linux以外のOSの上で本物のLinuxを動かし、その中で、Linuxのアプリ を動かすことが可能です。 これは、OSベンダにとっては、Linuxのアプリを自分のOSで動かすための面白いテクニックでもあります。 ここ projects とかにより詳しい情報が。
Virtual hosting
いわゆるレンタルサーバ業への応用も面白いでしょう。UMLは、そのための有用な手段となりえます。 といっても、これは、あくまでも可能性のレベルの話ですし、Jeff Dike としては、これが行われているという話は知りませんが。
1ユーザに1仮想マシンをつくり、その仮想マシンへのルートアカウントまですべて渡してしまう。あとは、仮想マシンの内部限定ですが、そのユーザは何でもできます。
It doesn't need to be good for anything. It's fun!
Hosted at SourceForge Logo