With this patch in place, ARMv7 NixOS can be booted in QEMU:
qemu-system-arm -kernel u-boot -M vexpress-a9 -serial stdio -sd nixos-sd-image-armv7l-linux.img -m 1024
...with all the features that boot.loader.generic-extlinux-compatible
supports, like the boot generation menu and seamless kernel upgrades
in the VM.
Instead of selecting the defconfig based on stdenv.platform.uboot,
provide different ubootFoo packages. Otherwise we couldn't easily build
U-Boots for different platforms than what we are currently running on.
All users of the ubootChooser function appear to be using only CLI tools
like mkimage, whose behaviour is not affected by the defconfig (their
build outputs are bitwise-identical). So add a separate package for the
CLI tools.
Of the removed patches, some version of sheevaplug-sdio.patch has
apparently been applied upstream (with at least mv_sdio.c renamed to
mvebu_mmc.c). sheevaplug-config.patch needs rebasing & re-testing on
real hardware.
Tested boards and input/output methods that upstream supports:
- Raspberry Pi:
- HDMI works, USB keyboard not yet supported
- Serial via the 26-pin connector (3.3V)
- pcDuino3 Nano:
- HDMI + USB keyboard (only if attached to a hub)
- Serial via the 3-pin connector (3.3V)
- Jetson TK1: RS-232 serial port only
- Versatile Express CA9 (for QEMU only): Serial via '-serial stdio'
Changes:
- liblz4: xxhash symbols are dynamically changed (namespace
emulation) to avoid symbol conflict
- liblz4.a (static library) no longer compiled with -fPIC by
default
These ARM boards are very old and quite likely used only for booting in
QEMU emulation. I'll focus on making the multiplatform image easy to
boot in QEMU instead.
This corrects linkage failures arising from missing -lc++abi and
resolves "unused argument" warnings arising due to -stdlib=libc++
serving no purpose when search paths are being supplied explicitly.