web-dev-qa-db-ja.com

Windows7のインストールに失敗するKVM with qemu

64ビットのUbuntuKarmicボックスでホストされている仮想マシンにゲストOSとしてWindows7をインストールしようとしています。言語設定を選択して[今すぐインストール]をクリックするところまで来ましたが、しばらくするとブルースクリーンが表示されます。

すぐに失敗する32ビットバージョンのWindows7を使用するなど、いくつかのバリエーションを試しました。私が試したvirt-installコマンドには、次のものが含まれています。

Sudo virt-install --connect qemu:///system -n ksm-win7 -r 2048 \
--disk path=/home/kief/VM-Images/ksm-win7.qcow2,size=50 \
-c /var/Software/Windows7/Full/64bit/SW_DVD5_SA_Win_Ent_7_64BIT_English_Full_MLF_X15-70749.ISO \
--vnc --os-type windows --os-variant Vista --hvm

私が見つけた限られた情報は、「Vista」が--os-variantとして機能することを示唆しており、Windows7に固有の値は見つかりませんでした。

これが私の青い画面です:

BSOD

グーグルで見つけたものはほとんどないので、これは単にWindows7をサポートしていないKVMの場合ではないと思います。

更新:

グラフィカルな「仮想マシンマネージャー」アプリを使用してWindows7 VMを正常に作成できましたが、で作成されたVMの問題の原因はよくわかりません。 virt-install。/etc/libvirt/qemuの下の構成ファイルを比較すると、いくつかの手がかりが得られますが、それらを正しく解釈するのに十分な知識はありません。 2つのVM構成の興味深い違いは次のとおりです。

--- win7-virt-install.xml
+++ win7-vmm.xml
-<domain type='qemu'>
+<domain type='kvm'>
@@ -21 +21 @@
-    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+    <emulator>/usr/bin/kvm</emulator>
@@ -23 +23 @@
-      <source file='/home/kief/VM-Images/ksm-win7.qcow2'/>
+      <source file='/var/lib/libvirt/images/ksm-win7x64.img'/>

これが、動作中のVMがqemuをまったく使用していないことを意味するのか、それともkvmでの使用方法に他の違いがあるのか​​はわかりません。

Update2:

だから私は(ほとんど)以下の私自身の質問に答えました。 KVM VMは、Windows 7をインストールするために、qemuではなくKVM独自のCPUエミュレーションを使用する必要があります。 qemu-emulation CPUで動作させるためにできることがあるかどうか、または新しいバージョンがそれをサポートするかどうかはわかりません。ただし、少なくともKVMVMで実行することは可能です。

8
Kief

これが簡単な方法です

Virt-installを使用してGuestOSをインストールする具体的な理由がない限り、virt-installを使用せずにインストールする「簡単な」方法は次のとおりです。

Windows7がインストールされた状態で動作するVMがあります。これが作成方法です。

ステップ1:仮想ディスクイメージを作成します

qemu-img create -f qcow2 vdisk.img 100g

これにより、qcow2形式の仮想ディスクが作成されます。パーティションサイズを100g(ギガバイト)に設定すると、not100GBの物理ハードディスク領域が割り当てられます。仮想パーティションは、それに含まれるデータと同じ量のスペースしか使用しません。 100gで十分なので、(うまくいけば)サイズを大きくする必要はありません。 qcow2イメージのデフォルトサイズを大きくすることは、a **で行うのが面倒です

ステップ2:OSをインストールします

実際の物理CD-ROMを使用してOSをロードしている場合は、次のコマンドを使用します。

Sudo kvm -m 750 -cdrom /dev/sr0 -boot d vdisk.img

ディスクイメージを使用してOSをロードしている場合は、このコマンドを使用します。

Sudo kvm -m 750 -cd-rom /path/to/image/image.iso -boot d vdisk.img

コマンドの内訳は次のとおりです。

  • kvm-カーネル仮想マシンを呼び出します(明らか)
  • -m750-仮想マシンに750MBのメモリを割り当てます
  • -cd-romはcd-romを設定します。物理ディスクの場合は、HostOSと同じディスクを使用します。画像の場合は、画像ファイルへのパスを指定します。
  • -boot dは、CD-ROMから仮想マシンを起動します

