u-boot

12 posts tagged u-boot, newest first.

Tagged u-boot

12 posts
23 Sep 2026
9 min

dm-verity on a signed rootfs, and two console messages that were simply untrue

You cannot put a filesystem's hash inside that filesystem. Two U-Boot messages that were lies — “press any key to stop autoboot” when no key worked, and quotes vanishing from the kernel command line. Four attempts, three instructive failures, and a hardware SHA engine I did not know I was using.

dm-verityembeddedlinuxsecure-bootstm32mp1u-boot
23 Sep 2026
6 min

Moving the kernel out of the rootfs, and feeding the bootloader garbage

The hash of a filesystem cannot live inside it, so the kernel had to move somewhere signed. Then the two-command test: hand the bootloader rubbish and watch the kernel ignore it entirely. What that cost, and where the chain now ends.

dm-verityembeddedlinuxsecure-bootstm32mp1u-boot
21 Sep 2026
11 min

Signing the kernel with a FIT image, and the escape hatch that makes it theatre

You cannot sign a zImage. Why the signature goes on the FIT configuration rather than the kernel, the escape hatch that turns the whole thing into theatre, why the negative test needed two tampered images and not one, and the three ways the test lied to me.

embeddedfitlinuxsecure-bootstm32mp1u-boot
17 Sep 2026
9 min

What secure boot actually is on an STM32MP1: the header, field by field

Signing is not encrypting — the thing burned into silicon is public and you could print it on a billboard. The chicken-and-egg the 32 bytes solve, the STM32 header field by field, four locks wearing one name, and the two things I got wrong and had to correct.

cryptographyembeddedsecure-bootstm32mp1u-boot
17 Aug 2026
5 min

Ran out all six config attempts

The board flashed perfectly and never reached Linux. A Kconfig choice split upstream had silently retargeted my bootloader at the wrong DRAM.

embeddedimx8linuxnervesu-boot
10 Aug 2026
6 min

Flashing without the vendor's flashing tool

NXP's uuu dies at 8% on an Apple Silicon Mac. The board's own U-Boot has ums and fastboot, and those use bulk USB, which works fine.

embeddedimx8linuxnervesu-boot
15 Jun 2026
4 min

It boots signed — and the HAB gate in booti I did not know I had

The signed Nerves firmware boots. And a finding that deleted an open task: enabling CONFIG_IMX_HAB wires an automatic fail-closed authentication gate into booti itself, for every kernel boot, with no bootcmd changes at all. Plus a fleet gotcha about who can SSH in.

elixirembeddedhabimx8nervessecure-bootu-boot
04 May 2026
5 min

The SRK fuse and closing the device: what is left, and why I stopped

Two fuse writes stand between a signed board and a locked one: the SRK hash, and the bit that makes the chip refuse unsigned code. Both are permanent. Here is exactly what they are, how to read their current state, and why I have not burned either.

embeddedhabimx8secure-bootu-boot
20 Apr 2026
7 min

Signing imx-boot and turning on HAB on the i.MX8M Plus

Enabling CONFIG_IMX_HAB overflowed the SPL's SRAM budget by 10,440 bytes. Fixing that, computing the real CSF insertion offsets from the build's own binman node rather than NXP's generic one, signing with cst, and getting 'No HAB Events Found!' on hardware.

cstembeddedhabimx8secure-bootu-boot
13 Apr 2026
14 min

The board stopped booting: LPDDR4 training, and recovering an IOT-DIN-IMX8PLUS over USB

My imx-boot build failed LPDDR4 training and the gateway stopped booting before U-Boot. The cause was one Kconfig symbol. Recovering it took days, because uuu's SDP mode does not work on Apple Silicon and the board has two identical-looking micro-USB ports.

embeddedfastbootimx8linuxsecure-bootu-bootuuu
06 Apr 2026
4 min

Building an unsigned imx-boot for the IOT-DIN-IMX8PLUS

The first real build: a completely unsigned bootloader, on purpose, so that any problem is a build problem and not a signing problem. Two errors on the way, one of which is caused by a modern setuptools removing pkg_resources.

buildcompulabembeddedimx8secure-bootu-boot
30 Mar 2026
6 min

Pinning the U-Boot build environment for the IOT-DIN-IMX8PLUS

imx-boot is not one repository — it is U-Boot, ARM Trusted Firmware, NXP's imx-mkimage and the LPDDR4 training blobs, assembled together. Get one of them at the wrong version and it builds cleanly and fails to train memory. How I pinned all four using the board's own boot log.

atfbuildembeddedimx8secure-bootu-boot