git: 384d976725a5 - main - rc.d: Add precious_machine rc.conf knob to create /var/run/noshutdown
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 05 May 2025 16:05:26 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=384d976725a5c29734a9227fcdb6ef0807485c91
commit 384d976725a5c29734a9227fcdb6ef0807485c91
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-05-04 13:51:26 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-05-05 16:05:03 +0000
rc.d: Add precious_machine rc.conf knob to create /var/run/noshutdown
Reviewed by: bapt, kevans, olce
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D50166
---
libexec/rc/rc.conf | 2 ++
libexec/rc/rc.d/Makefile | 1 +
libexec/rc/rc.d/noshutdown | 31 +++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+)
diff --git a/libexec/rc/rc.conf b/libexec/rc/rc.conf
index 9540cca6c2f1..cfb4fa09b1c1 100644
--- a/libexec/rc/rc.conf
+++ b/libexec/rc/rc.conf
@@ -29,6 +29,8 @@
rc_info="NO" # Enables display of informational messages at boot.
rc_startmsgs="YES" # Show "Starting foo:" messages at boot
rcshutdown_timeout="90" # Seconds to wait before terminating rc.shutdown
+precious_machine="NO" # Set to YES to get some guards against mis-directed
+ # shutdown(8) commands
early_late_divider="FILESYSTEMS" # Script that separates early/late
# stages of the boot process. Make sure you know
# the ramifications if you change this.
diff --git a/libexec/rc/rc.d/Makefile b/libexec/rc/rc.d/Makefile
index 52b48a53c196..89eeea8f587a 100644
--- a/libexec/rc/rc.d/Makefile
+++ b/libexec/rc/rc.d/Makefile
@@ -51,6 +51,7 @@ CONFS= DAEMON \
netif \
netoptions \
netwait \
+ noshutdown \
${_nscd} \
${_opensm} \
os-release \
diff --git a/libexec/rc/rc.d/noshutdown b/libexec/rc/rc.d/noshutdown
new file mode 100755
index 000000000000..54924310a6c7
--- /dev/null
+++ b/libexec/rc/rc.d/noshutdown
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+#
+
+# PROVIDE: noshutdown
+# REQUIRE: var
+# BEFORE: LOGIN
+
+. /etc/rc.subr
+
+name="noshutdown"
+desc="Disable shutdown(8) for precious machines"
+rcvar="precious_machine"
+start_cmd="noshutdown_start"
+stop_cmd="noshutdown_stop"
+
+: ${noshutdown_file:="/var/run/noshutdown"}
+
+noshutdown_start()
+{
+ touch $noshutdown_file
+}
+
+noshutdown_stop()
+{
+ rm -f $noshutdown_file
+}
+
+load_rc_config $name
+
+run_rc_command "$1"