git: cc495d3b679d - main - rc.d/hostid: Skip warning on systems w/o smbios

From: Colin Percival <cperciva_at_FreeBSD.org>
Date: Sat, 13 Aug 2022 22:58:28 UTC
The branch main has been updated by cperciva:

URL: https://cgit.FreeBSD.org/src/commit/?id=cc495d3b679d32324d8914adb10e293e7deae82b

commit cc495d3b679d32324d8914adb10e293e7deae82b
Author:     Colin Percival <cperciva@FreeBSD.org>
AuthorDate: 2022-08-12 23:48:26 +0000
Commit:     Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2022-08-13 22:58:16 +0000

    rc.d/hostid: Skip warning on systems w/o smbios
    
    The first time a FreeBSD system boots, it obtains a hostuuid and hostid
    from the smbios.system.uuid kernel environment variable.  If this value
    is found to be invalid, a warning is printed and the boot pauses for
    two seconds to give the user a chance to read it.
    
    If the FreeBSD kernel is launched directly in a virtual machine rather
    than via the FreeBSD boot loader, the smbios.system.uuid environment
    variable might not be set; in this case, there's no need to alert the
    user and delay the boot process since the lack of a "hardware" uuid is
    entirely expected.
    
    Distinguish between the cases of "invalid UUID" and "no UUID", warning
    and delaying the boot only in the former case.  In both cases we still
    generate a random UUID in software.
    
    Reviewed by:    delphij
    Sponsored by:   https://www.patreon.com/cperciva
    Differential Revision:  https://reviews.freebsd.org/D36185
---
 libexec/rc/rc.d/hostid | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libexec/rc/rc.d/hostid b/libexec/rc/rc.d/hostid
index 39a0f4acb498..494e4aba84e1 100755
--- a/libexec/rc/rc.d/hostid
+++ b/libexec/rc/rc.d/hostid
@@ -106,6 +106,8 @@ hostid_hardware()
 
 	if valid_hostid $uuid; then
 		echo "${uuid}"
+	elif [ "$uuid" ]; then
+		echo "INVALID"
 	fi
 }
 
@@ -113,9 +115,16 @@ hostid_generate()
 {
 	# First look for UUID in hardware.
 	uuid=`hostid_hardware`
-	if [ -z "${uuid}" ]; then
+
+	# Warn about invalid UUIDs
+	if [ "${uuid}" = "INVALID" ]; then
 		warn "hostid: unable to figure out a UUID from DMI data, generating a new one"
 		sleep 2
+		uuid=""
+	fi
+
+	# Generate a random UUID if invalid or not found
+	if [ -z "${uuid}" ]; then
 		# If not found, fall back to software-generated UUID.
 		uuid=`uuidgen`
 	fi