<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Yocto on Umair's Systems Notebook</title><link>https://umair-as.github.io/blog/tags/yocto/</link><description>Recent content in Yocto on Umair's Systems Notebook</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 07 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://umair-as.github.io/blog/tags/yocto/index.xml" rel="self" type="application/rss+xml"/><item><title>When the Kernel Outgrew the Bootloader: A Clean Install That Never Booted</title><link>https://umair-as.github.io/blog/posts/uboot-bootm-len-silent-ab-fallback/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://umair-as.github.io/blog/posts/uboot-bootm-len-silent-ab-fallback/</guid><description>A debug-info kernel overshoots U-Boot&amp;rsquo;s decompression buffer by 1.85 MiB. The bundle verifies at every layer, RAUC reports success, and the board silently falls back to the old slot, because the one property that mattered is only observable at bootm time on the device.</description></item><item><title>Moving RAUC's HTTPS Streaming Key into TPM2 via PKCS#11</title><link>https://umair-as.github.io/blog/posts/rauc-streaming-key-tpm2-pkcs11/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://umair-as.github.io/blog/posts/rauc-streaming-key-tpm2-pkcs11/</guid><description>Migrating RAUC&amp;rsquo;s mTLS client key from a file on disk to a TPM2-backed PKCS#11 URI. The recipe wiring was straightforward; the URI was not. module-path is a p11-kit URI extension that libp11 — the parser RAUC&amp;rsquo;s streaming path actually uses — rejects outright.</description></item><item><title>RAUC Streaming OTA: When the Sandbox User Can't Reach the TPM</title><link>https://umair-as.github.io/blog/posts/rauc-pkcs11-tpm-streaming-sandbox/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><guid>https://umair-as.github.io/blog/posts/rauc-pkcs11-tpm-streaming-sandbox/</guid><description>Switching RAUC&amp;rsquo;s streaming mTLS client key from a file path to a PKCS#11 URI produced a one-line error with no obvious cause. The real problem was not the module path, not the engine, and not a missing PIN — it was the sandbox user&amp;rsquo;s group membership and what tpm2-pkcs11 needs to initialise.</description></item><item><title>Packaging Telegraf for Yocto: Build Tags, a Linker Collision, and Credentials That Can't Live in the Rootfs</title><link>https://umair-as.github.io/blog/posts/telegraf-yocto-recipe/</link><pubDate>Wed, 15 Apr 2026 00:00:00 +0000</pubDate><guid>https://umair-as.github.io/blog/posts/telegraf-yocto-recipe/</guid><description>No OE recipe for Telegraf exists upstream. What looked like a straightforward packaging task turned into a Go linker collision, a PIE/CGO conflict, and a credential problem that ruled out the obvious solution entirely.</description></item><item><title>Hardening OTBR: Reading a 4.1 systemd-analyze Score</title><link>https://umair-as.github.io/blog/posts/otbr-systemd-hardening/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://umair-as.github.io/blog/posts/otbr-systemd-hardening/</guid><description>Part 1 got OTBR running as a non-root user with three capabilities. Part 2 covers the hardening block in the service file — what each directive does, why one had to be an exception, and how to use systemd-analyze security as a decision tool rather than a score to chase. Part 2 of 2.</description></item><item><title>Running OTBR as Non-Root: Finding the Capability Floor</title><link>https://umair-as.github.io/blog/posts/running-otbr-as-non-root/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://umair-as.github.io/blog/posts/running-otbr-as-non-root/</guid><description>OpenThread Border Router assumes it runs as root. Getting it down to a least-privilege non-root user means figuring out exactly what it needs — which turned out to be a source code problem, not a trial-and-error problem. Part 1 of 2.</description></item></channel></rss>