qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Guest Agent issue with 'guest-get-osinfo' command on Windows


From: Marc-André Lureau
Subject: Re: Guest Agent issue with 'guest-get-osinfo' command on Windows
Date: Thu, 2 Sep 2021 17:24:27 +0400

Hi

On Thu, Sep 2, 2021 at 4:36 PM Konstantin Kostiuk <konstantin@daynix.com> wrote:
Hi Team,

We have several bugs related to 'guest-get-osinfo' command in Windows Guest Agent:

This command returns the following data:
{
"name": "Microsoft Windows",
"kernel-release": "20344",
"version": "N/A",
"variant": "server",
"pretty-name": "Windows Server 2022 Datacenter",
"version-id": "N/A",
"variant-id": "server",
"kernel-version": "10.0",
"machine": "x86_64",
"id": "mswindows"
}

The problem is with "version" and "pretty-name". Windows Server 2016/2019/2022 and Windows 11 have the same MajorVersion ("kernel-version") = 10, so to get pretty-name the guest agent uses a conversion matrix between Windows build and name (https://github.com/qemu/qemu/blob/59a89510b62ec23dbeab8b02fa4e3526e353d8b6/qga/commands-win32.c#L2170).

This solution has several problems: need to update the conversion matrix for each Windows build, one Windows name can have different build numbers. For example, Windows Server 2022 (preview) build number is 20344, Windows Server 2022 build number is 20348.

There are two possible solutions:
1. Use build number range instead of one number. Known implementation issue: Microsoft provides a table (https://docs.microsoft.com/en-Us/windows-server/get-started/windows-server-release-info) only with stable build numbers. So, we exactly don't know the build number range.

2. We can read this string from the registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion). Known implementation issues: ProductName value is localized (in a Russian version of Windows, the word "Microsoft' is translated), so we should ignore it. ReleaseId value does not equal to Windows Server version (for Windows Server 2019, ReleaseId is 1809)

In conclusion, I have the next questions:
What solution we should implement to get the Windows release name?


Have you checked the glib implementation? https://gitlab.gnome.org/GNOME/glib/-/blob/main/glib/gutils.c#L1291

We should probably teach qemu-ga to use g_get_os_info() with glib >= 2.64, and be consistent with what glib implements (patch it there when necessary)

 
Does someone know how end-users use this information? Should it be English only or it can be localized? Should we have exactly the same output as now?
What should we do with the 'Standard' server edition? Currently, the guest agent always returns 'Datacenter'.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]