San Francisco


Date/Time: 2007:06:09 16:01:52
Camera: RICOH
Model: GR Digital
Exporsure Time: 1/640
FNumber: 5.6
Aperture Value: 4.9
Focal Length: 5.9

Close

y2blog » Mac EFI環境下でのWindowsのインストール

3

31

2013

Mac EFI環境下でのWindowsのインストール

UEFI対応の64bit版WindowsをMacにインストールしてみた


EFIについてのおさらい


最近のMacintoshのハードウェアはEFI対応になっており、Mac OS X の世界ではIntelチップ以降のMacintoshは全てEFI仕様で作られている.EFIのオプション機能としてレガシーなBIOSにしか対応していない古いOSをサポートするための互換機能があり、Appleが提供するBootCamp方式* によるWindows OS のサポートはこの互換機能を利用している.


(BootCamp 方式: ここではEFIの互換機能を用いて従来のMBR方式でOSを起動する方式を総称して”BootCamp方式”と呼ぶことにする.Appleが提供している “BootCamp Assistant” ツールは単なるパーティショニングとWindowsインストール環境をアシストするためのツールで、このツールがなくても自分でパーティション分割を行って WindowsやLinuxをインストールすることができる.)


Macintosh(Intel)の起動可能なディスクドライブのパーティション構造はEFIの標準パーティションであるGPT(GUID Partition Table)方式なのだが、Appleは”BootCamp”を発表した際にちょっとした工夫を加えてレガシーなWindows OSを Mac OS X と併存できる仕組みを導入した.この辺の仕組みは “BootCamp” が発表された当時の記事にまとめてあるので、こちらの記事を参考にして欲しい.


・「MacでWin – BootCamp (その1)
・「MacでWin – BootCamp (その2)
・「MacでWin – BootCamp (その3)
・「MacでWin – BootCamp (その4)
・「MacでWin – BootCamp (その5)

この記事を書いたときから大部時間が経過しているので、現在の状況とは一部異なる(当時のMacintoshは32bitのEFI環境しかなかった)部分があるが、基本的な仕組みは現在の64bit UEFI環境と変わっていないだろう(多分).


64bit版WindowsでのUEFI対応について


Vista以降の64bit版のWindows は全てUEFI x64マシンに対応しており、純粋にUEFI環境下で問題無くWindowsをインストールし、動作させることが可能な筈だ.私はもう何年もDOS/V系の自作PCから遠ざかっており、UEFI対応のマザーボードを持ち合わせていないので実際に実用的にUEFI環境下でWindowsが使えるかどうかは良く分からない.


Windows系サーバOSは別として、クライアント用のWindowsをUEFI環境下で動かしているコアな人達がどの程度居るのかは皆目不明だが、少なくとも最近のマザーボードやHPなどのビジネス用のノートPCではUEFIに対応しているようだ.


64bit版Windowsを Macintosh にインストールする場合、Macintosh側とWindows側の双方のレガシーMBR互換機能が仇となり、純粋にUEFI環境下のネイティブOSとして機能させることは難しい.折角UEFIという従来のBIOSレガシー環境から脱却出来るはずが、レガシーサポート機能によって最新の機能を利用できないという皮肉な状況になっている.

Win7 Error MSG
GPT形式できちんとフォーマットされているにも拘わらず “GPTではない” とおっしゃる困ったインストーラ

特にWindowsのインストーラは困り物で、ディスクドライブ上に有効なMBRエントリが有る場合、そのディスクドライブがGPTできちんとフォーマットされているにも拘わらず、GPT形式ではないとみなしてインストール作業を拒否してしまう.先ずはGPTのエントリを調べてから、その後でMBRをチェックするのが真っ当なインストーラのチェック手順だと思うが、Microsoftは64bit Windowsでも UEFI は異端児扱いだ.


2.2TB以下のHDDの場合はMBR形式として扱えばWindowsのインストールは可能で有るが、この場合は従来のMBR方式の制限を引きずってのWindowsの運用となってしまう.先日Appleが対応した2.2TB越えのHDDドライブで “BootCamp Assistant” がWindowsをインストールできるようにしたのは、単にHDDのパーティションの構成を工夫してWindowsのインストーラを騙しているだけで、実態は従来のMBR互換機能によるレガシーWindows環境であることに変わりは無い.



Macintoshを純粋にUEFIマシンとしてWindowsをインストールしてみた


