Windows 7 không cài đặt được trên KVM với qemu


8

Tôi đang cố gắng cài đặt Windows 7 làm HĐH khách trong một máy ảo được lưu trữ bởi hộp Ubuntu Karmic 64 bit của tôi. Tôi đến điểm chọn cài đặt ngôn ngữ của mình và nhấp vào 'cài đặt ngay bây giờ', nhưng một lát sau tôi nhận được màn hình xanh chết chóc.

Tôi đã thử một vài biến thể, bao gồm cả việc sử dụng phiên bản Windows 7 32 bit, rất nhanh bị lỗi. Các virt-installlệnh Tôi đã thử bao gồm này:

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

Thông tin hạn chế mà tôi có thể tìm thấy gợi ý rằng 'Vista' nên hoạt động như biến thể --os, tôi không tìm thấy bất kỳ giá trị cụ thể nào cho Windows 7.

Đây là màn hình xanh của tôi:

BSOD

Tôi đã tìm thấy rất ít bởi Googling, vì vậy tôi đoán đây không phải là trường hợp của KVM đơn giản là không hỗ trợ Windows 7.

Cập nhật:

Tôi đã có thể tạo thành công máy ảo Windows 7 bằng ứng dụng "Trình quản lý máy ảo" đồ họa, mặc dù tôi không thực sự hiểu nguyên nhân của sự cố với máy ảo được tạo virt-install. So sánh các tệp cấu hình trong / etc / libvirt / qemu cung cấp một số manh mối, mặc dù tôi không biết đủ để diễn giải chúng đúng. Sự khác biệt thú vị trong hai cấu hình VM là:

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

Tôi không chắc điều này có nghĩa là VM hoạt động hoàn toàn không sử dụng qemu hay nếu có một số khác biệt khác trong cách sử dụng với kvm.

Cập nhật2:

Vì vậy, tôi đã trả lời câu hỏi của riêng tôi (chủ yếu) dưới đây. Máy ảo KVM cần sử dụng mô phỏng CPU của chính KVM thay vì qemu để tôi cài đặt Windows 7. Tôi không chắc liệu có một cái gì đó có thể được thực hiện để làm cho nó hoạt động trên CPU mô phỏng qemu hay không, hoặc liệu một phiên bản mới hơn sẽ hỗ trợ nó. Nhưng ít nhất có thể để nó chạy trên máy ảo KVM.

Câu trả lời:


7

Đây là cách dễ dàng

Trừ khi bạn có một số lý do cụ thể tại sao bạn cài đặt GuestOS bằng cách sử dụng virt-install, đây là cách 'dễ dàng' để thực hiện mà không cần cài đặt.

Tôi có một VM hoạt động với Windows 7 được cài đặt. Đây là cách tôi tạo ra nó.

Bước 1: Tạo hình ảnh đĩa ảo

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

Điều này tạo ra một đĩa ảo ở định dạng qcow2. Đặt kích thước phân vùng thành 100g (gigabyte) sẽ không phân bổ 100gb dung lượng ổ cứng vật lý. Phân vùng ảo sẽ chỉ chiếm nhiều dung lượng như dữ liệu mà nó chứa. 100g chỉ làm cho nó để bạn (hy vọng) không bao giờ cần phải tăng kích thước. Tăng kích thước mặc định của hình ảnh qcow2 vẫn là một việc khó khăn .

Bước 2: Cài đặt HĐH

Nếu bạn đang sử dụng một đĩa CD-rom vật lý thực tế để tải HĐH, hãy sử dụng lệnh sau.

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

Nếu bạn đang sử dụng hình ảnh đĩa để tải HĐH, hãy sử dụng lệnh này.

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

Đây là sự cố của các lệnh:

  • kvm - gọi máy ảo kernel (hiển nhiên)
  • -m 750 - phân bổ 750mb bộ nhớ cho máy ảo
  • -cd-rom thiết lập cd-rom. Đối với một đĩa vật lý, hãy sử dụng cùng một đĩa với HostOS của bạn. Đối với một hình ảnh, cung cấp một đường dẫn đến tập tin hình ảnh.
  • -boot d khởi động máy ảo từ đĩa cd-rom

Tôi đặt dấu chân bộ nhớ cho tải ban đầu là 750 để bảo toàn để tôi có thể chắc chắn rằng quá trình cài đặt kết thúc mà không hết bộ nhớ. Đối với các lần tải tiếp theo, tôi thường đặt nó thành 512.

Lưu ý: AFIAK, lệnh kvm chỉ hoạt động trong các phiên bản gần đây hơn của Debian / Ubuntu hoặc các dẫn xuất của chúng. Nếu nó không hoạt động, lệnh tương đương (và phổ biến hơn) là qemu-system-x86_64 hoặc qemu-kvm trong 32 bit.

Sau khi bạn đã hoàn thành toàn bộ quá trình cài đặt, VM sẽ khởi động lại vào một hệ điều hành đang hoạt động. Để tải lại VM, chỉ cần khởi chạy lệnh này:

kvm -m 512 vdisk.img

