我正在尝试通过 Linux KVM 虚拟化安装 Windows Server 2012 R2。
安装过程停止并需要驱动程序继续。
我正在尝试使用 Fedora 中的 virtio 驱动程序,但不起作用。安装过程未显示要安装的存储设备。
我正在尝试不同的存储选项:SATA、IDE、Virtio、Virtio SCSI。
Diskpart(列出磁盘)显示了磁盘,但安装程序无法使用它。
我使用了不同版本的 virtio 驱动程序:virtio-win-0.1.105.iso、virtio-win-0.1.96.iso 和 virtio-win-0.1.101.iso,结果相同。
我的安装磁盘是:SW_DVD9_Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_Spanish_-4_MLF_X19-82897.ISO
答案1
这是我目前在安装 Windows 时使用 virtio 驱动程序进行安装的方式:
使用正版 Windows 安装 ISO 映像创建新的 VM。如果您使用盗版 Windows 或 ISO 映像下载不完整或损坏,我无法保证一切正常。
选择在安装前自定义机器配置。
选择 IDE 硬盘,并将其类型更改为 VirtIO。单击“应用”。
选择 IDE CDROM,并将其类型更改为 SATA。单击“应用”。
单击添加硬件,然后使用 virtio-win.iso 映像添加第二个 SATA CDROM 驱动器。
(可选)还要将虚拟 NIC 更改为 VirtIO。您将能够在安装 Windows 后安装其驱动程序,这将防止您以后出现烦人的“以太网 2”。
单击“开始安装”并开始安装 Windows。
当安装程序询问您在哪里安装 Windows 时,单击“加载驱动程序”。
在下一页上,单击“浏览”,然后浏览到
\viostor\2k12R2\amd64
第二个 CD 驱动器上的文件夹virtio-win-0.1.xx
。将出现 Red Hat VirtIO SCSI 控制器。单击下一步。
现在您的虚拟磁盘已成功检测到。尽情享用吧!
安装完成后,您可以使用 virtio-win CD 安装剩余硬件的驱动程序,例如 NIC、气球驱动程序等。打开设备管理器查看哪些设备需要加载驱动程序。安装完驱动程序后,您可以从虚拟机中删除第二个虚拟 CDROM 驱动器。
最后,如果您打算对此图像进行系统准备,例如创建黄金大师,请按CtrlShiftF3此处直接进入审核模式。
(要升级视频驱动程序,请参阅我写的另一个答案)。
答案2
我遇到的主要问题是获取驱动程序。我从这里下载了https://fedoraproject.org/wiki/Windows_Virtio_Drivers并成功让 win 2012 r2 在 KVM 上运行
我上传了一个视频,展示了我使用的整个过程 https://youtu.be/9SPCa4TKues
答案3
我检测到使用 bus='virtio' 时存在问题,并从 fedora 驱动程序映像安装了 virtio 驱动程序。我们的主机规范(简短版本):
- 主持人:Debian Jessie
- 内核版本 4.8
- qemu-kvm 版本 2.8
请注意,由于我们遇到的问题,我们更新了内核和 qemu-kvm 版本。但这并不是解决问题的办法!
我们的客人规格:
- Windows Server 2012 R2
- 110 GB 内存
- qcow2 图片
- SQL 服务器
现在这里是有趣的部分(我正在使用 virsh 来管理客人):这是我的旧磁盘定义的一个例子。
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/kvm/pathToWhatever/MYGUEST.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
相当基础,这里没有什么特别的,注意 bus='virtio',这基本上是我在找到的每个教程或论坛中都建议的。
之后安装 Windows Server...到目前为止没有问题。然后我从 fedoraproject 映像安装了 virtio 驱动程序。现在我们有大量的 I/O,因为我们运行大型数据库导入/更新等。我们对一个巨大的数据库表运行了一个查询,虽然它刚刚启动,但几分钟后 Guest 就冻结了。我们已经调试了几个小时/几天,但在日志中没有发现任何东西。
我们甚至尝试使用 virtualbox 复制它,但它在那里运行得非常好。
就在今天,我发现当切换到 bus='ide' 然后再次启动 SQL 查询(导入)时,它运行得非常好 - 高 I/O 根本不是问题。
现在我怀疑 virtio 驱动程序坏了或者不兼容。我不是这方面的专家,但我们的临时解决方案是切换到 IDE。我现在正在使用 bus='scsi' 进行测试,然后在控制器类型定义中(如下所示)将 virtio-scsi 定义为模型。
<controller type='scsi' model='virtio-scsi' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</controller>
一旦我正确测试完毕,我就会发布我的结果。