In part 1 of my FreeBSD jail adventure, I switched from iocage to my own homespun jails. This will be a short piece on updating those base jails.
Since they are all nullfs mounting the same directories, you only have to update things once.
|Allan Jude mentioned doing symlinks instead of nullfs, but I haven’t tried that. You can hear his comments on BSD Now.|
Update the Host
First, you will want to update the host. However you want to go about this, go for it. For me, I use
I do a trick I learned from vermaden, though, it was something I found in a tweet
that was posted, maybe there’s an article…
bectl create 2022-02-25_13.0
bectl mount 2022-02-25_13.0
mount -t devfs devfs /dev
freebsd-update fetch install
bectl activate 2022-02-25_13.0
shutdown -r now
The system will be rebooted and then you will boot into the new boot environment with the updates applied.
Now let us update the jails. From the previous article, note I made the zfs dataset that is nullfs
mounted from at
zroot/jails/templates/base-13.0-RELEASE. This is what we will be updating.
First I take a snapshot of it (in case things go sideways)
zfs snapshot zroot/jails/templates/base-13.0-RELEASE@2022-02-25_update
Then I update it with the freebsd-update utility:
env UNAME_r=13.0-RELEASE freebsd-update -b /jails/templates/base-13.0-RELEASE fetch install
Now with the base image updated, I don’t know if it’s necessary (didn’t check, will update this in the future to add clarity),
but I restarted all my jails too while I was at it with
service jail restart. Of course, if not all your jails
are using the same base, you can restart them individually. Or, you can verify before/after to see if the changes
were applied without restarting the jails by taking a
uname -a before and after and confirming that the
change did happen. I inadvertantly updated the jails before the host because I rebooted without applying the
boot environment from before :)
And that’s it! All the base jails you have should be updated now, then you can do your pkg update/upgrades in your jails as necessary.
Once I’m done I also like to remove the old snapshot. I know the system is working right so I don’t need it anymore.