Với bất kỳ công tắc dòng lệnh nào, bạn cần gắn thêm đĩa vật lý, phần cứng, v.v ... Để tìm thông tin về công tắc dòng lệnh, hãy kiểm tra kvm --help.

Nếu bạn không hiểu sự khác biệt giữa 'paravirtualization' và 'ảo hóa bản địa' Matthias 'thì đã có một lời giải thích tuyệt vời về sự khác biệt .

Để có giải thích 'sâu hơn' về quá trình này, hãy đọc bài viết này .


3

Lý do cho vấn đề này với việc cài đặt các cửa sổ với ảo hóa qemu là sự khác biệt giữa "paravirtualization" của qemu và "ảo hóa tự nhiên" của KVM. Paravirtualization có nghĩa là nó mô phỏng CPU và cần một hạt nhân đặc biệt ở phía máy khách (hệ thống ảo) để hệ thống này biết cách xác định chính xác các chức năng của CPU. Đó là lý do không phải tất cả các hệ thống đều có thể chạy bằng qemu mà không có KVM.

Mặt khác, các hệ thống ảo sử dụng KVM có thể truy cập trực tiếp vào CPU (vì KVM sử dụng hỗ trợ ảo hóa phần cứng AMD / Intel). Trong trường hợp đó, không cần kernel đặc biệt. Nhược điểm là máy chủ cần phải có CPU hiện đại hỗ trợ Ảo hóa phần cứng này (được gọi là SVM trên AMD và VT-x cho Intel) và hệ thống máy khách phải có khả năng chạy trên CPU đó (không phải là vấn đề, vì hầu hết các hệ thống có thể chạy trên x86), giảm tính di động.


1
+1 lời giải thích tuyệt vời về sự khác biệt giữa 'paravirtualization' và 'ảo hóa bản địa'
Evan Plaice

2

Ngoại lệ 0x1e là KMODE_EXCEPTION_NOT_HANDLED, thường là lỗi liên quan đến phần cứng hoặc trình điều khiển thiết bị. Tôi đoán là vì lý do nào, Windows không thích phần cứng giả lập từ máy ảo.

Bạn đã thử sử dụng VirtualBox chưa? Họ có một bản phát hành cho Karmic Koala và họ hỗ trợ Windows 7 (Tôi đang chạy Win7 ngay bây giờ trên hộp Windows XP).


Cảm ơn, tôi muốn gắn bó với KVM, vì chúng tôi đang sử dụng nó với Bạch đàn. Đây là một bài tập học tập đối với tôi như một nhu cầu thực tế để chạy Windows 7.
Kief

1

Sau một số nghiên cứu và tham khảo ý kiến ​​với một đồng nghiệp, vấn đề dường như là với giả lập CPU qemu. Lệnh virt-install của tôi đã tạo ra máy ảo KVM bằng cách mô phỏng CPU của qemu. VMM đã tạo ra một máy ảo KVM bằng cách sử dụng mô phỏng CPU của chính KVM (mặc dù vẫn sử dụng qemu để mô phỏng các phần khác của PC, vì phiên bản hiện tại của KVM sử dụng qemu cho việc này).

Bằng cách thêm tham số --accelellow vào lệnh virt-install của tôi, tôi có thể tạo VM và cài đặt Windows 7 trên đó.

Vì vậy, câu trả lời dường như là Windows 7 không thể được cài đặt trên máy ảo bằng cách sử dụng mô phỏng CPU qemu-kvm-0.11.0, nhưng điều này có thể được giải quyết bằng cách sử dụng mô phỏng CPU của KVM. Điều này được thực hiện bằng cách sử dụng tùy chọn --accelate để cài đặt. Tham số tập tin cấu hình sẽ là <domain type="kvm">hơn <domain type="qemu">.


cám ơn vì cái này! Tôi đã chỉnh sửa tệp xml theo đề xuất, thay thế kvm cho qemu và cài đặt Win7 64 bit mà không gặp sự cố! (chạy trên Fed12 64 bit)

0

Sự khác biệt khác mà tôi thấy ở trên là KVM chỉ nên mô phỏng 32 bit ... hoặc ít nhất là với khác biệt XML của bạn nổi bật.

Có vẻ như hỗ trợ 64 bit đã được thêm vào KVM, vì vậy qemu-system-x86_64 với --acceleratemight / có thể cung cấp cho bạn cả KVM và 64 bit, miễn là hạt nhân của bạn được xây dựng cho phân phối của bạn.


0

Tôi đã có thể bắt đầu cài đặt bằng cách thay đổi màn hình đầu tiên thành cirruskhuyến nghị ở đây: https://ubuntuforums.org/showthread.php?t=2325843&s=67c08420c394b532ea814a0c46752914&p=13500324#post13500324

  1. cài đặt Win 7 với đồ họa cirrus, tắt vm
  2. thêm bộ điều hợp đồ họa thứ hai là qxl
  3. khởi động vm và cài đặt trình điều khiển qxl
  4. tắt vm và gỡ bỏ bộ chuyển đổi cirrus

Cảm ơn bình luận của bạn, tôi đã thêm giải pháp hoàn chỉnh.
Jiab77
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.