Windowsをインストールする際に先ず確認しておかなければならないことがある.それは64bit版のWindowsのインストールは2種類の方法を使い分ける必要があり、従来のMBR方式によるインストールモードとUEFI環境でのインストールモードとで最初に起動するブートローダが異なることである.


Macintoshでは起動時に”Option” キーを押し続けることで起動OSを切り替えることができるが、EFIモードでインストールするには “EFI Boot” 側のアイコンを選べば良い.MBRモードの場合は “Windows” を選ぶ.


この方法は最新の “Windows 8” では有効だったが、Windows 7 では一番新しい SP1版を用いてもインストーラのEFI起動はできなかった.恐らくWindows 7 のEFIブートローダプログラムがMacintoshのEFI環境に対応できていないのだろう.試しに Windows 8 のEFIブートローダ部分だけを無理矢理Windows 7のインストーラUSBメモリに組み込んで見たが、上手くWindows 7のEFIモードのインストーラを起動させることはできなかった.現状では Windows 8 しかEFIブートできないようだ.


Windows 7 のEFIブートローダがMacintoshのブートセレクタの画面上に現れたり現れたりしなかったりする現象に悩まされたが、どうやら Windows 7 では最初に検出されたドライブ(”/dev/disk0″)にMBRが含まれているとEFIブートローダが表示されないようだ.今回テストに用いたマシンはFusion Drive構成のため、再起動や電源ON時に内蔵SSD, 内蔵HDDのどちらが先に起動準備が整うかで、ディスクドライブの割り当てが “/dev/disk0”, “/dev/disk1” のどちらかに割り振られていた.尚、Windows 8 の場合はMBRの存在如何に関わらず常に EFIブートローダが表示されるようだ.

Win8 DVD Contents
Windows 8 JP Enterprise版のDVDのEFIブートローダプログラム

Mac Original Boot Selector
起動時に “Option” キーを押し続けてブートセレクタを呼び出す(”EFI Boot” を選ぶと EFIモードでインストール)

EFI Install Initial Screen
EFIインストールモード時の画面は高解像度で表示される

MBR Install Mode
MBRインストールモード時の画面は従来のVGA解像度で表示される

 

無事 Windows 8のEFIモードのインストーラが起動でき、インストール作業が順調に進むかと思いきや、EFIモードでは “MBRが含まれているのでインストールできない” と連れないメッセージとともにまたもやインストールが拒否されてしまった.OS X の “DiskUtility” で予めFAT32パーティションを作成してあったので、疑似MBR(”Hybrid MBR”と呼んだ方が良いかも)エントリが含まれていたようだ.


純粋に HFS+パーティション だけでパーティショニングしておけば大丈夫そうだが、MBRレコードのパーティションテーブルのエントリが一つだけの所謂 “Protective MBR” でなければいけないようだ.





【ディスクのパーティション状況】

iMac27:~ yasuaki$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS OSXSSD                  80.0 GB    disk0s2
   3:          Apple_CoreStorage                         40.9 GB    disk0s3
   4:                 Apple_Boot Boot OS X               134.2 MB   disk0s4
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *3.0 TB     disk1
   1:                        EFI                         209.7 MB   disk1s1
   2:                  Apple_HFS OSXHDD                  80.0 GB    disk1s2
   3:                  Apple_HFS Shared                  64.0 GB    disk1s3
   4:       Microsoft Basic Data WIN7                    80.0 GB    disk1s4
   5:          Apple_CoreStorage                         1.5 TB     disk1s5
   6:                 Apple_Boot Boot OS X               134.2 MB   disk1s6
   7:                  Apple_HFS Works                   1.0 TB     disk1s7
   8:                  Apple_HFS Tmp                     256.0 GB   disk1s8
   9:                  Apple_HFS Scratch                 9.9 GB     disk1s9

【MBRパーティションテーブルのエントリ】

iMac27:~ root# fdisk /dev/disk0
Disk: /dev/disk0	geometry: 14751/255/63 [236978176 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 -  236978175] 
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      

Disk: /dev/disk1	geometry: 97451/255/63 [1565565872 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 -     409639] 
 2: AF 1023 254  63 - 1023 254  63 [    409640 -  156183168] HFS+        
 3: AF 1023 254  63 - 1023 254  63 [ 156854952 -  124933168] HFS+        
 4: 0B 1023 254  63 - 1023 254  63 [ 282050560 -  156248064] Win95 FAT-32



MBR Detection Error
有効なMBRエントリが存在するとEFIモードにも拘わらずインストールできない


【MBRセクタのバックアップ】

iMac27:~ root# dd if=/dev/disk0 of=disk0MBR bs=512 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.002035 secs (251580 bytes/sec)

