From 63715ad2ba1af0ca2d95ba3e6633af0316b0e1aa Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Fri, 30 Aug 2024 11:07:31 +0200 Subject: [PATCH 1/5] create lookup for os build id --- docs/resource/os.md | 55 ++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/docs/resource/os.md b/docs/resource/os.md index ec10c53b5e..cbf0561761 100644 --- a/docs/resource/os.md +++ b/docs/resource/os.md @@ -15,31 +15,46 @@ In case of virtualized environments, this is the operating system as it is obser -| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | -|---|---|---|---|---|---| -| [`os.type`](/docs/attributes-registry/os.md) | string | The operating system type. | `windows`; `linux`; `darwin` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.build_id`](/docs/attributes-registry/os.md) | string | Unique identifier for a particular build or compilation of the operating system. | `TQ3C.230805.001.B2`; `20E247`; `22621` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.description`](/docs/attributes-registry/os.md) | string | Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. | `Microsoft Windows [Version 10.0.18363.778]`; `Ubuntu 18.04.1 LTS` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.name`](/docs/attributes-registry/os.md) | string | Human readable operating system name. | `iOS`; `Android`; `Ubuntu` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.version`](/docs/attributes-registry/os.md) | string | The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). | `14.2.1`; `18.04.1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | +| --------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | +| [`os.type`](/docs/attributes-registry/os.md) | string | The operating system type. | `windows`; `linux`; `darwin` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.build_id`](/docs/attributes-registry/os.md) | string | Unique identifier for a particular build or compilation of the operating system. | `TQ3C.230805.001.B2`; `20E247`; `22621` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.description`](/docs/attributes-registry/os.md) | string | Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. | `Microsoft Windows [Version 10.0.18363.778]`; `Ubuntu 18.04.1 LTS` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.name`](/docs/attributes-registry/os.md) | string | Human readable operating system name. | `iOS`; `Android`; `Ubuntu` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.version`](/docs/attributes-registry/os.md) | string | The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). | `14.2.1`; `18.04.1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | `os.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. -| Value | Description | Stability | -|---|---|---| -| `aix` | AIX (Advanced Interactive eXecutive) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `darwin` | Apple Darwin | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `dragonflybsd` | DragonFly BSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `freebsd` | FreeBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hpux` | HP-UX (Hewlett Packard Unix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `linux` | Linux | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `netbsd` | NetBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `openbsd` | OpenBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `solaris` | SunOS, Oracle Solaris | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `windows` | Microsoft Windows | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `z_os` | IBM z/OS | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| Value | Description | Stability | +| -------------- | ------------------------------------ | ---------------------------------------------------------------- | +| `aix` | AIX (Advanced Interactive eXecutive) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `darwin` | Apple Darwin | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dragonflybsd` | DragonFly BSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `freebsd` | FreeBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hpux` | HP-UX (Hewlett Packard Unix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `linux` | Linux | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `netbsd` | NetBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `openbsd` | OpenBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `solaris` | SunOS, Oracle Solaris | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `windows` | Microsoft Windows | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `z_os` | IBM z/OS | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +## OS Build ID Lookup +To standardize the retrieval of OS build ID information across different operating systems, SDK detector implementations should use the sources listed below. + +| OS | Primary | Fallback | +| ------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | +| MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | +| Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release` | +| | | contents of `/proc/sys/kernel/osrelease` | + +### Implementation Notes + +1. **Windows**: The build ID can be retrieved from the registry key `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion`, where the `CurrentBuildNumber` value holds the desired information. +2. **MacOS**: On MacOS, the build ID is stored in the `ProductBuildVersion` field within the plist files located at `/System/Library/CoreServices/SystemVersion.plist` and `/System/Library/CoreServices/ServerVersion.plist`. The first file is typically used for regular MacOS installations, while the second might be used in server configurations. +3. **Linux**: Linux distributions typically store the build ID in the `/etc/os-release` or `/usr/lib/os-release` files under the `BUILD_ID` field. If these files or the `BUILD_ID` field are not available, the `os.build_id` can be obtained from the `/proc/sys/kernel/osrelease` file as a fallback. From c0e0afa6fa7c685e0d53d6038fbaf8aed2998347 Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Tue, 3 Sep 2024 11:41:50 +0200 Subject: [PATCH 2/5] add lookup --- .chloggen/add_lookup_for_os.yaml | 22 ++++++++++ docs/resource/os.md | 69 +++++++++++++++----------------- model/resource/os.yaml | 13 ++++++ 3 files changed, 67 insertions(+), 37 deletions(-) create mode 100644 .chloggen/add_lookup_for_os.yaml diff --git a/.chloggen/add_lookup_for_os.yaml b/.chloggen/add_lookup_for_os.yaml new file mode 100644 index 0000000000..8c709d0de0 --- /dev/null +++ b/.chloggen/add_lookup_for_os.yaml @@ -0,0 +1,22 @@ +# Use this changelog template to create an entry for release notes. +# +# If your change doesn't affect end users you should instead start +# your pull request title with [chore] or use the "Skip Changelog" label. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db) +component: os + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: add lookup for os.build_id + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +# The values here must be integers. +issues: [1318] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: diff --git a/docs/resource/os.md b/docs/resource/os.md index cbf0561761..88fbc6175d 100644 --- a/docs/resource/os.md +++ b/docs/resource/os.md @@ -15,46 +15,41 @@ In case of virtualized environments, this is the operating system as it is obser -| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | -| --------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | -| [`os.type`](/docs/attributes-registry/os.md) | string | The operating system type. | `windows`; `linux`; `darwin` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.build_id`](/docs/attributes-registry/os.md) | string | Unique identifier for a particular build or compilation of the operating system. | `TQ3C.230805.001.B2`; `20E247`; `22621` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.description`](/docs/attributes-registry/os.md) | string | Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. | `Microsoft Windows [Version 10.0.18363.778]`; `Ubuntu 18.04.1 LTS` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.name`](/docs/attributes-registry/os.md) | string | Human readable operating system name. | `iOS`; `Android`; `Ubuntu` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| [`os.version`](/docs/attributes-registry/os.md) | string | The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). | `14.2.1`; `18.04.1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| Attribute | Type | Description | Examples | [Requirement Level](https://opentelemetry.io/docs/specs/semconv/general/attribute-requirement-level/) | Stability | +|---|---|---|---|---|---| +| [`os.type`](/docs/attributes-registry/os.md) | string | The operating system type. | `windows`; `linux`; `darwin` | `Required` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.build_id`](/docs/attributes-registry/os.md) | string | Unique identifier for a particular build or compilation of the operating system. [1] | `TQ3C.230805.001.B2`; `20E247`; `22621` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.description`](/docs/attributes-registry/os.md) | string | Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands. | `Microsoft Windows [Version 10.0.18363.778]`; `Ubuntu 18.04.1 LTS` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.name`](/docs/attributes-registry/os.md) | string | Human readable operating system name. | `iOS`; `Android`; `Ubuntu` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| [`os.version`](/docs/attributes-registry/os.md) | string | The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). | `14.2.1`; `18.04.1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + +**[1]:** Resource detector SHOULD fetch values from following sources: + +| OS | Primary | Fallback | +| ------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | +| MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | +| Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release`;
contents of `/proc/sys/kernel/osrelease`| + + `os.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used. -| Value | Description | Stability | -| -------------- | ------------------------------------ | ---------------------------------------------------------------- | -| `aix` | AIX (Advanced Interactive eXecutive) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `darwin` | Apple Darwin | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `dragonflybsd` | DragonFly BSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `freebsd` | FreeBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `hpux` | HP-UX (Hewlett Packard Unix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `linux` | Linux | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `netbsd` | NetBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `openbsd` | OpenBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `solaris` | SunOS, Oracle Solaris | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `windows` | Microsoft Windows | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -| `z_os` | IBM z/OS | ![Experimental](https://img.shields.io/badge/-experimental-blue) | - -## OS Build ID Lookup - -To standardize the retrieval of OS build ID information across different operating systems, SDK detector implementations should use the sources listed below. - -| OS | Primary | Fallback | -| ------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | -| MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | -| Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release` | -| | | contents of `/proc/sys/kernel/osrelease` | - -### Implementation Notes - -1. **Windows**: The build ID can be retrieved from the registry key `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion`, where the `CurrentBuildNumber` value holds the desired information. -2. **MacOS**: On MacOS, the build ID is stored in the `ProductBuildVersion` field within the plist files located at `/System/Library/CoreServices/SystemVersion.plist` and `/System/Library/CoreServices/ServerVersion.plist`. The first file is typically used for regular MacOS installations, while the second might be used in server configurations. -3. **Linux**: Linux distributions typically store the build ID in the `/etc/os-release` or `/usr/lib/os-release` files under the `BUILD_ID` field. If these files or the `BUILD_ID` field are not available, the `os.build_id` can be obtained from the `/proc/sys/kernel/osrelease` file as a fallback. +| Value | Description | Stability | +|---|---|---| +| `aix` | AIX (Advanced Interactive eXecutive) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `darwin` | Apple Darwin | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `dragonflybsd` | DragonFly BSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `freebsd` | FreeBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `hpux` | HP-UX (Hewlett Packard Unix) | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `linux` | Linux | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `netbsd` | NetBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `openbsd` | OpenBSD | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `solaris` | SunOS, Oracle Solaris | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `windows` | Microsoft Windows | ![Experimental](https://img.shields.io/badge/-experimental-blue) | +| `z_os` | IBM z/OS | ![Experimental](https://img.shields.io/badge/-experimental-blue) | + + diff --git a/model/resource/os.yaml b/model/resource/os.yaml index 5ced4b397f..f3de18b08a 100644 --- a/model/resource/os.yaml +++ b/model/resource/os.yaml @@ -13,3 +13,16 @@ groups: - ref: os.name - ref: os.version - ref: os.build_id + note: > + Resource detector SHOULD fetch values from following sources: + + + | OS | Primary | Fallback | + + | ------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | + + | Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | + + | MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | + + | Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release`;
contents of `/proc/sys/kernel/osrelease`| From 570b9b3e6b80bf536f37639ca635f0927e70fdd1 Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Thu, 5 Sep 2024 09:03:06 +0200 Subject: [PATCH 3/5] Update model/resource/os.yaml Co-authored-by: Joao Grassi <5938087+joaopgrassi@users.noreply.github.com> --- model/resource/os.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/resource/os.yaml b/model/resource/os.yaml index f3de18b08a..35270d5d17 100644 --- a/model/resource/os.yaml +++ b/model/resource/os.yaml @@ -14,7 +14,7 @@ groups: - ref: os.version - ref: os.build_id note: > - Resource detector SHOULD fetch values from following sources: + `build_id` values SHOULD be obtained from the following sources: | OS | Primary | Fallback | From dbd32f358cdad089d105d7c33baa809a873dc193 Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Thu, 5 Sep 2024 09:06:58 +0200 Subject: [PATCH 4/5] yamlint fix --- model/resource/os.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/model/resource/os.yaml b/model/resource/os.yaml index f3de18b08a..699523c3b5 100644 --- a/model/resource/os.yaml +++ b/model/resource/os.yaml @@ -17,12 +17,12 @@ groups: Resource detector SHOULD fetch values from following sources: - | OS | Primary | Fallback | + | OS | Primary | Fallback | - | ------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | + | ------- | ------- | ------- | - | Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | + | Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | - | MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | + | MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | - | Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release`;
contents of `/proc/sys/kernel/osrelease`| + | Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release`;
contents of `/proc/sys/kernel/osrelease`| From 0b53dfa0c19b47ea499d4f7dc5f88181d1a457ef Mon Sep 17 00:00:00 2001 From: Yevhenii Solomchenko Date: Thu, 5 Sep 2024 09:19:45 +0200 Subject: [PATCH 5/5] regenerate md --- docs/resource/os.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/resource/os.md b/docs/resource/os.md index 88fbc6175d..d28d98a7f0 100644 --- a/docs/resource/os.md +++ b/docs/resource/os.md @@ -23,13 +23,13 @@ In case of virtualized environments, this is the operating system as it is obser | [`os.name`](/docs/attributes-registry/os.md) | string | Human readable operating system name. | `iOS`; `Android`; `Ubuntu` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | | [`os.version`](/docs/attributes-registry/os.md) | string | The version string of the operating system as defined in [Version Attributes](/docs/resource/README.md#version-attributes). | `14.2.1`; `18.04.1` | `Recommended` | ![Experimental](https://img.shields.io/badge/-experimental-blue) | -**[1]:** Resource detector SHOULD fetch values from following sources: +**[1]:** `build_id` values SHOULD be obtained from the following sources: -| OS | Primary | Fallback | -| ------- | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | -| MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | -| Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release`;
contents of `/proc/sys/kernel/osrelease`| +| OS | Primary | Fallback | +| ------- | ------- | ------- | +| Windows | `CurrentBuildNumber` from registry `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion` | - | +| MacOS | `ProductBuildVersion` from `/System/Library/CoreServices/SystemVersion.plist` | `ProductBuildVersion` from `/System/Library/CoreServices/ServerVersion.plist` | +| Linux | `BUILD_ID` from `/etc/os-release` | `BUILD_ID` from `/usr/lib/os-release`;
contents of `/proc/sys/kernel/osrelease`|