all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Dominik Csapak <d.csapak@proxmox.com>
To: Manuel Federanko <m.federanko@proxmox.com>, pve-devel@lists.proxmox.com
Subject: Re: [PATCH qemu-server v3] fix #5578: smbios: set serial number
Date: Tue, 7 Apr 2026 15:27:56 +0200	[thread overview]
Message-ID: <4bd31261-0287-49ab-9af5-e05334454075@proxmox.com> (raw)
In-Reply-To: <20260303104919.33634-1-m.federanko@proxmox.com>

not sure if it was discussed off-list, but you didn't really
address fionas comment about just adding this conditionally,
e.g. via ostype or machine version

this will increase the config size by a bit and i guess
most guest operating systems don't gain much from this?

i'm guilty of adding such flags unconditionally myself in the past
(see vmgenid) but i think we should avoid that when possible

e.g. an empty config (qm create ID)
looks like this currently:

```
boot:
meta: creation-qemu=10.2.1,ctime=1775568119
smbios1: uuid=a0f6c957-1c8b-439f-b25a-1e45dc151263
vmgenid: 0ed5ca0d-0e72-4c1a-b62f-ad2f7aaa8819
```

with your patch it looks like this:

```
boot:
meta: creation-qemu=10.2.1,ctime=1775568283
smbios1: 
base64=1,serial=UFZFLWM5OTY3ZDQwLTVlZTUtNDQ1My1hZDI0LTljZWUzODJmZTg1ZA==,uuid=c9967d40-5ee5-4453-ad24-9cee382fe85d
vmgenid: 1c7fe857-3520-4a20-8e09-611a7fb1be3b
```

which is quite a bit of noise.

If you think it's worthwhile to have a serial number for every guest,
we could e.g. still give it to qemus commandline if it's
missing in the config (especially if it's the same as the
normal uuid, but prefixed with PVE-)
IMHO it makes no sense having the same uuid twice in the config.

if someone sets a serial manually, we should use that of course.

sorry if any of these were discussed already, i checked the m-l
but didn't find any discussion regarding this.


On 3/3/26 11:49 AM, Manuel Federanko wrote:
> If no smbios options are given on creation, default to generate a serial
> number. This is required for Windows Autopilot to identify a user
> device.
> Use the already generated smbios uuid as serial number, it should be
> unique enough for our purposes.
> 
> The base64 here is needed since all configuration options are stored as
> a base64 encoded string, which is ensured by the format. This ensures
> that the values are properly decoded in the gui, for example.
> 
> Since all fields are forced to be stored in base64 format it might make
> sense for a future patch to a) remove the flag or b) allow values
> different than base64 encoded data in the other fields.
> 
> Tested by creating a new vm via the gui and command line.
> 
> Signed-off-by: Manuel Federanko <m.federanko@proxmox.com>
> ---
> Changes since v2:
> * add "PVE-" prefix to serial
> * move logic back into a helper subroutine
> Changes since v1:
> * switch serial to be the same uuid
> * use print_smbios1 over manually constructing strings
> * remove the dedicated generate_smbios1_uuid subroutine
> 
>   src/PVE/API2/Qemu.pm  |  2 +-
>   src/PVE/CLI/qm.pm     |  2 +-
>   src/PVE/QemuServer.pm | 10 ++++++++--
>   3 files changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/src/PVE/API2/Qemu.pm b/src/PVE/API2/Qemu.pm
> index c2e185a6..a68b1906 100644
> --- a/src/PVE/API2/Qemu.pm
> +++ b/src/PVE/API2/Qemu.pm
> @@ -1471,7 +1471,7 @@ __PACKAGE__->register_method({
>   
>                       # auto generate uuid if user did not specify smbios1 option
>                       if (!$conf->{smbios1}) {
> -                        $conf->{smbios1} = PVE::QemuServer::generate_smbios1_uuid();
> +                        $conf->{smbios1} = PVE::QemuServer::generate_smbios1();
>                       }
>   
>                       if (
> diff --git a/src/PVE/CLI/qm.pm b/src/PVE/CLI/qm.pm
> index bdae9641..975ec3f5 100755
> --- a/src/PVE/CLI/qm.pm
> +++ b/src/PVE/CLI/qm.pm
> @@ -912,7 +912,7 @@ __PACKAGE__->register_method({
>           eval {
>               # order matters, as do_import() will load_config() internally
>               $conf->{vmgenid} = PVE::QemuServer::generate_uuid();
> -            $conf->{smbios1} = PVE::QemuServer::generate_smbios1_uuid();
> +            $conf->{smbios1} = PVE::QemuServer::generate_smbios1();
>               PVE::QemuConfig->write_config($vmid, $conf);
>   
>               foreach my $disk (@{ $parsed->{disks} }) {
> diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm
> index 545758dc..77dd7cca 100644
> --- a/src/PVE/QemuServer.pm
> +++ b/src/PVE/QemuServer.pm
> @@ -8082,8 +8082,14 @@ sub generate_uuid {
>       return $uuid_str;
>   }
>   
> -sub generate_smbios1_uuid {
> -    return "uuid=" . generate_uuid();
> +sub generate_smbios1 {
> +    my $smbios1_uuid = PVE::QemuServer::generate_uuid();
> +    my $smbios1 = {
> +        uuid => $smbios1_uuid,
> +        serial => encode_base64("PVE-" . $smbios1_uuid, ""),
> +        base64 => 1,
> +    };
> +    return PVE::QemuServer::print_smbios1($smbios1);
>   }
>   
>   sub create_reboot_request {





  reply	other threads:[~2026-04-07 13:27 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-03 10:49 Manuel Federanko
2026-04-07 13:27 ` Dominik Csapak [this message]
2026-04-07 15:37   ` Manuel Federanko
2026-04-08  7:28     ` Dominik Csapak
2026-04-08  8:23       ` Manuel Federanko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4bd31261-0287-49ab-9af5-e05334454075@proxmox.com \
    --to=d.csapak@proxmox.com \
    --cc=m.federanko@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal