mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
lib: Return correct osinfo field for Windows 11
For Windows Client, we can only distinguish between Windows 10 and
Windows 11 using the build ID. The product name in both cases is
"Windows 10 <something>", apparently intentionally.
References:
https://learn.microsoft.com/en-us/answers/questions/586619/windows-11-build-ver-is-still-10022000194.html
a263fe0b26/winsup/cygwin/wincap.cc (L429)
https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions
After this fix, the output of virt-inspector changes to this, which is
a bit odd, but correct:
<name>windows</name>
<arch>x86_64</arch>
<distro>windows</distro>
<product_name>Windows 10 Pro</product_name>
<product_variant>Client</product_variant>
<major_version>10</major_version>
<minor_version>0</minor_version>
<windows_systemroot>/Windows</windows_systemroot>
<windows_current_control_set>ControlSet001</windows_current_control_set>
<osinfo>win11</osinfo>
Thanks: Yaakov Selkowitz
Reported-by: Yongkui Guo
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2012658
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
@@ -86,6 +86,8 @@ guestfs_impl_inspect_get_osinfo (guestfs_h *g, const char *root)
|
||||
else if (STREQ (type, "windows")) {
|
||||
CLEANUP_FREE char *product_name = NULL;
|
||||
CLEANUP_FREE char *product_variant = NULL;
|
||||
CLEANUP_FREE char *build_id_str = NULL;
|
||||
int build_id;
|
||||
|
||||
product_name = guestfs_inspect_get_product_name (g, root);
|
||||
if (!product_name)
|
||||
@@ -142,8 +144,26 @@ guestfs_impl_inspect_get_osinfo (guestfs_h *g, const char *root)
|
||||
return safe_strdup (g, "win2k19");
|
||||
else
|
||||
return safe_strdup (g, "win2k16");
|
||||
} else
|
||||
return safe_strdup (g, "win10");
|
||||
}
|
||||
else {
|
||||
/* For Windows >= 10 Client we can only distinguish between
|
||||
* versions by looking at the build ID. See:
|
||||
* https://learn.microsoft.com/en-us/answers/questions/586619/windows-11-build-ver-is-still-10022000194.html
|
||||
* https://github.com/cygwin/cygwin/blob/a263fe0b268580273c1adc4b1bad256147990222/winsup/cygwin/wincap.cc#L429
|
||||
*/
|
||||
build_id_str = guestfs_inspect_get_build_id (g, root);
|
||||
if (!build_id_str)
|
||||
return NULL;
|
||||
|
||||
build_id = guestfs_int_parse_unsigned_int (g, build_id_str);
|
||||
if (build_id == -1)
|
||||
return NULL;
|
||||
|
||||
if (build_id >= 22000)
|
||||
return safe_strdup (g, "win11");
|
||||
else
|
||||
return safe_strdup (g, "win10");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user