NixOS on ARM/PINE64 ROCK64: Difference between revisions
imported>Bennofs |
imported>Lopsided98 Update to account for upstream U-Boot |
||
Line 26: | Line 26: | ||
== Status == | == Status == | ||
This board has upstream U-Boot and kernel support, although the mainline kernel may still be missing some features. NixOS can be installed using manual partitioning and <code>nixos-install</code> or by modifying the aarch64 installation image as described in the next section. | |||
U-Boot for this board is packaged in nixpkgs, and Hydra builds can be found here: https://hydra.nixos.org/job/nixpkgs/trunk/ubootRock64.aarch64-linux | U-Boot for this board is packaged in nixpkgs, and Hydra builds can be found here: https://hydra.nixos.org/job/nixpkgs/trunk/ubootRock64.aarch64-linux | ||
This bootloader is not entirely open, incorporating a blob for the tertiary program loader (TPL). | This bootloader is not entirely open, incorporating a binary blob for the tertiary program loader (TPL). | ||
== Board-specific installation notes == | == Board-specific installation notes == | ||
U-Boot needs to be copied to | U-Boot needs to be copied to specific sectors on the microSD card, eMMC or image with <code>dd</code>. Download/build U-Boot for the board, and write <code>idbloader.img</code> and <code>u-boot.itb</code> to the correct locations with (replace <code>/dev/mmcblkX</code> with the correct path to the card or image): | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
dd if=idbloader.img of=/dev/mmcblkX conv=fsync,notrunc bs=512 seek=64 | |||
dd if=u-boot.itb of=/dev/mmcblkX conv=fsync,notrunc bs=512 seek=16384 | |||
</syntaxhighlight> | |||
{{note|Prior to NixOS 20.03, a downstream version of U-Boot 2017.09 was packaged, which placed U-Boot in a single <code>idbloader.img</code> file. If that version is used, simply disregard the second command above.}} | |||
< | |||
== Serial console== | == Serial console== | ||
Line 70: | Line 66: | ||
== Compatibility notes == | == Compatibility notes == | ||
{| class="table arm-compatibility" | {| class="table arm-compatibility" | ||
! | | | ||
! style="background: #fafafa" | Mainline kernel !! style="background: #fafafa" | ayufan-rock64/linux-mainline-kernel | |||
|- | |- | ||
! Ethernet | ! Ethernet | ||
| | | Works || Works | ||
|- | |- | ||
! USB | ! USB | ||
| | | As of 5.4, USB 3.0 does not work || Works | ||
| | |||
| | |||
|- | |- | ||
! | ! HDMI | ||
| | | Works || Works | ||
|} | |} | ||
Line 102: | Line 88: | ||
* [https://github.com/ayufan-rock64/linux-mainline-kernel ayufan-rock64/linux-mainline-kernel] mainline based, with potentially fewer hardware features supported. This kernel is not based on a kernel stable branch, so it may have more bugs (unrelated to the hardware). | * [https://github.com/ayufan-rock64/linux-mainline-kernel ayufan-rock64/linux-mainline-kernel] mainline based, with potentially fewer hardware features supported. This kernel is not based on a kernel stable branch, so it may have more bugs (unrelated to the hardware). | ||
{{note|The | {{note|The old vendor U-Boot 2017.09 did not leave enough room between the kernel and initrd, causing recent kernels to overwrite the beginning of the initrd. This can be fixed by increasing <code>ramdisk_addr_r</code> in the U-Boot console, or using upstream U-Boot. }} | ||
== Resources == | == Resources == | ||
* [https://www.pine64.org/?page_id=7147 Official product page] | * [https://www.pine64.org/?page_id=7147 Official product page] |