Writing a custom Nerves base image for a CompuLab IOT-DIN-IMX8PLUS by hand: the packaging bugs, the flashing dead end, and the DDR failure that stopped it booting.
Five parts on getting Elixir onto an industrial DIN-rail gateway that nobody has published a Nerves system for. Authored file by file rather than forked, which meant hitting every packaging problem personally.
The useful parts are the failures: four packaging bugs between a system that compiles and a firmware that flashes, a vendor flashing tool that does not work on this laptop at all, and a bootloader that trained DRAM incorrectly and said so in five words.
Why I wrote a custom Nerves base image file by file for a CompuLab IOT-DIN-IMX8PLUS instead of forking a sibling board's system.
Four packaging bugs between a Nerves system that builds and a firmware that flashes — plus the kconfig hang that looks exactly like a working build.
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.
The board flashed perfectly and never reached Linux. A Kconfig choice split upstream had silently retargeted my bootloader at the wrong DRAM.
The repeatable runbook, and the reason flashing a pre-made image left me with a 512 MB data partition instead of 28 gigabytes.