Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Jul 2025 09:24:59 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 94c1c907f8c7 - main - reboot(8): add support for noshutdown
Message-ID:  <202507220924.56M9OxdF043363@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=94c1c907f8c78d8c8ad34b6a7d374384f8fb71b6

commit 94c1c907f8c78d8c8ad34b6a7d374384f8fb71b6
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2025-07-10 23:58:46 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2025-07-22 09:22:06 +0000

    reboot(8): add support for noshutdown
    
    Similar to shutdown(8), refuse to reboot if /var/run/noshutdown is
    present.  The -f option can be used to force operation.
    
    Reviewed by:    imp
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D51241
---
 sbin/reboot/reboot.8 | 9 +++++++++
 sbin/reboot/reboot.c | 7 +++++++
 2 files changed, 16 insertions(+)

diff --git a/sbin/reboot/reboot.8 b/sbin/reboot/reboot.8
index 0ddcee643244..1bbc39d52be4 100644
--- a/sbin/reboot/reboot.8
+++ b/sbin/reboot/reboot.8
@@ -110,6 +110,15 @@ Care should be taken if
 .Va value
 contains any characters that are special to the shell or loader's configuration
 parsing code.
+.It Fl f
+Force reboot.
+Normally,
+.Nm
+checks for the presence of the next kernel,
+and absence of the
+.Pa /var/run/noshutdown
+file.
+Without this flag, reboot is denied if one of the conditions failed.
 .It Fl k Ar kname
 Boot the specified kernel
 .Ar kname
diff --git a/sbin/reboot/reboot.c b/sbin/reboot/reboot.c
index 9825d4f96319..f6065e80fb66 100644
--- a/sbin/reboot/reboot.c
+++ b/sbin/reboot/reboot.c
@@ -40,6 +40,7 @@
 #include <err.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <paths.h>
 #include <pwd.h>
 #include <signal.h>
 #include <spawn.h>
@@ -222,6 +223,7 @@ main(int argc, char *argv[])
 {
 	struct utmpx utx;
 	const struct passwd *pw;
+	struct stat st;
 	int ch, howto = 0, i, sverrno;
 	bool Dflag, fflag, lflag, Nflag, nflag, qflag;
 	uint64_t pageins;
@@ -294,6 +296,11 @@ main(int argc, char *argv[])
 	if (argc != 0)
 		usage();
 
+	if (!donextboot && !fflag && stat(_PATH_NOSHUTDOWN, &st) == 0) {
+		errx(1, "Reboot cannot be done, " _PATH_NOSHUTDOWN
+		    " is present");
+	}
+
 	if (Dflag && ((howto & ~RB_HALT) != 0  || kernel != NULL))
 		errx(1, "cannot delete existing nextboot config and do anything else");
 	if ((howto & (RB_DUMP | RB_HALT)) == (RB_DUMP | RB_HALT))



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202507220924.56M9OxdF043363>