mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-24 03:37:16 +00:00
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
This commit is contained in:
parent
02ab915ae0
commit
cc495d3b67
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue