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

22329
Kief

Я пытаюсь установить 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.

8

6 ответов на вопрос

7
Evan Plaice

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

Если у вас нет какой-либо конкретной причины, по которой вы должны установить 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
Matthias

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

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

+1 отличное объяснение различий между «паравиртуализацией» и «нативной виртуализацией» Evan Plaice 13 лет назад 1
2
Jared Harley

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

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

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

После некоторых исследований и консультаций с коллегой проблема, похоже, связана с эмуляцией процессора 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-файл, как предложено, заменив kmm на qemu, и установил Win7 64bit без проблем! (работает на Fed12 64bit) 13 лет назад 0
0
Mike Mestnik

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

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

0
Jiab77

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

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