On 20/09/22 19:19, Alan Somers wrote:
On Tue, Sep 20, 2022 at 4:14 PM Nuno Teixeira <edua...@freebsd.org> wrote:
Hello to all,
I will use becl for the first time for current upgrades.
Just to check that I'm thinking correctly:
Create a test environment for upgrade:
bectl create -r test (should I use '-r'?)
Activate test:
bectl activate test
reboot
...
upgrade OS on test
reboot
...
if a problem happens, reboot default from BE loader
---
if everything fine destroy default and rename test to default
bectl destroy -o default
bectl rename test default
repeat on next upgrade
Don't know if a faster way exists with chroot or bectl jail...
Any hints appreciated.
Thanks,
--
Nuno Teixeira
FreeBSD Committer (ports)
I don't think you need to use "-r". Also, you're forgetting one of
the best things about boot environments: you can upgrade them even
when not booted into them. That's faster than upgrading the running
BE. Here is the procedure I use:
RELEASE=Whatever
sudo bectl create ${RELEASE}
sudo bectl mount ${RELEASE}
BASEDIR=/tmp/be_mount.XXXX # Use mount point returned by bectl mount
sudo freebsd-update -b ${BASEDIR} -d ${BASEDIR}/var/db/freebsd-update
upgrade -r ${RELEASE}
sudo freebsd-update -b ${BASEDIR} -d ${BASEDIR}/var/db/freebsd-update install
# Ignore admonitions to reboot, since we're using a boot environment
sudo freebsd-update -b ${BASEDIR} -d ${BASEDIR}/var/db/freebsd-update install
sudo bectl activate ${RELEASE}
I like to use `sudo bectl activate -t ${RELEASE}`, it activates new
partition to be ROOT only for the next boot. If something goes wrong,
you just need to power cycle the machine and it will boot on previous
partition.
After a success boot you must run `sudo bectl activate RELEASE` again to
make it permanent.
sudo reboot
This general procedure works just as well if you're upgrading from source, too.
sudo make DESTDIR=${BASEDIR} installworld
sudo mergemaster -m $PWD -D $BASEDIR -U
-Alan