如何使用qemu引导物理Windows分区?


14

我在唯一的硬盘上同时安装了gentoo和Windows 7。我想通过qemu从gentoo内部启动Windows安装。引导菜单运行正常,但是选择后不久Windows就会出现蓝屏。

我将如何运作?

(我假设Windows缺少qemu仿真硬件正常工作所需的驱动程序。)


确保您qemu使用正确的架构运行。另外,如果等待HDD控制器为AHCI,则Windows将无法启动,反之亦然。
gelraen

架构很好,但是我不认为ahci可以做任何事情,因为qemu似乎不支持它……
McEnroe


@gelraen的问题是,您的链接描述了我想做的反向过程。我不能冒险尝试它,而不必知道它有可能解决或者至少是100%可逆的。
McEnroe

该帖子恰好是关于从AHCI还原为ATA的内容。而且,您始终可以在物理计算机上关闭AHCI并将其更改回,甚至可以简单地备份注册表文件。
gelraen 2011年

Answers:


8

可以通过以下方式引导本地的物理Windows7分区:

  1. 准备条件(Win7安装介质,Virtio驱动程序)。
  2. 使您的当前用户对硬盘驱动器具有只读访问权限。
  3. 在快照模式下使用QEMU引导它。

这不会更改物理驱动器上的任何内容(实际上它是只读的)。


细节

准备条件

  1. 准备一个ISO或Win7的实际安装介质(如果有驱动器)。
  2. 下载Virtio驱动程序,例如从Fedora中下载以下驱动程序:https :
    //fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso

请小心使用与安装的Windows体系结构(32位和64位)匹配的正确安装介质。以下命令采用64位体系结构。

使磁盘可访问

这假定您的硬盘驱动器是/dev/sda并且已经以root用户身份执行:

   chmod g-w /dev/sda
   chgrp $USER /dev/sda

由于udev通常会重新创建所有设备文件,因此此更改(可能)将在下次重新启动时丢失。

用QEMU引导

  1. 再次假设您的硬盘驱动器为/dev/sda。网络已禁用:

    qemu-system-x86_64 -snapshot -m 3G -enable-kvm -usbdevice tablet \
    -drive file=/dev/sda,if=virtio \
    -drive file=<win7-installation-media> \
    -drive file=<virtio-driver-media>,media=cdrom -boot d \
    -net none
    
  2. 现在从CD / DVD引导以启动Win7恢复,加载Virtio驱动程序并在recovery命令提示符下运行以下命令。确保使用正确的字母替换驱动器字母:

    dism /image:g:\ /add-driver /driver:e:\viostor\w7\amd64
    

驱动器G:是包含Win7安装的驱动器。驱动器E:代表带有Virtio驱动程序的CDROM驱动器。

dism命令是从此超级用户答案复制而来的。

请查看屏幕截图以获取详细信息:

(很抱歉,屏幕截图已准备好,但是我需要10名信誉才能发布它们:)


10点声誉是一件痛苦的事情。它阻止了我和其他许多人提供我们想要的详细帮助。= /我刚刚将我的照片上传到imgur并粘贴了链接,仅供参考。
布伦特·里滕豪斯

老实说,很难得到10分。问题是我无法再找到屏幕截图。我很确定它们在我的磁盘上,但是...:/
doak

3

根据我在这篇文章中看到的内容,您不能使用qemu来启动Windows的现有安装。

给出的主要参数是,当安装Windows时,产品密钥与计算机的主板相关联。现在,当您尝试使用qemu运行Windows时,Windows会将qemu仿真器视为另一个主板,因此会出现问题。

请参阅该帖子以获取更多详细信息。


2
VirtualBox可以自己宣传为任意主板(forums.virtualbox.org/viewtopic.php?t=33356),也许QEMU也可以。
RushPL 2014年

1

我设法在archlinux上做到了这一点,主要是通过改编其他(更聪明的)人在博客中提供的示例。

最低版本:

安装部门

sudo pacman -S qemu   # qemu itself
sudo pacman -S ovmf   # intel EFI driver
cp /usr/share/ovmf/x64/OVMF_CODE.fd bios.bin   # copy OVMF_CODE.fd to bios.bin somewhere. It MUST be renamed.

开始qemu

qemu-system-x86_64 \
    -enable-kvm                                   `# enable KVM optimiations` \
    -L .                                          `# dir with bios.bin` \
    --bios bios.bin                               `# bios.bin itself` \
    -m 8G                                         `# provide reasonable amount of ram` \
    -cpu host                                     `# match the CPU type exactly` \
    -drive file=/dev/sda,format=raw,media=disk    `# load raw HDD` 

性能优化

还向我推荐了以下标志,并且我一直在成功使用它们。

# emulate exact host cpu,
# enable hyper-v enlightenments
-enable-kvm
-cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time
-machine type=pc,accel=kvm

# use all available CPU cores
-smp $(nproc)

检视器

我用香料作为查看器:

-daemonize  `# don't start monitor, we connect using RDP` \
-vga qxl \
-spice port=5930,disable-ticketing \
-device virtio-serial \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \

接着显示以下内容

spicy -h 127.0.0.1 -p 5930 & disown spicy;  # spice-gtk

Windows Bootloader警告

最后,如果您使用多个磁盘,请当心Windows Bootloader。我现在有一个Windows安装程序,除非还存在另一个非OS驱动器,否则将无法启动。

参考文献

我希望我的资料保存在这里-我至少记得以下内容对您有帮助:

https://wiki.qemu.org/Main_Page https://qemu.weilnetz.de/doc/qemu-doc.html https://wiki.archlinux.org/index.php/QEMU https://wiki.gentoo .org / wiki / QEMU https://www.suse.com/documentation/sles11/book_kvm/data/part_2_book_book_kvm.html

祝好运!


这为我工作在Arch Linux的
jameh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.