Re: Good practices with bectl
- In reply to: Paul Mather : "Re: Good practices with bectl"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 21 Sep 2022 00:24:54 UTC
Hi Paul, Really nice! I will test it soon. Cheers Paul Mather <paul@gromit.dlib.vt.edu> escreveu no dia quarta, 21/09/2022 à(s) 00:17: > On Sep 20, 2022, at 6:19 PM, Alan Somers <asomers@freebsd.org> wrote: > > > On Tue, Sep 20, 2022 at 4:14 PM Nuno Teixeira <eduardo@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} > > 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 > > > There's even a handy tool in /usr/src/tools/build that can be used as a > wrapper to install a SRC build into a new boot environment. It's > /usr/src/tools/build/beinstall.sh (see man beinstall(8) for details). It > will create a new boot environment from a source build, run etcupdate and > so forth, and even mark the new boot environment as the one to be active on > reboot. All you need to do is reboot. I've been using it for source > upgrades for a while now without problems. The best thing, for me, is it > cuts out all that time doing "make installworld" and etcupdate in single > user mode, thus minimising downtime. > > Cheers, > > Paul. > > > -- Nuno Teixeira FreeBSD Committer (ports)