Embedded systems, edge AI, and embedded Linux from the field.
Long-form notes on things that are badly documented: boot processes, kernel plumbing, field failures, and getting models to run on hardware that has no business running them. Everything here is tested on real boards, and says which ones.
series
KVM Virtualization on ARM64in progress
Building the KVM/QEMU/libvirt stack from the silicon up on ARM64, with real terminal output from a Raspberry Pi 5 — because almost every KVM guide assumes x86.
latest posts
virt-install Explained: Every Flag for an arm64 Guest
Twelve flags look like a lot to memorize. They're answers to seven questions — and once you know the questions, you can write the command for any guest from scratch.
Fixing virt-install on arm64: Security Violation, dnsmasq Port 53, and the qemu:///session Trap
Four failures stand between a correct virt-install command and a booting arm64 guest. None of them are documented well, and the error messages point away from the causes.
Installing the KVM Stack on Raspberry Pi OS: What Each Package Does
Nine packages, three layers. Then virt-host-validate reports four warnings and three failures on a healthy system — here's how to triage every line.
How to Check KVM Is Enabled on Raspberry Pi 5 (/dev/kvm, lsmod, dmesg)
Three commands confirm your host can run accelerated VMs — and one of them returns nothing on a Raspberry Pi, for a reason that confuses a lot of people.
Why VirtIO Is Faster Than Emulated Devices: Virtqueues and vhost-net Explained
Emulated devices are slow because they faithfully imitate hardware that was never designed for software. VirtIO throws that away and lets the guest cooperate instead.
tutorials
systemd Services on Embedded Linux
From "works when I run it" to "runs forever on its own": service files, restart policies, dependencies, logging, and timers for applications that run unattended.