2010年04月06日
川俣晶の縁側ソフトウェア技術雑記 total 12648 count

Windows 7のVHDブートの方法に関するメモ

Written By: 川俣 晶連絡先

 ちょっと罠が多い感じだったのでメモ。

  • 基本的には「長沢智治のライフサイクルブログ VHD ブートの設定方法 ~ 北陸コミュニティ勉強会フォロー」の手順で良いが、正しく理解しないで行うと上手く動作しない。ちなみに、パス名に含まれる.dataは間違いと思われる (VHDファイルへのパスはどれも同じで良い)
  • VHDということで、既にVirtual PCで作成した仮想マシンイメージを使いたくなるが、これは使えるかどうか分からない。VHDブートは仮想ディスクからブートする方法であって仮想マシンからブートする方法ではない
  • 使用するディスクは正しくインストールしたディスクを使うべき。ちなみに、x64のDVDでインストールした環境は、x86_x64と書いたMSDNのDVDで修復したらログオン不能になった (正しいディスクで修復して直った)
  • diskpartによるvhd createの手順は先にやっておいても良いが、select以降の処理はインストールディスクで起動後に実行が必要
  • diskpartによるvhd作成はちょっと待たされるがそれほどでもない (サイズ等にもよるのだろうが)
  • Windows 7を入れる際、アタッチした仮想ディスクをインストール先に選ぶと、起動できないと警告が出るが問題ない。環境は自動的に作ってくれる
  • bcdeditは使わなくても構わない。というか、理解が足りないと起動環境を壊すのでまず使わない前提で始めるべき
  • 修復させるとインストールしたファイルらしきものを検出して候補が増えてしまうことがあるが、もちろんそれは本物ではない。vhd環境でもないが、候補が増えて紛らわしい
  • 自動修復させると起動時のメニューが英語になることがあり、「回復済み」等の日本語文字が化ける場合がある。その場合は、Windows ブートマネージャが英語になった時の対応 - Windows Liveに書いてあるとおり、bcdedit /deletevalue {bootmgr} pathで良い。この場合は置換すべき文字は無くそのままで良い
  • bcdeditをどうしても使ってエントリを増やす場合、bcdedit /copy {current} /d "(名前)"と実行したときに表示されるIDを、bcdedit /setでの指定先として使う
  • VHDブートを含む環境で、インストールディスクを起動すると起動環境が壊れていると見なされる。更にそのままインストールディスクで起動環境を修復させるとVHDブートの環境は消されてしまう。これは起動直後に仮想ディスクがマウントされていないので、起動ディスクが「存在しない環境」と見なされるため。後述のテクニックで仮想ディスクをマウントしてから行えばアクセスできるし、消されることもない

重要なポイント §

 インストールディスクで起動した場合に、そのまま進めると様々な不都合が起きることが最大のポイントです。最悪、起動環境が消されます。

 これに対処する手順は「長沢智治のライフサイクルブログ VHD ブートの設定方法 ~ 北陸コミュニティ勉強会フォロー」に含まれている通りですが、若干の補足が必要でした。

  1. 使用するインストールディスクで正常に修復できる環境を少なくとも物理ディスク上に1つは準備しておく (仮想ディスクではNG)
  2. インストールディスクで起動
  3. インストールではなく修復を選ぶ
  4. 修復環境として修復できる環境を選び、コマンドプロンプトを開く
  5. diskpart起動
  6. 「select vdisk file=VHDファイルのフルパス リターン」「attach vdiskリターン」を全ての起動対象のVHDファイルに対して行う (抜けがあると起動対象から削除されてしまう可能性がある)
  7. exitでdiskpartを抜ける
  8. exitでコマンドプロンプトを抜ける
  9. 「システム回復オプション」の画面に戻るが、[シャットダウン]、[再起動]ボタンではなく、[X] で戻る (再起動ではなく、この手順で戻る。再起動してはせっかく設定した情報が失われる)
  10. あとは更に新規インストールを行うなり、修復を行うなり、好きにして良いが結果は保証の限りではない

感想 §

 疲れました。理解した後なら簡単なことですが、最初に起動環境が消えてしまった時は大焦りでした。ちなみに、仮想ディスクが認識できるところや、そこに新規インストールできることは確認しましたが、修復が上手く行くかまでは確認できていません。ご参考まで。