初期ロードのメモリフットプリントを控えめに750に設定したので、メモリが不足することなくインストールが確実に終了します。後続のロードでは、通常512に設定します。

注:AFIAK、kvmコマンドは、Debian/Ubuntuまたはその派生物の最新バージョンでのみ機能します。それが機能しない場合、同等の(そしてより一般的な)コマンドはqemu-system-x86_64または32ビットのqemu-kvmです。

インストールプロセス全体を完了した後、VMは動作中のOSで再起動する必要があります。VMを再度ロードするには、次のコマンドを起動します。

kvm -m 512 vdisk.img

コマンドラインスイッチを使用する場合は、追加の物理ディスク、ハードウェアなどをマウントする必要があります。コマンドラインスイッチに関する情報を見つけるには、kvm--helpを確認してください。

'準仮想化'と 'ネイティブ仮想化'の違いを理解していない場合 Matthias 'はすでに違いの素晴らしい説明をしています

このプロセスのより「詳細な」説明については この記事を読んでください

7
Evan Plaice

Qemu仮想化を使用したウィンドウのインストールでこの問題が発生する理由は、qemuの「準仮想化」とKVMの「ネイティブ仮想化」の違いです。準仮想化とは、CPUをシミュレートし、クライアント(仮想システム)側に特別なカーネルが必要であることを意味します。これにより、このシステムはCPU関数を正しく呼び出す方法を認識できます。これが、すべてのシステムがKVMなしでqemuを使用して実行できるわけではない理由です。

一方、KVMを使用する仮想システムはCPUに直接アクセスできます(KVMはAMD/Intelハードウェア仮想化サポートを使用するため)。その場合、特別なカーネルはありません)。欠点は、ホストにこのハードウェア仮想化をサポートする最新のCPU(AMDではSVM、IntelではVT-xと呼ばれる)が必要であり、クライアントシステムがそのCPUで実行できる必要があることです(問題ありません。ほとんどのシステムはx86で実行できるため、移植性が低下します。

3
Matthias

0x1eの例外はKMODE_EXCEPTION_NOT_HANDLED、これは通常、ハードウェア関連またはデバイスドライバー関連の障害です。私の推測では、何らかの理由で、Windowsは仮想マシンからエミュレートされたハードウェアを好みません。

VirtualBox を使ってみましたか? Karmic Koalaのリリースがあり、Windows 7をサポートしています(現在、Windows XPボックスでWin7を実行しています)。

2
Jared Harley

同僚との調査と協議の結果、問題はqemuCPUエミュレーションにあるようです。私のvirt-installコマンドは、qemuのCPUエミュレーションを使用してKVM仮想マシンを作成しました。VMMはKVM独自のCPUエミュレーションを使用してKVM仮想マシンを作成しました(ただし、qemuを使用して現在のバージョンのKVMはこれにqemuを使用します)として、PCの他の部分をエミュレートします。

Virt-installコマンドに--accelerateパラメーターを追加することで、VMを作成し、それにWindows7をインストールすることができます。

したがって、答えは、qemu-kvm-0.11.0CPUエミュレーションを使用して仮想マシンにWindows7をインストールすることはできないようですが、これはKVM独自のCPUエミュレーションを使用することで回避できます。これは、virt-installの--accelerateオプションを使用して実行されます。構成ファイルのパラメーターは<domain type="kvm"> のではなく <domain type="qemu">

1
Kief

上から見た他の違いは、KVMは32ビットエミュレーションのみである必要があります...または少なくとも目立つXML差分を使用する必要があるということです。

64ビットサポートがKVMに追加されたように見えるので、qemu-system-x86_64 with --accelerateカーネルがディストリビューションによって構築されている場合、KVMと64ビットの両方を提供する可能性があります。

0
Mike Mestnik

ここで推奨されているように、最初に表示をcirrusに変更することで、インストールを開始できました: https://ubuntuforums.org/showthread.php?t=2325843&s=67c08420c394b532ea814a0c46752914&p=13500324#post13500324 ==

  1. 巻雲のグラフィックスでWin7をインストールし、VMをシャットダウンします
  2. qxlとして2番目のグラフィックアダプタを追加します
  3. vmを起動し、qxlドライバーをインストールします
  4. vMをシャットダウンし、Cirrusアダプターを取り外します
0
Jiab77