Desktop

Ubuntu vs Fedora vs Manjaro: Tested on the Same Hardware

Most Ubuntu vs Fedora vs Manjaro threads turn into an argument about philosophy. I wanted numbers instead, so I installed all three from their own ISOs on the same Proxmox box, gave each the same virtual hardware, and measured boot time, idle memory, the smallest RAM each desktop survives on, the first update, and how far Manjaro’s “stable” branch really sits behind Arch.

Original content from computingforgeeks.com - post 54370

Ran all of this in October 2026 on Fedora 44 Workstation, Ubuntu 26.04 LTS and Manjaro GNOME 26.1, with Ubuntu 24.04 LTS alongside as the older LTS most people still run.

All three ship GNOME as their flagship desktop, which makes this a fairer fight than it looks. The differences come from the base underneath: Ubuntu’s Debian-derived LTS with snaps, Fedora’s six-month release with SELinux on, and Manjaro’s Arch packages held back in its own repos. If you’re torn between two of them, the Manjaro vs Fedora and Manjaro vs Ubuntu sections below go head to head, and the repo lag section answers the Fedora vs Ubuntu vs Arch question for anyone eyeing Arch itself. For a wider shortlist, there’s also the best Linux desktop distributions roundup.

1. Ubuntu vs Fedora vs Manjaro: the measured results

Every row below comes from four identical 2 vCPU, 4 GB VMs, one per distro, after each distro had taken its first full update. Boot and Firefox times are medians of three cold boots.

Ubuntu 26.04Ubuntu 24.04Fedora 44Manjaro GNOME
Kernel / GNOME after updates7.0 / 50.17.0 (HWE) / 46.07.2.8 / 50.57.1.13 / 50.4
Boot to SSH14.2 s14.4 s20.4 s21.2 s
Desktop ready26.5 s24.5 s34.0 s44.2 s
Idle memory used1,147 MB1,227 MB1,277 MB1,226 MB
RAM the guest can use (of 4,096 MB)3,398 MB3,911 MB3,901 MB3,907 MB
Lowest RAM that passed every boot768 MB384 MB768 MB (one fail at 1,024)1,024 MB
Firefox cold / warm start (Fedora still on 156.0.1, the rest on 157.0)3.01 / 1.27 s2.67 / 1.34 s1.95 / 1.28 s1.54 / 1.05 s
Packages installed1,509 deb + 13 snaps1,517 deb + 12 snaps1,916 rpm1,151 pacman
Root filesystem used11.4 GiB (ext4, incl. 3.8 GiB swap file)11.6 GiB (ext4, incl. 3.8 GiB swap file)4.1 GiB (btrfs zstd)8.6 GiB (btrfs zstd, incl. snapshot + cache)
Standard support ends2031-05-292029-05-312027-06-02rolling

The two Ubuntu releases boot fastest, and the gap is bigger than I expected: Manjaro’s screen kept changing for another 18 seconds after gnome-shell started, so it reached a settled desktop last. Idle memory is close across all four, within 130 MB. Ubuntu 26.04 used the least but also had the least left over (2,251 MB available against 2,624 to 2,683 MB on the others), because 512 MB goes to kdump before anything runs. Firefox flips the order. The snap build on Ubuntu was the slowest cold start, and Manjaro’s plain package was the quickest.

2. How I tested

Each distro got its own VM on one Proxmox node: 2 vCPUs passed through as host CPU, 4096 MB of RAM with ballooning pinned (min equals max), a 40 GB disk on ZFS, virtio-gpu for the display and SeaBIOS. I installed from each project’s own media and kept the installer’s defaults, because the defaults are what most people end up running. Ubuntu used its autoinstall seed, Fedora a kickstart that installs the Workstation package group from the netinstall ISO, and Manjaro went through Calamares by hand (erase disk, btrfs, no swap, no office suite). Every VM logs straight into GNOME as the same user, so nobody types a password during a timed boot.