iMac27:~ root# dd if=/dev/disk1  of=disk1MBR bs=512 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.022756 secs (22499 bytes/sec)

【MBRセクタの中身を確認】 iMac27:~ root# od -x disk0MBR 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 0000660 0000 0000 0000 0000 0000 0000 0000 fe00 0000700 ffff feee ffff 0001 0000 ffff 0e1f 0000 0000720 0000 0000 0000 0000 0000 0000 0000 0000 * 0000760 0000 0000 0000 0000 0000 0000 0000 aa55 0001000 iMac27:~ root# od -x disk1MBR 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 0000660 0000 0000 0000 0000 b806 e3c2 0000 fe00 0000700 ffff feee ffff 0001 0000 4027 0006 fe00 0000720 ffff feaf ffff 4028 0006 2a80 094f fe00 0000740 ffff feaf ffff 6aa8 0959 5430 0772 fe00 0000760 ffff fe0b ffff c000 10cf 2800 0950 aa55 0001000

有効なGPT形式の状態を保持するには、最初のパーティションテーブルのエントリを書き換えて、ディスク全体を保護するようにセクタの数値を書き換え、2〜3番目のエントリを消去すれば有効な”protective MBR”セクタになるのだが、計算が面倒なので全部ゼロで埋めてディスク全体を無効化してしまうことにした.


無効化するのは簡単で、ddコマンドで次の様にセクタ#0をゼロで埋めれば良い.




【CoreStorage論理ボリュームの解除およびディスクドライブのアンマウント】

sh-3.2# diskutil cs delete F7878A43-F141-44D3-B8A4-3833AECF6FB3
Started CoreStorage operation
Ejecting Logical Volumes
Destroying Logical Volume Group
Erasing disk0s3
Initialized /dev/rdisk0s3 as a 38 GB HFS Plus volume with a 8192k journal
Mounting disk
Erasing disk1s5
Initialized /dev/rdisk1s5 as a 1 TB HFS Plus volume with a 114688k journal
Mounting disk
Finished CoreStorage operation

sh-3.2# diskutil unmountdisk /dev/disk1
Unmount of all volumes on disk1 was successful

【MBRセクタのゼロクリア】

sh-3.2# dd if=/dev/zero of=/dev/disk1 bs=512 count=1
1+0 records in
1+0 records out
512 bytes transferred in 0.000306 secs (1672495 bytes/sec)



Windows 8 のEFIインストール


今回は3TB HDD側にWindowsのインストーラで64GB程度をWindows 8用に確保し、その後に残りの領域をNTFSの1つのボリュームを作成した後、Mac OS X 側で”Diskutil”コマンドを用いてこのボリュームをMac OS X用のパーティションに分割した.Windows 8 のインストール後に、Mac OS X をリストアすることでWindows 8(EFIモード)とMac OS X とのマルチブート構成を採ることができる.


Windows 8 インストールの様子を撮り忘れたので画像は省略するが、通常のDOS/V機のインストール作業と何ら変わることはない.




【Windows 8をEFIモードでインストールした直後のパーティション構造】

iMac27:~ yasuaki$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   *121.3 GB   disk0
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *3.0 TB     disk1
   1: DE94BBA4-06D1-4D40-A16A-BFD50179D6AC               314.6 MB   disk1s1
   2:                        EFI                         103.8 MB   disk1s2
   3:         Microsoft Reserved                         134.2 MB   disk1s3
   4:       Microsoft Basic Data                         68.2 GB    disk1s4
   5:       Microsoft Basic Data                         2.9 TB     disk1s5

