git: 91d24077024f - main - reboot: Implement -o to set kernel options for next boot

From: Warner Losh <imp_at_FreeBSD.org>
Date: Mon, 12 Feb 2024 18:53:45 UTC
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=91d24077024f5f36069e55b63d237f9034232455

commit 91d24077024f5f36069e55b63d237f9034232455
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2024-02-12 18:46:03 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-02-12 18:46:03 +0000

    reboot: Implement -o to set kernel options for next boot
    
    Sponsored by:           Netflix
    Reviewed by:            kevans
    Differential Revision:  https://reviews.freebsd.org/D43829
---
 sbin/reboot/reboot.8 | 7 +++++++
 sbin/reboot/reboot.c | 5 ++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/sbin/reboot/reboot.8 b/sbin/reboot/reboot.8
index a60512fa0c59..ed055327b36a 100644
--- a/sbin/reboot/reboot.8
+++ b/sbin/reboot/reboot.8
@@ -39,18 +39,22 @@
 .Op Fl DflNnpq
 .Op Fl e Ar variable=value
 .Op Fl k Ar kernel
+.Op Fl o Ar options
 .Nm
 .Op Fl cDdflNnpqr
 .Op Fl e Ar variable=value
 .Op Fl k Ar kernel
+.Op Fl o Ar options
 .Nm fasthalt
 .Op Fl DflNnpq
 .Op Fl e Ar variable=value
 .Op Fl k Ar kernel
+.Op Fl o Ar options
 .Nm fastboot
 .Op Fl dDflNnpq
 .Op Fl e Ar variable=value
 .Op Fl k Ar kernel
+.Op Fl o Ar options
 .Sh DESCRIPTION
 The
 .Nm halt
@@ -146,6 +150,9 @@ This can happen when devices have been disconnected, such as with
 .It Fl n
 The file system cache is not flushed.
 This option should probably not be used.
+.It Fl o Ar options
+This option
+allows the passing of kernel flags for the next boot.
 .It Fl p
 The system will turn off the power if it can.
 If the power down action fails, the system
diff --git a/sbin/reboot/reboot.c b/sbin/reboot/reboot.c
index a4be86a4983f..21acf7514388 100644
--- a/sbin/reboot/reboot.c
+++ b/sbin/reboot/reboot.c
@@ -180,7 +180,7 @@ main(int argc, char *argv[])
 	} else
 		howto = 0;
 	Dflag = fflag = lflag = Nflag = nflag = qflag = false;
-	while ((ch = getopt(argc, argv, "cDde:k:lNnpqr")) != -1)
+	while ((ch = getopt(argc, argv, "cDde:k:lNno:pqr")) != -1)
 		switch(ch) {
 		case 'c':
 			howto |= RB_POWERCYCLE;
@@ -212,6 +212,9 @@ main(int argc, char *argv[])
 			nflag = true;
 			Nflag = true;
 			break;
+		case 'o':
+			add_env(&env, "kernel_options", optarg);
+			break;
 		case 'p':
 			howto |= RB_POWEROFF;
 			break;