Operating System

The single most important step that one can take toward using free software is to install a free operating system.

NOTE: While ALL devices on which one installs and runs programs should use 100% free software, this page will focus on desktops/laptops/servers.

An operating system must consist of all of the basic userland utilities necessary for a functional system, as well as the kernel, which allows the software to communicate with the hardware. There exist multiple combinations of programs that can be used to form a complete free operating system:

  • The GNU system was the first free operating system project, started in the 1980s. The GNU system provides all of the userland programs for a free operating system, but the GNU project’s kernel (“the Hurd”) has been a work in progress for decades and is not the most practical option for general use.
  • Multiple BSD distributions provide a free base system, but they also include non-free software in their default repositories and/or add non-free binary blobs to the kernel during installation.
  • The kernel of FreeBSD, at its core, is fully free. It is possible to use this de-blobbed kernel in combination with GNU or BSD userland in order to build a fully-free operating system, but few such implementations exist.
  • Linux is a free kernel with more extensive hardware support than the BSD kernels, and the combination of GNU+Linux (also called GNU/Linux) is the most commonly used free operating system. This page will focus on GNU+Linux.

Choosing the right hardware

It is worth selecting freedom-respecting hardware in order to ensure optimal compatibility with a fully-free GNU+Linux system. This means that the hardware should not require the installation of any non-free drivers or firmware in order to function. For machines with components that DO require such non-free code, the ability to replace these components is very important.

In addition to a free operating system, a computer system that gives the user as much freedom as possible would be comprised of free and open-source hardware and a free BIOS, but this is not always easy to achieve, and it is beyond the scope of this page.

Free GNU+Linux Distributions

You have choices.

There are MANY GNU+Linux distributions, but most include some non-free software. This makes the choice much easier! Here is a list of fully-free GNU+Linux distributions, which have a variety of goals and development models and use cases. As far as freedom is concerned, any of them will do.

Most people will probably prefer a system that is well-documented, stable, not overly complex, and compatible with a range of hardware and free software. There are two more GNU+Linux systems that are not on the list linked above but are worth considering for these factors.

Debian

Debian is a mature and popular distribution known for its stability and its support for several CPU instruction-set architectures (including POWER and RISC-V). However, it requires a bit of extra effort in order to ensure that the installed system is fully free. One must use the Expert Install option included on the netinst image and use the boot option documented here in order to avoid software from the contrib, non-free, and non-free-firmware repositories. All software included in the base system and the main repository must comply with the Debian Free Software Guidelines. For those needing out-of-the-box support for non-x86 CPUs, Debian is an option to consider.

One potential drawback of Debian is its required use of a program called systemd which some consider unnecessarily complex and which (at least partially) breaks compatibility with otherwise-similar operating systems that do not use it.

Devuan

Devuan is a fork of Debian which avoids the unnecessary complexity and (some would say) insecure maintenance nightmare of systemd. It provides several choices of init system instead of systemd: the old-fashioned sysvinit (the default) works fine and is well documented; runit and s6 are more modern, simple, and fast; sinit provides the bare minimum and needs to be used in conjunction with other programs for service supervision. As with Debian, all software included in the base system and the main repository must be free. In order to ensure that no software from contrib or non-free or non-free-firmware is included, one must use the Expert Install option included on the netinst image, but unlike Debian, editing the boot options is not necessary.

Devuan currently (as of 2024) only provides installation media for i386 and amd64.

Preparing installation media

Read the instructions for your chosen distribution, but generally you will download a .iso file which contains an entire filesystem that needs to be written to a medium such as a CD/DVD, USB flash drive, or SD card. This is NOT the same as copying the file. For a CD/DVD, you can use any burning software that can handle .iso files. USB flash drives and SD cards are reusable, and almost every desktop/laptop/server will have a USB port, so using a USB flash drive will make sense for most people. Two simple ways to write the ISO image to a USB drive (or SD card) are:

  • using the dd command: dd if=/path/to/file.iso of=/path/to/device bs=1M && sync
    substituting the actual file and device paths, e.g:
    dd if=/home/rms/Downloads/devuan_daedalus_5.0.1_amd64_netinstall.iso of=/dev/sdc bs=1M && sync
  • using specialised software such as Balena Etcher which provides a graphical user interface.

This process will erase the entire target device. Make sure that you have selected the right device before writing the ISO image. There is no going back.

Installing

Follow the instructions provided on the website of the distribution that you are installing.

The installation procedure will include configuring keyboard, language, time, and network settings, setting the root (admin) password, selecting a username and password for the normal user account, partitioning the storage device, and selecting additional software to be installed. Most of it is fairly straightforward.

Partitioning

Letting the installer partition the storage device (hard disk) automatically does not always result in reasonable defaults, so manual partitioning is recommended. In most cases, up to four partitions will be used:

  • the EFI system partition for systems booting in EFI mode rather than legacy BIOS mode (check your BIOS settings)
  • the root partition where the operating system itself is installed
  • the optional home partition for keeping user files and settings separate from the OS
  • the swap partition for providing additional cache space outside of RAM

