FreeBSD lands you in a deliberately spartan world. No graphical installer wizards offering to set up your printer, no daemon to fetch updates in the background. The base system is in place — kernel, libc, a small set of utilities — and the rest is yours to install. This guide gets you from "first login" to "ready to use."
FreeBSD is not Linux. They share family resemblance (POSIX, the command line, similar daily commands), but FreeBSD is its own operating system with its own kernel, its own utilities, and its own conventions. Things you "know" from Linux sometimes don't translate.
Step 1: Bootstrap the package manager
FreeBSD ships with a stub program called pkg. The first time you use it, it downloads the actual package manager.
pkg bootstrap -y
The -y says "yes, install pkg without asking."
Step 2: Update the base system
FreeBSD splits its software into two universes:
- Base system — the kernel, the standard libraries, and core commands. Updated by
freebsd-update. - Packages / ports — everything else. Updated by
pkg.
Patch the base first:
sudo freebsd-update fetch
sudo freebsd-update install
This pulls in security and bug fixes for the base system.
Step 3: Configure /etc/rc.conf with sysrc, not nano
/etc/rc.conf is the central configuration file — it controls which services start at boot. You can edit it by hand, but it's safer to use sysrc, which sets values without breaking the syntax.
sudo sysrc hostname="seal"
sudo sysrc ifconfig_em0="DHCP"
sudo sysrc sshd_enable="YES"
sudo sysrc ntpd_enable="YES" ntpd_sync_on_start="YES"
Each line adds a key to rc.conf. The names matter:
em0is your network interface name; yours might bere0,igb0, etc. Find it withifconfig.sshd_enable="YES"means SSH starts at boot.ntpd_enable+ntpd_sync_on_startsets up the clock.
Step 4: Silence the built-in mail server
FreeBSD ships with sendmail on by default. Unless you're running a mail server, you don't need it:
sudo sysrc sendmail_enable="NONE"
sudo sysrc sendmail_msp_queue_enable="NO"
Step 5: Install the daily essentials
sudo pkg install bash sudo git tmux vim curl
FreeBSD's default shell is sh (and tcsh for root). Bash is more familiar if you're coming from Linux. Switch your login shell:
sudo chsh -s /usr/local/bin/bash your-username
Note the path — packages installed via pkg land under /usr/local/, separate from the base system at /usr/. That separation is one of FreeBSD's big organising ideas.
Set up sudo for the wheel group:
sudo visudo
Uncomment %wheel ALL=(ALL) ALL. Then add yourself to the group:
sudo pw groupmod wheel -m your-username
Step 6: Reboot
shutdown -r now
When you log back in, the system is ready: package manager bootstrapped, base updated, network configured, services tidied, shell sane.