If a system with firstboot_freebsd_update_enable="YES" boots without access to the FreeBSD Update mirrors (e.g. an EC2 instance which has an EC2 security group settings which block outbound HTTP) the boot will hang until it times out. The default timeout of 120 seconds is suboptimal. Run freebsd-update with a timeout of 5 seconds, and bump the package version to 1.4 to reflect this change. Reported by: mgrooms@shrew.net PR: 276720 Sponsored by: https://www.patreon.com/cperciva
55 lines
1.4 KiB
Bash
55 lines
1.4 KiB
Bash
#!/bin/sh
|
|
|
|
# KEYWORD: firstboot
|
|
# PROVIDE: firstboot_freebsd_update
|
|
# REQUIRE: syslogd NETWORKING
|
|
# BEFORE: LOGIN
|
|
|
|
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf (in the disk
|
|
# image, since this only runs on the first boot) to enable this:
|
|
#
|
|
# firstboot_freebsd_update_enable="YES"
|
|
#
|
|
# By default this script will only run on *-BETA*, *-RC*, and *-RELEASE*
|
|
# systems, since those are the only ones for which updates are provided by
|
|
# the FreeBSD project; to run freebsd-update anyway (e.g., on a custom
|
|
# release for which you are providing your own update bits), set:
|
|
#
|
|
# firstboot_freebsd_update_nonstandard="YES"
|
|
|
|
. /etc/rc.subr
|
|
|
|
: ${firstboot_freebsd_update_enable:="NO"}
|
|
: ${firstboot_freebsd_update_nonstandard:="NO"}
|
|
|
|
name="firstboot_freebsd_update"
|
|
rcvar=firstboot_freebsd_update_enable
|
|
start_cmd="firstboot_freebsd_update_run | logger -s -t 'freebsd-update'"
|
|
stop_cmd=":"
|
|
|
|
firstboot_freebsd_update_run()
|
|
{
|
|
|
|
if ! checkyesno firstboot_freebsd_update_nonstandard; then
|
|
case "`uname -r`" in
|
|
*-BETA* | *-RC* | *-RELEASE*)
|
|
;;
|
|
*)
|
|
echo "Firstboot freebsd-update disabled on `uname -r`"
|
|
return 0
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
env HTTP_TIMEOUT=5 freebsd-update --not-running-from-cron fetch
|
|
if [ -e /var/db/freebsd-update/`echo / | sha256`-install ]; then
|
|
freebsd-update install
|
|
echo "Requesting reboot after installing updates."
|
|
touch ${firstboot_sentinel}-reboot
|
|
fi
|
|
}
|
|
|
|
load_rc_config $name
|
|
run_rc_command "$1"
|
|
|