Adding Raw Data to VM Templates - SMBIOS

Hello

i am testing out how to pass some SMBIOS information to the guest vms using the RAW Data section of the OS & CPU section of a VM Template.

Right now i am just trying to pass some information to block 11 of SMBIOS (dmidecode --type 11) which is the oemStrings to see if it woudl work. As per libvirt: Domain XML format , this could contain arbitrary data.

See current VM template below.

{
  "CONTEXT": {
    "NETWORK": "YES",
    "PASSWORD": "OgCVPM6rmNBt/2PmmFCpcQ==",
    "REPORT_READY": "NO",
    "SET_HOSTNAME": "$NAME",
    "SSH_PUBLIC_KEY": "$USER[SSH_PUBLIC_KEY]",
    "TOKEN": "NO",
    "USERNAME": "admin"
  },
  "CPU": "1",
  "DISK": {
    "IMAGE_ID": "0"
  },
  "GRAPHICS": {
    "LISTEN": "0.0.0.0",
    "TYPE": "vnc"
  },
  "HYPERVISOR": "kvm",
  "LOGO": "images/logos/linux.png",
  "LXD_SECURITY_PRIVILEGED": "true",
  "MEMORY": "256",
  "NIC": {
    "NETWORK": "public_vnet",
    "NETWORK_ID": "4",
    "NETWORK_UID": "0",
    "NETWORK_UNAME": "oneadmin"
  },
  "NIC_DEFAULT": {
    "MODEL": "virtio"
  },
  "OS": {
    "ARCH": "x86_64"
  },
  "RAW": {
    "DATA": "<sysinfo type='smbios'>\n  <oemStrings>\n    <entry>foo: bar</entry>\n    <entry>hello: world</entry>\n    <entry>sneed: feed</entry>\n  </oemStrings>\n</sysinfo>",
    "TYPE": "kvm",
    "VALIDATE": "YES"
  },
  "SCHED_REQUIREMENTS": "HYPERVISOR=kvm"
}

Upon instantiating the vm, and checking dmidecode –type 11 , i dont see the oemstring that i have set in the template.

Also another thing i noticed, upon instantiating the vm, i dont see the information ive conigured in the vm template reflecting on the curren vm configuration as seen here

Thoughts on what possibly is the mistake here? Thanks in advance!
(P.S.

Testing it out on both 6.10.0.1 and 6.99 (minione). Although in 6.10.0.1, i could see the RAW data in the VM configuration although it doesn’t reflect inside the dmidecode. )

