Aller au contenu

Installation minimale

Etape 1

Tout d'abord il vous faut télécharger une image aarch64, armv7l ou bien construire votre propre image.

J'ai choisi la solution aarch64 et donc le téléchargement d'une image 20.03

Aprés décompression de l'image, j'ai écrit celle-ci sur ma carte microSD de plus de 4GB avec un outil BalenaEscher

BalenaEscher

Vous pouvez aussi tout simplement utiliser la commande dd

sudo dd if=nixos-sd-image-20.03.2102.xxxxxxxxx-aarch64-linux.img of=/dev/sdX

et comme avec les autres OS j'ai allumé le Raspberry.

J'ai donc chargé un system minimum dans une version de Kernel 5.4.44 aarch64.

Etape 2

La Mise à jour par le processus classique à savoir la commande nixos-rebuild afin d'intégrer les logiciels que je veux.

Pour cela on doit d'abord d'écrire un fichier configuration.nix intégrant la description de votre installation.

Et pour l'architecture ARM certains parametres sont nécessaires et obligatoires , voici un "bat" de mon fichier de configuration.

Remarque : 1. ligne 6 obligatoire 2. ligne 8 pour modifier le fichier de démarrage permettant de choisir le boot. nécessaire 3. lignes 11-12 indications de Kernel 4. ligne 16 .... je ne sais pas :-( nécessaire 5. ligne 20 - 29 obligatoire 6. ligne 32 - 34 nécessaire pour éviter les crash du au manque de mémoire. conseillé 7. ligne 37 activation de sshd necessaire

configuration

une fois que tout cela est en place le premier rebuild est possible .

nixos-rebuild switch --upgrade --show-trace

Il faut vérifier si on a effectivement une nouvelle generation, à la fin de la reconstruction sans erreur

nix-env -p /nix/var/nix/profiles/system --list-generations 1 1970-01-01 01:00:13 2 2020-06-08 23:48:40

on peut redémarrer la machine

shutdown -r now

Et se reconnecter par ssh avec l'utilisateur pboizot , lol cela ne marche pas.

Analyse Pas de login automatique avec l'utilisateur nixos mais une connexion avec root fonctionne. Ouufff

constat

  1. plus d'utilisateur nixos
  2. l'utilisateur pboizot existe mais n'a pas de mot de passe.

Contournement Création d'un mot de passe pour l'utilisateur.

Autres problèmes Au bout de quelques minutes d'utilisation je constate que vim n'est plus installé.

j'ajoute donc la ligne suivante à ma configuration, nous verrons par la suite qu'il serait bien d'ajouter quelques logiciels.

environment.systemPackages = with pkgs; [ wget bat vim lshw pciutils banner usbutils ];

Je lance un nouveau rebuild

unpacking channels... created 1 symlinks in user environment these derivations will be built: /nix/store/mp8mr0fpgcn8salydfkpx8f47nd98cgi-nixos-rebuild.drv these paths will be fetched (1.59 MiB download, 7.21 MiB unpacked): /nix/store/k0llnjlmvqzrgy3xknq1lh9h63g5q3n7-nix-2.3.6-man /nix/store/kgywp3z15kya08i7951p3ajcdnghl553-nix-2.3.6 copying path '/nix/store/k0llnjlmvqzrgy3xknq1lh9h63g5q3n7-nix-2.3.6-man' from 'https://cache.nixos.org'... copying path '/nix/store/kgywp3z15kya08i7951p3ajcdnghl553-nix-2.3.6' from 'https://cache.nixos.org'... building '/nix/store/mp8mr0fpgcn8salydfkpx8f47nd98cgi-nixos-rebuild.drv'... building Nix... building the system configuration... these derivations will be built:

building '/nix/store/iqn7801lcajfbgh1zrbbrlvsqmkxzhf6-nixos-system-rpi3-Nixos-20.03.2107.70717a337f7.drv'... activating the configuration... setting up /etc... reloading user units for pboizot... setting up tmpfiles reloading the following units: dbus.service

[root@rpi3-Nixos:/etc/nixos]# echo $? 0

Tout est OK on a une nouvelle génération

[root@rpi3-Nixos:~]# nix-env -p /nix/var/nix/profiles/system --list-generations 1 1970-01-01 01:00:13 2 2020-06-08 23:48:40 3 2020-06-10 19:04:46 (current)

qui a été mise à jour dans le fichier /boot/extlinux/extlinux.conf

extlinux.conf

NOTA Vous trouverez le fichier de configuration sur github dans le répertoire minimal.

Etape 3

Mise au point fine.

Comme vous l'avez compris cette installation est minimal.

Suite à des discussions dans les salles IRC nixos-fr et #nixos-aarch64 j'ai activé zramswap en ajoutant cela à ma configuration.

enable zramswap zramSwap = { enable = true; algorithm = "zstd"; };

Du coup j'ai testé que les générations de documentation étaient OK.

documentation.nixos.enable= false;

documentation.man.enable= true;

documentation.doc.enable= false;

Vous pouvez continuer l'exploration sur la page suivante .