nextboot.sh revision 212789
1#! /bin/sh
2#
3# Copyright 2002. Gordon Tetlow.
4# gordon@FreeBSD.org
5#
6# $FreeBSD: head/sbin/reboot/nextboot.sh 212789 2010-09-17 09:50:36Z avg $
7
8delete="NO"
9force="NO"
10nextboot_file="/boot/nextboot.conf"
11
12display_usage() {
13	echo "Usage: nextboot [-f] [-o options] -k kernel"
14	echo "       nextboot -D"
15}
16
17while getopts "Dfk:o:" argument ; do
18	case "${argument}" in
19	D)
20		delete="YES"
21		;;
22	f)
23		force="YES"
24		;;
25	k)
26		kernel="${OPTARG}"
27		;;
28	o)
29		kernel_options="${OPTARG}"
30		;;
31	*)
32		display_usage
33		exit 1
34		;;
35	esac
36done
37
38if [ ${delete} = "YES" ]; then
39	rm -f ${nextboot_file}
40	exit 0
41fi
42
43if [ "xxx${kernel}" = "xxx" ]; then
44	display_usage
45	exit 1
46fi
47
48if [ ${force} = "NO" -a ! -d /boot/${kernel} ]; then
49	echo "Error: /boot/${kernel} doesn't exist. Use -f to override."
50	exit 1
51fi
52
53df -Tn "/boot/" 2>/dev/null | while read _fs _type _other ; do
54	[ "zfs" = "${_type}" ] || continue
55	cat 1>&2 <<-EOF
56		WARNING: loader(8) has only R/O support for ZFS
57		nextboot.conf will NOT be reset in case of kernel boot failure
58	EOF
59done
60
61cat > ${nextboot_file} << EOF
62nextboot_enable="YES"
63kernel="${kernel}"
64kernel_options="${kernel_options}"
65EOF
66