在 virtio 磁盘上的 kvm 中安装 Windows 2008 R2 时,似乎不支持驱动程序。即使安装了驱动程序,我也无法将 Windows 安装到映像中。这是因为 Windows 无法将映像视为可启动的。那么如何制作支持 virtio 并可添加到 Glance 的 Windows Server 2008 R2?
编辑 1:添加图片 以下是我遇到的问题的一些图片。这不是 0x80300001 错误,为了证明这一点,我添加了一张显示 Windows iso 已加载到 CD-ROM 中的图片。
编辑2:这种现象似乎只在 Ubuntu 上出现。Dyasny 确认它在 Fedora 上也能正常工作。
答案1
我用来解决这个问题的方法是:
首先,我们需要创建一个镜像来安装虚拟机。微软说最低要求是 10 GB,但我用了 15 GB。请记住,这不是虚拟机的最终大小,一旦将其引入 Nova Compute。创建一个名为 windows.virtio 的原始镜像:
kvm-img create -f raw windows.virtio 15G
现在打开 virt-manager 并创建一个新的虚拟机:
- 命名您的机器
- 使用 ISO 映像并选择您的 Windows 2008 R2 映像
- 在下拉菜单中选择 Windows 和 Windows 2008
- 2048 MB 内存
- 2 个 CPU
- 配置网络以便你可以使用互联网
现在启动机器并安装映像,磁盘目前设置为 IDE,但这并不是真正的问题。
- 安装后让它重新启动,重新启动后再关闭它
- 创建临时图像 kvm-img 创建 -f raw dirtyhack.virtio 1G
- 使用 virt-manager 添加硬件:
- 磁盘驱动程序
- 贮存
- 文件磁盘映像(选择 dirtyhack.virtio)
- 将设备类型设置为 Virtio
- 使用从 CDrom 站中的 Fedora 项目获得的驱动程序安装 ISO
- 网卡
- 向某个接口添加新网卡(它连接到什么并不重要)
- 选择卡时,将虚拟机管理程序默认值更改为 virtio
- 再次启动服务器
- 在 Windows 中打开设备管理器
- 按开始
- 类型设备管理器
- 在设备管理器中选择 iSCSI 驱动程序
- 安装驱动程序并浏览到 CDrom 并进入 wlh>amd64
- 单击确定,驱动程序将被安装
- 对网卡执行相同的操作,我不得不使用 Windows 7 文件夹中的驱动程序,因为 Windows 无法检测到 Wnet 文件夹中的驱动程序
- 关闭机器
- 在 virt-manager 中从机器中删除所有硬盘
- 添加硬件、存储并添加原始的 windows.virtio,但请确保将设备类型设置为 virtio
- 启动机器
恭喜,您的机器现在有了 Virtio 驱动程序。
我也发布了这个我的博客
答案2
对于到达这里的任何人,您都不需要执行建议的黑客攻击,只需将 virtio 驱动程序指定为 cdrom。
在 qemu-system-x86 中,使用这些选项。
sudo qemu-syste-x86 -m 1024 -drive file=/path/to/file/windows_2012_r2.ISO,index=2,media=cdrom \
-drive file=win2012.raw,if=virtio,index=0, -boot d -net nic,model=virtio \
-net user,hostfwd=tcp::3389-:3389 -nographic -vnc :0 \
-drive file=/path/to/file/virtio-win-0.1-81.iso,index=3,media=cdrom
答案3
Openstack 提供了有关您要在此处实现的目标的文档:http://docs.openstack.org/diablo/openstack-compute/starter/content/Creating_a_Windows_Image-d1e1594.html
诀窍是在安装过程中提供 virtio-win-xxxvfd 软盘映像,以便 Windows 从中获取驱动程序