2015/05/12

(U)EFI と Mac と Fusion

先日の Windows7 でのシステムパーティションの話の続き。

Mac の場合は商用で販売されたすべての Intel Mac が EFIをファームウェアとしているため必ずこの領域が存在する。かつては100MB程度だったが、現在では 200MB程度を確保しているようだ。一部に、「Macで使ったディスクだと先頭に隠しパーティションがある」と言われているが、別に Mac に限らず、上記のように UEFI を使用した Windows でも作成される。

(U)EFIの実装自体にも 32bit, 64bit の二通りがある。たとえば初期の Intel Mac では 32bit EFI が使われている。32bit EFI の Mac は 64bit Kernel をブートできない。このため、サポートされる OS Xのバージョンは最大でも 10.7 Lion までとなる。
(10.8 Mountain Lion, 10.9 Marvericks, 10.10 Yosemite は 64bit kernel のみ。余談だが 10.6 Snow Leopard と 10.7 だけが 32/64bit 両対応の Kernel で 10.5 Leopard は 32bit Kernel しか存在しない。)

Windows の場合、32bit Windows は PC-BIOS で、64bit Windows から UEFI サポートが入るというのが原則となる。マイクロソフトの記事(日本語で情報が古い英語で最新)によると

  • 64bit で UEFIをサポート、ただしCSM必須
    • Windows 7
    • Windows Vista SP1
    • Windows Server 2008
    • Windows Server 2008 R2

  • 32bit/64bit 双方で UEFIをサポート
    • Windows 8
    • Windows 8.1
    • Windows Server 2012
    • Windows Server 2012 R2

となる。なお、セキュアブート UEFI 2.3.1(エラッタC対応)以降が必要になる。

また、64bit UEFI だけをファームウェアとする PC では 64bit Windows しか起動できない。( 当たり前の事だが 32bit CPU の PC では 64bit の Windows は起動できない )

64bit CPUをもつ PC でも、PC-BIOS をファームウェアとする場合は 32bit Windows が利用できる。

また、UEFI には CSM (Compatibility Support Module)という、UEFI でブートした後に PC-BIOS をエミュレーションするモジュールが定義されているが、これをサポートしている場合は、CSM経由で 32bit Windows を起動する事ができる。

ややこしいのは、Windows 7, 2008R2 など上段の4つのOSは「CSMが必須」であることだ。
これは、Windows 7, 2008 R2 などは起動処理中に INT10H を使ったビデオBIOSを使って画面描画を行うためだ。そう、Windows のロゴやらは旧来のPC-BIOSのもってたビデオBIOSで描画されている。
CSMを持たない UEFI をファームウェアとする PC の場合、INT10Hを処理できないので Windows 7 や 2008 R2 をインストールする事はできない。
なお、CSMをもたない UEFI は「Class 3」と呼ばれており、CSM をもつ UEFI を「Class 2」とよんで区別している。


VMware Fusion 7 では、32bit OSをゲストOSとして指定して仮想マシンを作成しても、一般的な 64bitOS を指定して仮想マシンを作成しても、PC-BIOSをファームウェアとした仮想マシンが作成される。
例外としては、OS XをゲストOSとして指定した場合だ。この場合は、32bit でも 64bit でも EFIをファームウェアとして構成される。
DTKの話で話したように、まっとうな OS X は EFIからしかブートできないからだ。


では、EFIで Windows がインストールできないかというと、そういうわけではない。
VMware Workstation と異なり、VMware Fusion にはファームウェアの BIOSかEFIかを設定する UI はない。が、.vmx ファイルに
firmware="efi"
を追記する事で、EFI をファームウェアとした仮想マシンを起動する事はできる。
(あるいは、ゲストOSをわざと OS X としてもいい)

実際に Windows 8.1 64bit をインストールしてみたが、ごく普通に動作した。

EFIを有効にしてインストールした場合
システム情報のBIOSモードがUEFIになる

普通にインストールした場合
PC-BIOSが有効になり、BIOSモードも「レガシ」となる