From f708a4ba1bcd5cb3be8c2f91a347cd3eed81c8b7 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 1 Dec 2022 10:53:12 +0000 Subject: [PATCH] rhv: Use osinfo to distinguish Windows >= 10 variants Windows versions >= 10 no longer use the NT major.minor numbering scheme (it is fixed at 10.0). Libguestfs >= 1.49.8 can distinguish these versions and it sets correctly, so use that instead. After this change the OVF will contain: Windows 10 Pro windows_11 which is strange, but apparently what Microsoft intended. As far as RHV is concerned it only needs to choose the correct devices etc. Reported-by: Tingting Zheng Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2149863 Reviewed-by: Laszlo Ersek (cherry picked from commit 38b35f3b7e5c6e5aea5dece5f77561b8332d3360) --- lib/create_ovf.ml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/create_ovf.ml b/lib/create_ovf.ml index 18e86d6c..8aff3d8f 100644 --- a/lib/create_ovf.ml +++ b/lib/create_ovf.ml @@ -231,13 +231,22 @@ and get_ostype = function i_arch = "i386" } -> "windows_10" + (* For Windows NT 10.0 always use the field since the + * other fields will not accurately reflect the version. + *) | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; - i_arch = "x86_64"; i_product_variant = "Client" } -> - "windows_10x64" - - | { i_type = "windows"; i_major_version = 10; i_minor_version = 0; - i_arch = "x86_64" } -> - "windows_2016x64" + i_arch = "x86_64"; i_osinfo = osinfo; i_product_name = product } -> + (match osinfo with + | "win10" -> "windows_10x64" + | "win11" -> "windows_11" + | "win2k16" -> "windows_2016x64" + | "win2k19" -> "windows_2019x64" + | "win2k22" -> "windows_2022" + | _ -> + warning (f_"unknown Windows 10 variant: %s (%s)") + osinfo product; + "windows_2022" + ) | { i_type = typ; i_distro = distro; i_major_version = major; i_minor_version = minor; i_arch = arch;