If available, take UUID from smbios.system.uuid, if not fall back to
software-generated UUID. Store the result in /etc/hostid and use it in the future. Perform simple UUID format check, as there is a lot of hardware with broken UUIDs. The check should be improved to also eliminate fake UUIDs like 00000000-0000-0000-0000-000000000000. Requested by: many
This commit is contained in:
parent
c22a6a4408
commit
1e6e7c9b8c
@ -54,9 +54,26 @@ hostid_set()
|
||||
${SYSCTL_W} kern.hostid=${id} >/dev/null
|
||||
}
|
||||
|
||||
hostid_hardware()
|
||||
{
|
||||
uuid=`kenv smbios.system.uuid 2>/dev/null`
|
||||
x="[0-9a-zA-Z]"
|
||||
y=$x$x$x$x
|
||||
case "${uuid}" in
|
||||
$y$y-$y-$y-$y-$y$y$y)
|
||||
echo "${uuid}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
hostid_reset()
|
||||
{
|
||||
uuid=`uuidgen`
|
||||
# First look for UUID in hardware.
|
||||
uuid=`hostid_hardware`
|
||||
if [ -z ${uuid} ]; then
|
||||
# If not found, fall back to software-generated UUID.
|
||||
uuid=`uuidgen`
|
||||
fi
|
||||
# Store newly generated UUID in ${hostid_file}.
|
||||
echo $uuid > ${hostid_file}
|
||||
if [ $? -ne 0 ]; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user