NixOS on ARM/OLIMEX Teres-A64
OLIMEX Teres-A64 | |
---|---|
Manufacturer | OLIMEX, Ltd |
Architecture | AArch64 |
Bootloader | Upstream U-Boot[1] |
Boot order | SD, eMMC |
Maintainer | KREYREN |
Teres-1 (often referred as teres-a64) is an open-source hardware and software netbook design based on the Allwinner A64 SoC.
It can boot from SD or from the included and slow af eMMC module (insane people use only).
Status
Work In Progress..
The system is bootable and seems to work, but audio is broken and has issues with graphical issues that are currently being investigated, note known issues below for building on Linux 6.0~6.1 resulting in broken display.
U-boot support has been submitted on 2023-06-30, but not yet merged.
Installation instructions
To use the generic installation image for your board, you will need to copy it verbatim to an SD card.
sudo dd if=sd-image-aarch64-linux.img of=/dev/DEVICE conv=sync status=progress
This board requires the installation of u-boot at a specific location on the storage where NixOS was written to.
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/DEVICE bs=1024 seek=8
Partitioning
All Allwinner SoCs will try to find a boot image at sector 16 (8KB) of an SD card, connected to the first MMC controller.[3]
MBR partition scheme
GPT partition scheme
The Allwinner GPT Installation instruction explains how to create a GPT partition table while allowing the isntallation of u-boot at the required offset.
Serial console
Compatibility notes
Mainline kernel | |
---|---|
HDMI |
|
Downstream kernel
USB booting with u-boot
You will need to either have mainline U-Boot installed to the eMMC or to an SD card.
Stop the boot process when prompted (by pressing a key). Then, do the following:
Hit any key to stop autoboot: 0 => setenv boot_targets usb0 => boot
This sets the boot order for this boot only. U-Boot can boot (among others) either of the NixOS sd-image or EFI iso from USB.
Known issues
Building the bootloader and the configuration on linux 6.0~6.1 will result in broken display rendering due to "DRM_IOCTL_MODE_CREATE_DUMB failed: Cannot allocate memory' caused by insufficient Quality Assurance at mesa upstream tracked on https://gitlab.freedesktop.org/mesa/mesa/-/issues/8198.
The fix has been merged in https://gitlab.freedesktop.org/mesa/mesa/-/commit/c426e5677f36c3b0b8e8ea199ed4f2c7fad06d47 and is part of Linux 6.2 so as long as you build ""and use"" this kernel the display should work without an issue.
Please let me know if you encounter this issue outside of known broken linux release. -- KREYREN