NixOS on ARM/Tinker Board
|NixOS on TinkerBoard|
@dezgeg's porting efforts to ARMv7 works on the TinkerBoard, with some modification for u-boot and DTB paths. Support for this board is a work in progress. Please contact me (@tomberek) for comments/thoughts/feedback/etc.
Board-specific installation notes
First follow the generic installation steps to get the installer image on an SD card.
The Tinker Board seems to look for U-Boot at a specific offset rather than in a file. So copy the initial 4MB from the TinkerOS image and then copy it to the NixOS image while skipping the MBR/partition table in the first 512 bytes. It turns out the bootstrap section of the MBR is also needed, so copy that as well.
These commands may use either the /dev/sdX or the file images and later copied to SD cards - this was discovered iteratively, thus was performed on the sd cards directly. Use with caution. (Assumes
/dev/sdc is TinkerOS and
/dev/sdb is NixOS images or devices respectively).
dd if=/dev/sdc of=tinker_sector bs=512k count=8 status=progress # grab tinker initial sectors dd if=tinker_sector of=/dev/sdb bs=512 skip=1 seek=1 count=8191 # copy the img and env blobs dd of=/dev/sdb if=tinker_sector bs=428 count=1 # bootstrap code from begining of MBR
It turns out that getting into U-Boot using the TinkerOS image, halting the boot process, replacing SD cards with the NixOS image fails, but the error message suggests the extlinux merely has a different name for the DTB than NixOS has packaged. Simply copy from the nixos dtb file `/boot/nixos/<hash>-dtbs/rk3288-tinker.dtb` to `rockchip-tinker_rk3288.dtb`.
Then, install using the installation and configuration steps.
Your configuration.nix will need to modify the default
boot.kernelParams configuration to use the serial console.
boot.kernelParams = [ "console=ttymxc0,115200n8" # HDMI? "console=tty0" # Primary Console? "console=ttyS1,115200n8" # Serial port? "console=ttyS2,115200n8" # Serial port pins 8+10 ];
- Build U-boot from upstream
- upload images/blobs
- host binary cache