KVM (QEMU) 上の Windows 7/8/8.1 を Windows 10 にアップグレード
先日、Microsoft から Windows 7/8/8.1 の Windows 10 への無償アップグレードの実施が発表され、7 月 29 日から順次アップグレードが開始されています。基本的には、発表から 7 月 29 日の開始までにタスクバーに表示されるアップグレード案内の予約を行ったユーザから適用されていきますが、KVM 上の仮想マシンでは予約しても開始案内が来なかったため、手動でのアップグレード方法であるメディア作成ツール経由でのアップグレードを行ってみました。
メディア作成ツールおよび手順は下記のページで配信されています。(OS X/Linux からは ISO ダウンロードページに飛ぶみたいです。)
https://www.microsoft.com/ja-jp/software-download/windows10
ツールをダウンロード後実行して、最初の画面で「この PC を今すぐアップグレードする」を選択し、手順を進めていきます。Windows 10のデータダウンロード⇨利用規約に同意⇨引き継ぐ項目の設定を実施し、Windows 10 のインストールが開始…とここまでは順調だったのですが、インストールには時間がかかるだろうとしばらく目を離していたら、今まで通りのログイン画面が表示されています。おかしいと思ってログインしてみると以下のエラーが表示されていました。
0xC1900101 – 0x20017
BOOT操作中にエラーが発生したため、インストールは SAFE_OS フェーズで失敗しました。
どうやらインストール最中にエラーが発生し、アップグレード前の状態に戻ったようです。
まあ、エラーコードをググれば対応法がでてくるだろうと調べてみるも中々でてこない…ちなみにKVM 仮想マシンのデバイス設定は以下のような設定です。なお、仮想マシン実行環境は Cent OS 7で QEMU を利用。
ハードウェアのドライバ周りが原因である可能性を考え、IDE Disk を SATA Disk に変更してみたり、タブレットコントローラを無効化してみたりしたけど同様のエラーが発生しました。
いろいろ試行錯誤していたら、下記のページを発見しました。
http://ubuntuforums.org/showthread.php?t=2289210
フォーラムのやりとりをみると、QEMU の設定で KVM hidden を ON にし、CPU の設定を Core 2 Duo 、+nx フラグを付加することで起動できるようです。Core 2 Duo にするだけでもいいという記載があるので、まずはこれで試してみます。ちなみにアップグレードに失敗していた私の環境では、CPU の設定は Sandy Bridge でした。Ubuntu の Forum ですが、試す価値はありそうです。
/etc/libvirt/qemu 配下の各仮想マシンの XML ファイルを編集します。
/etc/libvirt/qemu/win8.xml
#変更前 <cpu mode='custom' match='exact'> <model fallback='allow'>SandyBridge</model> </cpu>
#変更後 <cpu mode='custom' match='exact'> <model fallback='allow'>core2duo</model> </cpu>
これでアップグレードしてみたところ…
うまくいきました!詳細な原因はもっと調べないといけませんが、とりあえずアップグレードできたのでよしとします。
ちなみに、アップグレード後、Windows 10 を再インストールする際は、同じデバイス構成であれば、自動的にライセンス認証されるみたいです。逆にいうと、再インストールする際に、マザボを変更する等、デバイス構成が変わると、Microsoft 側の認証からはじかれるみたいです。
この制約を考えると、KVM 等の仮想マシンだと設定さえ残しておけば、同じ構成で再構築できるため、物理マシンよりも便利ですね。
有用な情報ありがとうございます。
ちなみに、無闇にCPU種別設定を変えてしまうと、サポートセンターでの再アクティベーションが必要になってしまう場合があるので、モデルは変更せずにfeatureでxsaveとosxsaveビットを無効にしたほうが良さそうですよ。
検索でこちらにたどり着きました。
私も同じような環境(CentOS7上のKVM)で同じエラーがでました。
私の場合は、CPUのコア数を2だったのを1に変更しただけでインストールに成功しました。
その後コア数を2に増やしても正常に起動し、再認証も不要でした。