NixOS on ARM: Difference between revisions
m
→Community supported devices
m (Make this obvious.) |
|||
(21 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
<div style="font-size: 1.5rem; text-align: center;padding-bottom: 0.5rem;"><strong>NixOS supports 64-bit ARM.</strong></div> | <div style="font-size: 1.5rem; text-align: center;padding-bottom: 0.5rem;"><strong>NixOS supports 64-bit ARM.</strong></div> | ||
The support level varies depending on the architecture and the specific ecosystems and boards. | The support level for ARM overall varies depending on the architecture and the specific ecosystems and boards. | ||
The way the ARM integration is built into NixOS is by making '''generic builds the first-class citizens'''. This means that as soon as there is upstream support for the board in the kernel and platform firmware, NixOS should work once those are updated. | The way the ARM integration is built into NixOS is by making '''generic builds the first-class citizens'''. This means that as soon as there is upstream support for the board in the kernel and platform firmware, NixOS should work once those are updated. | ||
Line 9: | Line 9: | ||
At this moment in time (early 2024) '''only AArch64''' has full support upstream. With that said, neither armv6l or armv7l are being ignored, fixes are worked on and approved as needed. What's missing is support and builds being maintained in binary form. At the time of writing, no publicly available caches for armv6l or armv7l are available.<!-- please get in touch with samueldr on the NixOS on ARM channel if you want to share your own cache, before editing. We need to review the wording to make it crystal clear it's a user-provided cache. --> | At this moment in time (early 2024) '''only AArch64''' has full support upstream. With that said, neither armv6l or armv7l are being ignored, fixes are worked on and approved as needed. What's missing is support and builds being maintained in binary form. At the time of writing, no publicly available caches for armv6l or armv7l are available.<!-- please get in touch with samueldr on the NixOS on ARM channel if you want to share your own cache, before editing. We need to review the wording to make it crystal clear it's a user-provided cache. --> | ||
'''For images links, including UEFI install''', skip to the [[ | '''For images links, including UEFI install''', skip to the [[NixOS_on_ARM/Installation|Installation page]]. | ||
== Supported devices == | == Supported devices == | ||
Line 65: | Line 65: | ||
--> | --> | ||
<div class="table"> | <div class="table"> | ||
{|class="table" | {| class="sortable table" | ||
!width="2%"| Manufacturer | !width="2%"| Manufacturer | ||
!width="2%"| Board | !width="2%"| Board | ||
Line 83: | Line 83: | ||
|- | |- | ||
| ASUS | | ASUS | ||
| [[NixOS_on_ARM/Tinker Board|Tinker Board]] | | [[NixOS_on_ARM/ASUS Tinker Board|Tinker Board]] | ||
| Rockchip RK3288 | | Rockchip RK3288 | ||
| ARMv7 | | ARMv7 | ||
Line 101: | Line 101: | ||
| [[NixOS_on_ARM/Banana Pi M64|Banana Pi M64]] | | [[NixOS_on_ARM/Banana Pi M64|Banana Pi M64]] | ||
| Allwinner A64 | | Allwinner A64 | ||
| | | AArch64 | ||
| 4× Cortex-A53 | | 4× Cortex-A53 | ||
| 2 GB | | 2 GB | ||
Line 109: | Line 109: | ||
| [[NixOS_on_ARM/Banana Pi BPI-M5|Banana Pi BPI-M5]] | | [[NixOS_on_ARM/Banana Pi BPI-M5|Banana Pi BPI-M5]] | ||
| Amlogic S905X3 | | Amlogic S905X3 | ||
| | | AArch64 | ||
| 4× Cortex-A55 | | 4× Cortex-A55 | ||
| 4 GB LPDDR4 | | 4 GB LPDDR4 | ||
Line 454: | Line 454: | ||
== Installation == | == Installation == | ||
{{main|NixOS_on_ARM/Installation}} | |||
{{ | |||
== | == Initial configuration == | ||
{{main|NixOS_on_ARM/Initial_Configuration}} | |||
== Troubleshooting == | |||
=== Hanging at <code>Starting kernel ...</code> === | |||
When booting a NixOS system, it may look like it is hung at <code>Starting kernel ...</code>. | |||
It is unlikely to be hung at this part. This is the last message printed by U-Boot. U-Boot prints to both the display and the console at once. | |||
To view the kernel messages and boot output, the “<code>stdout</code>” of the kernel needs to be configured appropriately. | |||
The | The kernel's <code>stdout</code> will differ depending on semantics. | ||
* When there are no valid <code>console=</code> kernel command-line arguments, it will default to the <code>/chosen/stdout-path</code> device tree property. (Generally a serial console.) | |||
* When valid <code>console=</code> parameters are present, the kernel picks the leftmost valid one as <code>stdout</code>. | |||
<code> | In other words, the solution may be to enable the appropriate <code>console=</code> parameters according to your hardware configuration and system. | ||
</code> | |||
* For the display, add <code>console=tty0</code>. | |||
* For a serial console, refer to the target device configuration. | |||
=== Details about the boot process === | |||
NixOS can also be booted through [[NixOS on ARM/UEFI|UEFI]] on ARM. The semantics are generally the same as on other architectures. Do note that the common use of Device Tree instead of ACPI in consumer-class hardware [[NixOS_on_ARM/UEFI#Device_Trees|''may'' make this a bit more awkward]]. | |||
Otherwise, in SBC-class hardware, it is common that boards are generally expected to use U-Boot as the platform firmware and bootloader. See the section about [[U-Boot#Using NixOS with U-Boot|using NixOS with U-Boot]]. | |||
== Binary | == Binary caches == | ||
=== AArch64 === | === AArch64 === | ||
Line 500: | Line 493: | ||
=== armv6l and armv7l === | === armv6l and armv7l === | ||
Some '''''users''''' have provided best effort caches for 32 bit ARM, but none are currently available. | Some '''''users''''' have provided best effort caches in the past for 32 bit ARM, but none are currently available. | ||
== | == Getting Support == | ||
There is a dedicated room for the upstream NixOS effort on Matrix, | |||
[https://matrix.to/#/#nixos-on-arm:nixos.org #nixos-on-arm:nixos.org]. | |||
Don't hesitate to ask questions. Note that reply times may vary greatly, depending on the provided information. | |||
== Resources == | |||
=== See also === | |||
* [[U-Boot]], as it is often paired with SBC-class hardware. | |||
* [https://mobile.nixos.org/ Mobile NixOS], which provides enhanced semantic around some non-standard boot semantics. | |||
* | |||
* | |||
[https:// | |||
=== Subpages === | === Subpages === |