Then each one took its first full update and a reboot before any measuring started. The benchmarks ran one VM at a time with the other three powered off, so they never fought over the host.

  • Boot to SSH: qm start until TCP port 22 answers. Desktop ready: until gnome-shell runs for the user and the screen then stays under 2% changed for 10 seconds, read from screendumps. Median of three cold boots.
  • Idle memory: total minus available, as the guest reports it to the balloon driver, 180 seconds after the third boot. I checked it against /proc/meminfo inside the guest on every VM, and the two agreed within 3 MB.
  • RAM floor: boot at 2048, 1536, 1024, 768 and 512 MB. A size passes when the user’s gnome-shell is running on seat0 at 240 seconds and still has the same PID 60 seconds later. Every step saved a screenshot.
  • Firefox start: a headless screenshot of a local file, timed in the guest 180 seconds after a cold boot. Cold is the first run, warm is the second, median of three boots.
  • Disk: df used on the root filesystem after the update. ZFS numbers from the host weren’t usable here, because without discard the zvol keeps every block the guest ever freed.

This was x86_64 under KVM. Real laptops boot differently (firmware, disk, GPU), so read the boot and memory columns as a ranking between the three, not as numbers your machine will match.

3. Manjaro vs Fedora: a held-back rolling release or a six-month one

This is the matchup people search for most, and it’s closer than the rolling vs fixed labels suggest. Fedora ships a new release every six months and supports each one for about thirteen months, so you upgrade once or twice a year. Fedora 44 reaches end of life on 2027-06-02. Manjaro never needs a release upgrade, but its stable branch does not move continuously either. It moves in batches.

I pulled every stable update announcement from the Manjaro forum for 2026. There were 15 batches between January 4 and September 7, none at all in April, and the longest gap ran 40 days, from March 23 to May 2. On my test date the last batch was 25 days old. Between batches, a Manjaro stable install mostly waits.

Fedora, by contrast, pushes updates through Bodhi every day. That still did not make it the freshest here. Firefox 157 came out on September 29, and by October 2 Ubuntu’s snap and Manjaro stable both had it, while Fedora’s build was still sitting in Bodhi as pending. Manjaro fast-tracks a few packages like Firefox outside its normal batches. Most of the rest waits.

Where Fedora clearly wins is the newer core stack. After updates it was running kernel 7.2, GNOME 50.5 and Mesa 26.2.3, against Manjaro stable’s kernel 7.1, GNOME 50.4 and Mesa 26.2.2. Fedora also turns SELinux on in enforcing mode and runs firewalld from the first boot, while Manjaro leaves its ufw firewall installed but inactive.

Manjaro’s real advantage is software reach. It has the AUR (helpers like yay and paru are covered in yay vs pacman vs paru), Flathub already enabled, and 639 packages of its own that Arch doesn’t carry: kernels, drivers, its own tools and themes, plus a few apps Arch leaves to the AUR. My kickstart install of Fedora came up with only the fedora remote, which carries Fedora’s own Flatpak rebuilds. Fedora’s first-boot setup has a third-party repositories switch that adds Flathub, and my kickstart install with autologin never showed it, so if you skip that switch, plan to add Flathub on Fedora yourself.

Both put the root filesystem on btrfs with zstd compression, and on Fedora that compression is doing real work: compsize counted 6.7 GiB of files stored in 3.8 GiB on disk. Fedora swaps to zram instead of a disk file, while Manjaro’s installer goes with no swap at all. On a 4 GB laptop that’s the setting I’d change first.

The bigger surprise was Manjaro’s update hook. The very first pacman -Syu took a Timeshift snapshot of the root subvolume before touching a single package, and grub-btrfs then added that snapshot to the boot menu. Here it is, trimmed from my update log:

:: Running pre-transaction hooks...
(1/5) Creating Timeshift snapshot before upgrade...
First run mode (config file not found)
Selected default snapshot type: BTRFS
Using system disk as snapshot device for creating snapshots in BTRFS mode
Creating new backup...(BTRFS)
BTRFS Snapshot saved successfully (0s)
Tagged snapshot '2026-10-02_01-56-57': ondemand
...
Found snapshot: 2026-10-02 01:56:57 | timeshift-btrfs/snapshots/2026-10-02_01-56-57/@ | ondemand | {timeshift-autosnap} {created before upgrade} |

