Windows 7 не удается установить на KVM с qemu


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.

Ответы:


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 загружает виртуальную машину с компакт-диска

Я установил минимальный объем памяти для начальной загрузки 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), уменьшая переносимость.


1
+1 отличное объяснение различий между «паравиртуализацией» и «нативной виртуализацией»
Эван Плейс

2

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

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


Спасибо, я хочу придерживаться KVM, так как мы используем его с эвкалиптом. Для меня это как учебное упражнение, так и практическая потребность в запуске Windows 7.
Киф

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">.


Спасибо за это! Я отредактировал XML-файл, как предложено, заменив kem на qemu, и установил Win7 64bit без проблем! (работает на Fed12 64bit)

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 с перистой графикой, закрыть vm
  2. добавить второй графический адаптер как qxl
  3. загрузите VM и установите драйвер qxl
  4. выключите виртуальную машину и удалите перистый адаптер

Спасибо за ваш комментарий, я добавил полное решение.
Jiab77
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.