Macで仮想化環境を作るには?
なぜMacの上で仮想マシンを動かすのか?
なぜ、Macの上で仮想マシンを動かすのでしょうか。理由は人それぞれだと思いますが、大きく4つの理由に分かれると思います。
1.Windowsでしか動かないアプリを稼働させたい
2.Windowsでしか動かないハードウエアを利用したい
3.テストのためにほかの環境にアプリケーションを導入したい
4.LinuxなどほかのOSを導入したい
もっとも多いのは、1番目の理由でしょう。Mac OS X(以下、OS X)が発売されたころは、多くのアプリケーションがWindows専用で、OS Xだけでは不自由なことが多くありました。
ここ数年でOS Xのアプリケーションは非常に充実し、日常的に使うアプリケーションのほとんどがそろうようになりましたが、やはりまだWindows専用のアプリケーションも多く存在します。特にゲームや動画再生などメディア関連のアプリケーション、またビジネス向けの専用アプリケーションなどです。ビジネス向けアプリケーションの場合、業種、企業ごとに独自のアプリケーションが存在し、それがないと業務に大きな支障をきたすことがあります。これは企業でのOS X利用(というよりはWindows以外の利用)が進まない一因になっています。
OS Xを利用していて一番困るものに「Internet Exploreのみ利用可能なWebサイト」があります。例えば、銀行など金融系ではInternet Exploreが必須のサイトがあり、これらのWebサイトにアクセスするには、別途Windows PCを用意する必要があります。
2番目も1番目とほぼ同じ理由です。現在PCの周辺機器の多くはUSB接続になり、USB搭載のMacでも利用できるようになっています。しかし周辺機器を使うには、USBでつながること以外にドライバが提供されている必要があります。そのためメーカーがOS X版のドライバを出していなければ、利用できないためWindowsが必要になります。
3番目は、新しいアプリケーションを導入したいが、現在の環境に入れると安定性などが損なわれるため、仮想化環境にインストールしたいという場合です。Windowsで仮想化環境を使う場合は、このような用途が多いと思います。
OS Xでも、同じようにOS Xの仮想化環境を作り、そこにアプリケーションをインストールしたいところですが、現在、OS Xでは使用許諾条件の制約により、仮想化環境にOS Xをインストールすることが認められていないため、実現できません。ただしサーバー版に限り特定の条件では仮想化環境にOS Xをインストールすることが認められています。これについてはMac OS X Serverのソフトウェア使用許諾契約(http://images.apple.com/legal/sla/docs/macOS Xserver105.pdf)を参照してください。
開発や勉強のためにLinuxなどOS X以外のOSを導入したいと思うことがあります。しかしOS Xを消去してLinuxを導入するというのも抵抗があります。そういうときには、OS Xの上で仮想化環境を動かし、その上にLinuxをインストールすることで、OS Xを使いつつLinuxを使うことができます。
このような要望に応えるのが仮想化環境です。少し残念なのは3番でも説明した通り、仮想化環境上でOS Xを稼働させることができない点です。しかし、それを除いても仮想化環境を導入するメリットは多分にあると言えます。
この仮想化環境を提供しているPCを「ホストOS」と呼びます。この場合、Intel Macの上で動いているOS XがホストOSです。その上の仮想化環境で動いているOSを「ゲストOS」と呼びます。
仮想化の種類
境の場合は大別すると2種類になります(図1)。
1. ネーティブ仮想化
2. APIエミュレーション
多くの仮想化環境は、1番の「ネーティブ仮想化」と呼ばれるものです。これは、現在動いているOS Xのアプリケーションの1つとして仮想的なPCを作りだし、その上にWindowsなどのOSをインストールする方法です。この方法では、仮想化環境でも同じCPUが稼働しているように見えます。
しかしPowerPCのMacの上でx86 CPUのWindowsを稼働させる場合には、このネーティブ仮想化ではできません。このようにCPUの種類が違う場合、CPUの挙動もすべてソフトウエアで行う必要があります。これは「エミュレーション」と呼ばれます。エミュレーションはPCの仮想化だけでなく、ゲーム機の仮想化などでもよく使われる手段です。Appleが提供するiPhoneアプリケーション開発環境にも、ARMで動いているiPhoneをエミュレーションするソフトウエアが同梱(どうこん)されています。
もう1つが「APIエミュレーション」です。ネーティブ仮想化がPC本体を仮想化するのに対して、APIエミュレーションはWindows自体を仮想化します。正確には、Windowsとアプリケーションの間をやりとりするAPIを提供するアプリケーションです。
ネーティブ仮想化では、パソコン本体のふりをして(仮想化)、その上にWindowsなどのアプリケーションをインストールして、実行します。
それに対してAPIエミュレーションでは、Windowsそのものの振りをします。そのため、別途Windowsをインストールする必要がありません。OS全体をエミュレーションするのに比べて、APIのみをエミュレーションする方が、範囲が狭く、速度が速くなると言う利点があります。
次ページではそれぞれの方式の具体的な例を紹介していきます。