3247184d86
I spoke with the prefix team sometime back and was told that they do not have an interest in using OpenRC on prefix systems.
81 lines
1.3 KiB
Plaintext
81 lines
1.3 KiB
Plaintext
#!@PREFIX@/sbin/runscript
|
|
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
|
|
# Released under the 2-clause BSD license.
|
|
|
|
extra_commands="reset"
|
|
: ${hostid_file:=/etc/hostid}
|
|
|
|
depend()
|
|
{
|
|
use root
|
|
before devd net
|
|
keyword -jail
|
|
}
|
|
|
|
_set()
|
|
{
|
|
local id=0
|
|
|
|
if [ -n "$1" ]; then
|
|
id=$(echo "$1" | md5)
|
|
id="0x${id%????????????????????????}"
|
|
fi
|
|
ebegin "Setting Host ID: $id"
|
|
sysctl -w kern.hostid="$id" >/dev/null
|
|
eend $? || return 1
|
|
|
|
if sysctl -n kern.hostuuid >/dev/null 2>&1; then
|
|
[ -n "$1" ] && id=$1
|
|
ebegin "Setting Host UUID: $id"
|
|
sysctl kern.hostuuid="$id" >/dev/null
|
|
eend $? || return 1
|
|
fi
|
|
|
|
}
|
|
|
|
# First we check to see if there is a system UUID
|
|
# If so then we use that and erase the hostid file,
|
|
# otherwise we generate a random UUID.
|
|
reset()
|
|
{
|
|
local uuid= x="[0-9a-f]" y="$x$x$x$x"
|
|
|
|
if type kenv >/dev/null 2>&1; then
|
|
uuid=$(kenv smbios.system.uuid 2>/dev/null)
|
|
fi
|
|
case "$uuid" in
|
|
$y$y-$y-$y-$y-$y$y$y);;
|
|
*) uuid=;;
|
|
esac
|
|
|
|
if [ -n "$uuid" ]; then
|
|
rm -f "$hostid_file"
|
|
else
|
|
uuid=$(uuidgen)
|
|
if [ -z "$uuid" ]; then
|
|
eerror "Unable to generate a UUID"
|
|
return 1
|
|
fi
|
|
if ! echo "$uuid" >"$hostid_file"; then
|
|
eerror "Failed to store UUID in \`$hostid_file'"
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
_set "$uuid"
|
|
}
|
|
|
|
start()
|
|
{
|
|
if [ -r "$hostid_file" ]; then
|
|
_set $(cat "$hostid_file")
|
|
else
|
|
reset
|
|
fi
|
|
}
|
|
|
|
stop()
|
|
{
|
|
_set
|
|
}
|