qemu虚机里运行windows。如果遇到虚机windows启动故障,甚至连安全模式也故障时,可以尝试更换另一个光驱里的光盘为pe光盘。
ssh登录之,virsh list获得虚机id,例如
391 12556983-95e6-4669-9406-dc63bbfb2495 running
这里的12556983-95e6-4669-9406-dc63bbfb2495就是虚机id
执行ps -ef|grep qemu-system|grep [虚机id]
在qemu-system命令行中搜索cdrom或ide-cd,例如可以看到
-drive file=/opt/vm_images/isos/windows/x86-64/guesttool.iso,if=none,format=raw,id=ua-101e8e6c-f751-4393-8baa-aca6f64f5c33
-device ide-cd,bus=ide.0,unit=0,drive=ua-101e8e6c-f751-4393-8baa-aca6f64f5c33,id=ua-101e8e6c-f751-4393-8baa-aca6f64f5c33,bootindex=-1
-drive file=/opt/php/cm/cm-iso/CDROM.iso,if=none,format=raw,id=ua-42743837-dc15-485e-85db-965a7a816f6b
-device ide-cd,bus=ide.1,unit=0,drive=ua-42743837-dc15-485e-85db-965a7a816f6b,id=ua-42743837-dc15-485e-85db-965a7a816f6b,bootindex=-1
这表示虚机有两个光驱,一个放光盘/opt/php/cm/cm-iso/CDROM.iso,另一个放光盘/opt/vm_images/isos/windows/x86-64/guesttool-vdi.iso,这张是gt的iso。
在qemu-system命令行中搜索OVMF,如果有则说明是uefi启动,否则是legacy启动。
若为uefi启动,则上传uefi类的pe.iso到云主机。
若为legacy启动,则上传legacy类的pe.iso到云主机。
2.4. 给虚机更换PE光盘
选择非gt盘的那个光驱,此例中是ua-42743837-dc15-485e-85db-965a7a816f6b。
执行:
vmmctl send 3 虚机id 36 0 '{ "uuid": "虚机id","deviceID":"光驱id","filename":"/X/Y/Z/pe.iso"}'
没有报错则说明光盘更换成功。
2.5. 重启虚机,改从PE盘启动
可使用virsh reset 虚机id等方法来重启虚机。
重启后马上连按esc,可进入bios界面,届时可选择从光驱启动。
2.6. 安装vioscsi磁盘控制器驱动
进入PE系统的windows桌面后,打开diskmgmt.msc。并未看到原先c,d盘,因为他们所属的硬盘挂载在scsi控制器之下。
我们须手工安装vioscsi驱动。打开devmgmt.msc,对scsi设备更新驱动,驱动源选择gt光盘的根目录。
随后可在diskmgmt.msc里看到原先的c,d盘。