Windows 7 nie instaluje się na KVM z qemu

8

Próbuję zainstalować system Windows 7 jako system operacyjny gościa na maszynie wirtualnej hostowanej przez moją 64-bitową skrzynkę Ubuntu Karmic. Przechodzę do punktu, w którym wybieram ustawienia języka i klikam „zainstaluj teraz”, ale chwilę później pojawia się niebieski ekran śmierci.

Wypróbowałem kilka odmian, w tym używanie 32-bitowej wersji systemu Windows 7, która bardzo szybko kończy się niepowodzeniem. virt-installKomenda Próbowałem ten obejmuje:

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

Ograniczone informacje, które mogłem znaleźć, sugerowały, że „Vista” powinien działać jako wariant --os, nie znalazłem żadnych wartości specyficznych dla systemu Windows 7.

Oto mój niebieski ekran:

BSOD

Googlinga niewiele mnie znalazło, więc zgaduję, że nie chodzi o KVM, który po prostu nie obsługuje Windows 7.

Aktualizacja:

Udało mi się pomyślnie utworzyć maszynę wirtualną z systemem Windows 7 za pomocą graficznej aplikacji „Virtual Machine Manager”, chociaż tak naprawdę nie rozumiem przyczyny problemu z maszyną wirtualną utworzoną za pomocą virt-install. Porównanie plików konfiguracyjnych w / etc / libvirt / qemu dostarcza wskazówek, chociaż nie wiem wystarczająco dużo, aby je poprawnie interpretować. Interesujące różnice w dwóch konfiguracjach maszyn wirtualnych to:

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

Nie jestem pewien, czy to oznacza, że ​​działająca maszyna wirtualna w ogóle nie używa qemu, czy też jest jakaś inna różnica w sposobie korzystania z kvm.

Aktualizacja 2:

Odpowiedziałem więc (głównie) poniżej na moje własne pytanie. VM VM musi użyć własnej emulacji procesora KVM zamiast qemu, aby zainstalować Windows 7. Nie jestem pewien, czy jest coś, co można zrobić, aby działało na procesorze emulującym qemu, czy też nowsza wersja będzie to obsługiwać. Ale przynajmniej możliwe jest uruchomienie go na maszynie wirtualnej KVM.

Kief
źródło

Odpowiedzi:

7

Oto prosty sposób

O ile nie masz konkretnego powodu, dla którego chcesz zainstalować GuestOS za pomocą virt-install, oto „prosty” sposób na zrobienie tego bez virt-install.

Mam działającą maszynę wirtualną z zainstalowanym systemem Windows 7. Oto jak to stworzyłem.

Krok 1: Utwórz obraz dysku wirtualnego

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

Spowoduje to utworzenie dysku wirtualnego w formacie qcow2. Ustawienie rozmiaru partycji na 100 g (gigabajtów) nie przydzieli 100 GB miejsca na fizycznym dysku twardym. Partycja wirtualna zajmie tylko tyle miejsca, ile zawiera dane. 100g to sprawia, że ​​nigdy nie będziesz musiał (miejmy nadzieję) zwiększyć rozmiaru. Zwiększenie domyślnego rozmiaru obrazu qcow2 jest nadal trudnym zadaniem .

Krok 2: Zainstaluj system operacyjny

Jeśli używasz rzeczywistego fizycznego dysku CD-ROM do załadowania systemu operacyjnego, użyj następującego polecenia.

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

Jeśli używasz obrazu dysku do załadowania systemu operacyjnego, użyj tego polecenia.

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

Oto podział poleceń:

  • kvm - wywołuje maszynę wirtualną jądra (oczywiste)
  • -m 750 - przydziela 750mb pamięci dla maszyny wirtualnej
  • -cd-rom konfiguruje cd-rom. W przypadku dysku fizycznego użyj tego samego dysku, co HostOS. W przypadku obrazu podaj ścieżkę do pliku obrazu.
  • -boot d uruchamia maszynę wirtualną z płyty CD-ROM

Ustawiłem ślad pamięci dla początkowego ładowania na 750, aby był zachowawczy, aby mieć pewność, że instalacja zakończy się bez wyczerpania pamięci. Przy kolejnych ładowaniach zwykle ustawiam go na 512.

Uwaga: AFIAK, polecenie kvm działa tylko w nowszych wersjach Debiana / Ubuntu lub ich pochodnych. Jeśli to nie działa, równoważne (i bardziej powszechne) polecenie to qemu-system-x86_64 lub qemu-kvm dla 32 bitów.

