2.4 KiB
NixOS on SHARP Brain (i.MX28) - build guide
This directory contains a Nix-based build setup for Brain (armv5). It
assumes the following repositories exist in sources/:
sources/linux-brain-brain(kernel)sources/buildbrain(boot tooling + u-boot-brain submodule)
See docs/brain-bootflow.md for the boot chain details.
0) Model and DTB name
Pick your Brain model and DTB name from:
sources/linux-brain-brain/arch/arm/boot/dts/
Examples:
- PW-SH5 ->
imx28-pwsh5.dtb - PW-SH6 ->
imx28-pwsh6.dtb
DTB selection is done by U-Boot via the fdtfile environment variable,
which is set from CONFIG_DEFAULT_FDT_FILE in each defconfig. Build the
matching U-Boot defconfig for your model (pwshX / pwa7X00).
1) U-Boot with extlinux support (fork + patch)
Patch file:
patches/u-boot-brain-extlinux.patch
Apply it to your fork of brain-hackers/u-boot-brain and build
for your model defconfig (pwshX / pwa7X00).
Nix build helper (cross-compiles to armv5):
nix-build nix/uboot.nix -A pwsh6
Output:
result/u-boot.bin
Rename it for BrainLILO:
gen3_6.bin(PW-SH6)
The mapping is defined in:
sources/buildbrain/brainlilo/models.h
2) Prepare bootfiles/ (FAT partition contents)
The latest BrainLILO release has already been downloaded and extracted to:
bootfiles/アプリ/BrainLILO/
Create the following layout in bootfiles/ (PW-SH6 example):
bootfiles/
loader/
gen3_6.bin
nk/ # optional
アプリ/BrainLILO/
AppMain.exe
BrainLILO.dll
BrainLILODrv.dll
index.din
Notes:
- BrainLILO release binaries are from: https://github.com/brain-hackers/brainlilo/releases
- If you prefer the buildbrain layout (
アプリ/Launch Linux), usesources/buildbrain/image/build_image.shas the reference.
3) Build the NixOS SD image
Build from this repo root:
nix-build nix/brain-system.nix -A config.system.build.sdImage
The image will be in:
result/sd-image/brain-nixos-*.img.bz2
Flash it to SD:
bzcat result/sd-image/brain-nixos-*.img.bz2 > /dev/sdX
4) Boot
- Insert the SD card into the Brain.
- Run BrainLILO from Windows CE (SD card app list).
- U-Boot loads extlinux from the ext4 root partition.
5) USB gadget (optional)
To use USB Ethernet gadget:
- Change DTB
dr_modefromhosttoperipheralinimx28-brain.dtsi. - Enable a configfs RNDIS gadget (see
docs/brain-bootflow.md).