aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTijl Coosemans <tijl@FreeBSD.org>2023-02-15 20:09:51 +0000
committerTijl Coosemans <tijl@FreeBSD.org>2023-03-09 09:31:55 +0000
commitecad3f5c4d922f93ceba455f8bff1c54e1ed4174 (patch)
treee6a8165e6e5f587e0e9f6511d7d2f82e0752edff
parent862aab6281a5e6b5dad89761ac17ca2a0e83ab32 (diff)
downloadsrc-ecad3f5c4d922f93ceba455f8bff1c54e1ed4174.tar.gz
src-ecad3f5c4d922f93ceba455f8bff1c54e1ed4174.zip
rc.d: Generate machine-id from hostid_save
rc.d/hostid_save saves a UUID generated by rc.d/hostid in /etc/hostid. Store the same UUID, without hyphens, in /etc/machine-id. The hypĥens are removed with a shell function because hostid_save runs before file systems are mounted so other tools may not be available yet. This eliminates some duplication between hostid and machine-id and for virtual machines machine-id now contains the UUID configured in the hypervisor like it does on Linux. Reviewed by: delphij Discussed with: bapt MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D38811
-rw-r--r--ObsoleteFiles.inc3
-rw-r--r--etc/Makefile2
-rw-r--r--libexec/rc/rc.conf4
-rw-r--r--libexec/rc/rc.d/Makefile1
-rwxr-xr-xlibexec/rc/rc.d/hostid_save28
-rw-r--r--libexec/rc/rc.d/machine_id34
-rw-r--r--sys/sys/param.h2
7 files changed, 25 insertions, 49 deletions
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 23bdd366f40b..7bbd91525cd5 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -52,6 +52,9 @@
# xargs -n1 | sort | uniq -d;
# done
+# 20230308: machine-id merged into hostid_save
+OLD_FILES+=etc/rc.d/machine-id
+
# 20230306: remove tzsetwall(3)
OLD_FILES+=usr/share/man/man3/tzsetwall.3.gz
diff --git a/etc/Makefile b/etc/Makefile
index 88f890b91604..4e28739268e6 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -59,8 +59,6 @@ distribution:
${_+_}cd ${SRCTOP}/usr.sbin/rmt; ${MAKE} etc-rmt
${INSTALL_SYMLINK} -T "package=runtime" ../var/run/os-release \
${DESTDIR}/etc/os-release
- ${INSTALL_SYMLINK} -T "package=runtime" ../var/db/machine-id \
- ${DESTDIR}/etc/machine-id
.if ${MK_UNBOUND} != "no"
if [ ! -e ${DESTDIR}/etc/unbound ]; then \
${INSTALL_SYMLINK} -T "package=unbound" \
diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf
index 8a5f69dbef12..932fd2ace778 100644
--- a/libexec/rc/rc.conf
+++ b/libexec/rc/rc.conf
@@ -138,6 +138,7 @@ hostname="" # Set this!
hostid_enable="YES" # Set host UUID.
hostid_file="/etc/hostid" # File with hostuuid.
hostid_uuidgen_flags="-r" # Flags to uuidgen.
+machine_id_file="/etc/machine-id" # File with machine-id.
nisdomainname="NO" # Set to NIS domain if using NIS (or NO).
dhclient_program="/sbin/dhclient" # Path to dhcp client program.
dhclient_flags="" # Extra flags to pass to dhcp client.
@@ -696,9 +697,6 @@ harvest_mask="511" # Entropy device harvests all but the very invasive sources.
osrelease_enable="YES" # Update /var/run/os-release on boot (or NO).
osrelease_file="/var/run/os-release" # File to update for os-release.
osrelease_perms="444" # Default permission for os-release file.
-machine_id_enable="YES" # Create /var/db/machine-id on boot if missing (or NO).
-machine_id_file="/var/db/machine-id" # File to update for machine-id.
-machine_id_perms="444" # Default permissions for machine-id file.
dmesg_enable="YES" # Save dmesg(8) to /var/run/dmesg.boot
watchdogd_enable="NO" # Start the software watchdog daemon
watchdogd_flags="" # Flags to watchdogd (if enabled)
diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile
index e2019c60f196..9be66195e774 100644
--- a/libexec/rc/rc.d/Makefile
+++ b/libexec/rc/rc.d/Makefile
@@ -49,7 +49,6 @@ CONFS= DAEMON \
local \
localpkg \
lockd \
- machine_id \
mixer \
motd \
mountcritlocal \
diff --git a/libexec/rc/rc.d/hostid_save b/libexec/rc/rc.d/hostid_save
index f535ea2596f2..f737ed7f74cf 100755
--- a/libexec/rc/rc.d/hostid_save
+++ b/libexec/rc/rc.d/hostid_save
@@ -15,20 +15,32 @@ start_cmd="hostid_save"
stop_cmd=":"
rcvar="hostid_enable"
+hostid_machine_id()
+{
+ local IFS
+
+ IFS=-
+ set -- ${current_hostid}
+ IFS=
+ current_machine_id=$*
+}
+
hostid_save()
{
current_hostid=`$SYSCTL_N kern.hostuuid`
- if [ -r ${hostid_file} ]; then
- read saved_hostid < ${hostid_file}
- if [ ${saved_hostid} = ${current_hostid} ]; then
- exit 0
- fi
+ read saved_hostid 2>/dev/null < ${hostid_file}
+ if [ "${saved_hostid}" != "${current_hostid}" ]; then
+ echo "${current_hostid}" > ${hostid_file} ||
+ warn "could not store hostuuid in ${hostid_file}."
fi
- echo ${current_hostid} > ${hostid_file}
- if [ $? -ne 0 ]; then
- warn "could not store hostuuid in ${hostid_file}."
+ hostid_machine_id
+
+ read saved_machine_id 2>/dev/null < ${machine_id_file}
+ if [ "${saved_machine_id}" != "${current_machine_id}" ]; then
+ echo "${current_machine_id}" > ${machine_id_file} ||
+ warn "could not store hostuuid in ${machine_id_file}."
fi
}
diff --git a/libexec/rc/rc.d/machine_id b/libexec/rc/rc.d/machine_id
deleted file mode 100644
index 8bf3e41d0603..000000000000
--- a/libexec/rc/rc.d/machine_id
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD$
-#
-
-# PROVIDE: machine_id
-# REQUIRE: mountcritremote FILESYSTEMS
-# BEFORE: LOGIN
-
-. /etc/rc.subr
-
-: ${machine_id_file:=/var/db/machine-id}
-: ${machine_id_perms:=444}
-name="machine_id"
-desc="Update ${machine_id_file}"
-rcvar="machine_id_enable"
-start_cmd="machine_id_start"
-stop_cmd=":"
-
-
-machine_id_start()
-{
- if [ ! -f ${machine_id_file} ] ; then
- startmsg -n "Creating ${machine_id_file} "
- t=$(mktemp -t machine-id)
- /bin/uuidgen -r -c -o $t
- install -C -o root -g wheel -m ${machine_id_perms} "$t" "${machine_id_file}"
- rm -f "$t"
- startmsg 'done.'
- fi
-}
-
-load_rc_config $name
-run_rc_command "$1"
diff --git a/sys/sys/param.h b/sys/sys/param.h
index bdc73475b8e9..353c0243b6d5 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -76,7 +76,7 @@
* cannot include sys/param.h and should only be updated here.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1400081
+#define __FreeBSD_version 1400082
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,