Proposal: Improve BE naming convention in freebsd-update install

Takashi Shimizu <[email protected]> Sun, 24 May 2026 20:53:59 +0900
Newsgroups gmane.os.freebsd.stable
Message-ID <[email protected]>
Hi,

I'd like to propose an improvement to the Boot Environment naming 
convention used by freebsd-update.

*Current behavior and problems*

Here is a typical bectl list output after several freebsd-update runs:

|BE Active Mountpoint Space Created 15.0-RELEASE-p2_2026-02-11_220708 - 
- 5.22G 2026-02-11 22:07 15.0-RELEASE-p4_2026-04-23_104906 - - 2.55G 
2026-04-23 10:49 15.0-RELEASE-p5_2026-04-23_103138 - - 69.5M 2026-04-23 
10:31 15.0-RELEASE-p6_2026-05-06_110219 - - 579M 2026-05-06 11:02 
15.0-RELEASE-p8_2026-05-21_183216 NR / 31.2G 2026-05-21 18:32 
15.0-RELEASE-p8_2026-05-24_153246 - - 1.29M 2026-05-24 15:32 
15.0-RELEASE_2026-02-01_103504 - - 179M 2026-02-01 10:35 default - - 
1.22G 2026-02-01 10:29 |

This output raises several problems:

 1.

    The name "default" is misleading. It suggests "the BE that boots by
    default" or "the latest running state", but in practice it is just
    the residue of the initial installation, with no NR flag. The name
    and its actual purpose are mismatched.

 2.

    freebsd-update install updates the current BE in place, then saves a
    snapshot of the pre-update state with a new date-stamped name. As a
    result, the actual content of the current BE does not match its
    name. In the example above, 15.0-RELEASE-p8_2026-05-21_183216 has
    the NR flag and is the running system, but its actual content is
    15.0-RELEASE-p9, installed by freebsd-update. The name says p8, but
    the system is running p9. This is highly misleading, especially when
    trying to recover from a failed reboot.

 3.

    Furthermore, the snapshot taken just before the update,
    15.0-RELEASE-p8_2026-05-24_153246, has a newer timestamp than the
    current BE. The BE with the newer date is actually the older state.
    If a reboot fails and the user needs to identify which BE to
    activate, the date-based names actively mislead them.

 4.

    As upgrades accumulate, date-stamped BEs proliferate with no clear
    indication of which is current and which are fallbacks.

*Proposal*

  *

    Rename the initial installation BE from "default" to "original".
    This accurately reflects its purpose as a preserved baseline.

  *

    After each freebsd-update install, rename the current BE to "HEAD".
    HEAD always refers to the latest BE created automatically by
    freebsd-update. User-created BEs are outside the scope of this
    convention and should be managed by the user themselves, with names
    of their own choosing such as "RELEASE-p9-preRC1".

The result would be a bectl list that is immediately understandable:

|BE Active Mountpoint Space Created HEAD NR / 31.2G 2026-05-24 
RELEASE-p9-preRC1 - - 1.5G 2026-05-24 15.0-RELEASE-p6_2026-05-06 - - 
579M 2026-05-06 15.0-RELEASE-p2_2026-02-11 - - 5.22G 2026-02-11 original 
- - 1.22G 2026-02-01 |

HEAD is always the latest state managed by freebsd-update. User-created 
BEs with meaningful names serve as fallbacks for specific purposes. 
"original" is preserved as a historical baseline.

This change would make the BE state self-explanatory, reduce confusion 
after failed upgrades, and lower the risk of users activating the wrong 
BE during recovery.

Note: As FreeBSD transitions from freebsd-update to pkgbase, it would be 
worth considering whether pkgbase will provide automatic BE creation and 
a clear naming convention from the start, rather than inheriting the 
same confusion.

Thanks for considering this.

Takashi