Pop!_OS on Raspberry Pi 4

Sunday, September 04, 2022

GNOME Terminal showing the output of neofetch A while back I bought a Raspberry Pi 4 for a project I ended up never actually doing. Since then, it’s just been sitting on my desk gathering dust. Yesterday, I noticed that System76’ Pop!_OS is available as a “Tech Preview” for the RPi 4. I use Pop!_OS on my personal laptop, and I wasn’t doing anything else, so I decided to try it out.

Installation

Installing it was very straightforward. I downloaded the image on another computer and wrote it to an SD card with Raspberry Pi Imager. Then I just plugged the SD card into the Pi and plugged in the machine. It came up like a charm.

First Boot

On first boot, the intial GNOME wizard walked me through creating a user. Shortly thereafter, Pop!_Shop (System76’ alternative to the GNOME Software app) notified me that there were a bunch of updates available, so I told it to go ahead. Pop!_Shop was very sluggish, but eventually it downloaded the packages and started installing them. Unfortunately, it crashed midway through, installing some updates but not others, leaving the system in an inconsistent state, including some major packages like systemd and udev. Since this was just to try it out, I had no qualms about using a hammer, repeatedly running apt-get -f install (which failed) and, since the packages had already been downloaded to /var/cache/apt/archives, running dpkg --force-all -i for anything APT complained about. Eventually, APT was happy, and I was able to successfully run apt -y upgrade, cross my fingers, and reboot. It worked.

Filesystems

The initial image creates an ext4 root partition and a vfat partition for the bootloader, mounted at /boot/firmware. I neglected to note how large the root partition was initially (maybe 8G?), but in any case fairly small—after the installation it was something like 79% full. I happened to be using a 32G SD card, and was able to use Disks to grow the partition to the end of the drive.

I had a spare USB drive lying around that I used to mount /home, and I would recommend doing that.

Other Notes

Overall, I would rate the performance as “usable,” though I think past experience has made me more tolerant than some. If it would bother you excessively that, say, GNOME Terminal or Firefox would take several seconds to open, stop here and read no further.

Here’s a few particular things that required some effort.

Firefox

The Firefox package was installed, but apparently that’s been moved to a Snap. After my earlier experience with Pop!_Shop, I was wary, so I ran sudo snap install firefox manually. It took quite a while, but eventually installed mostly properly (see below). It’s definitely a CPU hog—occasionally spiking all four cores up to 100%—but it works. As you might expect, dealing with pages containing a large amount of Javascript (e.g., Slack) is an exercise in patience. YouTube took a noticeable length of time to render the page, but actual videos played fine.

GNOME Extensions

One of the few non-default GNOME extensions I install is a downloader for Bing’s wallpaper-of-the-day, and these are handled through a Firefox extension. Despite the correct Firefox extension being installed, Firefox didn’t know how to handle https://extensions.gnome.org, asking me what app to pass it to. I couldn’t make it work, though admittedly I only spent a couple minutes on it. Not sure if this is an effect of Firefox being a Snap, or something in the OS.

Emacs

Emacs is fine once it starts, but startup times are long enough that I’d probably serverize it.

FreeIPA

I use FreeIPA for authentication on my local network. I installed the freeipa-client package and ran the ipa-client-install script with no issues.

GNOME Screenshot

Not really a problem, but gnome-screenshot wasn’t installed by default like I’d expect it to be. I imagine this was to save space on the image. I installed it with no issues from the command line.

Verdict

On the whole, I’ll just go with what I said before: usable, not spectacular. If I had to use it as my daily desktop, I’d manage.