NixOS on ARM: Difference between revisions

m Details about the boot process: Strip down implementation details
Line 684: Line 684:
NixOS can be booted through [[NixOS on ARM/UEFI|UEFI]] on ARM too. 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 ''may'' make this a bit more awkward.
NixOS can be booted through [[NixOS on ARM/UEFI|UEFI]] on ARM too. 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 ''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.
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]].  
 
With U-Boot, NixOS currently still assumes use of [https://docs.u-boot.org/en/v2024.04/develop/distro.html U-Boot's Generic Distro Configuration Concept] as the mechanism to communicate boot information (such as path to kernel zImage, initrd, DTB, command line arguments).
 
For a quick TL;DR about the generic distro configuration support: U-Boot is scripted to scan all attached storage devices & partitions and look for a file named <code>/extlinux/extlinux.conf</code> or <code>/boot/extlinux/extlinux.conf</code> (which will be generated by NixOS, just like <code>/boot/grub/grub.cfg</code> is generated on PCs). The partition needs to have its "bootable" flag set.


== Porting NixOS to new boards ==
== Porting NixOS to new boards ==