I’ve been running Debian stable on my personal laptop for many years, probably ever since high school. It’s generally rock-solid,1 and I like the Debian community ethos. Yes, you don’t get all the shiny new software, but honestly, you don’t need that stuff. All you really need in modern life are a web browser and a text editor; everything else is really unnecessary.
One emergent property of Debian’s legendary stability: it’s possible to go years between major OS upgrades and have things work perfectly fine. In fact, I’d been on Debian 11 (Bullseye) for quite some time, up until a couple of weeks ago, when I noticed that it was at this point the old-old-stable release. I decided it’d be fun to upgrade to Debian 13 (Trixie), which is the latest stable release.
I felt fairly confident going into the install, because the last time I upgraded Debian, everything went off without a hitch. This confidence turned out to be a little misguided, as things were a little less smooth this time; I had a few hiccups that fortunately were not too difficult to resolve. Here’s a log of some of the stuff that broke, mostly to help future me if similar things ever break again next time I decide to do a major Debian upgrade.
Somehow, I managed to break my graphical desktop environment; at one point during the upgrade, my screen went blank except for a blinking cursor in the corner. (I think this was probably my fault; in my impatience, I selected an option to install things even if it might break my system, with some X11-related stuff listed as possibly breaking.) I wasn’t sure what to do here, so I just rebooted the laptop to see if it would fix the problem. This was probably a mistake.
On the bright side, the boot loader still worked fine,2 but unfortunately, as soon as I booted into Debian, I was faced with the same blank screen problem. Eventually, I found out from reading some forums that you can summon a shell in this circumstance by typing alt + F2
, so I was able to resume the install from the terminal. After finishing the installation, my desktop environment went back to working.
I then had a very classic Debian experience: after finishing the installation, I found out that my wifi was broken! This is a fairly common problem with new Debian installations, for the reason that Debian by default does not include non-free software3 in the distribution, but lots of devices require non-compliant firmware for wifi to work.
It was not obvious to me at first how to fix this. I ended up figuring it out by checking the kernel dmesg
logs (a trick that I often under-utilize), which showed that iwlwifi
was missing a particular firmware microcode file. I downloaded the missing file from git.kernel.org on another machine and transferred it to the affected laptop via a USB stick. (Remember those?) Finally, copying the file over to /lib/firmware
and rebooting the laptop solved the problem, and I could connect to the Internet again! Ah, Debian…
Apparently, Debian 12 (Bookworm) started forbidding system-wide Python package installations, forcing me to use a venv like a good citizen. This temporarily broke my local build script for this website, although fortunately the fix was very easy. It’s a little bit sad that the production build process (which is pinned to Bullseye by a Dockerfile) and my local build process have diverged, but I’m too lazy to rectify this.
I honestly feel like this change is a little excessive—if I want to break my system by running a franken-Python, why should the Debian maintainers stop me?—but I can see where they’re coming from. It is admittedly a virtuous change, although I was dragged into it kicking and screaming.
i3
status bar bugAnother thing I noticed after upgrading is that my i3
status bar stopped displaying the date and time correctly. It turns out that this is a known regression from i3status
version 2.13 (which Bullseye uses) to 2.14 (which Bookworm uses). There’s a PR on Github to fix this, but it was opened in 2021 and still hasn’t been merged, so I’m not holding out hope.
Fortunately, the workaround in this case is fairly straightforward, involving shuffling two lines in my i3
status bar config:
# old
tztime local {
format = "<span foreground='#fccb00'>%time</span>"
format_time = "%Y-%m-%d %H:%M:%S"
}
# new
tztime local {
format = "<span foreground='#fccb00'>%Y-%m-%d %H:%M:%S</span>"
}
Now I can see the time on my computer again!
A few days after the upgrade, I discovered a new fact: my audio no longer worked. This was not too hard to resolve, as I quickly found a relevant forum discussion suggesting that the problem was a simultaneous installation of pulseaudio
(which I had before) and pipewire
(which I think was new). I just uninstalled pipewire
and things started working again:
sudo apt remove pipewire $
Perhaps I should switch to pipewire
, as it’s the newer package; presumably, they wouldn’t have written the new package if it were worse than the old one. But you know, you can’t teach an old dog new tricks…
Well, Debian is rock-solid for a Linux distribution. As this post attests to, it obviously doesn’t work flawlessly out of the box like a Mac tends to, but at least it gives you all the tools you need to fix the system on the rare occasions it breaks..↩︎
If it didn’t, I guess I would’ve had to boot from a USB stick or something? I’ve never broken a laptop that badly before.↩︎
“Free software” here refers to software released under a license that respects the user’s freedoms, like the GPL or BSD.↩︎
Comments