Aller au contenu

Hôtes aarch64 (Raspberry Pi)

DNF gère des nœuds aarch64 au même titre que les nœuds x86_64 : ils se déclarent dans etc/config.yaml, se construisent et se déploient avec les mêmes commandes. Le support matériel (noyau, firmware, bootloader) provient du flake nixos-raspberrypi 🡕.

L’architecture d’un hôte se choisit avec le champ arch, au format cpu[:board]. En l’absence de ce champ, l’hôte est un x86_64 classique.

Valeur de archMachine
x86_64 (défaut)PC / serveur x86_64
aarch64:rpi02Raspberry Pi Zero 2 W
aarch64:rpi3Raspberry Pi 3
aarch64:rpi4Raspberry Pi 4
aarch64:rpi5Raspberry Pi 5
etc/config.yaml
hosts:
- hostname: "pi"
name: "Raspberry Pi du salon"
zone: "maison:1.20"
arch: "aarch64:rpi5"
profile: "server"
users: ["alice"]
services:
homepage:
  1. Générationjust generate valide arch puis l’écrit tel quel dans var/generated/hosts.nix.

  2. Interprétation — le framework éclate cpu:board en un système NixOS (aarch64-linux) et un modèle de carte (rpi5raspberry-pi-5).

  3. Injection matérielle — pour une carte Raspberry Pi, les modules nixos-raspberrypi (noyau et firmware constructeur, bootloader, cache binaire) sont ajoutés automatiquement à la configuration du nœud.

  4. Construction — Colmena construit ce nœud avec un nixpkgs aarch64 dédié, transparent pour le reste du parc.

Construire de l’aarch64 depuis une machine d’administration x86_64 demande l’une de ces trois approches :

  • Construire sur la cible : déployer avec Colmena en build-on-target, le Raspberry Pi compile lui-même (natif mais lent).
  • Builder distant aarch64 : déléguer la construction à une machine ARM (le plus rapide pour un parc conséquent).

Une image SD bootable amorce le Pi, qui est ensuite intégré au parc comme n’importe quel nœud (cf. installation initiale).

  1. Construire l’image SD (choisir l’attribut selon le modèle) :

    Fenêtre de terminal
    nix build .#nixosConfigurations.sd-image-raspberry-pi-5.config.system.build.sdImage
  2. Écrire l’image sur la carte :

    Fenêtre de terminal
    zstd -dc result/sd-image/*.img.zst | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
  3. Premier démarrage — branché au réseau (Ethernet, ou Wi-Fi pour les cartes sans port filaire comme le Zero 2 W), le Pi prend une adresse en DHCP (nom dnf-install), avec SSH actif et l’utilisateur nix autorisé par la clé d’administration (usr/secrets/nix.pub).

  4. Déclarer puis déployer — ajouter l’hôte dans etc/config.yaml avec son arch, lancer just generate, puis déployer la configuration réelle (déploiement).