Setting up Solaris-like boot environments on [[sysadmin:freebsd|FreeBSD]]
This is a interesting page only available form google cache: https://webcache.googleusercontent.com/search?q=cache:RczI5Wp6xp4J:https://lifanov.com/doc/FreeBSDbeSetup-new.html+&cd=1&hl=en&ct=clnk&gl=de&client=safari
There is a set of outdated instructions. You should use this instead.
Boot environments are both OS and ZFS feature that allow for Solaris to boot from multiple ZFS pools. Having a previous boot environment available has helped me to recover from a bad mistake in the current boot environment at least once. Also, if you want to test svn /projects/, you can do so in different boot environments.
To use boot environments in FreeBSD, do the following in sh: Adjust this to your setup (be careful). Keep a live cd/usb handy just in case.
preparation
zfs snapshot -r rpool@snap0 zfs create -o dedup=on rpool/ROOT zfs send rpool@snap0 | zfs recv rpool/ROOT/base-be zfs destroy rpool/ROOT/base-be@snap0 zfs destroy rpool@snap0 zfs list -t snapshot -H -o name | while read s; do zfs send $s | zfs recv `echo $s|sed 's/rpool\/\(.*\)@snap0$/rpool\/ROOT\/base-be\/\1/g'`; done zfs list -t snapshot -H -o name | grep snap0 | xargs -n1 zfs destroy zfs set freebsd:boot-environment=1 rpool/ROOT/base-be zfs list -H -o name | xargs -n1 zfs set canmount=noauto zfs set mountpoint=/mnt rpool/ROOT/base-be zfs mount rpool/ROOT/base-be #edit /mnt/boot/loader.conf and change bootloader to boot from rpool/ROOT/base-be zfs set mountpoint=/ rpool/ROOT/base-be zfs list -H -o name | grep ROOT/base-be/ | while read f; do zfs set mountpoint=`echo $f | sed 's/rpool\/ROOT\/base-be//g'` $f; done zpool set bootfs=rpool/ROOT/base-be rpool #reboot now reboot #change mountpoints for your old pool and destroy data as needed zfs list | grep rpool/ | grep -v ROOT | xargs -n1 zfs destroy zfs set mountpoint=/mnt rpool chflags -R 0 /mnt/* rm -rf /mnt/* zfs set mountpoint=none pool
—++usage
- would recommend scripting this. You can find maintenance description here.