iMac27:~ yasuaki$ sudo fdisk /dev/disk0
Password:
Disk: /dev/disk0	geometry: 14751/255/63 [236978176 sectors]
Signature: 0x0
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
iMac27:~ yasuaki$ sudo fdisk /dev/disk1
Disk: /dev/disk1	geometry: 97451/255/63 [1565565872 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE    0   0   2 - 1023 255  63 [         1 -         -1] 
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 

【Mac OS X用に予め確保しておいたたNTFS領域(disk1s5)を再度複数のパーティションに分割する】
  
iMac27:~ yasuaki$ diskutil splitPartition /dev/disk1s5  jhfs+ Shared 32.0G jhfs+ OSXHDD 80.01G jhfs+ HomeHDD 1.5T jhfs+ Works 1.0T hfs+ Tmp 256G hfs+ Scratch 24G
Started partitioning on disk1s5
Splitting
Unmounting disk
Waiting for the disks to reappear
Formatting disk1s5 as Mac OS Extended (Journaled) with name Shared
Initialized /dev/rdisk1s5 as a 30 GB HFS Plus volume with a 8192k journal
Mounting disk
Formatting disk1s6 as Mac OS Extended (Journaled) with name OSXHDD
Initialized /dev/rdisk1s6 as a 74 GB HFS Plus volume with a 8192k journal
Mounting disk
Formatting disk1s7 as Mac OS Extended (Journaled) with name HomeHDD
Initialized /dev/rdisk1s7 as a 1 TB HFS Plus volume with a 114688k journal
Mounting disk
Formatting disk1s8 as Mac OS Extended (Journaled) with name Works
Initialized /dev/rdisk1s8 as a 931 GB HFS Plus volume with a 81920k journal
Mounting disk
Formatting disk1s9 as Mac OS Extended with name Tmp
Initialized /dev/rdisk1s9 as a 238 GB HFS Plus volume
Mounting disk
Formatting disk1s10 as Mac OS Extended with name Scratch
Initialized /dev/rdisk1s10 as a 59 GB HFS Plus volume
Mounting disk
Finished partitioning on disk1s5
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *3.0 TB     disk1
   1: DE94BBA4-06D1-4D40-A16A-BFD50179D6AC               314.6 MB   disk1s1
   2:                        EFI                         103.8 MB   disk1s2
   3:         Microsoft Reserved                         134.2 MB   disk1s3
   4:       Microsoft Basic Data                         68.2 GB    disk1s4
   5:                  Apple_HFS Shared                  32.0 GB    disk1s5
   6:                  Apple_HFS OSXHDD                  79.9 GB    disk1s6
   7:                  Apple_HFS HomeHDD                 1.5 TB     disk1s7
   8:                  Apple_HFS Works                   999.9 GB   disk1s8
   9:                  Apple_HFS Tmp                     255.9 GB   disk1s9
  10:                  Apple_HFS Scratch                 63.6 GB    disk1s10

iMac27:~ yasuaki$ sudo fdisk /dev/disk1
Password:
Disk: /dev/disk1	geometry: 97451/255/63 [1565565872 sectors]
Signature: 0xAA55
         Starting       Ending
 #: id  cyl  hd sec -  cyl  hd sec [     start -       size]
------------------------------------------------------------------------
 1: EE 1023 254  63 - 1023 254  63 [         1 -         -2] 
 2: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 3: 00    0   0   0 -    0   0   0 [         0 -          0] unused      
 4: 00    0   0   0 -    0   0   0 [         0 -          0] unused      

【SSD側にMac OS Xをリストア】

iMac27:~ yasuaki$ diskutil partitionDisk  /dev/disk0 GPT  jhfs+ OSXSSD 80.01G jhfs+ HomeSSD 41G
Started partitioning on disk0
Unmounting disk
Creating the partition map
Waiting for the disks to reappear
Formatting disk0s2 as Mac OS Extended (Journaled) with name OSXSSD
Initialized /dev/rdisk0s2 as a 74 GB HFS Plus volume with a 8192k journal
Mounting disk
Formatting disk0s3 as Mac OS Extended (Journaled) with name HomeSSD
Initialized /dev/rdisk0s3 as a 38 GB HFS Plus volume with a 8192k journal
Mounting disk
Finished partitioning on disk0
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS OSXSSD                  79.9 GB    disk0s2
   3:                  Apple_HFS HomeSSD                 41.0 GB    disk0s3



Win8 EFIモード
一応Windows 8をEFIモードで動かすことが可能になった

以上で Mac OS X と Windows 8(EFIモード)のマルチブート構成は完成したが、rEFItをブートセレクタとして利用する場合は Windows 8 が作成した実態の良く分からない複数のパーティションが見えてしまうので、可能ならこれらの隠しパーティションはrEFItのブートセレクト画面からは見えなくしたいところだ.尚、Macintoshの標準のブートセレクタ画面からはこれらの隠しパーティションは見えない.


現状では Windows 8 の64bit版しかこの方法が使えないが、Windows 7のEFIモードのインストーラを何とかMacintoshで起動できるようにすれば同じようにWindows 7でも同じ事が出来るはずだ.


Windows 8 はとても使う気になれないので、この実験が終わった段階で速攻でWindows 7をMBRモードでインストール(BootCamp方式)しなおした.結局UEFIもメジャーになることなくこのままPCの衰退と共に消え去っていくことだろう.