MAC上のVatualBoxでXcode7の開発環境を仮想化


**現状製品版のEl Capitanは直接imgからインストール出来ない
（ブート用dmgが認識しない。βのEl Capitanのみ？）ようなので、Mavericksからインストール**
(Yosemiteはアップグレードを放置して入手し損ねた)

作業時間:トータル6h位


##OSXのブート用dmg作成　(Mavericks)

1. MavericksをAppStoreからDL> アプリケーション/OS X Mavericks インストール.app
2. ターミナルでインストールdmg生成


```:ターミナルでインストールdmg生成
$ git clone https://github.com/ntkme/InstallESD.dmg.tool
$ cd InstallESD.dmg.tool
$ bin/iesd -t BaseSystem -i /Applications/Install\ OS\ X\ Mavericks.app/Contents/SharedSupport/InstallESD.dmg -o Output.dmg

```

*成功すると、/ユーザー/InstallESD.dmg.tool/Output.dmg が出来る。*

※参考:http://ottan.xyz/virtualbox-yosemite-1605/

##VatualBoxでVMを作成

+ 容量は50GB位。(後から容量を拡張する場合は面倒なので多い目に)
+ vmの保存先はsparsebundleイメージ内が便利<br/>（バックアップはsparsebundleのファイルをホストOSのTimeMachineで行う運用）
+ **チップセットを"PIIX3"にする。（ICH9だと起動しない）**

####○2013年以降に発売されたMacの場合のみ設定（未検証）
*2013年以降に発売されたMac(CPUがHaswell世代以降)の場合 仮想マシンのCPUの設定を変更しないと正しく動作しない*

