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 за допомогою графічного додатка "Менеджер віртуальної машини", хоча я не дуже розумію причину проблеми, створеної в VM virt-install. Порівняння файлів конфігурації під / etc / libvirt / qemu дає деякі підказки, хоча я не знаю достатньо, щоб їх правильно інтерпретувати. Цікаві відмінності двох конфігурацій 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.

Оновлення2:

Тож я відповів на власне запитання (в основному) нижче. Для VM VV потрібно використовувати власну емуляцію процесора KVM, а не qemu, щоб мені встановити Windows 7. Я не впевнений, чи можна щось зробити, щоб він працював над процесором qemu-емуляції, чи підтримуватиме його новіша версія. Але принаймні можна запустити його на КВМ VM.

Відповіді:


7

Ось простий спосіб

Якщо у вас немає конкретних причин, чому ви встановите GuestOS за допомогою virt-install, ось «простий» спосіб зробити це без встановлення virt.

У мене встановлена ​​робоча VM з 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. Для фізичного диска використовуйте той самий диск, що і ваш HostOS. Для зображення вкажіть шлях до файлу зображення.
  • -завантаження d завантажує віртуальну машину з компакт-диска

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

Примітка: AFIAK, команда kvm працює лише в останніх версіях Debian / Ubuntu або їх похідних. Якщо вона не працює, еквівалентною (і більш поширеною) командою є qemu-system-x86_64 або qemu-kvm для 32-бітного.

Після того, як ви пройшли весь процес встановлення, VM слід перезавантажити в робочу ОС. Щоб завантажити VM ще раз, просто запустіть цю команду:

kvm -m 512 vdisk.img

За допомогою будь-яких комутаторів командного рядка потрібно встановити додаткові фізичні диски, обладнання та ін. Щоб знайти інформацію про комутатори командного рядка, перевірте kvm --help.

Якщо ви не розумієте різниці між "паравіртуалізацією" та "рідною віртуалізацією", Маттіас вже зробив чудове пояснення відмінностей .

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


3

Причиною цієї проблеми при встановленні Windows з віртуалізацією qemu є різниця між qemu "паравіртуалізацією" та KVM "рідною віртуалізацією". Паравіртуалізація означає, що вона імітує процесор і потребує спеціального ядра на стороні клієнта (віртуальної системи), щоб ці системи вміли правильно.надзвонити функції ЦП. Саме тому всі системи не можуть працювати за допомогою qemu без KVM.

З іншого боку, віртуальні системи, що використовують KVM, можуть отримувати прямий доступ до центрального процесора (оскільки KVM використовує підтримку AMD / Intel Hardware Virtualization). У цьому випадку спеціальне ядро ​​не потрібно. Мінусом є те, що хост повинен мати сучасний процесор, який підтримує цю апаратну віртуалізацію (називається 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, я можу створити VM та встановити на ньому Windows 7.

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


спасибі за це! Я відредагував файл xml, як було запропоновано, замінивши kvm на qemu і без проблем встановив Win7 64bit! (працює на Fed12 64bit)

0

Інша відмінність, яку я бачу зверху, полягає в тому, що KVM має бути лише 32-бітовою емуляцією ... або, принаймні, з вашим XML-диференціалом, який виділяється.

Схоже, 64-бітова підтримка була додана в KVM, тому qemu-system-x86_64 з --accelerateможе / може дати вам і KVM, і 64bit, за умови, що ваше ядро ​​побудовано для цього вашим дистрибутивом.


0

Мені вдалося запустити інсталяцію, змінивши спочатку дисплей, cirrusяк тут рекомендовано: https://ubuntuforums.org/showthread.php?t=2325843&s=67c08420c394b532ea814a0c46752914&p=13500324#post13500324

  1. встановіть Win 7 з циррусною графікою, вимкніть vm
  2. додайте другий графічний адаптер як qxl
  3. boot vm та встановити драйвер qxl
  4. вимкніть vm та вийміть адаптер cirrus

Дякуємо за Ваш коментар, я додав повне рішення.
Jiab77
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.