nextboot.sh revision 212789
1162485Sjulian#! /bin/sh
2162485Sjulian#
3162485Sjulian# Copyright 2002. Gordon Tetlow.
4162485Sjulian# gordon@FreeBSD.org
5162485Sjulian#
6162485Sjulian# $FreeBSD: head/sbin/reboot/nextboot.sh 212789 2010-09-17 09:50:36Z avg $
7162485Sjulian
8162485Sjuliandelete="NO"
9162485Sjulianforce="NO"
10162485Sjuliannextboot_file="/boot/nextboot.conf"
11162485Sjulian
12162485Sjuliandisplay_usage() {
13162485Sjulian	echo "Usage: nextboot [-f] [-o options] -k kernel"
14162485Sjulian	echo "       nextboot -D"
15162485Sjulian}
16162485Sjulian
17162485Sjulianwhile getopts "Dfk:o:" argument ; do
18162485Sjulian	case "${argument}" in
19162485Sjulian	D)
20162485Sjulian		delete="YES"
21162485Sjulian		;;
22162485Sjulian	f)
23162485Sjulian		force="YES"
24162485Sjulian		;;
25162485Sjulian	k)
26162485Sjulian		kernel="${OPTARG}"
27162485Sjulian		;;
28162485Sjulian	o)
29162485Sjulian		kernel_options="${OPTARG}"
30162485Sjulian		;;
31162485Sjulian	*)
32162485Sjulian		display_usage
33162485Sjulian		exit 1
34162485Sjulian		;;
35162485Sjulian	esac
36162485Sjuliandone
37162485Sjulian
38162485Sjulianif [ ${delete} = "YES" ]; then
39162485Sjulian	rm -f ${nextboot_file}
40162485Sjulian	exit 0
41162485Sjulianfi
42162485Sjulian
43162485Sjulianif [ "xxx${kernel}" = "xxx" ]; then
44162485Sjulian	display_usage
45162485Sjulian	exit 1
46162485Sjulianfi
47162485Sjulian
48162485Sjulianif [ ${force} = "NO" -a ! -d /boot/${kernel} ]; then
49162485Sjulian	echo "Error: /boot/${kernel} doesn't exist. Use -f to override."
50162485Sjulian	exit 1
51162485Sjulianfi
52162485Sjulian
53162485Sjuliandf -Tn "/boot/" 2>/dev/null | while read _fs _type _other ; do
54162485Sjulian	[ "zfs" = "${_type}" ] || continue
55162485Sjulian	cat 1>&2 <<-EOF
56162485Sjulian		WARNING: loader(8) has only R/O support for ZFS
57162485Sjulian		nextboot.conf will NOT be reset in case of kernel boot failure
58162485Sjulian	EOF
59162485Sjuliandone
60162485Sjulian
61162485Sjuliancat > ${nextboot_file} << EOF
62162485Sjuliannextboot_enable="YES"
63162485Sjuliankernel="${kernel}"
64162485Sjuliankernel_options="${kernel_options}"
65162485SjulianEOF
66162485Sjulian