8

Я пытаюсь установить Windows 7 в качестве гостевой ОС на виртуальной машине, на которой установлена моя 64-битная версия Ubuntu Karmic. Я дошел до того, что выбрал свои языковые настройки и нажал «установить сейчас», но вскоре я получил синий экран смерти.

Я попробовал несколько вариантов, включая использование 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-вариант, я не нашел никаких значений, специфичных для Windows 7.

Вот мой синий экран:

BSOD

Я нашел очень мало по Google, поэтому я предполагаю, что это не тот случай, когда KVM просто не поддерживает Windows 7.

Обновить:

Мне удалось успешно создать виртуальную машину Windows 7 с помощью графического приложения "Virtual Machine Manager", хотя я не совсем понимаю причину проблемы с виртуальной машиной, созданной с помощью virt-install . Сравнение файлов конфигурации в /etc /libvirt /qemu дает некоторые подсказки, хотя я не знаю достаточно, чтобы правильно их интерпретировать. Интересные различия в двух конфигурациях виртуальных машин:

--- 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'/>

Я не уверен, означает ли это, что работающая виртуальная машина вообще не использует qemu, или есть какая-то другая разница в том, как она используется с kvm.

Update2:

Поэтому я ответил на свой собственный вопрос (в основном) ниже. Виртуальная машина KVM должна использовать собственную эмуляцию процессора KVM, а не qemu, чтобы я мог установить Windows 7. Я не уверен, есть ли что-то, что можно сделать, чтобы оно работало на процессоре qemu-emulation, или его поддержит более новая версия. Но, по крайней мере, его можно запустить на виртуальной машине KVM.

6 ответов6

7

Вот простой способ

Если у вас нет какой-либо конкретной причины, по которой вы должны установить GuestOS с помощью virt-install, вот «простой» способ сделать это без virt-install.

У меня есть рабочая ВМ с установленной Windows 7. Вот как я это создал.

Шаг 1. Создайте образ виртуального диска

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

Это создает виртуальный диск в формате qcow2. Установка размера раздела 100 г (гигабайт) не приведет к выделению 100 ГБ места на физическом жестком диске. Виртуальный раздел будет занимать столько же места, сколько и содержащиеся в нем данные. 100 г просто делает это так, что вам (надеюсь) никогда не нужно будет увеличивать размер. Увеличение размера изображения по умолчанию в qcow2 по-прежнему является трудной задачей для **.

Шаг 2. Установите ОС

Если вы используете реальный физический CD-ROM для загрузки ОС, используйте следующую команду.

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

Если вы используете образ диска для загрузки ОС, используйте эту команду.

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

Вот разбивка команд:

  • kvm - вызывает виртуальную машину ядра (очевидно)
  • -m 750 - выделяет 750 Мб памяти для виртуальной машины
  • -cd-rom устанавливает cd-rom. Для физического диска используйте тот же диск, что и у вашего хоста. Для изображения укажите путь к файлу изображения.
  • -boot d загружает виртуальную машину с CD-ROM

Я установил минимальный объем памяти для начальной загрузки 750, чтобы быть уверенным, что установка завершится без исчерпания памяти. Для последующих загрузок я обычно устанавливаю его на 512.

Примечание: AFIAK, команда kvm работает только в более поздних версиях Debian/Ubuntu или их производных. Если это не работает, эквивалентная (и более распространенная) команда - это qemu-system-x86_64 или qemu-kvm для 32-битной системы.

После того как вы прошли весь процесс установки, виртуальная машина должна перезагрузиться в работающую ОС. Чтобы снова загрузить виртуальную машину, просто запустите эту команду:

kvm -m 512 vdisk.img

С какими бы то ни было ключами командной строки, вам нужно монтировать дополнительные физические диски, оборудование и т.д. Чтобы узнать информацию о ключах командной строки, проверьте kvm --help.

Если вы не понимаете разницу между «паравиртуализацией» и «нативной виртуализацией», Маттиас уже дал отличное объяснение различий.

Для более подробного объяснения этого процесса прочитайте эту статью.

3

Причиной этой проблемы при установке окон с виртуализацией qemu является различие между qemu "паравиртуализация" и KVM "нативная виртуализация". Паравиртуализация означает, что она имитирует ЦП и нуждается в специальном ядре на стороне клиента (виртуальной системы), чтобы эти системы знали, как правильно вызывать функции ЦП. Это причина того, что не все системы могут работать с использованием qemu без KVM.

С другой стороны, виртуальные системы, использующие KVM, могут напрямую обращаться к ЦП (поскольку KVM использует поддержку аппаратной виртуализации AMD/Intel). В этом случае никакого специального ядра не требуется. Недостатком является то, что хост должен иметь современный процессор, который поддерживает эту аппаратную виртуализацию (называемую SVM на AMD и VT-x для Intel), и что клиентская система должна иметь возможность работать на этом процессоре (не проблема, так как большинство систем может работать на x86), уменьшая переносимость.

2

Исключением 0x1e является KMODE_EXCEPTION_NOT_HANDLED , которое обычно является либо аппаратным, либо драйвером устройства. Я предполагаю, что по какой-то причине Windows не нравится эмулируемое оборудование виртуальной машины.

Вы пробовали использовать VirtualBox? У них есть релиз для Karmic Koala, и они поддерживают Windows 7 (я сейчас запускаю Win7 на Windows XP).

1

После некоторых исследований и консультаций с коллегой проблема, похоже, связана с эмуляцией процессора qemu. Моя команда virt-install создала виртуальную машину KVM, используя эмуляцию процессора qemu. VMM создал виртуальную машину KVM, используя собственную эмуляцию процессора KVM (хотя все еще использует qemu для эмуляции других частей ПК, поскольку текущая версия KVM использует для этого qemu).

Добавив параметр --accelerate в мою команду virt-install, я могу создать виртуальную машину и установить на нее Windows 7.

Таким образом, ответ, по-видимому, заключается в том, что Windows 7 не может быть установлена на виртуальной машине с использованием эмуляции процессора qemu-kvm-0.11.0, но это можно обойти, используя собственную эмуляцию процессора KVM. Это делается с помощью параметра --accelerate для virt-install. Параметр файла конфигурации будет <domain type="kvm"> а не <domain type="qemu"> .

0

Другое отличие, которое я вижу выше, состоит в том, что KVM должен быть только 32-битной эмуляцией ... или, по крайней мере, с вашим отличительным XML-различием.

Похоже, что в KVM была добавлена поддержка 64-битной версии, поэтому qemu-system-x86_64 с параметром --accelerate может / может дать вам как KVM, так и 64-битную версию, если ваше ядро собрано для него вашим дистрибутивом.

0

Я смог начать установку, изменив сначала отображение на cirrus как рекомендовано здесь: https://ubuntuforums.org/showthread.php?t=2325843&s=67c08420c394b532ea814a0c46752914&p=13500324#post13500324

  1. установить Win 7 с Cirrus графикой, выключить VM
  2. добавить второй графический адаптер как qxl
  3. загрузите VM и установите драйвер qxl
  4. выключите виртуальную машину и удалите перистый адаптер

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .