[libvirt] libvirt cannot boot windows-uefi-guest with virtio disk

Martin Kletzander mkletzan at redhat.com
Wed Mar 14 12:57:41 UTC 2018


On Thu, Mar 08, 2018 at 08:59:11PM +0500, Иван Иванов wrote:
>I am using libvirt 3.6 version on Ubuntu 17.10 and create domain with
>command:
>
>virt-install --name dc02 --memory 1024,maxmemory=2048 --vcpus 1 --cpu host
>--boot uefi,hd,network --disk /var/lib/libvirt/images/dc02.qcow2,bus=virtio
>--network bridge=br.27,model=virtio --video=qxl --memballoon virtio --hvm
>--controller usb3 --machine=q35 --graphics spice,listen=192.168.69.108
>Domain boot failed with BSOD message "Unaccesible boot device", but when i
>change virtio-drive to sata-drive, its successfuly boot
>
>ps -ef output for virtio-drive look like:
>libvirt+ 39726     1 45 19:59 ?        00:00:06 qemu-system-x86_64
>-enable-kvm -name guest=dc02,debug-threads=on -S -object
>secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-11-dc02/master-key.aes
>-machine pc-q35-2.10,accel=kvm,usb=off,vmport=off,dump-guest-core=off -cpu
>SandyBridge,vme=on,ss=on,vmx=on,pcid=on,hypervisor=on,arat=on,tsc_adjust=on,xsaveopt=on,pdpe1gb=on
>-drive
>file=/usr/share/OVMF/OVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on
>-drive
>file=/var/lib/libvirt/qemu/nvram/dc02_VARS.fd,if=pflash,format=raw,unit=1
>-m 2048 -realtime mlock=off -smp 1,sockets=1,cores=1,threads=1 -uuid
>fab3a566-46ad-4b2c-9e65-26cb685af33a -no-user-config -nodefaults -chardev
>socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-11-dc02/monitor.sock,server,nowait
>-mon chardev=charmonitor,id=monitor,mode=control -rtc
>base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet
>-no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1
>-boot strict=on -device
>pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2
>-device i82801b11-bridge,id=pci.2,bus=pcie.0,addr=0x1e -device
>pci-bridge,chassis_nr=3,id=pci.3,bus=pci.2,addr=0x0 -device
>pcie-root-port,port=0x11,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x1 -device
>pcie-root-port,port=0x12,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x2 -device
>pcie-root-port,port=0x13,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x3 -device
>pcie-root-port,port=0x14,chassis=7,id=pci.7,bus=pcie.0,addr=0x2.0x4 -device
>pcie-root-port,port=0x15,chassis=8,id=pci.8,bus=pcie.0,addr=0x2.0x5 -device
>nec-usb-xhci,id=usb,bus=pci.4,addr=0x0 -device
>virtio-serial-pci,id=virtio-serial0,bus=pci.5,addr=0x0 -drive
>file=/var/lib/libvirt/images/dc02.qcow2,format=qcow2,if=none,id=drive-virtio-disk0
>-device
>virtio-blk-pci,scsi=off,bus=pci.6,addr=0x0,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1
>-netdev tap,fd=27,id=hostnet0,vhost=on,vhostfd=29 -device
>virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:16:88:b3,bus=pci.1,addr=0x0,bootindex=2
>-chardev pty,id=charserial0 -device
>isa-serial,chardev=charserial0,id=serial0 -chardev
>spicevmc,id=charchannel0,name=vdagent -device
>virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0
>-spice
>port=5900,addr=192.168.69.108,disable-ticketing,image-compression=off,seamless-migration=on
>-device
>qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1
>-device intel-hda,id=sound0,bus=pci.3,addr=0x1 -device
>hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -chardev
>spicevmc,id=charredir0,name=usbredir -device
>usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=1 -chardev
>spicevmc,id=charredir1,name=usbredir -device
>usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=2 -device
>virtio-balloon-pci,id=balloon0,bus=pci.7,addr=0x0 -msg timestamp=on
>
>But when i run this domain with qemu-system its succsessfuly boot and work.
>Cmd looks like:
>qemu-system-x86_64 -machine type=pc-q35-2.8 -accel kvm -cpu host \
>-cdrom /var/lib/libvirt/images/virtio-win-0.1.141.iso \
>--bios /usr/share/OVMF/OVMF_CODE.fd \
>-m 2048 -smp 2 -drive
>file=/var/lib/libvirt/images/dc02.qcow2,index=0,media=disk,if=virtio -boot
>menu=on \
>-spice addr=192.168.69.108,port=5910,disable-ticketing
>

This adds lot of default devices that you can't see (qom-list qemu command could
help with figuring out the differences), so maybe one of the devices along the
way (controller) has a different model and is not working in the guest.  Is it
possible that the Windows guest was installed with the disk plugged in as SATA?
Because just changing that doesn't really work for some Guest OSes and maybe
QEMU emulates some older devices that work (just a very rough guess).  For
details about the differences I'd also try asking the QEMU people, just in case
they miss it on this list.

>I cannot fugire out where i went wrong

>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180314/a8a3c51c/attachment-0001.sig>


More information about the libvir-list mailing list