A step-by-step guide to installing FreeBSD with bsdinstall: keymap, hostname, network, package set selection, and partitioning. You will compare the modern ZFS default with traditional UFS, understand the partition layout, and choose the GPT boot manager that suits UEFI.

In the previous episode 2, you got to know the FreeBSD architecture: the base system, ports, packages, and core components. Now it's time for the most fundamental practice — installing FreeBSD from scratch with bsdinstall. This is the moment where theory meets reality.
FreeBSD's installation is a menu-based wizard process called bsdinstall. Although it looks simple, the decisions you make here — especially about partitioning — will affect your system for years. This episode guides you through every step with an explanation of why, not just what.
Make sure your VM is set up with UEFI and at least 2 GB RAM, as prepared in episode 0. Boot from the ISO image and choose the Install option from the loader menu.
1. Boot Multi User [Enter]
2. Boot Single User
3. Escape to loader prompt
4. RebootIf you use a VM with BIOS firmware, the menu looks a bit different, but the flow is the same. Select the first option to start bsdinstall.
The first step is to choose a keymap. For an Indonesian keyboard, pick a suitable layout, for example us or de, depending on your physical keyboard. This choice can be changed later via kbdmap, so don't worry too much about getting stuck.
The hostname is your machine's identity on the network. Choose a descriptive name because it will appear in the shell prompt and be sent to the DHCP server:
ns1.example.localUse a name that clearly shows the machine's role. Naming a production server just server will confuse you when managing many machines.
bsdinstall will ask whether the network should be configured manually or via DHCP. For a local lab, DHCP is the fastest choice. For servers that need a static IP, choose manual and fill in the IP address, netmask, gateway, and DNS.
Info
The network configuration chosen here is saved to /etc/rc.conf and can be changed anytime with sysrc. Don't worry about choosing wrong — you'll learn to manage networking fully in episode 10.
bsdinstall offers several initial package sets:
For learning, just choose the standard set. ports and src can be added later without repeating the installation.
This is the most important decision in the installation. bsdinstall offers two main schemes: ZFS (modern default) and UFS (traditional).
The ZFS scheme creates a single pool with boot environments, snapshots, compression, and automatic checksums. bsdinstall guides you in creating the vdev according to your needs: a mirror for redundancy, or a single disk for a simple lab.
[ ] Auto (ZFS) <-- choose this for the modern default
[ ] Manual (UFS)
[ ] ShellWith ZFS, bsdinstall partitions the pool automatically: a root dataset for the system, swap as a ZVOL, and a dataset for /tmp. You don't need to bother manually calculating partition sizes.
UFS is the classic FreeBSD filesystem. For UFS, bsdinstall (or the manual scheme) creates classic partitions:
| Mount point | Purpose |
|---|---|
/ | Root system |
/var | Logs, spool, and changing data |
/home | User home directories |
swap | Virtual memory |
The advantage of UFS is simplicity and abundant documentation. The downside: no snapshots or native checksums like ZFS.
Warning
If you only have one disk and choose ZFS, boot environments still work, but you lose redundancy. That's fine for this learning lab, but for production always use at least a mirror (two disks) as discussed in episode 8.
bsdinstall offers the BootMgr boot manager, which handles multi-boot and kernel selection. With UEFI firmware, FreeBSD uses the ESP (EFI System Partition) and the GPT partition format. On legacy BIOS, the MBR scheme with BootMgr is also still supported.
[ ] Install BootMgr
[ ] Standard (no BootMgr)Choose Install BootMgr — this gives you flexibility for multi-boot and boot environments. ZFS boot environments will later depend on a well-managed bootloader.
After installation finishes, bsdinstall asks for a root password and the first user setup. Create a user with access to the wheel group so you can run su later. After rebooting, verify the system:
uname -a
freebsd-version
pkg -v
zpool statusSuccess
A system that boots successfully and shows a login prompt is a major achievement. You now have a pure FreeBSD — the foundation you'll build on throughout this series.
Some common problems during installation:
kbdmap to fix the layout after logging in.kbdmapIn this episode 3, you installed FreeBSD with bsdinstall: choosing the keymap, setting the hostname, configuring the network, picking the package set, and — most importantly — making the partitioning decision between modern ZFS and traditional UFS. You also chose the boot manager that suits UEFI/GPT.
Key takeaways:
uname, freebsd-version, pkg -v, and zpool status.In the next episode, episode 4, we'll cover package management: pkg & ports — how to install, search, update, and clean software, the difference between binary packages and building from source, and when to use ports. This is a skill you'll use in almost every following episode.