aboutsummaryrefslogtreecommitdiff
path: root/sbin/reboot
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2016-04-10 01:25:12 +0000
committerMark Johnston <markj@FreeBSD.org>2016-04-10 01:25:12 +0000
commit8553156023784d4305fe505c15ede787e2eab614 (patch)
tree73b4240169fb4d134cb9d1945b3521855b8d9866 /sbin/reboot
parent33b454938a202ad7622a409f1ebf0cebe58222ff (diff)
downloadsrc-8553156023784d4305fe505c15ede787e2eab614.tar.gz
src-8553156023784d4305fe505c15ede787e2eab614.zip
nextboot(8): add a -a option for appending to a configuration.
By default, a nextboot invocation will clobber any existing nextboot configuration. MFC after: 2 weeks Relnotes: yes
Notes
Notes: svn path=/head/; revision=297772
Diffstat (limited to 'sbin/reboot')
-rw-r--r--sbin/reboot/nextboot.89
-rw-r--r--sbin/reboot/nextboot.sh26
2 files changed, 30 insertions, 5 deletions
diff --git a/sbin/reboot/nextboot.8 b/sbin/reboot/nextboot.8
index df46a0ccbcd4..d006c3f20c0b 100644
--- a/sbin/reboot/nextboot.8
+++ b/sbin/reboot/nextboot.8
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 17, 2015
+.Dd April 9, 2016
.Dt NEXTBOOT 8
.Os
.Sh NAME
@@ -32,6 +32,7 @@
.Nd "specify an alternate kernel and boot flags for the next reboot"
.Sh SYNOPSIS
.Nm
+.Op Fl a
.Op Fl e Ar variable=value
.Op Fl f
.Op Fl k Ar kernel
@@ -53,6 +54,12 @@ configuration.
.Pp
The options are as follows:
.Bl -tag -width ".Fl o Ar options"
+.It Fl a
+This option causes
+.Nm
+to append to an existing configuration in
+.Pa /boot/nextboot.conf .
+By default any existing configuration is overwritten.
.It Fl D
Invoking
.Nm
diff --git a/sbin/reboot/nextboot.sh b/sbin/reboot/nextboot.sh
index 655e53305911..a90fdebae217 100644
--- a/sbin/reboot/nextboot.sh
+++ b/sbin/reboot/nextboot.sh
@@ -26,6 +26,7 @@
#
# $FreeBSD$
+append="NO"
delete="NO"
kenv=
force="NO"
@@ -48,12 +49,17 @@ add_kenv()
}
display_usage() {
- echo "Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options]"
- echo " nextboot -D"
+ cat <<-EOF
+ Usage: nextboot [-e variable=value] [-f] [-k kernel] [-o options]
+ nextboot -D
+ EOF
}
-while getopts "De:fk:o:" argument ; do
+while getopts "aDe:fk:o:" argument ; do
case "${argument}" in
+ a)
+ append="YES"
+ ;;
D)
delete="YES"
;;
@@ -106,7 +112,19 @@ df -Tn "/boot/" 2>/dev/null | while read _fs _type _other ; do
EOF
done
-cat > ${nextboot_file} << EOF
+set -e
+
+nextboot_tmp=$(mktemp $(dirname ${nextboot_file})/nextboot.XXXXXX)
+
+if [ ${append} = "YES" -a -f ${nextboot_file} ]; then
+ cp -f ${nextboot_file} ${nextboot_tmp}
+fi
+
+cat >> ${nextboot_tmp} << EOF
nextboot_enable="YES"
$kenv
EOF
+
+fsync ${nextboot_tmp}
+
+mv ${nextboot_tmp} ${nextboot_file}