image_pdfimage_print
Silencing the Sphinx: Cleaner Documentation Builds

Silencing the Sphinx: Cleaner Documentation Builds

If you have ever run make htmldocs in U-Boot, you are likely familiar with the “wall of text” it produces. Between the standard Sphinx output, sub-make messages, and custom progress indicators, the build process has traditionally been very noisy. While verbose output can be useful for debugging the toolchain itself, it is a hindrance when…

Porting Linux’s EXT4 to U-Boot: Introducing ext4l

Porting Linux’s EXT4 to U-Boot: Introducing ext4l

In the world of bootloaders, balance is everything. We need enough functionality to load an OS, but we must keep the footprint small and the code maintainable. For years, U-Boot has relied on a custom implementation of the EXT4 filesystem. However, as the EXT4 format evolves with features like metadata checksums and fast commits, keeping…

Introducing Pickman: AI-Powered Cherry-Pick Management for U-Boot

Introducing Pickman: AI-Powered Cherry-Pick Management for U-Boot

Managing cherry-picks across multiple branches is one of the more tedious aspects of maintaining a large project like U-Boot. When you need to backport dozens of commits from an upstream branch while handling merge commits, resolving conflicts, and creating merge requests, the process can consume hours of developer time. Today we’re introducing pickman, a new tool…

The Best of Both Worlds: Hybrid Python/C Testing in U-Boot

The Best of Both Worlds: Hybrid Python/C Testing in U-Boot

U-Boot has two testing worlds that rarely meet. Python tests are flexible and can set up complex scenarios – disk images, network configurations, boot environments. C tests are fast, debuggable, and run directly on hardware. What if we could combine them? The Problem Consider filesystem testing. You need to: The Python test framework handles steps…

When -858993444 Tests Run: A Tale of Linker Lists and Magic Numbers

When -858993444 Tests Run: A Tale of Linker Lists and Magic Numbers

Have you ever seen output like this from your test suite? That’s not a buffer overflow or memory corruption. It’s a wierd interaction between linker alignment, compiler optimisations, and pointer arithmetic. Let me tell you how we tracked it down. The Mystery U-Boot uses ‘linker lists’ extensively – a pattern where the linker collects scattered…

The Silent Saboteurs: Detecting and Resolving malloc() Failures in U-Boot

The Silent Saboteurs: Detecting and Resolving malloc() Failures in U-Boot

The robust operation of any complex software system, especially one as foundational as U-Boot, hinges on the reliability of its core services. Among these, dynamic memory allocation via malloc() is paramount. While often taken for granted, failures in malloc() can be silent saboteurs, leading to unpredictable behaviour, security vulnerabilities, or outright system crashes. Here, we…

🔑 Full Circle: Completing TKey Hardware-Backed LUKS Unlock

🔑 Full Circle: Completing TKey Hardware-Backed LUKS Unlock

This final series in Concept closes out the complete implementation of TKey hardware-backed full disk encryption (FDE) in U-Boot. The previous series established the core logic and UI flow. This final work wraps up the effort by providing end-to-end testing, a useful Python tool for key management on the host, along with documentation, making the…

🔒 TKey Integration: Unlocking Encrypted Disks

🔒 TKey Integration: Unlocking Encrypted Disks

A new series in Concept introduces the complete logic and UI enhancements required to use a TKey to unlock an encrypted disk (like a LUKS partition) before booting an operating system. 1. The TKey Unlock Flow The TKey unlock process is complex because it involves iterative communication with the external hardware and handling scenarios like…

Modernising Allocation: U-Boot Upgrades to dlmalloc 2.8.6

Modernising Allocation: U-Boot Upgrades to dlmalloc 2.8.6

For over two decades—since 2002—U-Boot has relied on version 2.6.6 of Doug Lea’s malloc (dlmalloc, old docs) to handle dynamic memory allocation. While reliable, the codebase was showing its age. In a massive 37-patch series, we have finally updated the core allocator to dlmalloc 2.8.6. This update brings modern memory efficiency algorithms, better security checks,…