So a bad Manjaro update can be undone from GRUB with nothing set up beforehand. Fedora has the btrfs layout for it but no snapshot tool installed, so you’d add one yourself with the Snapper and grub-btrfs setup. The catch on Manjaro is disk space: snapshots and the package cache (1.3 GiB after one update) are why its df figure jumped after the first update.

Calamares fills in that layout for you. Choose “Erase disk” and the two dropdowns underneath already read “No swap” and “btrfs”:

Manjaro Calamares installer erase disk with No swap and btrfs defaults

If you’d rather have swap, change the “No swap” dropdown on that screen before you click Next. It’s easy to miss on a screen that’s mostly about which disk to wipe.

4. Manjaro vs Ubuntu: what each one installs for you

Ubuntu 26.04 put 1,509 deb packages and 13 snaps on disk. Manjaro put 1,151 packages there and no snaps, though it does enable Flathub. The biggest everyday difference is Firefox: Ubuntu ships it as a snap, so the browser lives in its own confined runtime, while Manjaro installs the regular pacman package. The snap was also the slowest to start in my runs: a median cold start of 3.01 seconds on Ubuntu 26.04 against 1.54 seconds on Manjaro. If snaps bother you, the snap, Flatpak and apt guide for Ubuntu 26.04 shows what you can swap out.

Ubuntu 26.04 also does something none of the others do: it reserves memory for kdump. The kernel command line carries a crashkernel setting, and on this 4 GB VM it set aside 512 MB, so the guest saw only about 3.4 GB of usable RAM. Ubuntu 24.04 on the same hardware reserved nothing. I dug into that reservation, and how to give the memory back, in the Ubuntu vs Linux Mint comparison.

Ubuntu turns on unattended-upgrades for security fixes and keeps ufw installed but off. Manjaro installs nothing on its own: its two pamac timers only regenerate the mirror list weekly and clean the package cache monthly. Both use AppArmor rather than SELinux. On disk Ubuntu is the heavyweight, with 11.4 GiB of the root filesystem used, partly because of its 3.8 GiB swap file and the snap images.

One more first-boot detail. Manjaro opens its Hello window on every login until you untick “Launch at start”, and Ubuntu 26.04 opens its welcome wizard. Both stayed open during my memory runs, because that’s what a fresh install looks like:

Manjaro Hello welcome window on the GNOME desktop after first login

The “Launch at start” toggle sits in the bottom right corner of that window. Hello is also where Manjaro hides its GNOME Layout Switcher, so have a look before you turn it off.

5. Fedora vs Ubuntu vs Arch: how far Manjaro stable trails Arch

Plenty of people looking at Manjaro are really deciding whether to run Arch. So I downloaded the package databases for Arch and for each Manjaro branch on the same morning and compared every package name they share. It’s a short Python script with no dependencies, because a pacman repo database is just a tarball of desc files. Open a new file:

vim repo-lag.py

This is the exact script I ran. It reads the core and extra databases from an Arch mirror and a Manjaro mirror, then reports how many shared packages differ and the median gap between build dates:

#!/usr/bin/env python3
# Compare package versions in Arch vs Manjaro stable/testing/unstable repo DBs fetched the same minute.
import tarfile, io, urllib.request, statistics, json, sys, datetime
ARCH = "https://geo.mirror.pkgbuild.com/{repo}/os/x86_64/{repo}.db"
MJ = "https://mirror.init7.net/manjaro/{branch}/{repo}/x86_64/{repo}.db"
def load(url):
    data = urllib.request.urlopen(url, timeout=60).read()
    out = {}
    with tarfile.open(fileobj=io.BytesIO(data)) as t:
        for m in t.getmembers():
            if not m.name.endswith("/desc"): continue
            f = t.extractfile(m).read().decode().split("\n\n")
            d = {b.split("\n")[0].strip("%"): b.split("\n")[1:] for b in f if b.startswith("%")}
            out[d["NAME"][0]] = (d["VERSION"][0], int(d["BUILDDATE"][0]))
    return out
