---
title: FreeBSD
date: 2024-08-31T08:35:46+02:00
lastmod: 2024-09-28T23:48:06+0000
description:
summary:
tags:
  - freebsd
  - git

#showDate: false
showReadingTime: false
showWordCount: false
showPagination: false
#showAuthor: false
showBreadcrumbs: true

feed_exclude: true
# site_exclude: true
---

Some basic and random information about FreeBSD.

## What I miss on FreeBSD

Currently, I run <kbd>stable/14</kbd> on my X1 Carbon Gen7 laptop.
I do not run this as a daily driver but I insert the BSD disk from time to time
to see if things work better or not.

- stable wifi drivers (I use wifibox for now but I'd love to ditch the
  virtual linux network card)
- ranger quits whenever a key is pressed (haven't found an alternative to ranger
  combined with ueberzug as a command line file explorer (that can preview images))
- generally speaking, the boot time and overall responsiveness is a bit slower than
  on a linux based os
- I never got the scrolling in Neomutt working within Alacritty
- Any sound on the internal speaker sounds like crap. The headphone jack plays fine
  sounds and music, just the internal speaker is a pain to set up and I never found
  a good solution that actually plays nice audio.

## 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 <kbd>[stable/14][2]</kbd> (for now).

[2]: https://cgit.freebsd.org/src/log/?h=stable/14