Skip Navigation

Linux Desktop Project

For this project option, you will install and run and advanced Linux distribution on a desktop or laptop computer. You will configure this system with the day-to-day software that you will need to use this system as your primary computer.

Page Contents

Required Technology

To be able to complete this project successfully, you will need:

Please note that this project option is NOT recommended under the following circumstances:

An older laptop or desktop computer is sufficient for running Linux, and switching it over to Linux is a great way to reuse old hardware. However, if the system is positively ancient and can only run 32-bit software, then you will likely need to choose Slackware as your distribution for this project.

Background

If you buy a computer off the shelf today and run it with whatever software stack came on it, chances are that the system is reporting your activity to third parties. It is easy to find criticisms of Windows 11 on sites like TechRadar, TweakTown, and Digital Trends, just to name a few that I found on the first page of search results. However, macOS has its own built-in telemetry, and Apple systems aren’t always private, despite the company’s marketing.

To have any sort of privacy on your system, you must replace the manufacturer-supplied software stack with something else. That “something else” is basically limited to a Linux distribution or one of the BSD operating systems. Since Linux hardware support is significantly better than FreeBSD and its cousins, it is usually easier to get Linux working on commodity systems. In addition, popular commercial applications, video games, and streaming services are more likely to run properly on Linux than on BSD.

Not all Linux distributions are created equal, and there are fundamental tradeoffs between distributions and software stacks. One worrisome trend from the commercialization of Linux in recent years has been the emergence of tightly coupled, minimally cohesive software applications and services that cram too many unrelated tasks into a single system process. The poster child for this type of poor system and software engineering is systemd, which is a replacement for init(1) that also does a bunch of completely unrelated tasks.

The fundamental problem with having a tightly coupled software application running in place of init, is that this software occupies a privileged position in the system. It runs as PID 1, which is the first process created directly by the kernel at boot time. As such, this process has root execution privileges and is the direct or indirect ancestor of all other processes on the system. Any bugs in this process can bring down the entire system. Any vulnerabilities in this process can easily compromise the entire system. And systemd has a huge attack surface due to the large collection of unrelated functionality that has been integrated into it. For more detail, see the No systemd website.

Should you choose this project option, your first task will be to identify and select a non-systemd Linux distribution to install on your computer. There are some options linked from the No systemd site in the previous paragraph, but a more comprehensive list may be found at Without Systemd. Please note that not all these distributions are necessarily still active, nor do the active ones necessarily ship the latest and best software. You will need to make a judgment call based on your own interests to determine which distribution to choose. Note that I do not recommend using BSD systems for this project, due to issues with hardware support. Since you will need to install various pieces of productivity software, you should not choose an Android or Chromium/ChromeOS derivative. Similarly, Hurd, Plan 9, Haiku, ReactOS, and other non-Linux-based alternatives aren’t really usable as daily systems. Remember that the goal of this project is to have a system that you can use for productivity and entertainment, allowing you to replace a Windows or macOS environment.

Project Requirements

A successful implementation of this project:

  1. Boots directly on a laptop or desktop computer. This project is intended to replace Windows or macOS, so it is NOT sufficient to use a virtual machine.
  2. Has a working graphical user interface (GUI). This interface can be a desktop environment (such as KDE, Xfce, MATE, or Gnome) or a lighter weight window manager or Wayland compositor.
  3. Has a working firewall that blocks access to all incoming ports, except for related and established traffic and for the ICMP packets required for IPv6.
  4. Has a working LibreOffice suite.
  5. Has a working Firefox browser that can play DRM-encrypted videos from streaming services, has uBlock origin installed, and is configured for privacy.
  6. Can play at least basic video games. Open source games are fine for satisfying this requirement, although installing Steam and running at least one game from your Steam Library is also acceptable. Your hardware and preferences will determine what games will run.
  7. Is personalized and customized with colors, themes, artwork, wallpaper, or other content of your choosing.

Completion of this project demonstrates the ability to integrate system components to build a custom desktop environment.

Specific Rules for This Project

  1. A non-systemd Linux distribution must be used. This requirement is in place for several reasons. First, see the background information about the attack surface of systemd, above. Second, prohibiting systemd eliminates “beginner” distributions like Ubuntu. Finally, on a related note to the previous point, experience with a distribution other than Ubuntu is important to be taken seriously in an interview for a Linux-related position.
  2. This project must run directly on real hardware and not inside a virtual machine. A lightweight environment on old, recycled hardware is perfectly acceptable.

Academic Integrity Rules

  1. Generally speaking, this project is to be completed INDIVIDUALLY. You may use any Internet source for research purposes, and you may share and receive information through the course forum activity (in fact, sharing information through the forum is a separate requirement of this course). However, you are to implement your own solution to this project and produce your own videos.
  2. You MAY work with another student (or multiple other students) if each of you completes a SEPARATE project option in this course.
  3. If you’re taking this course with your best friend, roommate, family member, or other close associate, it is advisable to choose separate projects to avoid any appearance of questionable activity. As a bonus, you both will learn more.

Milestones

Milestone 1

For Milestone 1, prepare a video presentation that covers the following items:

  1. Identify and show the computer system that you will be using for this project.
  2. State what kind of CPU is in the computer, how much RAM it has, and how big the storage device (SSD or hard drive) is.
  3. Identify the non-systemd Linux distribution that you will use for the project.
  4. Identify the desktop environment or GUI that you plan to configure and run.

Before submitting, review the Grading Rubric for Milestone 1.

Milestone 2

For Milestone 2, prepare a video presentation that covers the following items:

  1. Show that you have successfully installed the Linux distribution onto the computer.
  2. Demonstrate use of the desktop environment or GUI that you have selected and installed.
  3. Demonstrate that you have correctly set up iptables and ip6tables by running the following commands as root and showing the output:
iptables -S
ip6tables -S

Before submitting, review the Grading Rubric for Milestone 2.

Milestone 3

For Milestone 3, prepare a video presentation that covers the following items:

  1. Using your installed system, demonstrate that you have LibreOffice working. Explain how you obtained LibreOffice (e.g. through the distribution package manager, Flatpak, AppImage, manual download, etc.).
  2. Demonstrate that Firefox is working and has uBlock Origin installed.
  3. Go through the Firefox settings, and show that:
    1. Opening previous tabs/windows is disabled.
    2. Extension and feature recommendations are turned off.
    3. Everything except (optionally) Web search is turned off on the home screen.
    4. A search engine other than Google or Bing (MSN/Microsoft/whatever they’re calling it this week) is configured.
    5. Search suggestions are off.
    6. Cookies are deleted on exit.
    7. History is cleared on exit.
    8. The “shortcuts” feature is disabled.
    9. Telemetry is disabled.
    10. HTTPS-only mode is enabled.
  4. Use about:config to show that the disk cache and browser reset prompt have both been disabled.

Before submitting, review the Grading Rubric for Milestone 3.

Milestone 4

For Milestone 4, prepare a video presentation that covers the following items:

  1. Using OBS Studio or another screencasting application, record your presentation from your Linux desktop. This might not be possible if with an older or low-powered system, in which case you can use your phone instead.
  2. Demonstrate that you can play a video game using your installed system.

Before submitting, review the Grading Rubric for Milestone 4.

Tips and Resources

Laptop Touchpad Issues

If you’re using a laptop, and you find that touchpad scrolling or tapping stops working randomly, create (as root) a file at /etc/modprobe.d/psmouse.conf with the following contents:

blacklist psmouse

Then reboot and check touchpad operation.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.