diff -rNU3 util-linux-2.38.1.old/include/pathnames.h util-linux-2.38.1/include/pathnames.h
--- util-linux-2.38.1.old/include/pathnames.h	2022-08-04 08:21:36.041638477 +0000
+++ util-linux-2.38.1/include/pathnames.h	2023-08-30 15:08:07.990025756 +0000
@@ -67,9 +67,10 @@
 # define _PATH_TMP		"/tmp/"
 #endif
 
-#ifndef _PATH_BTMP
-# define _PATH_BTMP		"/var/log/btmp"
-#endif
+#undef _PATH_WTMP
+#define _PATH_WTMP		"/var/log/wtmpd/wtmp"
+#undef _PATH_BTMP
+#define _PATH_BTMP		"/var/log/wtmpd/btmp"
 
 #define _PATH_ISSUE_FILENAME	"issue"
 #define _PATH_ISSUE_DIRNAME	_PATH_ISSUE_FILENAME ".d"
diff -rNU3 util-linux-2.38.1.old/login-utils/login.c util-linux-2.38.1/login-utils/login.c
--- util-linux-2.38.1.old/login-utils/login.c	2022-05-11 08:13:10.903531622 +0000
+++ util-linux-2.38.1/login-utils/login.c	2023-08-30 14:57:20.930021550 +0000
@@ -71,6 +71,9 @@
 # include <libaudit.h>
 #endif
 
+#include <utmps/config.h>
+#include <utmps/utmps.h>
+
 #include "c.h"
 #include "pathnames.h"
 #include "strutils.h"
@@ -623,7 +626,8 @@
 			       sizeof(ut.ut_addr_v6));
 	}
 
-	updwtmpx(_PATH_BTMP, &ut);
+	// updwtmpx(_PATH_BTMP, &ut);
+	utmps_updwtmpx_g("/run/utmps/.btmpd-socket", &ut, 0);
 }
 
 #ifdef HAVE_LIBAUDIT
@@ -731,7 +735,7 @@
 	struct utmpx *utp = NULL;
 	struct timeval tv = { 0 };
 
-	utmpxname(_PATH_UTMP);
+	// utmpxname(_PATH_UTMP);
 	setutxent();
 
 	/* Find pid in utmp.
@@ -794,7 +798,8 @@
 	pututxline(&ut);
 	endutxent();
 
-	updwtmpx(_PATH_WTMP, &ut);
+	// updwtmpx(_PATH_WTMP, &ut);
+	utmps_updwtmpx_g("/run/utmps/.wtmpd-socket", &ut, 0);
 }
 
 static void log_syslog(struct login_context *cxt)