![如何使用 qemu 启动物理 Windows 分区?](https://linux22.com/image/1290415/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20qemu%20%E5%90%AF%E5%8A%A8%E7%89%A9%E7%90%86%20Windows%20%E5%88%86%E5%8C%BA%EF%BC%9F.png)
我唯一的硬盘上同时安装了 gentoo 和 windows 7。我想通过 qemu 从 gentoo 内部启动 windows 安装。启动菜单工作正常,但选择它后不久 windows 就出现蓝屏。
我该如何让它工作呢?
(我认为 Windows 缺少 qemu 模拟硬件运行所需的驱动程序。)
答案1
启动本机的物理Windows 7的分区可以通过以下方式完成:
- 准备必需品(Windows 7的安装介质、Virtio 驱动程序)。
- 使您的硬盘驱动器对当前用户以只读方式访问。
- 使用 QEMU 以快照模式启动它。
这并没有改变任何事物在物理驱动器上(实际上它是只读的)。如果您想要保留这些内容,请-snapshot
从 QEMU 调用中删除或commit all
在 QEMU 控制台中使用。
顺便说一下,这对Windows 10也一样。
细节
准备必需品
- 准备一个 ISO,或者如果您手头有驱动器,则准备 Win7 的真实安装媒体。
- 下载 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 引导
这再次假设您的硬盘是
/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
现在从 CD/DVD 启动Windows 7的恢复,加载 Virtio 驱动程序并在恢复命令提示符中运行以下命令。确保将驱动器号替换为正确的驱动器号:
dism /image:g:\ /add-driver /driver:e:\viostor\w7\amd64
DriveG:
是包含您的Windows 7的安装。驱动器E:
代表装有 Virtio 驱动程序的 CDROM 驱动器。为了显示此命令变体的一些帮助,请使用dism /image:g:\ /?
。
命令dism
复制自这个超级用户的回答。
[抱歉,截图已经准备好了,但由于声望值门槛为 10,我无法发布。不幸的是,我目前无法找到它们 :(]
答案2
我已经设法在 archlinux 上做到这一点,主要是通过改编其他(更聪明的)人在博客中提供的示例。
最小版本:
安装 deps
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)
查看器
我使用 Spice 作为查看器:
-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 引导加载程序警告
最后,如果您使用多个磁盘,请小心 Windows 引导加载程序。我现在有一个 Windows 安装,除非还存在第二个非操作系统驱动器,否则它将无法启动。
参考
我希望我能把我的信息来源保留在这里——我记得至少以下内容非常有帮助:
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
祝你好运!
答案3
答案4
这是我用于物理 Windows 10 驱动器的内容。请注意,在许多情况下,如果您不使用“ -cpu host
”标志,Windows 将无法启动。
只需用你的驱动器替换即可/dev/nvme0n1
。/dev/sda
或者/dev/sdb
qemu-system-x86_64 --enable-kvm -cpu host -smp 8 -m 8192 -drive format=raw,file=/dev/nvme0n1 # Replace this last parameter
来源。