Could you check the VM’s domain xml what is passed to the libvirt? The generated file should be located on the KVM host in /var/lib/one/datastores/${SYSTEM_DS_ID}/${VM_ID}/deployment.X (look at the file with the highest X)

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
        <name>one-182</name>
        <title>Debian 12-182</title>
        <uuid>49106190-2618-4556-84e2-68797bcf0fd1</uuid>
        <vcpu current='1'><![CDATA[16]]></vcpu>
        <cputune>
                <shares>100</shares>
        </cputune>
        <memory>1048576</memory>
        <os>
                <type arch='x86_64'>hvm</type>
        </os>
        <cpu mode='host-passthrough'>
        </cpu>
        <devices>
                <emulator><![CDATA[/usr/bin/qemu-kvm-one]]></emulator>
                <disk type='file' device='disk'>
                        <source file='/var/lib/one//datastores/104/182/disk.0.snap/0'/>
                        <target dev='vda' bus='virtio'/>
                        <driver name='qemu' type='qcow2' cache='none' discard='unmap'/>
                </disk>
                <disk type='file' device='cdrom'>
                        <source file='/var/lib/one//datastores/104/182/disk.1'/>
                        <target dev='hda' bus='ide'/>
                        <readonly/>
                        <driver name='qemu' type='raw'/>
                </disk>
                <controller type='scsi' index='0' model='virtio-scsi'>
                        <driver queues='1'/>
                </controller>
                <interface type='bridge'>
                        <source bridge='onbr0'/>
                        <mac address='02:00:0a:01:33:0b'/>
                        <target dev='one-182-0'/>
                        <model type='virtio'/>
                        <bandwidth>
                                <outbound average='2048'/>
                        </bandwidth>
                </interface>
                <graphics type='vnc' listen='0.0.0.0' port='6082'/>
        </devices>
        <features>
                <acpi/>
        </features>
        <devices>
                <channel type='unix'>
                        <source mode='bind'/><target type='virtio' name='org.qemu.guest_agent.0'/>
                </channel>
        </devices>
        <sysinfo type='smbios'><oemStrings><entry>myappname:test</entry></oemStrings></sysinfo>
        <metadata>
                <one:vm xmlns:one="http://opennebula.org/xmlns/libvirt/1.0">
                        <one:system_datastore><![CDATA[/var/lib/one//datastores/104/182]]></one:system_datastore>
                        <one:name><![CDATA[Debian 12-182]]></one:name>
                        <one:uname><![CDATA[oneadmin]]></one:uname>
                        <one:uid>0</one:uid>
                        <one:gname><![CDATA[oneadmin]]></one:gname>
                        <one:gid>0</one:gid>
                        <one:opennebula_version>6.10.0.1</one:opennebula_version>
                        <one:stime>1755516132</one:stime>
                        <one:deployment_time>1755516142</one:deployment_time>
                </one:vm>
        </metadata>
</domain>

Hi Anton, heres’s the contents of the “deployment.0” file

This does not match the RAW section from the previous comment. Some consistency in the comments will help.
For example, the following piece in the the VM xml:

  <sysinfo type='smbios'>
    <oemStrings>
      <entry>foo:bar</entry>
      <entry>second: spaced</entry>
      <entry>third:value</entry>
    </oemStrings>
  </sysinfo>

Is shown in the VM as follows:

Hope this helps,
Anton Todorov

1 Like

Oh right, sorry. The domain pasted earlier was from a 6.10.0.1 installation.

Here’s the one from minione v6.99 (well as i mentioned in my OP, with 6.99, it doesnt even show up in the vm configuration)

<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
        <name>one-63</name>
        <title>Alpine Linux 3.20-63</title>
        <uuid>27773526-6411-4f4c-9f22-2aa8679a418e</uuid>
        <cputune>
                <shares>100</shares>
        </cputune>
        <memory>262144</memory>
        <os>
                <type arch='x86_64'>hvm</type>
        </os>
        <devices>
                <emulator><![CDATA[/usr/bin/qemu-kvm-one]]></emulator>
                <disk type='file' device='disk'>
                        <source file='/var/lib/one//datastores/0/63/disk.0.snap/0'/>
                        <target dev='vda' bus='virtio'/>
                        <driver name='qemu' type='qcow2' cache='none' discard='unmap'/>
                </disk>
                <disk type='file' device='cdrom'>
                        <source file='/var/lib/one//datastores/0/63/disk.1'/>
                        <target dev='sda'/>
                        <readonly/>
                        <driver name='qemu' type='raw'/>
                </disk>
                <controller type='scsi' index='0' model='virtio-scsi'>
                        <driver queues='1'/>
                </controller>
                <interface type='bridge'>
                        <source bridge='br-pub'/>
                        <mac address='02:00:0a:14:1e:9b'/>
                        <target dev='one-63-0'/>
                        <model type='virtio'/>
                </interface>
                <graphics type='vnc' listen='0.0.0.0' port='5963'/>
        </devices>
        <features>
                <acpi/>
        </features>
        <devices>
                <channel type='unix'>
                        <source mode='bind'/><target type='virtio' name='org.qemu.guest_agent.0'/>
                </channel>
        </devices>

        <metadata>
                <one:vm xmlns:one="http://opennebula.org/xmlns/libvirt/1.0">
                        <one:system_datastore><![CDATA[/var/lib/one//datastores/0/63]]></one:system_datastore>
                        <one:name><![CDATA[Alpine Linux 3.20-63]]></one:name>
                        <one:uname><![CDATA[oneadmin]]></one:uname>
                        <one:uid>0</one:uid>
                        <one:gname><![CDATA[oneadmin]]></one:gname>
                        <one:gid>0</one:gid>
                        <one:opennebula_version>6.99.90</one:opennebula_version>
                        <one:stime>1755528755</one:stime>
                        <one:deployment_time>1755528757</one:deployment_time>
                </one:vm>
        </metadata>
</domain>

Please show your VM Template contents with onevm show <vm_template_id>. Ideally use a 7.0 instead of devel 6.99.

Hello,

Here the output of the onetemplate command

oneadmin@vm-openneb-v7:~/datastores/0/63$ onetemplate list
  ID USER     GROUP    NAME                                                                                                                                                                              REGTIME
   2 oneadmin oneadmin Debian 12                                                                                                                                                                  07/20 12:26:11
   1 oneadmin oneadmin Service Virtual Router                                                                                                                                                     07/09 13:48:45
   0 oneadmin oneadmin Alpine Linux 3.20                                                                                                                                                          07/02 07:00:18
oneadmin@vm-openneb-v7:~/datastores/0/63$ onetemplate show 0
TEMPLATE 0 INFORMATION
ID             : 0
NAME           : Alpine Linux 3.20
USER           : oneadmin
GROUP          : oneadmin
LOCK           : None
REGISTER TIME  : 07/02 07:00:18

PERMISSIONS
OWNER          : um-
GROUP          : ---
OTHER          : ---

TEMPLATE CONTENTS
CONTEXT=[
  NETWORK="YES",
  PASSWORD="OgCVPM6rmNBt/2PmmFCpcQ==",
  REPORT_READY="NO",
  SET_HOSTNAME="$NAME",
  SSH_PUBLIC_KEY="$USER[SSH_PUBLIC_KEY]",
  TOKEN="NO",
  USERNAME="admin" ]
CPU="1"
DISK=[
  IMAGE_ID="0" ]
FEATURES=[
  GUEST_AGENT="yes" ]
GRAPHICS=[
  LISTEN="0.0.0.0",
  TYPE="vnc" ]
HYPERVISOR="kvm"
LOGO="images/logos/linux.png"
LXD_SECURITY_PRIVILEGED="true"
MEMORY="256"
NIC=[
  NETWORK="public_vnet",
  NETWORK_ID="4",
  NETWORK_UID="0",
  NETWORK_UNAME="oneadmin" ]
NIC_DEFAULT=[
  MODEL="virtio" ]
OS=[
  ARCH="x86_64" ]
RAW=[
  DATA="<sysinfo type='smbios'>
        <oemStrings>
                <entry>foo: bar</entry>
                <entry>hello: world</entry>
                <entry>sneed: feed</entry>
        </oemStrings>
</sysinfo>",
  TYPE="kvm",
  VALIDATE="YES" ]
SCHED_REQUIREMENTS="HYPERVISOR=kvm"

And heres something from the onevm show

oneadmin@vm-openneb-v7:~/datastores/0/63$ onevm list
  ID USER     GROUP    NAME                                                                                          STAT  CPU     MEM HOST                                                                 TIME
  63 oneadmin oneadmin Alpine Linux 3.20-63                                                                          runn    1    256M localhost                                                        0d 00h18
oneadmin@vm-openneb-v7:~/datastores/0/63$ onevm show 0
VIRTUAL MACHINE 0 INFORMATION
ID                  : 0
NAME                : vm-alpine-linux-01
USER                : oneadmin
GROUP               : oneadmin
STATE               : DONE
LCM_STATE           : LCM_INIT
LOCK                : None
RESCHED             : No
START TIME          : 07/09 13:42:48
END TIME            : 07/09 13:46:25
DEPLOY ID           : 3fec46a0-3b2d-43a9-97ea-244b6a251777

VIRTUAL MACHINE MONITORING [-]
METRIC               VALUE           FORECAST        FORECAST_FAR
CPU                  -               -               -
MEMORY               -               -               -
NETTX                -               -               -
NETTX_BW             -               -               -
NETRX                -               -               -
NETRX_BW             -               -               -
DISKRDBYTES          -               -               -
DISKRDBYTES_BW       -               -               -
DISKRDIOPS           -               -               -
DISKRDIOPS_BW        -               -               -
DISKWRBYTES          -               -               -
DISKWRBYTES_BW       -               -               -
DISKWRIOPS_BW        -               -               -
DISKWRIOPS           -               -               -


PERMISSIONS
OWNER               : um-
GROUP               : ---
OTHER               : ---

VM DISKS
 ID DATASTORE  TARGET IMAGE                               SIZE      TYPE SAVE
  0 default    vda    Alpine Linux 3.20                   -/512M    file   NO
  1 -          sda    CONTEXT                             -/-       -       -

VM NICS
 ID NETWORK              BRIDGE       IP              MAC               PCI_ID
  0 vnet                 minionebr    172.16.100.2    02:00:ac:10:64:02

SECURITY

NIC_ID NETWORK                   SECURITY_GROUPS
     0 vnet                      0

SECURITY GROUP   TYPE     PROTOCOL NETWORK                       RANGE
  ID NAME                          VNET START             SIZE
   0 default     OUTBOUND ALL
   0 default     INBOUND  ALL

VIRTUAL MACHINE HISTORY
SEQ UID  REQ   HOST         ACTION       DS           START        TIME     PROLOG
  0 0    2464  localhost    terminate     0  07/09 13:42:51   0d 00h03m   0h00m02s

USER TEMPLATE
HYPERVISOR="kvm"
LOGO="images/logos/linux.png"
LXD_SECURITY_PRIVILEGED="true"
SCHED_REQUIREMENTS="HYPERVISOR=kvm"

VIRTUAL MACHINE TEMPLATE
AUTOMATIC_DS_REQUIREMENTS="(\"CLUSTERS/ID\" @> 0)"
AUTOMATIC_NIC_REQUIREMENTS="(\"CLUSTERS/ID\" @> 0)"
AUTOMATIC_REQUIREMENTS="(CLUSTER_ID = 0) & !(PIN_POLICY = PINNED)"
CONTEXT=[
  DISK_ID="1",
  ETH0_DNS="172.16.100.1",
  ETH0_EXTERNAL="",
  ETH0_GATEWAY="172.16.100.1",
  ETH0_IP="172.16.100.2",
  ETH0_IP6="",
  ETH0_IP6_GATEWAY="",
  ETH0_IP6_METHOD="",
  ETH0_IP6_METRIC="",
  ETH0_IP6_PREFIX_LENGTH="",
  ETH0_IP6_ULA="",
  ETH0_MAC="02:00:ac:10:64:02",
  ETH0_MASK="",
  ETH0_METHOD="",
  ETH0_METRIC="",
  ETH0_MTU="",
  ETH0_NETWORK="",
  ETH0_SEARCH_DOMAIN="",
  ETH0_VLAN_ID="",
  ETH0_VROUTER_IP="",
  ETH0_VROUTER_IP6="",
  ETH0_VROUTER_MANAGEMENT="",
  NETWORK="YES",
  ONEGATE_ENDPOINT="http://172.16.100.1:5030",
  PASSWORD="D5oZKLfo32m3ko1nmAHB5w==",
  REPORT_READY="YES",
  SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCuStrOlB/TEd4LaOBXwW0DXciAd999lOe8XjJfPX6A+ZqvLv4+aOXmlqNXzXlCIqsp3d10EMAocy1dN02mMG75Sf8F4gVFKxADDCkQDR7HqVR3OiT7twJ261aeBZH1721JNko/sIRHL3AjohIHqiaf8cadRB/NdlhKysm5B8tTTkcuuAn7VOes2BuVrXm2KUQr4kem3AgPphInydkSAmNqwpCZVuprPOZdpYfehLu6+hL87Q4O93tf8htmoaw6SZamwo7qF5kj8CCQQA01kVcr6l0rOnYH7ZwtfibjeINgzc3p7NUhy4m07Doy1zxAivNA0iUv8P4GeVc18+UnolF40jbN7crCLwcIhb9+6Y484ijHRapk2J751p7nYwaBtsJocb6VjAvt+UWn274VbuiPUzMvMPwn+HpGj7a5YUvS1mivBlJrsn0i/31Rx3CPVQPMog9p8EsDK6Xt+4mrQ97Sej/9UZR752SXfsN3rf4/v9KTNehYKvblkbkRpHlVXbc= oneadmin@vm-openneb-v7
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC8E7/xJ1clRNkc01vC831Jne7JmyodRUlrN5h3dYw/U+h5csOarwG5USZGBJIpnTuE/YKvL1z9Gp5jP+URTREkuMunIgn5sX8RqQBLfd+FGHgCBH5ZHsRgh7uPS8gZ+J/YfqzkV+sWisVM3G37JM5EZVU5h0PQ/L5aRXhD/uHYkoeZQqxwJmdD5xcBJ77SYSgvE3kSikXM7Onktppju96r4fMJFpZP+amAeDZdtjMyOh2ibPqgFFF1Bqj2oNif1MoN2c6PpsPF/LT+llVhrSUugSlc+5YQskPEv670oyx8ID44mfMBMmpmDYUcTOPwllp6liGznl+qUai0kLq4DIenz/jYtrNxRu1xd5XBeHFeurBbiktN1S6LjATV81xcII4aIEly1PXTGioa8N1l0UbIWUvIY0jm3EPtk3eld7JbQmMcMvcvgtmTnAXY9/PSXMCqgU3FJsCm/QwFwMO84Ms4ldOKm4UKU8f05x1UvtLxG9dpxDJDR7DRfA7I+rSPX7U= root@vm-openneb-v7",
  TARGET="sda",
  TOKEN="YES",
  USERNAME="admin",
  VMID="0" ]
CPU="1"
CREATED_BY="0"
GRAPHICS=[
  LISTEN="0.0.0.0",
  TYPE="vnc" ]
MEMORY="256"
NIC_DEFAULT=[
  MODEL="virtio" ]
OS=[
  ARCH="x86_64",
  UUID="3fec46a0-3b2d-43a9-97ea-244b6a251777" ]
TEMPLATE_ID="0"
TM_MAD_SYSTEM="qcow2"
VMID="0"

While looking into this I found a bug related to the web interface where it swallows the whole RAW section, exactly as you seem to have. Since you showcase a picture of FireEdge Sunstone in your initial report, this is likely what is happening to you. Please use the CLI and check if your RAW as Anton suggested appears.

1 Like

Thank you for the information! I tried instantiating the vm through the cli and i could now see the RAW data being passed.

oneadmin@vm-openneb-v7:~/datastores/0/64$ cat deployment.0
<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
        <name>one-64</name>
        <title>Alpine Linux 3.20-64</title>
        <uuid>50687a63-6148-4bea-9eb7-5f032e8a4a1f</uuid>
        <cputune>
                <shares>100</shares>
        </cputune>
        <memory>262144</memory>
        <os>
                <type arch='x86_64'>hvm</type>
        </os>
        <devices>
                <emulator><![CDATA[/usr/bin/qemu-kvm-one]]></emulator>
                <disk type='file' device='disk'>
                        <source file='/var/lib/one//datastores/0/64/disk.0.snap/0'/>
                        <target dev='vda' bus='virtio'/>
                        <driver name='qemu' type='qcow2' cache='none' discard='unmap'/>
                </disk>
                <disk type='file' device='cdrom'>
                        <source file='/var/lib/one//datastores/0/64/disk.1'/>
                        <target dev='sda'/>
                        <readonly/>
                        <driver name='qemu' type='raw'/>
                </disk>
                <controller type='scsi' index='0' model='virtio-scsi'>
                        <driver queues='1'/>
                </controller>
                <interface type='bridge'>
                        <source bridge='br-pub'/>
                        <mac address='02:00:0a:14:1e:9c'/>
                        <target dev='one-64-0'/>
                        <model type='virtio'/>
                </interface>
                <graphics type='vnc' listen='0.0.0.0' port='5964'/>
        </devices>
        <features>
                <acpi/>
        </features>
        <devices>
                <channel type='unix'>
                        <source mode='bind'/><target type='virtio' name='org.qemu.guest_agent.0'/>
                </channel>
        </devices>
        <sysinfo type='smbios'>
        <oemStrings>
                <entry>foo: bar</entry>
                <entry>hello: world</entry>
                <entry>sneed: feed</entry>
        </oemStrings>
</sysinfo>
        <metadata>
                <one:vm xmlns:one="http://opennebula.org/xmlns/libvirt/1.0">
                        <one:system_datastore><![CDATA[/var/lib/one//datastores/0/64]]></one:system_datastore>
                        <one:name><![CDATA[Alpine Linux 3.20-64]]></one:name>
                        <one:uname><![CDATA[oneadmin]]></one:uname>
                        <one:uid>0</one:uid>
                        <one:gname><![CDATA[oneadmin]]></one:gname>
                        <one:gid>0</one:gid>
                        <one:opennebula_version>6.99.90</one:opennebula_version>
                        <one:stime>1755536877</one:stime>
                        <one:deployment_time>1755536884</one:deployment_time>
                </one:vm>
        </metadata>
</domain>

However, dmidecode doesn’t really show the that i tried to pass. i expect it would show up when running dmidecode --type 11 but unfortunately i dont see it.