YOwatari's blog

思うままに。

Windows7をUSBブートさせてみる on MacBook Air

Boot CampでWindows7を利用しているが、内蔵ストレージを圧迫するので、なんとかUSBブートできないものかと画策。

USBでWindows7!
http://home.catv.ne.jp/ss/user/yukata/windows7USBboot.html

Windows 7のVHDブートを試す - @IT
http://www.atmarkit.co.jp/fwin2k/win7/11vhdboot/11vhdboot_01.html

このあたりを参考にしてみた。
結論から言うとMacBookAirでもUSBブートを行うことは可能。
しかし、BootCamp用ドライバをインストール後、起動できなくなってしまったので、諦めました(´・ω・`)

大まかな流れは、

  1. VirtualPCWindows7をインストール
  2. レジストリの変更
  3. UsbBootWatcherのインストール
  4. ブートローダーの編集 

1については、省略。
VirtualPCでは64bit版はインストールできないのでx86版をインストールする。
作成するvhdファイルは容量固定にしておく。
以降は仮想環境上での操作となる。

2.レジストリの変更
仮想環境では、IDEコントローラを前提にセットアップされるので、これを変更して、SATAコントローラのドライバを有効にする。
HKEY_LOCAL_MACHINEのSystem\CurrentControlSet\Services\Msahci
HKEY_LOCAL_MACHINEのSystem\CurrentControlSet\Services\IastorV 
以上2つのキーのStartを3から0に変更する。
CurrentControlSetが無い場合は、ControlSet001とControlSet002以下の同様のキーを変更する。

3.UsbBootWatcherの変更
2だけではUSBからのブートはできない。ドライバの読み込みがUSBを前提となっていないためらしい。
これを解決するのがUsbBootWatcher
USB機器から起動した際に、対応するレジストリを変更してくれる 。
http://www.911cd.net/forums//index.php?showtopic=22473
ここからUsbBootWatcherをダウンロード。
コマンドプロンプトから

Usbbootwacher.exe /install

としてインストール

4.ブートローダーの編集
ここで一度仮想環境から抜ける。
作成したvhdファイルを起動したいUSBメモリ等にコピー
このファイルをマウントする。
スタートメニューの検索から、diskmgmt.mscと打ってディスクの管理を起動してマウントするか、diskpartを使う。
インストールディスクのbootフォルダ以下にあるbootsect.exeを利用して、USBメモリ等にマスター・ブート・コードを書き込む。

bootsect /nt60 E:

E:はドライブレター。USBメモリのドライブレターを指定する。
次にブートローダーを編集する。

bcdboot F:¥Windows /s E: /v
bcdedit /store E:¥Boot¥BCD /set {default} device vhd=[E:]¥<VHDファイルのパス>
bcdedit /store E:¥Boot¥BCD /set {default} osdevice vhd=[E:]¥<VHDファイルのパス>
bcdedit /store E:¥Boot¥BCD /set {default} locale ja-JP 

F:はvhdファイルをマウントしたドライブ、E:はUSBメモリ

最後に、再び仮想環境に戻って
C:¥Windows¥System32¥sysprep¥Sysprep.exeを管理者として実行。
「 一般化する」にチェックし、シャットダウンを選択する。

シャットダウン後は、USBブートを行うと起動する。
ただし、セットアップにめっちゃ時間がかかるので気長に待つ。

いたって普通に利用できるかと思い、Bootcamp用ドライバをインストールしてみたら、起動しなくなった(´;ω;`)
レジストリが変更され、ドライバを読み込む順番が狂ってしまったのかと、再び2.と同様の操作をおこなってみたけど、起動不可。
もう疲れたよ、パトラッシュということで、諦めの境地。