--- title: FreeBSD date: 2024-08-31T08:35:46+02:00 #lastmod: description: summary: tags: - freebsd - git #showDate: false showReadingTime: false showWordCount: false showPagination: false #showAuthor: false showBreadcrumbs: true feed_exclude: true # site_exclude: true draft: true --- ## Tracking FreeBSD STABLE A quick checklist. Read along [on the FreeBSD website][1] for further information. [1]: https://docs.freebsd.org/en/books/handbook/cutting-edge/#stable As for my understanding only source updates are possible on the STABLE branch, but I still use pkg to install pre-compiled packages -- I will find out if that breaks things. 1. Update sources ~~~console $ doas git -C /usr/src pull ~~~ 2. Check `/usr/src/UPDATING` 3. Go to `/usr/src` ~~~console $ cd /usr/src ~~~ 4. Compile world ~~~console $ doas make -j8 buildworld ~~~ 5. Compile and install kernel ~~~console $ doas make -j8 kernel ~~~ This is equivalent to `make -j8 buildkernel installkernel`. 6. Reboot ~~~console $ shutdown -r now ~~~ 7. Update config files ~~~console $ doas etcupdate -p ~~~ `-p` short explained: > Enable “pre-world” mode. Only merge changes to files that > are necessary to successfully run ‘make installworld’ or > ‘make installkernel’. 8. Again, go to `/usr/src` ~~~console $ cd /usr/src ~~~ 9. Install world ~~~console $ doas make installworld ~~~ 10. Update config files (after world installation) ~~~console $ doas etcupdate -B ~~~ `-B` explained: > Do not build generated files in a private object tree. > Instead, reuse the generated files from a previously built > object tree that matches the source tree. This can be > useful to avoid gratuitous conflicts in sendmail(8) > configuration files when bootstrapping. It can also be > useful for building a tarball that matches a specific > world build. 11. Another one, reboot ~~~console $ shutdown -r now ~~~ System is up to date, following the branch [stable/14][2] (for now). [2]: https://cgit.freebsd.org/src/log/?h=stable/14