Windows 7はqemuを使用してKVMにインストールできません


8

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

32ビットバージョンのWindows 7を使用するなど、いくつかのバリエーションを試しましたが、すぐに失敗します。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として機能するはずであると私が見つけた限られた情報では、Windows 7に固有の値は見つかりませんでした。

これが私のブルースクリーンです:

BSOD

私はグーグルでほとんど見つけることができなかったので、これは単にWindows 7をサポートしていないKVMの場合ではないと思います。

更新:

で作成したVMの問題の原因がよくわからないのですが、グラフィカルな「Virtual Machine Manager」アプリを使用してWindows 7 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エミュレーションCPUで動作させるために実行できることがあるかどうか、または新しいバージョンがそれをサポートするかどうかはわかりません。ただし、少なくともKVM VMで実行することは可能です。

回答:


7

これが簡単な方法です

virt-installを使用してGuestOSをインストールする具体的な理由がない限り、virt-installなしでこれを行う「簡単な」方法を次に示します。

Windows 7がインストールされた稼働中のVMがあります。作成方法は次のとおりです。

手順1:仮想ディスクイメージを作成する

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

これにより、qcow2形式の仮想ディスクが作成されます。パーティションサイズを100g(ギガバイト)に設定しても、100gbの物理ハードディスク領域割り当てられません。仮想パーティションは、そこに含まれるデータと同じだけの容量を使用します。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-カーネル仮想マシンを呼び出します(自明)
  • -m 750-仮想マシンに750MBのメモリを割り当てます
  • -cd-romはcd-romをセットアップします。物理ディスクには、HostOSと同じディスクを使用します。画像の場合、画像ファイルへのパスを指定します。
  • -boot dは仮想マシンをcd-romから起動します

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

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

インストールプロセス全体を完了すると、VMが再起動し、動作しているOSが表示されます。VMを再度ロードするには、次のコマンドを実行します。

kvm -m 512 vdisk.img

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

「準仮想化」と「ネイティブ仮想化」の違いを理解していない場合は、Matthiasがすでにその違いを説明しています

このプロセスのより詳細な説明については、この記事をお読みください


3

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

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


1
+1「準仮想化」と「ネイティブ仮想化」の違いのすばらしい説明
Evan Plaice

2

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

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


おかげで、ユーカリで使用しているので、KVMを使い続けたいと思います。これは、Windows 7を実行するための実用的な必要性と同じくらい、私にとって学習課題です。
キエフ

1

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

--accelerateパラメーターをvirt-installコマンドに追加することで、VMを作成してWindows 7をインストールできます。

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


これをありがとう!提案どおりにxmlファイルを編集し、qemuをkvmに置き換えて、Win7 64ビットを問題なくインストールしました!(Fed12 64ビットで実行)

0

上から見たもう1つの違いは、KVMは32ビットエミュレーションのみである必要があるということです...少なくともXMLの違いが際立っています。

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


0

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

  1. cirrusグラフィックでWin 7をインストールし、vmをシャットダウンします
  2. 2番目のグラフィックアダプターをqxlとして追加する
  3. vmを起動してqxlドライバーをインストールする
  4. vmをシャットダウンし、cirrusアダプターを削除する

コメントをありがとう、私は完全なソリューションを追加しました。
Jiab77 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.