UMLは、2.2.15 以降のカーネルの上ならすべての Linux マシンで走るでしょう。もちろん、 2.4 なら全部.
UMLの起動は簡単です。
[jdike@hostpc]$ linuxこれだけです。 これにより、デフォルトのディスクイメージとしてカレントディレクトリの root_fs というファイルをマウントします。それ以外のディスクイメージを使う場合は、'ubd0=なんとか 'としてください。(訳注:ubd : Uml Block Device だと思う。uDbとかしやすいので注意)
[jdike@hostpc]$ linux ubd0=/home/jdike/images/root_fs_redhat_7_2あとは、カーネルがブートしてログインプロンプトが出てきます。
[jdike@hostpc]$ linux my_diff,ubd0=/home/jdike/images/root_fs_redhat_7_2とすれば、カレントにmy_diff という差分ファイルをつくって立ち上がる。 念のため、ディスクイメージのほうはリードオンリーにしておいたほうがいいだろう。 二回目以降からは、ディスクイメージのファイル名の指定は不要。linux my_diff だけで立ち上がる。理由は、差分ファイルのヘッダにそれがフルパスで書かれているから。
その辺から落としてきたディスクイメージの場合(訳注:このあたりで落とすか、uml filesystem root root_fs あたりで検索すれば出てくる。馬鹿でかいので要注意)、デフォルトで、
ID=root PASS=root ID=user PASS=userというアカウントが存在すると思います。あとは、わかるとおもいます。
なお、ほかの方法によるログインもできます。
仮想コンソールの設定がされているディスクイメージを使った場合は、仮想コンソール(訳注:普通のリナックスにおける、キーボード直接によるログインみたいなもの)が立ち上がってくるはずです。たとえば、/dev/ にデバイスを作って、/etc/inittab に getty を設定して、そこから xterm を立ち上げている場合とか。
なお、この仕様がいやな場合は、
Setting up serial lines and consoles
とかを参照の上、ご自身でお好きな設定を。
ブート時の画面(訳注:dmesgで参照可能)には、こんな↓行があるはず。
serial line 0 assigned pty /dev/ptyp1
この(仮想的な)シリアル回線に適当なターミナルソフトをつなげれば、シリアル回線からのログインが可能です。たとえば、minicom でログインしたければ、
minicom -o -p /dev/ttyp1
とかを、(ホスト側のLinuxで)実行すれば、UMLにログインできるはずです。
ネットワークの設定が適切に行われていれば、仮想マシンに telnet できます。
Setting up the network
に、仮想ネットワークをどのように設定するかが書いてあります。
訳注:このあたりの設定は、やんないと実用にならない割にはわかりづらい。よって、2002/4現在の、日本の一般的なlinux環境における結論をさらっと書いておくと、redhat 7.x 系列に、rpm で普通にインストールしたのなら、あとは、コマンドラインに
eth0=tuntap,,,192.168.0.100
とかつける。たとえば、こんな風。
[jdike@hostpc]$ linux ubd0=my_diff,/home/jdike/images/rh72 eth0=tuntap,,,192.168.0.100
そして、UML立ち上げ後、UML内部より、
[jdike@uml]# /sbin/ifconfig eth0 192.168.0.101
でOK。
注意点として、コマンドラインで指定するIPアドレスは、UMLから見た場合の仮想ルータのIPアドレスみたいなもの。UMLのなかでifconfig するときのIPアドレスとは
異なる
IPアドレスをつけること。さらに、この二つのIPアドレスは、二つともほかのマシンから見えるので、あなたのイーサネット網のなかではダブってはいけない。コマンドラインのほうのIPアドレスは、一応、使われてないIPアドレスを割り当てるのが基本のようだが、ホストOSのそれと同一でも実際にはOK(奇妙な感じもするけど)。
終了方法ですが、
#/sbin/halt #/sbin/poweroff #/sbin/shutdown -h nowあたりで終了してください。もとのLinuxのコマンドラインに復帰します。
実行例とかスクリーンショットとか。: