Vine Mac   - Vine Linux PPC on iBook で始めるリナックス -


■ Vine Linux on QEMU ■


Windows 上で Linux をエミュレートする方法は色々ありますが、
今回は QEMU を使ったやり方を紹介してみます。

QEMU は、様々なホストOS上で色々なゲストOSを動かす事が出来るアプリケーションで、
賊にエミュレーターと呼ばれているプログラムの一種です。
完全フリーでありながら Windows、MacOS X、Linux 上で動作し、
x86 型の CPU を高速にエミュレートします。

以下、ホストOS : Windows 2000 Pro 上の QEMU で、
ゲストOS : Vine Linux 3.2 i386 を動かす設定方法です。

使用環境:windows 2k Pro SP4, Qemu-0.8.0-qvm86.exe, Qvm86-20060211.exe,
        openvpn-2.0.5-install.exe, Vine Linux 3.2 i386, 02/26/2006



● QEMU with Qvm86 のインストール

QEMU には kqemu というアクセラレータープログラムが存在し、
kqemu をホストOSに組み込むことで、QEMU のエミュレート速度を上げることが出来ます。
今回は、kqemu のクローンである Qvm86 に対応した QEMU を用いました。

QEMU on Windows のサイト より以下の2つをダウンロードしてインストールします。

Qemu-0.8.0-qvm86.exe
Qvm86-20060211.exe

Qemu-0.8.0-qvm86.exe が QEMU 本体で、
Qvm86-20060211.exe がホストOSへアクセラレーターをインストールするプログラムです。

ホスト Windows 上の適当な場所へインストールしてください。



● ディスクイメージ作成

Vine Linux をインストールするための、空のディスクイメージを作ります。
ディスクイメージの操作は、DOS コマンドプロント上で、
QEMU インストールフォルダ内に同封されている qemu-img.exe を実行します。

(例) カレントディレクトリ内に vinelinux.img という名称で 3G のディスクイメージを作成

> qemu-img create vinelinux.img 3000M
Formating 'vinelinux.img', fmt=raw, size=3072000 kB
>

qemu-img.exe を create コマンドで動作させています。
容量をメガ単位で指定することに注意してください。

これで 3G のディスクイメージが作成されます。
容量可変型ではなく実際に 3G 確保されるので、結構時間がかかります。



● Vine Linux 3.1 i386 のインストール

先ほど作成した空のディスクイメージ内へ、Vine Linux 3.2 をインストールします。

まず、Vine Linux のサイト 等から、
i386 用のインストールCDのイメージをダウンロードしておいてください。
その後、先ほどのディスクイメージを HDD として読み込ませつつ、
インストールCDを起動ディスクに指定して QEMU を立ち上げます。

(例) Vine32-i386.iso を CD に、vinelinux.img を HDD に指定して、CD ブートで QEMU を起動

> qemu -cdrom ./Vine32-i386.iso -hda ./vinelinux.img -boot d -L ./bios/
QEMU acceleration layer enabled

-cdrom オプションで Vine Linux のインストールCDイメージを指定し、
-hda オプションで先ほど作ったディスクイメージの位置を指定します。
-boot a で フロッピー、-boot c で HDD、-boot d で CD よりシステムをブートさせます。

-L オプションは、bios ファイルがあるフォルダの位置を指定するオプションです。
通常は、qemu フォルダ内にある bios フォルダ以下に bios ファイルが置かれています。

うまくいけば、おなじみの起動画面が表示されるはずです。
コマンドプロント上に "QEMU acceleration layer enabled" メッセージが表示されていれば、
Qvm86 アクセラレーターによる加速化が正常に動作しています。



この後は、実際のマシンにインストールする場合と全く同様にインストールできます。
インストーラーに従って、Vine Linux のインストールを完了させてください。



● Vine Linux on QEMU の起動

インストールが完了したディスクイメージより Linux on QEMU を立ち上げます。
先ほどの要領で、今度は Vine Linux のインストールが完了したディスクイメージを
起動ディスクに指定して、QEMU を起動します。

(例) vinelinux.img を HDD に指定して、使用メモリ 128、 HDD ブートで qemu を起動

> qemu -hda ./vinelinux.img -m 128 -boot c -L ./bios/
QEMU acceleration layer enabled

-m オプションで QEMU が使用するメモリ量を指定することが出来ます。
-L オプションで bios の位置を指定することを忘れないでください。

