virtio-win / virtio-win-guest-tools-installer

113 stars 19 forks source link

inaccessible boot device #61

Closed ChendongSun closed 6 months ago

ChendongSun commented 6 months ago

Encountered the following blue screen issue: The windows operating system is installed on a non-VirtIO disk. Installed Vioster drivers in the virtual machine, then shut it down, switched to VirtIO disk by kvm, and reboot, experienced a blue screen-------error code:inaccessible boot device。

Moreover, if a VirtIO data disk (non-system disk) is added to Windows and the Vioster driver is loaded once, it is possible to switch the system disk to a VirtIO hard disk.

YanVugenfirer commented 6 months ago

I think It might depends on how the driver is signed. With MS signed driver, I do not expect such an issue on modern Windows OS (the older OS actually couldn't handle such scenario).

The SW first scenarios (installing driver without having actual device), depends on signature.

ChendongSun commented 6 months ago

step1:Configure kvm as follows(ide mode can boot without viroster):

<disk type='file' device='disk' <driver name='qemu' type='qcow2' <source file='/Data/Image/windows2019/windows2019.qcow2' index='1' <backingStore <target dev='hdb' bus='ide' <boot order='1' </disk

step2:Install virtio-win-0.1.229(virtio-win-guest-tools.exe With MS signed driver) on virtual machine windows2019,and Configure kvm as follows:

<disk type='file' device='disk' <driver name='qemu' type='qcow2' <source file='/Data/Image/windows2019/windows2019.qcow2' index='1' <backingStore <target dev='vdb' bus='virtio' <boot order='1' </disk

step3:virsh destroy windows2019;virsh start windows2019。and then blue screen with inaccessible boot device。

ChendongSun commented 6 months ago

i think If the VirtIO driver has not been loaded before the virtual machine, and the only disk is connected through the VirtIO interface, the operating system may not start properly because it does not have the necessary driver to recognize and operate the disk.

vrozenfe commented 6 months ago

viostor is for virtio-blk device while vioscsi is designed to work with virtio-scsi. Not sure, but if I'am not mistaken <target dev='vdb' bus='virtio' adds virtio-scsi device. Could you check it please? You can do it by checking the qemu command line or by running "info pci" command from the qemu monitor.

Best, Vadim.

ChendongSun commented 6 months ago

1、configure virtio-scsi device. target dev='sdb' bus='scsi'

2、configure virtio-blk device. target dev='vdb' bus='virtio'

vrozenfe commented 6 months ago

Thanks, Then try to do the following things. Run your VM with non-virtio system disk and one virtio disk attached as a data disk. Install virtio driver for a data disk and shutdown the VM. Reconfigure the VM by removing the data disk and switching the system disk to virtio. Best, Vadim.

ChendongSun commented 6 months ago

If I add a data disk so that the driver has been loaded, it can start normally. But if there is a large number of machines, it is difficult to handle it manually. It would be better to have a device or script to do this step

vrozenfe commented 6 months ago

you probably should take a look at virt-v2v project. It makes it possible to inject virtio win drivers offline