Date: Tue, 26 May 2026 07:29:19 +0900 From: Takashi Shimizu <qqyr7xx9k@shirt.ocn.ne.jp> To: "Edward Sanford Sutton, III" <mirror176@hotmail.com>, stable@freebsd.org Subject: Re: Proposal: Improve BE naming convention in freebsd-update install Message-ID: <1ea23792-d34a-4cb3-a20e-cb4040fd8f4a@shirt.ocn.ne.jp> In-Reply-To: <SA1PR11MB8811F2246BDB5E010B833854E60A2@SA1PR11MB8811.namprd11.prod.outlook.com> References: <70da0c5b-c865-44e9-8c19-abb1cd779efe@shirt.ocn.ne.jp> <7a0f1e46-b18d-455d-9b1c-f93131dae0bb@interia.pl> <be295f98-e6c8-4490-ac4a-fb26735b69d5@shirt.ocn.ne.jp> <SA1PR11MB8811F2246BDB5E010B833854E60A2@SA1PR11MB8811.namprd11.prod.outlook.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On 5/26/26 06:25, Edward Sanford Sutton, III wrote:
>
> My question is does freebsd-update create a BE from the current BE,
> update that offline BE, then switch it to be active BE of next boot or
> even now? Alternatively does it create a BE from the current BE which
> is left as is and then apply updates to the current BE which requires
> not changing the BE of next and future boots nor require switching
> what is currently mounted? I assume the second case is used but don't
> actually know.
> In the first case it needs to not only (re)name the new BE but also
> rename the current BE, and probably any and all other BEs or else you
> will get multiple 'HEAD' labels.
> In the second case it would seem like there is no needed rename but
> if you ever have to boot a different BE and then do an update there
> you end up with multiple 'HEAD' labels; every failed upgrade scenario
> where changing boot environments are used to correct it will cause
> multiple 'HEAD' labels. The idea of doing it without renaming means
> default/head/... represents an evolving state where you are normally
> working from. If left with this name instead of receiving a new name
> to represent the version it was upgraded to (which means a name has to
> be changed by the tool) then default/... is always the newest 'unless'
> the user has booted from another BE and either updated it with
> freebsd-update or made other 'updates' (package updates,
> configurations manually or automatically updated, etc.) while booted
> to it. All of the naming issues would be resolved in this case if
> freebsd-update always renamed the BE with its version and a timestamp
> that it was ran (BE creation time does not represent freebsd-update
> time and default/...'s creation time should be well before its backups
> are made as an update step) and we could completely drop default/...
> type of naming as we have a proper version + update time on 'every'
> freebsd-update altered BE. As a side effect, any user named BEs also
> would get renamed; a syntax check could be ran and it could be skipped
> or user-prompted for replacement decision before renaming but user
> kept names are only as good as the user sets.
> Always modifying the BE name after a freebsd-update modification of
> it to contain the version also addresses Tuomo's case though instead
> of having '(latest)' and a bunch of times, you know what version you
> are booting (and when it was created as that version if freebsd-update
> adds a timestamp to the name). I assume latest was supposed to be
> stated on only the latest update and restated once changing to another
> that would have been needing a -r. I assume that freebsd-update
> doesn't support updating stable and current branches so it would be
> user managed to try to create and label them when used.
>
>
> If an update tool is creating boot environments in the first case
> above then calling it p8 instead of p9 for a state that will contain
> p9 I'd consider a bug. If its the second case then upgrading from p8
> to p9 makes a p8 boot environment at that time before update (creating
> preinstall but post-download = bloat but saves another download if
> needing to retry) which makes sense but leaves no p9 labeled
> environment due to using default and therefore likely the tool never
> renaming any boot environments; the state is known so a versioned name
> could be given instead of default but that adds a rename step. A
> creation timestamp of a backup-state being made before upgrade such as
> in case 2 should always have a newer timestamp but not be the newer
> state; using the first case I gave is the only way that makes newer
> timestamps always mean newer data. Rather than use that complicated
> case it seems simpler to follow case 2, create a backup BE pre-update
> with timestamp in the description, rename the current be to the new
> version with current (=same) timestamp, apply the update to the
> current be and give it one final newer timestamp (unless your machine
> was too fast and its still the same time). Creation time is still a
> historical trait for the ZFS pool but the description's date tells us
> when things changed rather than when they were created. This
> eliminates the use of 'default' and again gives it a descriptive name
> which is required to not leave it as unclear.
>
Thank you for the detailed analysis of Case 1 and Case 2.
I agree that Case 2 is the right approach. It is clean and
straightforward. Renaming the current BE to reflect its new version
after freebsd-update install, while preserving the pre-update state with
a timestamped name, gives users all the information they need without
unnecessary complexity.
One of the things I love about FreeBSD is its simplicity and clarity of
commands, which stands in contrast to some other operating systems. I
hope this improvement can be implemented without adding undue complexity
to freebsd-update.
>
> As a side note, trying to upgrade a non-BE system to use a BE layout
> as deep boot environments was one of the few times in over 20 years of
> using FreeBSD as my desktop that I hit a state where I had to reload
> from backup. it was a mix of problems with my layout, I think I forgot
> to manually specify -r sometimes when migrating, managing, and/or
> experimenting, and I'm not sure that beadm has any support for deep
> boot environments (If wrong, I'd love to learn how its done and
> managed). Doesn't help that I didn't initially understand what was
> actually going on. Once in place and working properly its a pretty
> slick thing but its not a replacement for full pool snapshots and
> backups. The shallow boot environments seemed like a downgrade to my
> other use of ZFS layout and properties so that is why I went for deep.
> Upgrades go wrong so rarely that I'd likely have passed on BEs if I
> had to switch to shallow to use them. I've had some other ideas for it
> concept too like making multi-architecture boot media seems plausible.
> Over the years of mostly tracking stable some stuff did break with
> updates but that was rarely anything I didn't already find about from
> reading /usr/src/UPDATING or heard about on a mailing list. I can
> always download and build an update but not install it until later if
> I was actually worried so there was more time for issues to be brought
> up. I'm much more concerned about Windows updates breaking family
> members computers or what may happen next on a ddwrt upgrade than what
> happens if I install the next FreeBSD updates. It does take time to go
> through things like UPDATING on larger upgrades and I manually build
> ports on my now quite outdated desktop so build times and reading has
> me delay it longer than needed though looking back it seems the
> reading is not much more effort than a minor skim with little needed
> interaction and further steps from me.
>
> I've had 1 friend and 2 family members run FreeBSD on computers over
> those 20 years. Friend lost recovery media and as a temporary
> workaround on hard drive failure knew it wasn't Windows easy and I'd
> be there to help with questions but found other computer people were
> impressed when they copied+pasted commands from the handbook and they
> enjoyed that they got some 'upgrades' to their tasks compared to their
> previous Windows offerings. Only went back to Windows because the next
> computer came with it. One family member seemed to enjoy it to see
> something different and get some non-Microsoft playtime; stopped using
> it on next computer to simplify things. The other family member took
> up my offer of trying it as their fileserver at his small business and
> I'd put Windows on if needed; I had to come up with fixes to make it
> work how he wanted but the calls that I feared of the FreeBSD box
> failing him always turned out to be things like a bad network
> switch/cable or a simple fix; no longer used because the business was
> sold and next owner wanted to go to something different he knew
> (probably Linux but I forget). Onsite or not, upgrades didn't
> intimidate me on there and I didn't have ZFS of boot environments on
> them if memory serves.
>
I also agree that FreeBSD's update system is outstanding and highly
reliable. This is something that would be difficult to achieve on
operating systems where the kernel and base system are developed
separately. In practice, major updates on distributions such as Ubuntu
often fail to handle the complexity of such a split architecture,
leading to frequent problems and forcing users to reinstall from
scratch, much like Windows.
I quietly hope that Linux users who have grown tired of this situation
will find their way to FreeBSD. The barrier to moving from Linux to
FreeBSD is far lower than the barrier from Windows to Linux, after all.
Takashi
[-- Attachment #2 --]
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<br>
<div class="moz-cite-prefix">On 5/26/26 06:25, Edward Sanford
Sutton, III wrote:<br>
</div>
<blockquote type="cite"
cite="mid:SA1PR11MB8811F2246BDB5E010B833854E60A2@SA1PR11MB8811.namprd11.prod.outlook.com"><br>
My question is does freebsd-update create a BE from the current
BE, update that offline BE, then switch it to be active BE of next
boot or even now? Alternatively does it create a BE from the
current BE which is left as is and then apply updates to the
current BE which requires not changing the BE of next and future
boots nor require switching what is currently mounted? I assume
the second case is used but don't actually know.
<br>
In the first case it needs to not only (re)name the new BE but
also rename the current BE, and probably any and all other BEs or
else you will get multiple 'HEAD' labels.
<br>
In the second case it would seem like there is no needed rename
but if you ever have to boot a different BE and then do an update
there you end up with multiple 'HEAD' labels; every failed upgrade
scenario where changing boot environments are used to correct it
will cause multiple 'HEAD' labels. The idea of doing it without
renaming means default/head/... represents an evolving state where
you are normally working from. If left with this name instead of
receiving a new name to represent the version it was upgraded to
(which means a name has to be changed by the tool) then
default/... is always the newest 'unless' the user has booted from
another BE and either updated it with freebsd-update or made other
'updates' (package updates, configurations manually or
automatically updated, etc.) while booted to it. All of the naming
issues would be resolved in this case if freebsd-update always
renamed the BE with its version and a timestamp that it was ran
(BE creation time does not represent freebsd-update time and
default/...'s creation time should be well before its backups are
made as an update step) and we could completely drop default/...
type of naming as we have a proper version + update time on
'every' freebsd-update altered BE. As a side effect, any user
named BEs also would get renamed; a syntax check could be ran and
it could be skipped or user-prompted for replacement decision
before renaming but user kept names are only as good as the user
sets.
<br>
Always modifying the BE name after a freebsd-update modification
of it to contain the version also addresses Tuomo's case though
instead of having '(latest)' and a bunch of times, you know what
version you are booting (and when it was created as that version
if freebsd-update adds a timestamp to the name). I assume latest
was supposed to be stated on only the latest update and restated
once changing to another that would have been needing a -r. I
assume that freebsd-update doesn't support updating stable and
current branches so it would be user managed to try to create and
label them when used.
<br>
<br>
</blockquote>
<p><br>
</p>
<blockquote type="cite"
cite="mid:SA1PR11MB8811F2246BDB5E010B833854E60A2@SA1PR11MB8811.namprd11.prod.outlook.com"><br>
If an update tool is creating boot environments in the first
case above then calling it p8 instead of p9 for a state that will
contain p9 I'd consider a bug. If its the second case then
upgrading from p8 to p9 makes a p8 boot environment at that time
before update (creating preinstall but post-download = bloat but
saves another download if needing to retry) which makes sense but
leaves no p9 labeled environment due to using default and
therefore likely the tool never renaming any boot environments;
the state is known so a versioned name could be given instead of
default but that adds a rename step. A creation timestamp of a
backup-state being made before upgrade such as in case 2 should
always have a newer timestamp but not be the newer state; using
the first case I gave is the only way that makes newer timestamps
always mean newer data. Rather than use that complicated case it
seems simpler to follow case 2, create a backup BE pre-update with
timestamp in the description, rename the current be to the new
version with current (=same) timestamp, apply the update to the
current be and give it one final newer timestamp (unless your
machine was too fast and its still the same time). Creation time
is still a historical trait for the ZFS pool but the description's
date tells us when things changed rather than when they were
created. This eliminates the use of 'default' and again gives it a
descriptive name which is required to not leave it as unclear.
<br>
<br>
</blockquote>
<br>
<p
class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Thank
you for the detailed analysis of Case 1 and Case 2.</p>
<p
class="font-claude-response-body break-words whitespace-normal leading-[1.7]">I
agree that Case 2 is the right approach. It is clean and
straightforward. Renaming the current BE to reflect its new
version after freebsd-update install, while preserving the
pre-update state with a timestamped name, gives users all the
information they need without unnecessary complexity.</p>
<p
class="font-claude-response-body break-words whitespace-normal leading-[1.7]">One
of the things I love about FreeBSD is its simplicity and clarity
of commands, which stands in contrast to some other operating
systems. I hope this improvement can be implemented without adding
undue complexity to freebsd-update.</p>
<blockquote type="cite"
cite="mid:SA1PR11MB8811F2246BDB5E010B833854E60A2@SA1PR11MB8811.namprd11.prod.outlook.com"><br>
As a side note, trying to upgrade a non-BE system to use a BE
layout as deep boot environments was one of the few times in over
20 years of using FreeBSD as my desktop that I hit a state where I
had to reload from backup. it was a mix of problems with my
layout, I think I forgot to manually specify -r sometimes when
migrating, managing, and/or experimenting, and I'm not sure that
beadm has any support for deep boot environments (If wrong, I'd
love to learn how its done and managed). Doesn't help that I
didn't initially understand what was actually going on. Once in
place and working properly its a pretty slick thing but its not a
replacement for full pool snapshots and backups. The shallow boot
environments seemed like a downgrade to my other use of ZFS layout
and properties so that is why I went for deep. Upgrades go wrong
so rarely that I'd likely have passed on BEs if I had to switch to
shallow to use them. I've had some other ideas for it concept too
like making multi-architecture boot media seems plausible.
<br>
Over the years of mostly tracking stable some stuff did break
with updates but that was rarely anything I didn't already find
about from reading /usr/src/UPDATING or heard about on a mailing
list. I can always download and build an update but not install it
until later if I was actually worried so there was more time for
issues to be brought up. I'm much more concerned about Windows
updates breaking family members computers or what may happen next
on a ddwrt upgrade than what happens if I install the next FreeBSD
updates. It does take time to go through things like UPDATING on
larger upgrades and I manually build ports on my now quite
outdated desktop so build times and reading has me delay it longer
than needed though looking back it seems the reading is not much
more effort than a minor skim with little needed interaction and
further steps from me.
<br>
<br>
I've had 1 friend and 2 family members run FreeBSD on computers
over those 20 years. Friend lost recovery media and as a temporary
workaround on hard drive failure knew it wasn't Windows easy and
I'd be there to help with questions but found other computer
people were impressed when they copied+pasted commands from the
handbook and they enjoyed that they got some 'upgrades' to their
tasks compared to their previous Windows offerings. Only went back
to Windows because the next computer came with it. One family
member seemed to enjoy it to see something different and get some
non-Microsoft playtime; stopped using it on next computer to
simplify things. The other family member took up my offer of
trying it as their fileserver at his small business and I'd put
Windows on if needed; I had to come up with fixes to make it work
how he wanted but the calls that I feared of the FreeBSD box
failing him always turned out to be things like a bad network
switch/cable or a simple fix; no longer used because the business
was sold and next owner wanted to go to something different he
knew (probably Linux but I forget). Onsite or not, upgrades didn't
intimidate me on there and I didn't have ZFS of boot environments
on them if memory serves.
<br>
<br>
</blockquote>
<br>
<p
class="font-claude-response-body break-words whitespace-normal leading-[1.7]">I
also agree that FreeBSD's update system is outstanding and highly
reliable. This is something that would be difficult to achieve on
operating systems where the kernel and base system are developed
separately. In practice, major updates on distributions such as
Ubuntu often fail to handle the complexity of such a split
architecture, leading to frequent problems and forcing users to
reinstall from scratch, much like Windows.</p>
<p
class="font-claude-response-body break-words whitespace-normal leading-[1.7]">I
quietly hope that Linux users who have grown tired of this
situation will find their way to FreeBSD. The barrier to moving
from Linux to FreeBSD is far lower than the barrier from Windows
to Linux, after all.</p>
<p
class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Takashi</p>
</body>
</html>
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1ea23792-d34a-4cb3-a20e-cb4040fd8f4a>
