On-call for the kernel guild β€” LinkΓΆping, SE

I'm Carl β€” I make Linux behave.

Linux & systems engineer with 11 years spent somewhere between the kernel and the flight line. At Saab I build the embedded, hardened, boringly reliable Linux that has to work first try β€” in the cold, offline, and with nobody to SSH into it.

  • 11+years on Linux
  • 340patches upstreamed
  • LinkΓΆpingSweden Β· CET
scroll
CV
🐧 tux since 2004 βš™οΈ Yocto wrangler β˜• fika-driven development

About me

Kernel plumber,
free-software evangelist.

I got my first tux sticker in 2004 and never gave a particularly good reason for stopping. Today I work at that seam between the mainline kernel and hardware that has to survive a Swedish winter β€” mostly C and Rust, device trees, bootloaders, and the awkward human middle where a BSP becomes a product.

My happy place is a board that misbehaves at 3 a.m. in a rack nobody visits: a boot that takes ninety seconds, an interrupt storm that eats a deadline, an update that bricks one unit in a thousand. I bisect honestly, measure with perf and ftrace rather than vibes, and upstream the fix instead of carrying a patch forever.

Outside of work I'm an unrepentant free-software nerd β€” Debian sid on every machine I own, a Yocto layer or two in public, FOSDEM weekends, and a home lab that exists mostly to prove that a thing can be self-hosted before someone sells you the SaaS version of it.

Based
LinkΓΆping, SE
Focus
Embedded Β· RT Linux
Languages
SV Β· EN Β· a little DE
Currently
Linux Sys Eng @ Saab
0years earning a living on Linux
0patches & commits upstream
0boards brought up from bare metal
0devices in the fleet I own

Toolkit

What I reach for.

Embedded Linux Β· Yocto & Buildroot94%
Kernel & driver plumbing88%
Hardening, secure boot & A/B updates90%
Real-time & performance tuning82%
C & Rust for userspace79%
Observability, eBPF & tracing73%

Currently learning: Rust in-kernel bindings, CXL memory pooling, and how to reproduce a race condition on exactly the third try.

Linux kernelYoctoBuildrootsystemd eBPFRustCDevice TreeU-Boot OSTreeBusyBoxPodmanAnsibleNix Linux kernelYoctoBuildrootsystemd eBPFRustCDevice TreeU-Boot OSTreeBusyBoxPodmanAnsibleNix

Journey

The short version.

  1. 2021 β€” now

    Senior Linux Systems Engineer Β· Saab, LinkΓΆping

    Own the Linux platform inside our mission systems and ground-support hardware: Yocto BSPs, hardened images, measured boot and atomic A/B updates across a fleet of ~1 200 devices. Took boot-to-mission-ready from 96 s to 22 s, and killed a 4 ms scheduling regression that would have shipped to the field. Also run the internal kernel guild and the "how do we contribute this upstream" conversations.

    • Yocto
    • RT-Preempt
    • OSTree
    • Hardening
  2. 2019 β€” now

    Volunteer Β· FOSDEM, GLUK & a few small projects

    Maintainer of two small open-source tools (below), reviewer on a Yocto layer, and one of the people who drags a table into a corridor at FOSDEM to hand out stickers. Treasurer of the Gothenburg Linux User & Kernel group since 2022 β€” which mostly means remembering to pay the domain invoices on time.

    • Maintainer
    • FOSDEM
    • GLUK
  3. 2018 β€” 2021

    Platform Engineer Β· Fjord Analytics, Oslo

    Built the edge collector for 4 000 wind-turbine boxes: Debian-based images, Rust agents, store-and-forward MQTT over a connection that existed twice a day. Cut field incidents 61 % by making the update path boring and reversible. Learned that most "hardware problems" are a power sequence with commitment issues.

    • Debian
    • Rust
    • MQTT
  4. 2015 β€” 2018

    Linux Administrator Β· Nordre Hosting, Stockholm

    Ran ~300 Debian and Alpine hosts: KVM, LVM, ZFS-on-root, more NFS than I'd admit. Wrote the Ansible playbooks that let me leave at 16:00, then wrote the ones that let my successor leave at 16:00 too. First taste of on-call, first 1 000-day uptime.

    • Ansible
    • KVM
    • ZFS
  5. 2011 β€” 2015

    B.Sc. Computer Engineering Β· LinkΓΆping University

    Thesis on real-time scheduling under mixed workloads β€” spent a semester arguing with SCHED_DEADLINE and a kernel patch that Linus politely ignored. Ran the student lab's machine room, learned sysadmin the hard way, discovered that free software is a social project as much as a technical one.

    • Thesis
    • Real-time
    • Labs

Selected work

Things I maintain.

🧊

Frostbit

Yocto layer plus a small Rust agent for atomic A/B updates over terrible radio links β€” resumable, signed, and verified before the bootloader ever trusts a partition. 1 200 devices updated, zero bricked.

  • Yocto
  • OSTree
  • Rust
  • MIT
Source
πŸ“Ÿ

tinylogd

A 40 kB userspace log daemon for flash-starved boards: structured journald output, inotify-based rotation, 12 kB resident. Replaces rsyslog on devices where a megabyte is a lifestyle choice. Packaged for Debian and Alpine.

  • Rust
  • systemd
  • BusyBox
  • Apache-2.0
Source
πŸ›…

rtcheck

CI harness that boots real boards in a loop and measures real-time latency with an eBPF tracer, then fails the build when a kernel bump costs you microseconds. Caught a 4 ms regression three days before it reached the field.

  • eBPF
  • Podman
  • CI
  • GPL-3.0
Read the write-up

Beyond the keyboard

Off the clock.

⛸️

Ice skating

LΓ₯ngfΓ€rdsskridskor on Roxen, 30–40 km loops, never without an ispik and a thermos. Some winters the ice never gets brave enough; my excuses are always long.

πŸ“»

Amateur radio

SA0CVX. Parks-on-the-air from TynnelsΓΆ, mostly 20 m, mostly badly, occasionally with a Raspberry Pi in my pocket.

πŸ—„οΈ

Home lab

Six nodes, one switch I trust, zero cloud: Immich, Vaultwarden, Matrix, Forgejo and a job that just prints uptime to prove a point.

πŸ₯

Fika engineering

Kanelbullar by weight, never by recipe. The office can tell from the smell whether tonight's CI run is going well.

Contact

Let's build something
that stays up.

Consulting on embedded Linux, hardening or update strategy, speaking at your user group, or just a good-natured argument about init systems over fika β€” in Swedish or in English, my inbox is open.

Copied to clipboard βœ“