bootcampを使わずにUEFIでWindowsをインストールするとintel-vtが使える

bootcampを使ってWindowsを使っていたが、bootcampを使うと以下の弊害がある。

* bootcampのレガシーOSサポート機能により、今どきのUEFIではなく、MBRを使った起動をする
* そのせいで、intel-VTが有効にならず、boot2dockerやAndroidエミュレータが動作しない

最近のPCはBIOSではなく、UEFIという仕組みで起動するらしい。

いろいろ試した結果、OSXだけでパーティション作ってもダメ、Windowsだけでパーティションを作ってもダメだったが、それぞれのツールでパーティションを作成することで、最終的にOSXとWindowsのデュアルブート環境の構築に成功した。

## やりかた

当方の環境は以下の通り。

* MacBookPro 13-inch Late2011
* Core i5
* メモリ 8G x2
* SSD256G（光ディスクドライブを換装）
* HDD1T（HDD500Gを換装）

今回、以下ようなパーティションを作成する。

* SSD256G
    * 全部: OSX Yosemiteのブート（MacOS拡張ジャーナル）
* HDD1T
    * 500G: Windows10のブート（NTFS）
    * 500G: MacOSで使用（MacOS拡張ジャーナル）

まず、Windowsの回復ディスクのUSBメモリを用意しておく。Windowsのインストールディスクでも良いが、Windows8のインストールディスクがUEFIで起動できなかったりしたので、USBメモリのほうが良さそうである。

* Windows7→http://www.atmarkit.co.jp/ait/articles/1204/06/news126.html
* Windows8、8.1→ http://windows.microsoft.com/ja-jp/windows-8/create-usb-recovery-drive
* Windows10→https://www2.mouse-jp.co.jp/ssl/user_support2/sc_faq_documents.asp?FaqID=20376
* 筆者はWindows10で実施

MacPCに、Windows回復ディスクUSBと、Windows10のインストールディスク（USB接続）を接続し、optionキーを押しながら起動する。すると、USBメモリの"EFI boot"メニューが表示されるので、選択する。

回復ディスクで、コマンドプロンプトを開くことができるので、開く。
DiskPartコマンドを使って以下を行う。

* すべてのドライブを、とgptいうフォーマットに変更する
* Windowsをブートするドライブにて、起動に使うEFIパーティションを作成する

```
>DiskPart
lisk disk
//ここで容量から、disk0とdisk1のどちらがSSD、HDDであるか判定した。
//当方環境は、HDDがdisk0、SSDがディスク1であった。
//まず、disk0の内容を消去し、GPTというフォーマットに変更する
select disk 0
clean
convert gpt
//次にEFIパーティションを作成する。
//上記のみでWindowsのインストールを開始すると、EFIパーティションは作られないため、
//ここでEFIパーティションのみ作成する。
create partition EFI size=200
format quick fs=fat32 label="EFI"
//次にdisk1もフォーマットする
//Macが起動できる状態では、うまくいかなかったので、OSXも削除する
select disk 1
clean
convert gpt
//終了
exit
```

Windowsのインストールディスクを挿入し、Windowsのインストーラをコマンドプロンプトから起動する。

```
>d:
>dir
//setup.exeがあることを確認。なければ、e:、f:、、、と確認する。
>setup.exe
```

インストール先を選ぶ画面まで進み、HDDに"新規"でパーティションを追加する。この時、OSXでも容量の半分を使いたい場合は、容量を設定する。この時、OSXで使うパーティションは作成しないこと！　この時、追加のパーティションを作るように聞かれるが、「はい」と答える。

そのまま、Windowsのインストールを完了させる。この時点ではOSXを削除しているため、再起動してもWindowsのみが立ち上がるはずである。

Windowsのインストール後、Bootcampドライバをサイトからダウンロードし、インストールする。

https://support.apple.com/ja_JP/downloads/macoscomponents

これで、Windowsは完了。
一度電源を落とし、Command+Rを押しながら起動する。すると、インターネットからユーティリティを自動でダウンロードして起動する。

ここで、ディスクユーティリティの前に、上部メニューから"ターミナル"を起動する。ターミナルでは、以下を行う。

* Windowsをインストールしたディスクに、OSX用のパーティションを追加する。

```
//まず、マウントを解除する
#diskutil unmountDisk disk0
#diskutil unmountDisk disk1
//どちらがWindowsのインストールしたディスクであるか、"GPT part"の数で判定する。
//私の環境では、disk0に3つあった。
#gpt show disk0
#gpt show disk1
//OSXのパーティションを作成する。
//-sで容量を指定するが、単位がわかなかったので、Windowsのパーティションと同じサイズを指定した。
//以下の値は記録していなかったので適当です。
#gpt add -s 8000000 disk0
```

