Install FreeBSD operating system

FreeBSD operating system

Install FreeBSD operating system. A step-by-step article for installing FreeBSD operating system on a desktop.

Topics covered:
  • 1.1FreeBSD installer media
  • 1.2FreeBSD system install
    • 1.2.1FreeBSD boot menu
    • 1.2.2FreeBSD installer
  • 1.3FreeBSD System Setup
    • 1.3.1Sudoers
    • 1.3.2Software update
    • 1.3.3Bash shell
    • 1.3.4System time

Affiliate links

Running a custom FreeBSD web server requires a VPS or a cloud server with root access. Use our affiliate links to purchase a VPS or cloud server from third-party vendors. The affiliate commissions we earn facilitate, Free website access for everyone.

The affiliate links are listed in alphabetical order without any favor. Users are encouraged to refer to the Global Webdynamics LLP Terms of Service governing the Third-party vendors.

1.1FreeBSD installer media

The amd64 is the popular desktop, laptop, and server processor architecture. Visit the official FreeBSD website and download the FreeBSD operating system installer file FreeBSD-<version>-RELEASE-amd64-memstick.img to the download directory. Replace <version> tag with the operating system version that you intend to download. FreeBSD also supports arm64 machine architecture.

The FreeBSD USB memory stick image file doesn't contain the pre-built packages and software applications required for offline installation. For offline installation, use the FreeBSD DVD ISO image file.

On a Unix-like machine, use the dd command-line utility to burn the memstick.img file onto the USB flash drive. Use an Image to USB burner application on a non-Unix-like system to burn the memstick.img file onto the USB flash drive.

1.2FreeBSD system install

Plugin the bootable USB flash drive. Power-on or restart the system. On startup, press the system boot option key (e.g., F10, F11, or F12) a couple of times until the system switch to the BIOS menu. Configure the system BIOS to boot from the USB flash drive. Save the changes and exit the system BIOS to start the FreeBSD installation.

1.2.1FreeBSD boot menu

By default, the FreeBSD boot menu starts with the Boot Multi user option selected. Press the Enter key to start the installation process or wait until the timer countdown for the installation process to auto start.

1.2.2FreeBSD installer

The FreeBSD Installer application will ask for multiple configuration questions during the installation process to configure the FreeBSD operating system. With the default Install option selected on the Welcome screen, press the Enter key to start the installation process.

Following are some of the system configuration questions that a user needs to answer to complete the system installation:

1.2.2-1Keymap Selection

Press Enter key to Continue with default keymap. FreeBSD selects the US keyboard as the default keymap. To choose a different keymap, the user can navigate the Keymap Selection menu using the Up and Down arrow keys to browse the options and select the particular option by pressing the Spacebar key.

1.2.2-2Set hostname

The user must choose the hostname that uniquely identifies a machine (desktop or server) on the network. The hostname can be a fully qualified domain name (FQDN), e.g., dev1.example.com. If the machine is for personal use or application development, the user can name the machine as localhost.

1.2.2-3Distribution select

Select the lib32 libraries and ports tree options for any generic installation. Optionally select the src (kernel and userland source code) component if the user needs to develop the kernel modules or device drivers.

1.2.2-4Partitioning

Select Auto (UFS) (Guided Disk Setup) for the disk space allocation. UFS stands for Unix Files System. If there is more than one disk on the system, choose the FreeBSD installation disk.

  • Partition: Select Entire Disk and press Enter. On the Confirmation window, select Yes. This action will erase the entire disk.
  • Partition Scheme: Select GPT (GUID Partition Table) as the disk partition schema. The older systems that are not compatible with GPT must choose MBR (DOS Partitions).
  • Partition Editor: Review the disk partition schema setup. Select the Finish and press Enter. On the Confirmation window, select Commit. The installation process will start by fetching the distribution files and installing them on the system.

1.2.2-5Set root password

The FreeBSD system, by default, has a root user. The root user will have all the superuser privileges for conducting any system transaction. In this step, set the root user password.

1.2.2-6Network configuration

Choose either Ethernet or Wireless network interface to configure. Select OK, and press Enter. If the wireless network interface is selected, then in the next Network Selection window, select the wireless network SSID. In the WPA Setup window, type the WPA2 password for the SSID.

  • IPv4: Choose the IPv4 network interface by selecting Yes and pressing Enter key.
  • DHCP: Select Yes and press Enter to enable DHCP. The DHCP server will dynamically configure the IPv4 network configurations.
  • IPv6: Select No to disable the IPv6 network interface.

1.2.2-7Time zone selector

Use the Up and Down arrow keys to select a region and then a country. Next, confirm the country's Time Zone code by selecting Yes and pressing Enter. In the next Time & Date window, choose a current date (month, year, and day), select Set Date, and press Enter. You may skip the Set Time section by selecting Skip.

1.2.2-8System configuration

Navigate the system services list using arrow keys and select the services that need to start on system boot by pressing Spacebar. Select the following services: sshd, moused, ntpd, powerd, and dumpdev. Select OK, and press Enter.

1.2.2-9System hardening

The user may choose one or more system hardening (security) options to enhance FreeBSD system security. Select disable_sendmail (Disable Sendmail service). Select OK, and press Enter.

1.2.2-10Add user accounts

To add a new user to a system (this user will have fewer privileges than the root user), select Yes and press Enter. Except for the following fields, choose the default value by pressing Enter.

  • Username: freebsd
  • Full name: Global Webdynamics
  • Login group is freebsd. Invite freebsd into other groups? []: wheel
  • Enter password: ****
  • Enter password again: ****
  • OK? (yes/no): yes
  • Add another user? (yes/no): no

