Page MenuHomeFreeBSD

release: create a bootable image with the graphical installer
Needs ReviewPublic

Authored by on Apr 29 2024, 12:35 AM.
Referenced Files
Unknown Object (File)
Thu, Jun 13, 6:28 PM
Unknown Object (File)
Wed, Jun 5, 11:41 AM
Unknown Object (File)
Sun, Jun 2, 5:38 AM
Unknown Object (File)
Mon, May 27, 2:14 AM
Unknown Object (File)
May 10 2024, 7:35 AM
Unknown Object (File)
May 1 2024, 8:01 PM
Unknown Object (File)
May 1 2024, 12:47 AM
Unknown Object (File)
Apr 30 2024, 2:22 PM



This commit adds an "installer" target to the amd64 release directory, generating a redistributable bootable image containing the graphical installer. This includes a graphical live environment, which currently defaults to the DeforaOS desktop environment. This should probably be changed for something lightweight enough while also more familiar to regular end users, such as XFCE.

The images currently generated are slightly below 4 GB in my tests.

This review depends on D44279, D44280, D44670, D44671, D44672, D44673, D44674.

Test Plan

To build:

src# make buildenv
Entering world for amd64:amd64
src# (cd release && make installer)

Possible way to test:

$ qemu-system-x86_64 -M type=q35,accel=hvf -cpu host -smp 2 -m 1024M -vga virtio \
        -drive if=none,id=usbstick,format=raw,file=installer.img \
        -usb \
        -device usb-ehci,id=ehci \
        -device usb-tablet,bus=usb-bus.0 \
        -device usb-storage,bus=ehci.0,drive=usbstick

Diff Detail

rG FreeBSD src repository
Lint Skipped
Tests Skipped

Event Timeline edited the summary of this revision. (Show Details)

This avoids an issue with makefs(8) when building without a manifest file. (e.g., when building as root)
Consequently it should work both when using a manifest file as well as without, although it still requires root privileges in both cases, for e.g., chroot(8) and mount(8).

I feel like if you restructure things you should just be able to use the existing

  • make install the tree of config files
  • Have a script to install a per-arch set of packages
  • Then I don't think there's anything that needs to be done differently for the actual image part?

Please just put this in the existing rc.local and make it detect which it is at run time, having a second copy is a bad idea, and it's even worse when it's embedded as a heredoc.


This is always true?


Please just have a tree of config files that get overlaid (and if you do it with you can pick up all the METALOG bits for free)




Space after # for comments


This will make both the graphical installer and the primary serial console think they're the primary installer and run any automated installation config. Only one can be the primary.