Linux Predictable Interface Names Are Only as Stable as Your PCI Bus

A fleet of servers, ordered as the same part number, imaged identically, configured by the same Ansible role. One of them booted with no network. Nothing in the configuration was wrong. Nothing in the operating system had changed. A storage controller was mounted in the front bay rather than a rear riser slot, which put it on a PCIe root port that enumerates earlier, which shifted every PCI bus number behind it, which renamed four network interfaces, which meant every line of network configuration matching those names quietly applied to nothing at all. ...

August 29, 2026 · 17 min · Malcolm Frazier

Ethernet Link Cycling During Boot on the Intel i226

While investigating a separate network issue at work, we observed unexpected Ethernet link behavior on an embedded ARM system. During boot, the switch port facing it reports link up at 100 Mbps, then down, then up at 100 Mbps again, three times in total, before finally settling at 1 Gbps once the operating system is up. Before proceeding, we needed to determine whether the cycling was related to the issue at hand or independent behavior that could be ruled out. ...

August 18, 2026 · 8 min · Malcolm Frazier

The Kernel Updated. The Drivers Didn't.

I work with industrial Linux systems that have strict real-time requirements. The hosts run low-latency kernels and depend on out-of-tree kernel drivers compiled against the running kernel. When any part of that chain breaks, critical functionality is lost. Kernel pinning and out-of-tree driver management are two related problems that need to be solved together. This post covers why, and how. Why the low-latency kernel The generic kernel runs fine on most Ubuntu hosts. The issue is not that it is broken; it is that it does not meet the timing requirements of the software and hardware devices connected to these systems. ...

June 6, 2026 · 10 min · Malcolm Frazier