Typical low-end laptop specs

10+ years old jank from a budget line-up.

  • CPU: Mid-tier/limited (even back when it was released), likely from Haswell era
  • RAM: 8Gb, ancient and unupgradable
  • GPU: iGPU + NVIDIA M-something
  • STORAGE: ~256Gb SATA HDD, that is still somehow works

This post was "inspired" by experience with potatoes like that.

Why Windows is a NO-GO for an old laptops

but Linux do the job.

  • Expectations: OS detects and drives all your hardware properly
    • Reality: Sometimes there just no drivers for your old crap (especially on Wndows 10+). Sometimes drivers are buggy or/and limited, ex. lacking Vulkan implementation for your old GPU, since manufacturer stopped care many years ago. In contrast, linux kernel most likely has driver for your device + some extra fixes, since community still care.
  • Expectations: OS runs stable
    • Reality: Old hardware are well known source of random BSODs on modern Windows. Linux typically behave much better.
  • Expectations: OS receives updates regularly and installs them in non-intrusive way
    • Reality: You know how it is 🙈
  • Expectations: OS has low overhead
    • Reality: Windows always gonna do a lot of stuff in the background (even when you cripple it by “de-bloating”). It’s almost impossible to make Windows do ONLY that ONE particular thing that YOU want. Linux distro can do a great job of standing out of your way.

Other reasons

Choosing the right Linux distro

avoid following the hype.

Grabbing SteamOS and shoving it into your poor potato most likely not gonna end well! Despite being “gaming oriented OS” it is quite HEAVY AND HARDWARE-SPECIFIC. Popular full blown desktop distros like Pop!_OS are also sub-optimal for low-end devices, because of their full blown fat DEs.

Lubuntu can be a quite decent choice, it only takes about 500(Mb!!!) of you RAM and do almost nothing in a background. To my knowledge it is the lightest distro available, that is still easy to install and use. It runs really fast and feels like something from XP era, thanks to LXQt desktop environment.

Further topics are based on experience with Lubuntu 24.04 LTS (Noble Numbat).

Installation notes

  • LTS version will provide packages that are more stable.
  • Minimal installation option is an obvious choice for our use-case.
  • You’ll probably want to opt-out from full disk encryption, since it’s gonna take its toll on performance.

Configuration

We are not going to use Snap or Flatpack for this setup, otherwise we introduce noticeable overheads, as well as some hard to trace issues

sudo systemctl stop var-snap-*
sudo apt remove --purge snapd

echo '
Package: snapd
Pin: release a=*
Pin-Priority: -10
' | sudo tee /etc/apt/preferences.d/nosnap

sudo apt update

Install proprietary drivers if you need to (ex. for an old NVIDIA GPU)

sudo ubuntu-drivers devices | grep recommended 
sudo ubuntu-drivers install nvidia:XXX
sudo prime-select nvidia

Install some packages

sudo apt install procps featherpad partitionmanager qdirstat exfatprogs lm-sensors fancontrol smartmontools mesa-utils libd3dadapter9-mesa libd3dadapter9-mesa:i386 vdpau-driver-all mesa-vdpau-drivers:i386 ffmpeg vlc qbittorrent gamemode

procps: contains “QOL” utilities like pkill and pgrep.
featherpad: lightweight Qt-based text editor.
partitionmanager: Qt version of GParted partition manager.
qdirstat: light and blazing fast disk analyzer (shows where your disk space has gone and help you to clean it up). I wonder why it wasn’t included in Lubuntu by default.
exfatprogs: contain all of the standard utilities for creating, fixing and debugging exfat filesystem on Linux. Also wondering why it’s not out of the box.
lm-sensors: (Linux monitoring sensors) provides tools and drivers for monitoring temperatures, voltage, and fans.
fancontrol: can be used to control the speed of CPU fan.
smartmontools: allows to read S.M.A.R.T. values from most modern ATA/SATA, SCSI/SAS and NVMe disks. In many cases this will provide advanced warning of disk degradation and failure.
mesa-utils: contains essential mesa utilities like glxgears.
vdpau-driver-all: Video Decode and Presentation API for Unix, provides hardware acceleration.
libd3dadapter9-mesa: Gallium3D state tracker that implements the Direct3D9 API. Combined with the gallium-nine branch of Wine or Steam Proton, programs using D3D9 can achieve native (or better) graphics performance.
ffmpeg: a complete cli solution to record, convert and stream audio and video.
vlc: multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming protocols.
qbittorrent: fast and reliable Qt-based BitTorrent client.
gamemode: a daemon/lib combo that allows games to request a set of optimizations be temporarily applied to the host OS and/or a game process.

The only service that is somewhat worth disabling is CUPS (since you’ll probably never gonna use it on gaming machine)

sudo systemctl disable cups.service
sudo systemctl disable cups-browsed.service
sudo systemctl disable cups.socket
sudo systemctl disable cups.path
sudo systemctl disable cups-browsed.socket

What to expect

let’s be realistic.

Expecting drastic FPS increase would be silly. The main benefits here are uninterrupted gameplay and lower latencies, as well as OS that works with your antique stuff and still actively supported. Sometimes you can get moderate boosts for certain titles, but there is obviously no way around hardware bottlenecks. Anyway, here is a very basic representation of what can be achieved:

Environment Average performance increase vs Windows
Native 5%-15%
Translated with Steam Proton* 5%-10%
Emulation 5%-10%

Steam Proton is a way to go for Windows games. Not everything gonna work well, or even launch. But in a lot of cases if it runs, it runs on a par with Windows configuration or better.

Side-notes

  • Get an SSD.
  • It’s preferable to use wired (since most old bluetooth chips are crap) gamepads that has drivers implemented directly in linux kernel (ex. 8BitDo Pro 2).
  • Things that do software rendering and other CPU-intense stuff (ex. emulators), don’t take frequency spikes that well. If you have a very old Intel CPU consider disabling things like Speedstep (current implementation is fine, but back in the early days it was a mess).
  • Try Lakka if you only looking for emulation and want an easy turn-key setup. It is optimized to run on Raspberry Pi and other SMBCs.
  • Lutris can help with an installation of games that are not available on Steam.
  • gamemode provides some additional optimizations on demand, this can be useful when we launching something local from Steam (ex. Retroarch).
gamemoderun %command% 

Steam

Retroarch

  • Use Vulkan or GLCore as display drivers if you can.
  • Use preemptive frames with auto detection to battle input lag.
  • In case you wanna play some retro games that was designed to be played on CRT TVs: try crt-lottes or crt-guest shaders which looks and runs great even on slowest potatoes (use fast or fastest presets).