now = datetime.datetime.now(datetime.timezone.utc).isoformat(timespec="seconds")
arch = {}
for r in ("core", "extra"): arch.update(load(ARCH.format(repo=r)))
res = {"fetched_utc": now, "arch_pkgs": len(arch)}
for br in ("stable", "testing", "unstable"):
    mj = {}
    for r in ("core", "extra"): mj.update(load(MJ.format(branch=br, repo=r)))
    common = [n for n in mj if n in arch]
    diff = [n for n in common if mj[n][0] != arch[n][0]]
    lag = [(arch[n][1] - mj[n][1]) / 86400 for n in diff if arch[n][1] > mj[n][1]]
    res[br] = {"pkgs": len(mj), "common": len(common), "differ": len(diff),
               "differ_pct": round(100 * len(diff) / len(common), 1),
               "older_than_arch": len(lag),
               "median_lag_days": round(statistics.median(lag), 1) if lag else 0,
               "manjaro_only": len([n for n in mj if n not in arch]),
               "sample": {n: [mj[n][0], arch[n][0]] for n in ("linux-firmware", "mesa", "firefox", "gnome-shell", "systemd", "pacman", "python", "gcc", "nvidia-utils") if n in mj and n in arch}}
print(json.dumps(res, indent=1))

Run it with any Python 3, no root needed:

python3 repo-lag.py

These are the stable-branch numbers from my run, fetched at 05:30 UTC on October 2. The full output also covers testing and unstable, plus a sample of package versions:

{
 "fetched_utc": "2026-10-02T05:30:54+00:00",
 "arch_pkgs": 15310,
 "stable": {
  "pkgs": 15841,
  "common": 15202,
  "differ": 3936,
  "differ_pct": 25.9,
  "older_than_arch": 3928,
  "median_lag_days": 30.1,
  "manjaro_only": 639
 }
}

That works out to about a quarter of Manjaro stable sitting on older builds than Arch (3,928 packages; the other 8 differ but carry a build at least as new as Arch’s), with a median gap of 30.1 days between the Arch build and the one Manjaro stable carries. Testing is barely closer at 23.3%, and unstable is almost Arch itself, at 3.7% and under a day. Manjaro’s wiki describes stable as getting packages after “roughly a couple of weeks testing”. In practice it’s closer to a month, because packages wait for the next batch.

A few packages you would actually notice show the pattern:

PackageArchManjaro stableManjaro unstable
firefox157.0157.0157.0
gnome-shell50.550.450.5
mesa26.2.326.2.226.2.3
systemd262261.2261.3
linux-firmware202609162026081020260916
nvidia-utils615.71.09610.57.04615.71.09
python, gcc, pacmanidentical on all branches

The firmware and NVIDIA rows matter most if you’ve got new hardware. A linux-firmware five weeks behind Arch’s is the classic reason a brand new Wi-Fi card or GPU works on Arch and not on Manjaro stable. The other side of it is that Manjaro holds packages back on purpose: the pacman commands are the same, but you are trusting Manjaro’s batching instead of reading the Arch news before each update. I compared the two Arch-based picks in more detail in Manjaro vs EndeavourOS.

Fedora and Ubuntu do not fit this comparison neatly, since neither tracks Arch. Fedora’s kernel 7.2 matched what Arch had, and Ubuntu 26.04’s kernel 7.0 is two releases behind, by design, because an LTS freezes most of its stack. Ubuntu 24.04 now gets that same 7.0 kernel through its hardware enablement stack, while its GNOME stays at 46.

6. The first update after a fresh install

Your first update says more about the installer media than about the distro, but it’s still the first hour you’ll spend with the machine. Each one pulled down this much on day one:

Distro (install media)CommandPackagesDownloadTime
Fedora 44 (GA package set)dnf upgrade --refresh773 upgraded, 19 newnot captured11 min 06 s
Manjaro (26.1.0 ISO, August 12)pacman -Syu276 upgraded, 10 new1,313 MiB5 min 48 s
Ubuntu 26.04.1 (autoinstall, online)apt full-upgrade + snap refresh51 debs, 9 snaps17.4 MB of debs35 s + 3 min 47 s
Ubuntu 24.04 (24.04.2 ISO, online)apt full-upgrade + snap refresh166 upgraded, 2 new, 7 snaps115 MB of debs3 min 41 s + 3 min 43 s

