The branch releng/13.2 has been updated by tijl:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=71d88613d12984f6a9058f4ef7044e00853727ed

commit 71d88613d12984f6a9058f4ef7044e00853727ed
Author:     Tijl Coosemans <[email protected]>
AuthorDate: 2023-02-15 20:09:51 +0000
Commit:     Tijl Coosemans <[email protected]>
CommitDate: 2023-03-12 21:46:07 +0000

    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 hyphens
    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
    Approved by:    re (cperciva)
    Differential Revision:  https://reviews.freebsd.org/D38811
    
    (cherry picked from commit ecad3f5c4d922f93ceba455f8bff1c54e1ed4174)
    (cherry picked from commit d6852eed98ed32ad51120a22aa1ebdf0601917b3)
---
 ObsoleteFiles.inc           |  3 +++
 etc/Makefile                |  2 --
 libexec/rc/rc.conf          |  4 +---
 libexec/rc/rc.d/Makefile    |  1 -
 libexec/rc/rc.d/hostid_save | 28 ++++++++++++++++++++--------
 libexec/rc/rc.d/machine_id  | 34 ----------------------------------
 sys/sys/param.h             |  2 +-
 7 files changed, 25 insertions(+), 49 deletions(-)

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index 64214e29e93f..b3b1b5e6cf1f 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
+
 # 20230203: loader help files renamed
 OLD_FILES+=boot/loader.help
 
diff --git a/etc/Makefile b/etc/Makefile
index 49a7a12a41b5..104e40b6e345 100644
--- a/etc/Makefile
+++ b/etc/Makefile
@@ -58,8 +58,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 23f9406da017..af7b6ff6302e 100644
--- a/libexec/rc/rc.conf
+++ b/libexec/rc/rc.conf
@@ -135,6 +135,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.
@@ -703,9 +704,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 188eae2e2f5b..40a1a212ca3a 100644
--- a/libexec/rc/rc.d/Makefile
+++ b/libexec/rc/rc.d/Makefile
@@ -51,7 +51,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 35ed7dab7b5f..b6ac2c897fad 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -60,7 +60,7 @@
  *             in the range 5 to 9.
  */
 #undef __FreeBSD_version
-#define __FreeBSD_version 1302000      /* Master, propagated to newvers */
+#define __FreeBSD_version 1302001      /* Master, propagated to newvers */
 
 /*
  * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,

Reply via email to