```:CPUがHaswell世代以降のみ以下を実行
$ VBoxManage list vms
$ VBoxManage modifyvm <uuid> --cpuidset 00000001 000306a9 00020800 80000201 178bfbff
```
####○チップセットを"PIIX3"にする
![スクリーンショット 2015-12-05 1.51.49.png](https://qiita-image-store.s3.amazonaws.com/0/103952/82270e8f-1090-4930-6cb0-cac71ea95090.png "スクリーンショット 2015-12-05 1.51.49.png")

##画面の解像度を設定
通常は1024×768のサイズで起動される。
起動後は画面のサイズの変更が出来ないので、以下のコマンドで画面のサイズを指定する。
VatualBoxのversionで以下のコマンドに違いがある

```:VM名「ElCapitan」を1440x900のスクリーンサイズで表示(5.2)
$ VBoxManage setextradata "VM名" VBoxInternal2/EfiGraphicsResolution 1440x900
```
```:VM名「ElCapitan」を1440x900のスクリーンサイズで表示(5.1まで)
$ VBoxManage setextradata "VM名" VBoxInternal2/EfiGopMode 4
```

##画面共有で接続
クリップボード共有が効かないので、OS X標準の”画面共有”でVMに接続する。

1. ゲストMACの共有で画面共有を有効にする
2. ゲストMACのアダプターを"ブリッジアダプター"に変更
3. vmを画面無しで起動
 
####○アダプターを"ブリッジアダプター"に変更
![スクリーンショット 2015-12-05 2.38.39.png](https://qiita-image-store.s3.amazonaws.com/0/103952/bc08d553-6c61-55ce-369c-6419bdcc0fac.png "スクリーンショット 2015-12-05 2.38.39.png")

####○vmを画面無しで起動（お好みで。特にしなくてもOK）
```:vmを画面無しで起動
$ VBoxManage list vms　インストールされているVMのリスト
$ VBoxManage startvm [VM名 or ID] -type headless　GUIなしで起動
$ VBoxManage list runningvms　起動中のVM名
```

##初期設定とEl Capitanのインストール
+ ゲストMACの時計を合わす（日本）
+ MACのハードウェアシリアル番号の設定
+ DLした"OS X El Capitan インストール.app"を実行(約2h)
+ サインインに異様に時間がかかる場合はVMを無理矢理再起動
+ 画面共有の再設定


####MACのハードウェアシリアル番号の設定

通常は「このMACについて＞シリアル番号 XXXXXXXXXX」でMAC本体のシリアル番号が表示されるが、VMでは通常0になる。

このシリアルは"AppleIDのサインイン"や"FileVault"の暗号化に使用される為、
**0のままだとAppStoreやiCloud等が使えない** ので設定する。

番号は12桁の英数文字。適当な文字を設定して可能かは未検証。

今回は現在使用しているホストMACのシリアルの最後の1文字を変えた物を使用。

例) "ABCDEFGABCDA" > "ABCDEFGABCDE"  (このシリアルはダミー)


```:ハードウェアシリアル番号の設定
$ VBoxManage setextradata "Mavericks" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "ABCDEFGABCDE"
```

成功すると、ゲストOSでその番号が表示される
![ac.jpg](https://qiita-image-store.s3.amazonaws.com/0/103952/69846700-3981-ad0d-5f66-12f433b8a8ed.jpeg "ac.jpg")


##Xcode7のインストール

+ App Storeに普通にログインしてDLする。
+ DLしたら普通に起動して適当なテストアプリ作成＞シミュレーター
+ VatualBoxに実機のUSB接続を認識させて、実機デバッグ


####シミュレーターでのデバッグ
Xcode7はAppStoreに普通にログインしてDLする。
若干遅いが、シミュレーターでのデバッグは普通に出来る。

![スクリーンショット 2015-12-06 23.32.49.png](https://qiita-image-store.s3.amazonaws.com/0/103952/b781e375-652a-cd12-9b31-715caee66090.png "スクリーンショット 2015-12-06 23.32.49.png")

####VatualBoxに実機のUSB接続を認識させて、実機デバッグ

1. VatualBoxの画面右下のUSB接続のアイコンから実機を接続する。
2. 認識したら実機側で「このデバイスを信用しますか？」みたいなアラートが出るのでOK押下
3. Xcodeのターゲット選択の所に実機が表示されればOK

![db2.jpg](https://qiita-image-store.s3.amazonaws.com/0/103952/668da09b-b7b9-2dbf-a75d-808b8f7b8d81.jpeg "db2.jpg")


####ゲストOSでのディスク速度
右がホストOS。左がゲストOS上のディスク速度
ゲストOSはsparsebundle上にVDIを作成して実行している。

![scdsmm.jpg](https://qiita-image-store.s3.amazonaws.com/0/103952/a00e894d-2c26-0d0c-2ea1-cab30defe238.jpeg "scdsmm.jpg")



##その他　ディスク容量を拡張
容量を拡張する場合はVMのリサイズ以外にもGPT情報を修正する必要あり、若干作業が面倒。 

1. vdiの容量を変更
2. ゲストOSをインストールディスク(Output.dmg)から起動＞Disk Utility起動
3. インストールディスクのDisk Utility＞FirstAidでパーティションを修復後、パーティションを拡張
4. Output.dmgをアンマウントして起動
 
####○vdiの容量を変更
  
```:vdiの容量を変更　50GB(51200MB)として
VBoxManage modifyhd [vmのファイル].vdi --resize 51200
```


####○インストールディスクから起動
Vatualbox上でOutput.dmgをマウントしたまま、ゲストOS起動時にCキーを押下状態でブートローダーが表示＞BootManaget>EFI DVD/CDROM　を選択
![スクリーンショット 2015-12-05 3.56.12.png](https://qiita-image-store.s3.amazonaws.com/0/103952/9061fd46-776b-4123-d450-84aa18fc7d82.png "スクリーンショット 2015-12-05 3.56.12.png")


####○ディスクユーティリティからパーティション変更

メニュー＞ディスクユーティリティ起動。
そのままディスクユーティリティからパーティションを変更しても
**"MediaKit が、パーティション（マップ）が小さすぎることを報告しています"** というエラーで操作が完了できないので、FirstAidで修復後、パーティションを拡張する

![スクリーンショット 2015-12-05 3.36.41.png](https://qiita-image-store.s3.amazonaws.com/0/103952/10add191-c822-a935-fd31-7623934392c6.png "スクリーンショット 2015-12-05 3.36.41.png")


※参考:http://d.hatena.ne.jp/mtaneda/20100827/1282917281