Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142005803
D21892.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D21892.diff
View Options
diff --git a/usr.sbin/freebsd-update/freebsd-update.conf b/usr.sbin/freebsd-update/freebsd-update.conf
--- a/usr.sbin/freebsd-update/freebsd-update.conf
+++ b/usr.sbin/freebsd-update/freebsd-update.conf
@@ -74,3 +74,6 @@
# When backing up a kernel also back up debug symbol files?
# BackupKernelSymbolFiles no
+
+# Create a new boot environment when installing patches
+# CreateBootEnv yes
diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh
--- a/usr.sbin/freebsd-update/freebsd-update.sh
+++ b/usr.sbin/freebsd-update/freebsd-update.sh
@@ -410,6 +410,23 @@
fi
}
+config_CreateBootEnv () {
+ if [ -z ${BOOTENV} ]; then
+ case $1 in
+ [Yy][Ee][Ss])
+ BOOTENV=yes
+ ;;
+ [Nn][Oo])
+ BOOTENV=no
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+ else
+ return 1
+ fi
+}
# Handle one line of configuration
configline () {
if [ $# -eq 0 ]; then
@@ -586,6 +603,7 @@
config_BackupKernel yes
config_BackupKernelDir /boot/kernel.old
config_BackupKernelSymbolFiles no
+ config_CreateBootEnv yes
# Merge these defaults into the earlier-configured settings
mergeconfig
@@ -850,6 +868,44 @@
fi
}
+# Creates a new boot environment
+install_create_be () {
+ # Figure out if we're running in a jail and return if we are
+ if [ `sysctl -n security.jail.jailed` = 1 ]; then
+ return 1
+ fi
+ # Create a boot environment if enabled
+ if [ ${BOOTENV} = yes ]; then
+ bectl check 2>/dev/null
+ case $? in
+ 0)
+ # Boot environment are supported
+ CREATEBE=yes
+ ;;
+ 255)
+ # Boot environments are not supported
+ CREATEBE=no
+ ;;
+ *)
+ # If bectl returns an unexpected exit code, don't create a BE
+ CREATEBE=no
+ ;;
+ esac
+ if [ ${CREATEBE} = yes ]; then
+ echo -n "Creating snapshot of existing boot environment... "
+ VERSION=`freebsd-version -k`
+ TIMESTAMP=`date +"%Y-%m-%d_%H%M%S"`
+ bectl create ${VERSION}_${TIMESTAMP}
+ if [ $? -eq 0 ]; then
+ echo "done.";
+ else
+ echo "failed."
+ exit 1
+ fi
+ fi
+ fi
+}
+
# Perform sanity checks and set some final parameters in
# preparation for UNinstalling updates.
rollback_check_params () {
@@ -3366,6 +3422,7 @@
cmd_install () {
finalize_components_config ${COMPONENTS}
install_check_params
+ install_create_be
install_run || exit 1
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jan 15, 7:41 PM (3 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27654248
Default Alt Text
D21892.diff (2 KB)
Attached To
Mode
D21892: freebsd-update: create a ZFS boot environment on install if the system supports it
Attached
Detach File
Event Timeline
Log In to Comment