Re: Has the update procedure changed?

From: Kevin Oberman <rkoberman_at_gmail.com>
Date: Sun, 06 Aug 2023 15:05:10 UTC
On Sat, Aug 5, 2023 at 10:51 PM Matthias Apitz <guru@unixarea.de> wrote:

> In the past I was used to use the following procedure to install a new
> kernel and world:
>
>     # cd /usr/src
>     # make installkernel
>     # shutdown -r now
>
>     boot -s from the loader prompt
>
>     # adjkerntz -i
>     # mount -a -t ufs
>     # mergemaster -p
>     # cd /usr/src
>     # make installworld
>     # mergemaster
>     # yes | make delete-old
>     # yes | make delete-old-libs
>
>     # reboot
>
> Now the handbook
> https://docs.freebsd.org/en/books/handbook/cutting-edge/#makeworld
> says only:
>
>     # cd /usr/src
>     # make installkernel
>     # shutdown -r now
>     # cd /usr/src
>     # make installworld
>     # shutdown -r now
>
> Has this changed in past two years?
>
> Thanks
>
>         matthias
> --
> Matthias Apitz, ✉ guru@unixarea.de, http://www.unixarea.de/
> +49-176-38902045
> Public GnuPG key: http://www.unixarea.de/key.pub
>

Wow! Several obvious reasons that this looks just wrong. (Then again, so is
yours in one case.)
1. "mergemaster -p" MUST be run before you build the kernel. (Actually, hte
man page says it should be run BEFORE buildworld and that is what I've
always done although I have never seen a case where it was needed until
buildkernel.
2. While mergemaster(8) is still in the system, you really should be using
etcupdate(8). You also need to understand how a three-way merge is done and
that you  often need to edit the merged file when first running it.  It's
pretty simple to run and rarely is needed after the first run, but it is
critical to do this for /etc files that you have modified. It's generally
just picking which of the two (original/yours) you want in the final file.
The big win with etcupdate(8) is that it only needs to be run once for
modified files in almost all cases.
3. Where is "make check-old" and the other tests to get rid of old files.
Leaving these around can lead to serious issues.
4. If you don't do adjkerntz -i, you might find files installed in the
future which can get REALLY  confusing!

Historically, the final source of truth for all of this is
/usr/src/UPDATING. It has been updated for etcupdate(8) and is handled by
imp@, so I tend to believe it is correct.

OK. Everyone who knows better, please explain why. I didn't mention "fsck
-p" but I'm really paranoid and it really, really should not be needed
unless something goes wrong in the shutdown after installing the new kernel.
-- 
Kevin Oberman, Part time kid herder and retired Network Engineer
E-mail: rkoberman@gmail.com
PGP Fingerprint: D03FB98AFA78E3B78C1694B318AB39EF1B055683