Improving the Installer
At the 2025-06 Kitchener-Waterloo event, we walked through the installation process and identified several shortcomings. We hope that these initial findings, along with this wiki page, will serve as a starting point and inspiration for those interested in making much-needed installer improvements.
Boot loader screen
- There should be some significant visual differentiation on the boot loader menu screen to make it clear that the system is booting into the installer.
- Maybe "FreeBSD Installer" for top-level large text instead of just "FreeBSD", and the figlet text/png should be visually differentiated.
Action Item: Write a gfx-installer.lua similar to gfx-orb.lua, but return a brand entry instead of a logo entry and set loader_brand="installer" in loader.conf
Completed in ac7a19d41ee5eb1271c46fbc620b2f98dffa2230
Booting
- There are many false-positive warnings during the boot (e.g. missing entropy file). Let's fix those.
Action Item: Disable entropy_cache_load in installer loader.conf, probably hostuuid_load as well
Welcome screen
The difference between Shell and Live System is unclear. With some experimenting, we determined that:
Shell drops the user into a shell; when the user exits the shell, they are returned to the installer.
Live System runs login(1), and there is no clear way to restart the installer.
Questions:
Should we eliminate Live System and have an option in the loader boot menu instead?
Note: Menu item easy to add with a /boot/lua/local.lua in the installer image; maybe just swap out the single user menu entry for the installer image?
Since Shell is available at various points during the installation to allow manual tweaks, do we need one at the start of the installation at all, especially given the user can switch to another vty if necessary?
Shell
- The mount point is 15_0_CURRENT_AMD64_BO, i.e., the volume label is cut off.
Keymap Selection
There's a mismatch between the keymap listed in the Test menu option versus the keymap selection, e.g., be.acc.kbd versus Belgian (accent keys).
It seems Space and Enter perform the same action here, but different actions at other steps.
Hostname
Better handle FQDN (maybe append .localdomain and reprompt)
- Clearly explain that a full domain name is ok
pkgbase question
- Start migrating to pkgbase by default
- Make it easy to choose/enter a custom pkgbase URL
Network Installation
- Maybe skip this screen?
- Move networking setup/questions earlier
- Networking config should handle the case where you restart the installer better, and the network is already configured
Display full WiFi network names (SSID or BSSID for hidden networks). Right now only portion of WiFi name is displayed and the list may consist of the same strings for different networks.
Network Configuration
- Auto / Manual?
- Auto does DHCP etc. without prompting
- Why do we prompt for search/resolver after DHCP?
Partitioning
A is both Auto (ZFS) and Auto (UFS)
- Auto options are not really auto, should just be ZFS and UFS
- Add gparted like functionality for disk partitioning when FreeBSD is (side)installed along existing operating systems. This tool could also be used in service and recovery scenarios.
- Add paritioning for use with (encrypted) ZFS pools, next to existing operating systems, for now this in possible only when setting up stuff by hand from shell while default track is to use full disk (not always possible/desired).
- ZFS pool configuration: Add ZFS partition(s) type pool configuration i.e. mirror, strip, raidz.
- Partition Clone: partition table from one disk to other disks (setup of new hardware with multiple (blank) disks).
- UEFI boot on mirror: Setting up UEFI boot partition on multiple disks + configuration / sync (useful for RAID-Z setups).
Swap Protection: clearly mark the SWAP partitions (i.e. freebsd-swap[0..n]) to be verified by OS before use. Currently when encrypted swap is selected during install, partitions are not marked, disk/controller swap/replace/reorganization can result in using wrong disk partition as swap -> data loss.
- Boot partition size size set (beyond recommended minimum size). This may be useful for multi-boot UEFI enviroments where more data needs to land to EFI BOOT partition. Is resize also needed for non-efi boot partition?
ZFS Configuration
- Pool type / disks -- awkward to get started with one disk
- If only one disk, do not ask mirror/stripe etc.
- Too much information / too many questions
Default is Install but Pool Type/Disks is stripe: 0 disks and won't do anything
- Maybe start with focus on Pool Type/Disks
- Swap Size: 2g
- Base on physical memory and disk size
- Too large (which isn't all that large) ends up with a boot warning
- Would prefer the swap at the end of the device, maybe this is a better default for new systems?
- What happens with swap on multiple disks? Swap partition on each. Do we use them?
Various console spam (e.g. enforce_chs 0 -> 0)
- Enable install on ZFS partitions / data pool aside to existing partitions. Currently encrypted ZFS is only possible on full disk, while there may be partitions with other OS to be used untouched.
- ZFS pools configuration (i.e. mirror, strip, raidz).
pkg Installation
pkg output is too long [11/385] Fetching FreeBSD-netmap-15.snap20251231231.pkg: 100% 5 MiB
- How much disk space is required?
- No feedback upon failure (error message is hidden -- just brings dialog box reporting failure)
- Make it easy to choose/enter a custom pkg URL
Intended Use
- This functionality should allow selecting intended use of the target installed system (i.e. desktop, server, etc) so the workstation is ready to use after install.
- This may be used after installation too if someone skips that point during initial install.
- This will help first contact users of FreeBSD not to land in shell asking "what do I do now" but have operational workstation.
- Easy customization of target use (i.e. here is the installer run it on 100 machines and all will be ready to use by our organization).
- Bare Metal: do not install anything additional, I just want the base system.
- Desktop:
- Xorg or Wayland or Terminal?
- Terminal: vim, tmux, mc, wget, curl, links, lynx, mpv, vlc, ocp etc.
- Window Manager: KDE, GNOME, XFCE4, Enligthenment, LXQT, etc.
Office: Firefox, LibreOffice, VLC, AudaCity, etc.
- Software development: some GUI IDE, vim, tmux, mc.
- Embeded: adruino, arm-toolchain, riscv-toolchain, etc.
- Mutimedia: VLC, Audacity, Milkytracker, Soundtacker, MIDI utils, etc.
- Games: list of games.
- etc.
- Server:
- WWW: Apache, Nginx, PHP, Python.
- File Server: Samba, NFS, etc.
- VPN: OpenVPN, Wierguard, etc.
Timezone Selection
- Ensure the common case for each region is offered first
- Why is timezone after all of the installation?
System Hardening Menu
Options are cut off e.g. Disable reading kernel message buffer for unprivil
Firmware
- 5s delay to report no firmware
User Addition
- Ugly, not done via bsdinstall
Misc
- Network does not work if Wi-Fi needs captive portal use
New User
Asking, Invite some_user into other groups? []: but it's not expecting a yes/no answer — it's a list of groups to which the user should be added. We should ask the proper question.
Maybe:
Login group is jrm. Space separated supplemental groups (Enter to accept) []:
Is the empty box "[]" in the question useful? Is it ever not empty?
Migrate to FreeBSD
- Because of Win11 not running on decent but older machines people look for alternatives. This can be leveraged to bring whole new crowd of users to the FreeBSD community desktop (LDWG).
- Minimal installer path for non computer users with all complex setup questions hidden by default but possible to select when needed.
- Resize existing partitions so that FreeBSD can be installed on the same disk.
- Copy existing user data from old system partitions (i.e. user downloads documents music videos, maybe other places to select, maybe some backups of application settings, etc).
- Ask if dual boot is desired to keep old system "just in case" or remove old system and resize FreeBSD partitions to fill in the free space. If old system is kept then provide easy way to remove it after some time when user is ready.
Provide set of packages to install (i.e. KDE, LXQT, XFCE, desktop environments, productivity packages such as LibreOffice, Firefox, Chromium, VLC, OBS, education, science, math, music, etc). From my experience non computer people feel best in KDE.
Bugzilla PRs
With Keyword install
... with patches
Assigned to sysinstall@FreeBSD.org
Phabricator DRs
DRs citing the string bsdinstall