Fedora’s number looks brutal because the Workstation media installs the package set frozen at release in April. Six months of updates land in one go, and the Live ISO behaves the same way. The Ubuntu installers pull security updates while installing when they are online, so their apt step was small. On Ubuntu the slow part is snap. snapd restarts itself mid-refresh on both releases, and on 24.04 it also waited on conflicting snap connections, so the snap step took longer than apt both times.

Manjaro’s update also left two .pacnew files under /etc/tpm2-tss/. Nothing breaks if you ignore them, but I check for them after every big update:

sudo find /etc -name '*.pacnew'

The two files from that update showed up straight away:

/etc/tpm2-tss/fapi-profiles/P_ECCP384SHA384.json.pacnew
/etc/tpm2-tss/fapi-profiles/P_RSA3072SHA384.json.pacnew

7. Is Fedora lighter than Ubuntu? Idle RAM and the RAM floor

No. Fedora used the most memory at idle, 1,277 MB against 1,147 MB on Ubuntu 26.04 and 1,227 MB on Ubuntu 24.04, and that’s with SELinux, firewalld and zram all running. The gap is small enough that you will not notice it on a 4 GB machine. Where the four really separate is how little RAM each one still boots to a working desktop on.

Near the floor, one boot isn’t enough. The same VM at the same size passed on one boot and fell back to the login screen on the next, so I repeated the borderline sizes. Here’s every attempt, written as passes out of boots:

RAMUbuntu 26.04Ubuntu 24.04Fedora 44Manjaro GNOME
2048 MB1/11/11/11/1
1536 MB1/11/11/11/1
1024 MB1/11/13/42/2
768 MB2/21/13/31/4
512 MB1/22/20/10/1
384 MBnot run1/1not runnot run

Ubuntu 24.04 goes lowest. It passed both boots at 512 MB, the only distro here to do that, and its GNOME 46 session even passed one boot at 384 MB, a size I didn’t try on the others. That 384 MB pass comes with an asterisk: SSH stopped answering right after the check, which is the symptom my September tests counted as a failure. It was not pretty at 512 MB either. One of the two 512 MB boots threw Ubuntu’s “internal error” dialog, and the crash report in /var/crash named spice-vdagent dying with SIGSEGV. The desktop itself kept running:

Ubuntu 24.04 desktop at 512 MB RAM showing an internal error dialog

Fedora is the odd one. It passed all three boots at 768 MB, yet one of four boots at 1,024 MB fell back to the GDM greeter instead of logging in. That’s the screen a failed autologin leaves behind:

Fedora 44 at 1024 MB RAM falling back to the GDM login screen

Manjaro needs the most. It passed every boot at 1,024 MB, but at 768 MB three of four boots ended on a black screen (two with a text cursor in the corner, one without), and 512 MB never got past that. Even its one 768 MB pass showed a blank blue background and an empty dock. Ubuntu 26.04 sits in between at 768 MB, and its 512 MB result split one and one.

Treat the bottom rows as a warning, not a target. Even the passes at the lowest sizes were rough (Fedora at 768 MB came up with a plain blue placeholder instead of its wallpaper), and my September runs for the Ubuntu vs Mint tests failed Ubuntu 24.04 at 384 MB and Ubuntu 26.04 at 768 MB. Ubuntu asks for 6 GB for 26.04, Fedora’s download page recommends 4 GB, and Manjaro’s wiki recommends 4 GB too. I’d treat 2 GB as the practical minimum for any of them, and 4 GB once you open a browser.

8. Security and update defaults side by side

None of this shows up in a screenshot of the desktop, but it decides how much hardening you do on day one:

