From c61af786f3eab3b4243a8ec92fb94a9c50a84b4e Mon Sep 17 00:00:00 2001 From: Timothy Middelkoop Date: Mon, 26 Feb 2024 23:49:45 +0000 Subject: [PATCH 1/3] Add support for machines that do not have a SMBIOS Try to read from "/sys/firmware/devicetree/base/serial-number" if there is no SMBIOS (Raspberry Pi Serial Number) and create a UUID from that. Fixes warewulf/warewulf#1108 Signed-off-by: Timothy Middelkoop --- internal/app/wwclient/root.go | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/internal/app/wwclient/root.go b/internal/app/wwclient/root.go index 539d1dc8..1dadb52c 100644 --- a/internal/app/wwclient/root.go +++ b/internal/app/wwclient/root.go @@ -118,15 +118,26 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) { ExpectContinueTimeout: 1 * time.Second, }, } - smbiosDump, err := smbios.New() - if err != nil { - wwlog.Error("Could not get SMBIOS info: %s", err) - os.Exit(1) + var localUUID uuid.UUID + var tag string + smbiosDump, smbiosErr := smbios.New() + if smbiosErr == nil { + sysinfoDump := smbiosDump.SystemInformation() + localUUID, _ = sysinfoDump.UUID() + x := smbiosDump.SystemEnclosure() + tag = strings.ReplaceAll(x.AssetTagNumber(), " ", "_") + } else { + // Raspberry Pi serial and DUID locations + // /sys/firmware/devicetree/base/serial-number + // /sys/firmware/devicetree/base/chosen/rpi-duid + piSerial, err := os.ReadFile("/sys/firmware/devicetree/base/serial-number") + if err != nil { + wwlog.Error("Could not get SMBIOS info: %s", smbiosErr) + os.Exit(1) + } + localUUID = uuid.NewSHA1(uuid.NameSpaceURL, []byte("http://raspberrypi.com/serial-number/"+string(piSerial))) + tag = "Unknown" } - sysinfoDump := smbiosDump.SystemInformation() - localUUID, _ := sysinfoDump.UUID() - x := smbiosDump.SystemEnclosure() - tag := strings.ReplaceAll(x.AssetTagNumber(), " ", "_") cmdline, err := os.ReadFile("/proc/cmdline") if err != nil { From 5b369e7b3e8dee1e02ba7eab54550b2fdee1d2cd Mon Sep 17 00:00:00 2001 From: Timothy Middelkoop Date: Tue, 27 Feb 2024 08:07:20 -0600 Subject: [PATCH 2/3] Add Timothy Middelkoop as a contribuitor Signed-off-by: Timothy Middelkoop --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index eab4f34b..3b2af24c 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -32,3 +32,4 @@ * Andreas Skau @buzh * Dietmar Rieder * Andreas Henkel +* Timothy Middelkoop From d54c47f0e8d0cecf2773304e15e96a8caf4652b7 Mon Sep 17 00:00:00 2001 From: Timothy Middelkoop Date: Wed, 28 Feb 2024 10:57:26 -0600 Subject: [PATCH 3/3] Add a Changelog entry for PR #1109 Signed-off-by: Timothy Middelkoop Signed-off-by: Christian Goll --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0fbf6c3..d6e2eb05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Locally defined `tr` has been dropped, templates updated to use Sprig replace. -## [4.5.0] +### Fixed + +- Systems with no SMBIOS (Raspberry Pi) will create a UUID from + `/sys/firmware/devicetree/base/serial-number` + +## [4.5.0] 2024-02-08 - Official v4.5.0 release. - Publish v4.5.x documentation separately from `main`. #919