インストールに滞りがなければ、Vine Linux が QEMU ウィンドウ内で立ち上がるはずです。




システム起動後は、実際の Linux と全く同様に扱うことが出来ます。



決して軽いとは言えないものの、
Windows のウィンドウ内で、Vine Linux が完全に動作してしまっています。
さすがに初めて試したときは、ちょっと感動ものでした。

ゲストOSのマウスカーソルを操作するには、ゲストOSの画面をクリックします。
また、[Ctrl] + [Alt] キーを同時に押すことで、
ゲストOSとホストOS間のマウスカーソル操作を交互に切り替える事が出来ます。



● ゲストOSのネットワーク設定 (ユーザーモードネットワーク編)

QEMU 起動時に特にネットワークオプションを付けなかった場合は、
ゲストOSはユーザーモードネットワークで立ち上がります。

このモードでは、ゲストOSは、ゲートウェイやDNSサーバー等を含む、
以下のような仮想的ネットワーク内に配置されています。

ゲストOSのIPアドレス 10.0.2.15
ゲートウェイ 10.0.2.2
ネットマスク 255.255.255.0
DNSサーバー 10..0.2.3
Sambaサーバー 10.0.2.4

これらの情報を受け渡す仮想的 DHCP サーバーも立ち上がっているので、
Vine Linux のネットワーク設定で DHCP の設定を受けるようにしていると、
OSの起動時に上記の環境でネットワークに接続していると思います。
ifconfig コマンドなどで確認してみてください。

ユーザーモードネットワークでは、ゲストOS → インターネット の接続は問題なく通りますが、
インターネット → ゲストOS への接続はデフォルトでは通りません。
ゲストOSに対するポートの開放は -redir オプションで指定します。

QEMU の起動時に -redir tcp:[port1]::[port2] オプションを付けることで、
ホストOSの [port1] への接続をゲストOSの [port2] への接続と見なす事が出来ます。

(例) ゲストOSへの SSH 接続を解放した状態で QEMU を起動する。

> qemu -hda ./vinelinux.img -m 128 -boot c -L ./bios/ -redir tcp:22::22
QEMU acceleration layer enabled

上記のオプションを付けてゲストOSを起動すると、ホストOSのポート22をゲストOSに解放します。
ゲストOS起動後、ホストOS上の Tera Term 等で localhost へ接続すると、
ゲストOS 上の SSH サーバーへと接続することが出来ます。
仮想的ポートフォワーディングといったところでしょうか。

なお、redir によるポートの受け渡しは、
ゲストOSの起動時にDHCPサーバーを参照する設定にしていないと、うまく働かないようです。
redir によるポートフォワーディングが効かない場合は、ゲストOS上で

$ netconfig

と打って DHCP サーバーから情報を取得する設定にした後、

$ dhcpcd -k

として、一度 DHCP Client からIPアドレスを解放させてください。
その後、QEMU ごとゲストOSを再起動させてみると、うまくいくと思います。

ユーザーモードネットワークは QEMU 独特のネットワークで、
ゲストOS上で DHCP サーバーさえ動いていればよいので、設定が非常に楽です。
必要なポートは -redir オプションで通せますし、
特に不都合が出ない場合は、ユーザーモードネットワークの利用が便利だと思います。



● 起動スクリプトの用意

QEMU を起動するのに、毎回コマンドプロントを開いてオプション指定するのは少し面倒です。

以下のような内容のテキストファイルを作り、拡張子を ".bat" に変えることで、
ダブルクリックに対応したコマンドプロント用バッチファイルを作ることが出来ます。

REM Start qemu on windows.
@ECHO OFF

START
./qemu.exe -L ./bios -m 96 -hda ./vinelinux.img -boot c -redir tcp:22::22 -redir tcp:80::80 -redir tcp:21::21

CLS
EXIT

vinelinux.img を HDD に指定し、使用メモリ96M、ポート22、80、21を解放した設定です。
qemu.exe と同じフォルダ内に置いてダブルクリックすると、自動的に QEMU が立ち上がります。



QEMU の最大の特徴は、Administrator アカウントを持たないホストOS上でも、
ネットワーク接続まで完全にエミュレートできる事です。
普段使っているOSをイメージファイルに詰め込んで iPod などに入れて持ち歩き、
例えば出張先のネットカフェ内のパソコン上でエミュレートさせる、といった使い方も可能です。

これで完全フリー・オープンソースなのですから、ある意味革命的ですね。