The exploded tree has many missing drivers (eg. virtio-rng). The ISO contains the complete set, so prefer it. --- v2v/virt-v2v.pod | 34 +++++++++++++++++++++++++--------- v2v/windows_virtio.ml | 4 +++- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/v2v/virt-v2v.pod b/v2v/virt-v2v.pod index 5d6628d65..ff6e020a6 100644 --- a/v2v/virt-v2v.pod +++ b/v2v/virt-v2v.pod @@ -607,10 +607,10 @@ the named root device does not exist or was not detected as a root device, then virt-v2v will fail. Note that there is a bug in grub which prevents it from successfully -booting a multiboot system if VirtIO is enabled. Grub is only able to -boot an operating system from the first VirtIO disk. Specifically, -F</boot> must be on the first VirtIO disk, and it cannot chainload an -OS which is not in the first VirtIO disk. +booting a multiboot system if virtio is enabled. Grub is only able to +boot an operating system from the first virtio disk. Specifically, +F</boot> must be on the first virtio disk, and it cannot chainload an +OS which is not in the first virtio disk. =item B<--vdsm-compat=0.10> @@ -766,9 +766,8 @@ below. Ubuntu 10.04+ All versions support virtio - Windows Drivers are installed from the directory pointed to by - "VIRTIO_WIN" environment variable - (/usr/share/virtio-win by default) if present + Windows Drivers are installed from the ISO or directory pointed + to by "VIRTIO_WIN" environment variable if present =head1 RHEL 4 @@ -2014,8 +2013,25 @@ distributed with virt-v2v. =item C<VIRTIO_WIN> -This is where VirtIO drivers for Windows are searched for -(F</usr/share/virtio-win> if unset). It can be a directory I<or> +This is where virtio drivers for Windows are searched for. + +If unset, then we look for drivers in whichever of these paths +is found first: + +=over 4 + +=item F</usr/share/virtio-win/virtio-win.iso> + +The ISO containing virtio drivers for Windows. + +=item F</usr/share/virtio-win> + +The exploded tree of virtio drivers for Windows. This is +usually incomplete, hence the ISO is preferred. + +=back + +(F<> if unset). It can be a directory I<or> point to F<virtio-win.iso> (CD ROM image containing drivers). See L<ENABLING VIRTIO>. diff --git a/v2v/windows_virtio.ml b/v2v/windows_virtio.ml index 84a16e34e..6c9708c03 100644 --- a/v2v/windows_virtio.ml +++ b/v2v/windows_virtio.ml @@ -31,7 +31,9 @@ let virtio_win = with Not_found -> try Sys.getenv "VIRTIO_WIN_DIR" (* old name for VIRTIO_WIN *) with Not_found -> - Guestfs_config.datadir // "virtio-win" + let iso = Guestfs_config.datadir // "virtio-win" // "virtio-win.iso" in + if Sys.file_exists iso then iso + else Guestfs_config.datadir // "virtio-win" let scsi_class_guid = "{4D36E97B-E325-11CE-BFC1-08002BE10318}" let viostor_pciid = "VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00" -- 2.12.0