DefaultFedora 44Ubuntu 26.04Ubuntu 24.04Manjaro
MAC frameworkSELinux, enforcingAppArmorAppArmorAppArmor
Firewallfirewalld, activeufw, inactiveufw, inactiveufw, inactive
Automatic updatesno unattended installs (GNOME Software downloads and prompts)unattended-upgrades on, snaps auto-refreshunattended-upgrades on, snaps auto-refreshno unattended installs (pamac timers only refresh mirrors and clean the cache)
Root filesystembtrfs (zstd:1)ext4ext4btrfs (zstd:1)
Snapshot before updatesnononoyes (Timeshift + grub-btrfs)
Swapzram 3.8 GiB3.8 GiB file3.8 GiB filenone
kdump reservationnone512 MBnonenone

On Ubuntu and Manjaro, turning the firewall on takes two commands. The default policy denies all incoming traffic, so allow SSH first if you reach the machine remotely:

sudo ufw allow ssh
sudo ufw enable

ufw asks for a y because it can drop live SSH sessions. Check the result afterwards:

sudo ufw status verbose

On the Ubuntu 26.04 VM it came back active, with SSH as the only inbound exception (Manjaro printed the same, with the rule listed as port 22):

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
22/tcp (v6)                ALLOW IN    Anywhere (v6)

Fedora’s firewalld is already running with the FedoraWorkstation zone, which allows ssh, samba-client and dhcpv6-client plus every TCP and UDP port from 1025 to 65535. That is a deliberate desktop choice. If you’d rather have it tighter, the Fedora 44 post-install checklist covers zones and the rest of the first-day setup.

9. How long each release is supported

Support windows are where the three really split. Ubuntu 26.04 LTS gets standard security updates until 2031-05-29, and Ubuntu Pro’s ESM stretches that to 2036-04-23. Ubuntu 24.04 is covered until 2029. Fedora 44 ends on 2027-06-02, so you’ll do one release upgrade a year at minimum. When Fedora 45 lands, the Fedora 44 to 45 upgrade guide covers the dnf system-upgrade steps. Manjaro has no end date, because there is nothing to upgrade to, but it does not promise a support window either. An install that skips updates for months is the one that breaks.

If you’re weighing Fedora’s next release against Ubuntu specifically, I’ve also put Fedora 45 vs Ubuntu 26.04 head to head.

10. What I’d put on each machine

After rebuilding and benchmarking all four, here’s where I’d actually install each one.

A machine you want to forget about: Ubuntu 26.04 LTS. Security updates install themselves, support runs to 2031, and its apt step on the first update was 35 seconds. I’d give back the 512 MB kdump reservation on anything with less than 8 GB.

An old laptop with 2 GB or less: Ubuntu 24.04 LTS. It was the only one that passed every boot at 512 MB, it even got one boot through at 384 MB, and it’s supported until May 2029. On hardware that old I’d still look at a lighter desktop than GNOME.

A developer workstation: Fedora 44. You get the same kernel Arch had that week, the newest GNOME of the four and SELinux enforcing from the first boot. Budget for one release upgrade a year, add Flathub, and set up Snapper on day one.

The AUR without babysitting Arch: Manjaro. The automatic Timeshift snapshot before every update is the feature I’d miss most on the others. Accept that stable runs about a month behind Arch, which matters most for firmware and NVIDIA drivers on new hardware, and give it at least 2 GB of RAM.

If the month of lag is the deal breaker, Manjaro’s unstable branch matched Arch’s version on 96% of shared packages in my comparison, at which point you’re running Arch with Manjaro’s kernels and tools on top.

Keep reading

Backup and Restore Linux Systems with Timeshift Debian Backup and Restore Linux Systems with Timeshift Things to Do After Installing CachyOS Arch Linux Things to Do After Installing CachyOS Fix Touchpad Issues on Linux (Ubuntu 24.04 / Fedora / Debian 13) Desktop Fix Touchpad Issues on Linux (Ubuntu 24.04 / Fedora / Debian 13) Things to Do After Installing Fedora 42 Workstation Desktop Things to Do After Installing Fedora 42 Workstation Things to Do After Installing EndeavourOS: 10 Tested Steps Arch Linux Things to Do After Installing EndeavourOS: 10 Tested Steps Install Guacamole Remote Desktop on Ubuntu 22.04 (Jammy Jellyfish) Desktop Install Guacamole Remote Desktop on Ubuntu 22.04 (Jammy Jellyfish)

Leave a Comment

Press ESC to close