これで、ターミナルを終了し、メニューからディスクユーティリティを開いて、以下を行った。詳細は省略する。

* 先ほど作成したパーティションを再度フォーマットしなおして、名称をつける
* Windowsの入っていないドライブのフォーマット

その後、メニューからOSXのインストールを行った。私の環境では、これでOSXが自動で立ち上がる環境になった。

Windowsに切り替える場合は、再起動や電源オンした時にoptionボタンを押して起動し、"EFI boot"と書かれたドライブを選択すると、Windowsが起動する。OSXからはWindowsのドライブが見え、Windowsからもbootcampドライバをインストールすれば、OSXのドライブが見えるようになった。

Windowsでintel-vtが有効であるかは、以下のVirtualCheckerを入れると確認できる。

http://openlibsys.org/index-ja.html

![intelvt.jpg](https://qiita-image-store.s3.amazonaws.com/0/3413/c0422180-ecbe-91fa-de45-e78f0d61937e.jpeg)

あとは、遭遇した問題について、記述する。

## 問題1 bootcampで使ってたWindows10を使うと、ライセンス認証が通らない

bootcampを使っていた時に、Windows8.1からWindows10に無償バージョンアップし、プロダクトキーを調べるツールを使ってWindows10のプロダクトキーを入れ、Windows10をクリーンインストールした。UEFIに変更後、インストール時にはこのプロダクトキーは使えたが、起動後ライセンス認証ができないと表示された。

Microsoftのライセンス認証窓口に電話して、事情を説明したところ、テクニカルサポート窓口に電話するよう言われた。テクニカルサポート窓口で以下のことを説明したところ、新しいプロダクトキーを発行してもらえた。

* Windows10はWindows8.1から無償アップグレードしたものか？→したものである。
* Windows10のクリーンインストールの目的はなにか？→bootcampではintel-vtが使えないため。
* アップデート前のWindows8.1は別のところで使っていないか→使っていない
* Windows10のプロダクトキー
* Windows8.1のプロダクトキー（口頭で伝えるのは大変だった）
* クリーンインストール後、ハードウェアは変わっていないか？→変わっていない。

やったね！

## 問題2 OSXでパーティションを作ると、Windowsでインストールできない

OSXでパーティションを作ると、擬似MBRとなるらしいパーティションができてしまうらしい。Windowsインストール時には、MBRレコードがあると認識されるため、UEFIでインストール出来なくなってしまう。

よって、Windowsのインストール完了までは、一切Mac側でパーティションを作成しないようにする。これからOSXも一度削除する必要があった。

## 問題3 Windowsでパーティションを作ると、OSXでフォーマットできない

Windowsで作ったパーティションを、OSXで使うためにOSXのディスクユーティリティでフォーマットをしようとしたところ、MediaKitではサイズが小さいと認識されていると、表示されフォーマットできなかった。

OSXで作成したパーティションをWindowsで見てみると、パーティションの間に未使用領域があると表示された。どうやらOSXでパーティションを作るときには、余分なディスク容量が必要なようである。

よって、Windowsでパーティションを作るときにはOSX用の容量を残しておき、Windowsインストール完了後にOSXのパーティションを作成した。

## 問題4 Windowsを普通にインストールすると、EFIパーティションを作らないため、OSXインストール後起動できなくなる。

普通にWindowsをインストールすると、EFIパーティションを作らないため、目的のUEFIでの起動がOSXインストール後はできなくなってしまう。

Windowsのインストーラを使う前に、コマンドプロンプトからDiskPartを使って、EFIパーティションだけ用意する必要があった。

## 問題5 よくわからないがWindowsのインストールディスクが起動できない

Windowsの回復ディスクを使い、そこからWindowsのインストーラを起動することで、解決した。

## 問題6 OSXが起動できる状態になっていると、Windowsがインストール出来ない

Windowsのインストーラで、再起動後Windowsを起動させることができないので、インストールできないと表示されることがあった。そのため、OSXを削除した状態で、Windowsをインストールしたところ、成功した。

## 結果

OSXとWindowsの両方のパーティションを持つディスクドライブの作成方法が見つかるまで、なかなか大変だったが、Dockerが思う存分使えるWindowsマシンが手に入ったので、マシンをもう一台買うよりはかなりお得に環境を作成できた！