The Username is a unique user id required to log in to the system. The Username is case-sensitive and cannot contain spaces. The convention is to choose the lowercase Username (e.g., freebsd).

The Full name is a user's system-wide display name. The Full name can contain spaces. The convention is to format the Full name as a title case (e.g., Global Webdynamics).

1.2.2-11Final configuration

In this step, the user can modify the list of system configuration settings, or if the user is satisfied with the current configurations, select Exit (Apply configuration and existing installer) to apply system configurations.

1.2.2-12Manual configuration

Before the reboot, if no additional system configurations are required, select No and press Enter.

1.2.2-13Complete

Congratulations! FreeBSD installation is complete. Time to reboot the system. Select Reboot and press Enter. On system reboot, the user should slip into the BIOS menu to change the boot option so that the system will boot from the hard disk drive (HDD).

1.3FreeBSD System Setup

On the first system reboot, log in as a root user. The hash ( # ) sign at the command prompt indicates that the user logged in as a root user. The following topics describe the FreeBSD basic system setup before installing the GUI (Graphical User Interface) desktop environment.

1.3.1Add freebsd user

Add the freebsd user if still not added to the system using the adduser command.

Terminal ~ 1.3-1
# adduser
Username: freebsd
Full name: FreeBSD
Uid (Leave empty for default):
Login group [freebsd]:
Login group is freebsd. Invite freebsd into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]:
Home directory [/home/freebsd]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password: ****
Enter password again: ****
Lock out the account after creation? [no]:
Username   : freebsd
Password   : *****
Full Name  : FreeBSD
Uid        : 1001
Class      :
Groups     : freebsd wheel
Home       : /home/freebsd
Home Mode  :
Shell      : /usr/local/bin/bash
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (freebsd) to the user database.
Add another user? (yes/no): no
Goodbye!

1.3.2Sudoers

Executing commands as a root user has unintended consequences if the user is not being careful. The safe and convenient way to execute commands with root privileges is by using sudo (superuser do) command.

Install the following applications: Bash shell, Nano editor, Rsync (file-copying tool), and Sudoers using a FreeBSD package ( pkg ) management utility.

Terminal ~ 1.3-2
# pkg install bash nano rsync sudo

View the list of system users that belong to the wheel group in the /etc/group file. Users that are members of the wheel group are allowed to use sudo. If the freebsd user has not yet been part of the wheel group, add the user to the wheel group by executing the following command.

Terminal ~ 1.3-3
# pw groupmod wheel -m freebsd

# Check wheel group users
# nano -w -c /etc/group
...
wheel:*:0:root,freebsd
...

Uncommenting the following line in the sudoers file will enable all users belonging to the wheel group to use sudo without entering a password.

Terminal ~ 1.3-4
# nano -w -c /usr/local/etc/sudoers
...
## Same thing without a password
%wheel ALL=(ALL) NOPASSWD: ALL
...

Finally, switch the user to freebsd. Now freebsd user can execute commands with root privileges without entering a password every time. The dollar ( $ ) sign at the command prompt indicates that the user logged in as a freebsd (non-root) user.

Terminal ~ 1.3-5
# su freebsd
freebsd@dev1:/root $

1.3.3Software update

Make sure the system is up to date. Update installed software (applications and libraries) from the package manager.

Terminal ~ 1.3-6
# Update installed software
$ sudo pkg update

# Upgrade installed software
$ sudo pkg upgrade

# Get kernel version
$ freebsd-version -k
13.0-RELEASE-p12

# Get userland version
$ freebsd-version -u
13.0-RELEASE-p12

1.3.4Bash shell

The user's current login shell (command interpreter) is in the password file /etc/passwd under the username ( freebsd ).

Terminal ~ 1.3-7
$ sudo nano -w -c /etc/passwd
...
freebsd:*:1001:1001:FreeBSD:/home/freebsd:/bin/sh

Change the freebsd user's current login shell to bash (Bourne-Again SHell).

Terminal ~ 1.3-8
$ sudo chsh -s /usr/local/bin/bash freebsd
chsh: user information updated

# Again, check the login shell
$ sudo nano -w -c /etc/passwd
...
freebsd:*:1001:1001:FreeBSD:/home/freebsd:/usr/local/bin/bash

1.3.5System time

The system sets the current date and time information from the time zone info file /etc/localtime. The zone info directory /usr/share/zoneinfo consists of a collection of zone info files for different regions (zones/cities).

The user can set a system time zone by copying the zone info file to /etc/localtime.

Terminal ~ 1.3-9
# List zone info files
$ ls -l /usr/share/zoneinfo
total 608
drwxr-xr-x  2 root  wheel   1024 Aug 10 13:48 Africa
drwxr-xr-x  6 root  wheel   3072 Aug 10 13:48 America
drwxr-xr-x  2 root  wheel    512 Aug 10 13:48 Antarctica
drwxr-xr-x  2 root  wheel    512 Apr  9  2021 Arctic
drwxr-xr-x  2 root  wheel   2048 Aug 10 13:48 Asia
...

# To set the time to IST
$ sudo cp /usr/share/zoneinfo/Asia/Kolkata /etc/localtime

# To set the time to UTC
$ sudo cp /usr/share/zoneinfo/UTC /etc/localtime

Affiliate links

Running a custom FreeBSD web server requires a VPS or a cloud server with root access. Use our affiliate links to purchase a VPS or cloud server from third-party vendors. The affiliate commissions we earn facilitate, Free website access for everyone.

The affiliate links are listed in alphabetical order without any favor. Users are encouraged to refer to the Global Webdynamics LLP Terms of Service governing the Third-party vendors.