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: Philippe Mathieu-Daudé
Subject: Re: Guest Agent issue with 'guest-get-osinfo' command on Windows
Date: Thu, 2 Sep 2021 15:15:13 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0

Forgot to Cc Richard & Daniel.

On 9/2/21 3:11 PM, Philippe Mathieu-Daudé wrote:
> On 9/2/21 2:36 PM, Konstantin Kostiuk wrote:
>> Hi Team,
>>
>> We have several bugs related to 'guest-get-osinfo' command in Windows
>> Guest Agent:
>> https://bugzilla.redhat.com/show_bug.cgi?id=1998919
>> <https://bugzilla.redhat.com/show_bug.cgi?id=1998919>
>> https://bugzilla.redhat.com/show_bug.cgi?id=1972070
>> <https://bugzilla.redhat.com/show_bug.cgi?id=1972070>
>>
>> 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
>> <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
>> <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.
> 
> Sounds good, start with low=high limit then if someone reports
> out-of-range we adapt the limit.
> 
> BTW instead of burying this in C, I'd store this information in a JSON
> file to ease updates.
> 
>> 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)
> 
> Could this work?
> 
>   if ReleaseId:
>     return ProductName[ReleaseId];
>   else:
>     return ProductName[release_id_by_buildnumber(BuildNumber)];
> 
>> In conclusion, I have the next questions:
>> What solution we should implement to get the Windows release name?
>> 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'.
>>
>> Best wishes,
>> Kostiantyn Kostiuk
> 




reply via email to

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