Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/freebsd/freebsd-src.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Percival <cperciva@FreeBSD.org>2022-08-13 02:48:26 +0300
committerColin Percival <cperciva@FreeBSD.org>2022-08-14 01:58:16 +0300
commitcc495d3b679d32324d8914adb10e293e7deae82b (patch)
tree6a18b98b1619013674a8a5c8a1eeaeffda883021 /libexec
parent02ab915ae014a07da8243120d231919eb5633c95 (diff)
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
Diffstat (limited to 'libexec')
-rwxr-xr-xlibexec/rc/rc.d/hostid11
1 files changed, 10 insertions, 1 deletions
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