We will assume that there is nothing worth keeping on the device being partitioned. Installing multiple operating systems on the same device is beyond the scope of this page.

The first step is to wipe the device by creating a new partition table. If the installer was booted in legacy BIOS mode, then the new partition table should be MBR; if the installer was booted in EFI mode, then the new partition table should be GPT. New partitions can then be created by selecting the free space and choosing to create a new primary partition at the start.

On the new partition table, the first partition needs to contain the information required to boot the operating system. On legacy BIOS systems, this is the root partition, and on EFI systems, this is the EFI system partition. Legacy BIOS users can skip to the next paragraph. An EFI system partition generally doesn’t need to be very large, but the convention is to allocate 200-300 MB just in case. This should be formatted as vfat/fat32, but the format may be selected automatically after choosing to use it as the EFI system partition. Flags should be “boot” and “esp” and may be selected automatically. The mount point is /boot/efi, and this too may be selected automatically. Leave filesystem options as the defaults.

The user home directories can be included on the same partition as the root of the operating system, or they can be on a separate partition. In the former case, there is no need to consider how much space to allocate to each, but if the operating system needs to be reinstalled, all of the users’ files will be erased and will need to be restored from a backup afterwards. In the latter case, the operating system can be reinstalled without deleting users’ home directories (which should be backed up anyway, just in case!), but the two partitions will fill independently of each other, so one must consider how much space to allocate to each.

The root partition will be formatted as ext4 with a mount point of / (“root”). The required size will vary based on the amount of software to be installed, but for most use cases on modern systems, 20-30 GB should suffice if a separate home partition is used. If not creating a separate home partition, the root partition should use all of the remaining free space minus the amount to be used for swap (see below). Add the filesystem option noatime in order to reduce writes and slightly improve performance and extend the storage device’s useful lifespan. If the device being partitioned is a solid-state drive (SSD), also add the discard option. (There are more “correct” ways to enable TRIM, but for most people, this is good enough.)

If creating a separate home partition, it can use all of the remaining free space after the root partition minus the amount to be used for swap (see below). It will be formatted as ext4 with a mount point of /home (hence the name). As with the root partition, add the noatime option. If using a solid-state drive (SSD), add discard as well.

In general, it is advisable to use a swap partition in case the system runs low on available RAM during operation. Sufficient swap also allows for hibernation functionality (suspending a session to disk in order to power off the machine and resume later). There is no unanimous consensus on swap size, but here are some guidelines that should be plenty for most people:

RAM Swap Swap if allowing for hibernation
≤ 1 GB 3.000 * RAM 4.000 * RAM
> 1 GB - 2 GB 2.000 * RAM 3.000 * RAM
> 2 GB – 4 GB = RAM 2.000 * RAM
> 4 GB - 8 GB 0.750 * RAM 1.750 * RAM
> 8 GB – 16 GB 0.500 * RAM 1.500 * RAM
> 16 GB - 64 GB 0.250 * RAM 1.250 * RAM
> 64 GB - 256 GB 0.125 * RAM 1.125 * RAM
> 256 GB ≥ 16 GB Hibernation not recommended

Choosing to use the partition as swap space will result in automatic configuration, so no mount point or filesystem options need to be selected.

Additional Software

Many installers will give the option to install additional software on top of the base system. Examples include a web server, a print server, or a desktop environment. Those who need any of this software may want to install it this way for convenience, but it will also be possible to install it later (after booting into the new system).

Some installation images will automatically install a particular desktop environment, and others will install only the base system by default. For those who want a graphical user interface (GUI), we can recommend the following for their avoidance of unnecessary entanglements and their ability to run on relatively modest hardware:

  • LXQt provides a traditional desktop metaphor that should suffice for most users. By default, it includes a single panel along the bottom of the screen, an applications menu, desktop icons and backgrounds, floating windows, swappable themes, a file manager, a terminal emulator, and an interface for configuring various settings. The default file manager (PCManFM-Qt) seems to have some issues, but other file managers such as Dolphin can be installed and used instead.

  • A stand-alone window manager will provide the basics of a graphical user interface (application windows and some sort of menu) while excluding some of the extra features of a full desktop environment. This will generally require fewer system resources and is an option to consider especially for those using an older or low-end machine with a small amount of RAM. Configuration is usually more text-based. Many different window managers are available, so we won’t list them all here. i3 is a seemingly-popular tiling window manager with goals of simplicity, stability, and excellent documentation. dwm is a minimalist window manager that offers dynamic switching between floating and tiled layouts. Awesome is intended for advanced users, allowing for extensive customisation and an efficient keyboard-driven workflow. Fluxbox is an easily-configurable floating window manager that is very light on system resources.

  • SDDM provides a graphical login screen with customisable themes.

Next Steps

After installing your free operating system, you will remove the installation media and reboot into your new system. It will be ready to use right away, though some configuration changes will improve security, performance, and energy efficiency.

The pages which follow this one are not ready yet. We’ll provide information about different free software tools and how to install and configure them.

In general, we recommend reading the documentation for the operating system that you have installed. You may also consider reading the manual of any program that you don’t understand.