Po przejściu całego procesu instalacji maszyna wirtualna powinna zostać ponownie uruchomiona do działającego systemu operacyjnego. Aby ponownie załadować maszynę wirtualną, po prostu uruchom następujące polecenie:

kvm -m 512 vdisk.img

Niezależnie od przełączników wiersza poleceń, musisz zamontować dodatkowe dyski fizyczne, sprzęt itp. Aby znaleźć informacje o przełącznikach wiersza poleceń, sprawdź kvm --help.

Jeśli nie rozumiesz różnicy między „parawirtualizacją” a „natywną wirtualizacją”, Matthias już doskonale wyjaśnił różnice .

Aby uzyskać bardziej „szczegółowe” wyjaśnienie tego procesu, przeczytaj ten artykuł .

Evan Plaice
źródło
3

Przyczyną tego problemu przy instalacji systemu Windows z wirtualizacją qemu jest różnica między „parawirtualizacją” qemu a „natywną wirtualizacją” KVM. Parawirtualizacja oznacza, że ​​symuluje ona procesor i potrzebuje specjalnego jądra po stronie klienta (system wirtualny), aby systemy te wiedziały, jak poprawnie wywoływać procesor. To jest powód, dla którego nie wszystkie systemy mogą działać przy użyciu qemu bez KVM.

Z drugiej strony systemy wirtualne korzystające z KVM mogą uzyskać bezpośredni dostęp do procesora (ponieważ KVM korzysta z obsługi wirtualizacji sprzętowej AMD / Intel). W takim przypadku nie jest wymagane specjalne jądro. Minusem jest to, że host musi mieć nowoczesny procesor obsługujący tę wirtualizację sprzętu (zwaną SVM na AMD i VT-x dla Intela) oraz że system kliencki musi być w stanie działać na tym procesorze (nie jest to problemem, ponieważ większość systemów może działać na x86), zmniejszając przenośność.

Matthias
źródło
1
+1 świetne wyjaśnienie różnic między „parawirtualizacją” a „natywną wirtualizacją”
Evan Plaice
2

Wyjątek 0x1e KMODE_EXCEPTION_NOT_HANDLEDto zwykle błąd związany ze sprzętem lub sterownikiem urządzenia. Domyślam się, że z jakiegokolwiek powodu system Windows nie lubi emulowanego sprzętu z maszyny wirtualnej.

Próbowałeś używać VirtualBox ? Mają wydanie dla Karmic Koala i obsługują Windows 7 (korzystam teraz z Win7 na Windows XP).

Jared Harley
źródło
Dzięki, chcę trzymać się KVM, ponieważ używamy go z eukaliptusem. Jest to dla mnie zarówno nauka, jak i pragmatyczna potrzeba uruchomienia systemu Windows 7.
Kief
1

Po kilku badaniach i konsultacjach z kolegą problem wydaje się dotyczyć emulacji procesora qemu. Moja komenda virt-install utworzyła maszynę wirtualną KVM przy użyciu emulacji procesora qemu. VMM utworzył maszynę wirtualną KVM przy użyciu własnej emulacji procesora KVM (choć nadal używa qemu do emulacji innych części komputera, ponieważ obecna wersja KVM używa do tego qemu).

Dodając parametr --accelerate do mojej komendy virt-install, mogę utworzyć maszynę wirtualną i zainstalować na niej system Windows 7.

Odpowiedź wydaje się więc taka, że ​​systemu Windows 7 nie można zainstalować na maszynie wirtualnej za pomocą emulacji procesora qemu-kvm-0.11.0, ale można to obejść za pomocą własnej emulacji procesora KVM. Odbywa się to za pomocą opcji --accelerate w celu instalacji virt. Parametr pliku konfiguracyjnego będzie <domain type="kvm">raczej niż <domain type="qemu">.

Kief
źródło
dzięki za to! Edytowałem plik xml zgodnie z sugestią, zastępując kvm qemu i bez problemu zainstalowałem Win7 64bit! (działa na Fed12 64bit)
0

Inną różnicą, którą widzę z góry, jest to, że KVM powinien być tylko emulacją 32-bitową ... lub przynajmniej z wyróżniającym się różnicą XML.

Wygląda na to, że 64-bitowe wsparcie zostało dodane do KVM, więc qemu-system-x86_64 z --acceleratemógł / mógł dać ci zarówno KVM, jak i 64-bitowy, pod warunkiem, że twoje jądro jest dla niego zbudowane przez twoją dystrybucję.

Mike Mestnik
źródło