Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

LinuxFr.org : les journaux  -  De l'installation de Guix System

 -  Août 2023 - 

Sommaire

Bonjour, pour mon premier journal (compte récent, mais je lis DLFP depuis une vingtaine d'années), je vais vous parler de l'installation que je viens de faire de Guix System sur mon ordinateur portable personnel. C'est autant pour garder une trace pour moi-même, que pour partager mon expérience avec d'autres.

Introduction et blabla

S'il est vrai que la documentation de Guix est vraiment bien faite, et est dans les grandes lignes très suffisante, il n'est pas évident de trouver des retours d'expérience d'utilisateurs un peu plus lambda que la moyenne sur cette distribution. Il n'y a pas de forum, pas de wiki, juste une mailing list ou deux, un cookbook, c'est pas évident de trouver des infos sans se taper des discussions à rallonge où on n'est même pas sûr de trouver des réponses à nos questions.

Dans ce premier journal, on va uniquement parler de l'installation du système de base en tant qu'unique système sur votre ordinateur, pour une utilisation orientée desktop. Avec formatage du disque dur. On ne va pas se contenter de suivre bêtement la documentation, mais en profiter pour faire quelques choix différents, ou tout du moins montrer aux lecteurs que c'est pas bien velu si on veut l'utiliser au quotidien.

Les prérequis

D'ailleurs les prérequis sont relativement limités. Il faut quand même connaître un minimum le terminal, comprendre ce qu'on fait quand on tape une ligne de commande, savoir lire de la documentation, ce genre de choses. Je vais partir du principe que vous savez partitionner un disque dur. Rien ne vous empêche, si vous ne savez pas faire, d'aller voir les articles correspondants sur le wiki d'Arch Linux (peut-être la seule documentation mieux faite que celle de Guix).

Si vous avez le niveau pour Debian, Arch ou Gentoo, alors vous aurez le niveau pour Guix. Si vous connaissez dd, cat, nano, fdisk, cp et curl, vous savez déjà tout faire.

L'installation se fera sur un ordinateur avec UEFI.

blabla

Je ne suis moi-même pas un expert. Loin de là. Je ne connais ni scheme, ni Lisp, ni Guile, à vrai dire je ne suis même pas capable d'écrire un script bash de plus de quelques lignes. Je ne sais pas programmer. Je ne travaille pas dans l'informatique. Je suis un simple cuisinier qui s'intéresse au logiciel libre depuis environ toujours, mais ça s'arrête là. Je n'ai jamais vraiment contribué. Depuis 15 ans environ, mon ordinateur tourne sous Arch, et j'essaie de ne rien faire que je ne comprenne pas. J'ai le souvenir d'avoir essayé un live de Mandrake sur le Celeron 500MHz familial quand j'étais au lycée, c'était mon premier contact.

Vous pouvez utiliser le gestionnaire de paquet Guix sur votre distribution préférée

Bref, je m'égare tout ça pour dire, c'est pas dur. Je vous conseille quand même très fortement, avant de vous lancer dans l'installation du système, à passer deux ou trois jours à lire la documentation officielle, à installer le gestionnaire de paquet Guix sur votre distribution actuelle pour jouer un peu avec, apprendre les deux-trois trucs de base (gestion des paquets par exemple, syntaxe de guile également, ce genre de choses). Ce n'est pas du tout indispensable, mais c'est mieux pour vous. Lisez au moins la documentation d'installation officielle, et gardez-la ouverte pour la suivre en parallèle de ce guide.

C'est bien gentil Guix, mais on fait comment si on a du matos qui a besoin de firmware non-libre ?

Ce que ce journal n'est pas, c'est une présentation de Guix. Il y a déjà tout ce qu'il faut sur Internet, et même sur LinuxFR. En revanche, on va parler du sujet qui fâche, le fait que ce soit une distribution avec uniquement du logiciel libre, et donc linux-libre en tant que noyau. C'est chiant. Donc on va utiliser le dépôt tiers nonguix, qui contient des logiciels privateurs. Si on veut faire fonctionner le wifi, c'est presque indispensable.

Le problème, c'est qu'évidemment le média d'installation utilise lui aussi (forcément) linux-libre. Si comme moi vous n'avez qu'une carte wifi Intel pour accéder à Internet, vous êtes déjà bloqué avant même d'avoir commencé. Heureusement, il y a deux ressources dont on va se servir et qui vont grandement nous simplifier la tâche. Le dépôt nonguix donc, mais aussi l'excellent site System Crafters, qui a lui-même déjà écrit un guide d'installation avec le noyau de nonguix. Plus qu'une inspiration, ça sera carrément notre support de base. En plus d'avoir écrit son guide, il met à disposition des médias d'installation avec le noyau de nonguix. Compilé automatiquement toutes les semaines. La vie est belle. Qu'il soit béni sur sept générations, et que ses louanges soient chantées du Nord au Sud et d'Est en Ouest.

l'Installation

On va donc commencer par récupérer l'image d'installation ici. Ensuite on va la copier sur une clé USB :

#si votre clé usb est /dev/sdb, sinon adaptez à partir du résultat de lsblk
dd if=image.iso of=/dev/sdb

Ensuite on redémarre, on boote sur la clé USB, on passe Grub, on arrive au bout de quelques instants sur l'installeur graphique. La première étape consiste à choisir la langue d'installation. Sans surprise j'ai choisi français.

Vient la timezone, pour moi Europe puis Paris. Le hostname, la disposition bépo clavier.

Ensuite on a un choix à faire. On va partir sur installation graphique, et non installation shell. Ça va nous permettre de générer un premier fichier de configuration, mais on l'éditera à la main avant de lancer l'installation proprement dite en ligne de commande. Autrement dit, on ne va pas aller tout à fait au bout du processus en mode graphique.

À l'étape d'après, on va se connecter au réseau wifi. Si comme moi vous avez une carte wifi qui nécessite de charger un firmware non libre, vous aurez droit à un avertissement de non prise en charge du matériel. Cet avertissement est caduque, puisqu'on utilise un média d'installation avec le noyau linux, et non linux-libre. Votre carte devrait donc fonctionner normalement.
Pour se connecter, je vous laisse faire. Il faut appuyer sur scan pour scanner les réseaux, sélectionner le bon, entrer le mot de passe… Si vous avez déjà utilisé une interface graphique dans une console, c'est sans surprise. Pour les autres, sachez qu'il faut se déplacer avec les flèches du clavier dans les listes, pour changer la surbrillance, pour changer les options, pour valider.

Premier problème : la date

Là vous pouvez éventuellement rencontrer une première difficultée. L'ordinateur se connecte au réseau wifi, mais l'installeur refuse d'aller plus loin sous prétexte qu'il n'est pas connecté à Internet. Ça peut être parce que la date n'est pas bonne, et de ce fait il refuse de valider le certificat du site qu'il contacte pour valider la connexion. Pas de panique, on va régler ça. L'installeur grapgique est sur le TTY1. Sur le 2 il y a la documentation d'installation officielle. On va aller sur le 3. Donc ctrl + alt + F3, entrée pour se connecter, date pour vérifier que notre théorie est la bonne. Si c'est bien cela, man date pour apprendre à régler la bonne date (indice : -s).

On retourne dans l'installeur graphique avec ctrl + alt + F1, on se reconnecte au wifi, et normalement tout roule.

On continue

Ensuite on peut choisir d'activer ou pas la découverte des serveurs de substituts sur le réseau local. Vous faites bien ce que vous voulez, mais si vous êtes ici, sauf à vous être introduits clandestinement à l'INRIA, vous pouvez chosir de ne pas l'activer.

Pour ceux qui ont eu la flemme de lire la doc, les substituts c'est les paquets précompilés. Sans eux ça vous allez tout compiler sur votre machine comme une distribution source. Mais dans tous les cas, même si on désactive la recherche locale, on va quand même utiliser les serveurs de substituts globaux.

Le mot de passe root, vous mettez un truc au pif, on ne s'en servira pas. Création de votre utilisateur, pareil le mot de passe ne sera pas pris en compte (mais le reste si !).

Le débat sans fin : Gnome, ou Gnome ? Vous choisissez votre gestionnaire de bureau préféré. Dans ce guide on part sur Gnome, on tolère XFCE, et le reste on connait même pas. Dans un éventuel futur journal on utilisera Sway, voire mieux encore (mais c'est une surprise).

Dans les services de base qu'on nous propose d'activer, on ne désélectionne surtout pas les certificats ! Sinon on ne pourra pas vérifier les certificats TLS des serveurs qu'on contacte, et votre expérience de navigation sur le web va vite être limitée.

Et c'est parti pour le partitionnement du disque

C'est mal, mais je ne chiffre pas mes partitions. Il faut dire que mon ordinateur ne quitte que rarement mon salon, et quasiment jamais ma maison.

Histoire de me rajouter une difficulté, j'ai décide pour la première fois de ne pas utiliser ext4 comme système de fichier, mais btrfs, suite à l'article de PCI.. Je ne connais pas ce FS, mais ça devrait bien se passer. On lit la page du wiki d'Arch correspondante, la section de la documentation de Guix qui va bien, le man de btrfs, et on est prêt à configurer tout ça.

Dans l'installeur graphique, on sélectionne méthode manuelle. On sélectionne le disque sur lequel on veut installer le système, afin de créer une nouvelle table de partition gpt.

Ensuite on va créer deux partitions en sélectionnant l'espace libre disponible :

nom : efi
Type : fat32
ESP : oui
Taille : 512MB
Point de montage : /boot/efi

puis

nom : guix-pool
type : btrfs
ESP : non
Taille : la valeur par défaut (tout le reste du disque)
Chiffrement : non
Point de montage : /

J'ai un problème avec le label (ici "guix-pool") que Guix ne reconnait jamais. Dans la configuration j'utilise donc les UUID.

Si vous préférez, vous pouvez utiliser fdisk ou parted dans le TTY3 pour arriver au même résultat. Si vous voulez chiffrer vos partitions, grand bien vous fasse. Ça va utiliser LUKS. Je ne rentre pas dans les détails, mais c'est pas compliqué. Vous choissiez un mot de passe et Guix va tout configurer tout seul si vous utilisez les partitions de manière classique. Avec les sous-volumens btrfs, il va sûrement falloir bricoler un peu.
Si vous préférez utiliser XFS ou EXT4, pas de souci vous êtes quand même les bienvenus.

Une fois le disque partitionné, l'installeur va nous afficher le fichier de configuration qu'il a généré. On ne s'en occupe pas ici.

C'est terminé pour l'installation graphique

À partir de là, on va retourner dans le TTY3 pour finir l'installation à la main. Donc ctrl + alt + F3.

En premier, on va choisir la bonne disposition clavier avec la commande loadkeys. Par défaut le clavier est en qwerty, pour la plupart un loadkeys fr suffira, mais pour certaines personnes très belles, les écrivains et les maires, un loadkeys fr-bepo sera plus approprié.

L'installeur graphique a déjà monté le futur disque système sur /mnt, mais nous on veut encore le modifier un peu pour utiliser les sousvolumes de btrfs. On va donc le démonter :

umount -R /mnt
#Si vous voulez nommer le disque "guix-pool"
#Je donne la commande pour info mais encore une fois, chez moi ça ne sert à rien
btrfs filesystem label /dev/sda2 guix-pool

Nous allons créer pas moins de 4 sous-volumes. Un pour la racine, un pour le store, un pour les homes des utilisateurs et un pour le swap.

# D'abord on monte le pool avec une option de compression
# Les options sont choisies après lecture du wiki de Arch et du manpage de btrfs, vous faites comme vous le sentez
mount -o compress-force=zstd /dev/sda2 /mnt
btrfs subvolume create /mnt/root
btrfs subvolume create /mnt/swap
btrfs subvolume create /mnt/home
btrfs subvolume create /mnt/gnustore

Je crois que les vrais utilisent une seule commande du type btrfs subvolume create /mnt/{root,swap,home,gnustore} mais moi vu mon niveau j'hésite à faire le foufou.

Comme on a créé un sous-volume pour la racine, il faut la désigner comme défaut pour le montage (c'est pas du tout obligatoire, mais on va le faire pour info).

btrfs subvolume list -p /mnt

Voici le résultat de la commande chez moi :

ID 256 gen 917 parent 5 top level 5 path root
ID 257 gen 375 parent 5 top level 5 path swap
ID 258 gen 630 parent 5 top level 5 path gnustore
ID 259 gen 917 parent 5 top level 5 path home

L'ID 256 est ce qui nous intéresse :

btrfs subvolume set-default 256 /mnt

À partir de là si on monte /dev/sda2 sans plus de précision, c'est en fait le sous-volume root qu'on va monter.

On crée le swapfile :

# J'ai 8Go de RAM, donc la taille est identique pour permettre l'hibernation (normalement tu connais)
btrfs filesystem mkswapfile --size 8g --uuid clear /mnt/swap/swapfile

L'installeur graphique a déjà créé des dossiers et fichiers à la racine du disque, sauf que nous on a créé un sous-volume. On va y déplacer tout ceci :

mv /mnt/boot /mnt/root/boot
mv /mnt/etc /mnt/root/etc

Il faut ensuite redémonter le disque, puis tout remonter à sa bonne place :

umount /mnt

#préciser le sous-volume est facultatif si vous l'avez défini par défaut
mount -o compress-force=zstd,subvol=root /dev/sda2 /mnt

#on crée les points de montage
mkdir /mnt/swap
mkdir /mnt/home
mkdir -p /mnt/gnu/store

#on monte les sous-volumes au bon endroit
mount -o subvol=swap /dev/sda2 /mnt/swap
mount -o compress-force=zstd,subvol=home /dev/sda2 /mnt/home
mount -o compress-force=zstd,subvol=gnustore /dev/sda2 /mnt/gnu/store

C'est terminé pour la configuration du disque, maintenant on va pouvoir retourner sur le guide de System Crafters pour l'installation proprement dite. On a monté le sous-volume contenant le fichier de swap pour la gloire, il est vrai que ça ne sert à rien pour l'instant. Mais comme ça vous savez tout faire.

Dans la même idée, on peut créer les sous-volumes avant de démonter le disque la première fois. C'est un peu redondant de le démonter puis de le remonter. Voire carrément inutile. Mais c'est comme ça que j'ai fait parce que j'ai tout découvert au fur et à mesure.

Notez que depuis le noyau 6.2, linux active automagiquement le trim pour les SSD, pas besoin de s'en soucier.

Dernières petites choses avant de lancer l'installation

On va suivre le paragraphe « Editing the generated configuration » :

# emacs, nano et vim sont disponibles dans le media d'installation.
# Je conseille emacs ou vim pour avoir la correspondance des parenthèses.
vim /mnt/etc/config.scm
# on ajoute (nongnu pakages linux)
(use-modules (gnu) (nongnu packages linux))

# un peu plus bas, sous (operating-system on ajoute le noyau et les firmwares non libres
(kernel linux)
(firmware (list linux-firmware))

# Il faut également configurer le montage des volumes du pool btrfs qu'on a créé.
# Pour l'instant on monte le minimum, on s'occupera du swapfile plus tard.
# Dans (file-systems (cons* on ajoute tout ce qui va bien
# lsblk -o name,uuid pour avoir l'uuid du disque si besoin

(file-systems (cons* (file-system
                         (mount-point "/")
                         (device (uuid "934dfddf-a883-4f49-ae8d-462bd12924dd"))
                         (type "btrfs")
                         (options "subvol=rootvol,compress-force=zstd"))
                     (file-system
                         (mount-point "/home")
                         (device (uuid "934dfddf-a883-4f49-ae8d-462bd12924dd"))
                         (type "btrfs")
                         (options "subvol=home,compress-force=zstd"))
                     (file-system
                         (mount-point "/gnu/store")
                         (device (uuid "934dfddf-a883-4f49-ae8d-462bd12924dd"))
                         (type "btrfs")
                         (options "subvol=gnustore,compress-force=zstd"))
                     (file-system
                         (mount-point "/boot/efi")
                         (device (uuid "F89C-C0FC"
                                       'fat32))
                         (type "vfat")) 
                     %base-file-systems)))

Si on suit le guide de System Crafters, l'installation ne va pas utiliser le serveur de substituts de nonguix, et donc compiler le noyau linux sur votre machine. Ce n'est pas ce qu'on veut, on va donc activer son utilisation. Pour cela, vous connaissez la chanson, on lit la documentation officielle, paragraphe "Substitutes for nonguix".

Voici ce à quoi ça se résume pour autoriser le serveur :

curl https://substitutes.nonguix.org/signing-key.pub > key.pub
guix archive --authorize < key.pub
# Le warning n'est pas important, nous ne sommes que sur un système temporaire.

On peut maintenant lancer l'installation.

herd start cow-store /mnt
cp /etc/channels.scm /mnt/etc/
guix time-machine -C /mnt/etc/channels.scm -- system init --substitute-urls="https://ci.guix.gnu.org https://bordeaux.guix.gnu.org https://substitutes.nonguix.org" /mnt/etc/config.scm /mnt

On attend, l'installation est un peu longue. Si certains substituts ne sont pas disponibles, des compilations vont avoir lieu en local. C'est normal. Une fois que c'est terminé, on peut redémarrer la machine avec reboot.

On sort évidemment la clé USB contenant le média d'installation pour ne pas démarrer dessus, et normalement sous vos yeux ébahis on découvre notre système Guix fraîchement installé. Les mots de passe n'étant pas encore définis, on ne peut pas s'identifier dans GDM. ctrl + alt + F2 pour avoir une invite de commande. On commence par s'identifier en root puis on utilise passwd puis passwd pour créer les mots de passe. exit pour quitter la session, et ctrl + alt + F7 pour retourner sur le display manager. On peut alors s'identifier avec son utilisateur et le mot de passe qu'on vient de créer.

Je vous laisse lire la fin sur System Crafters, il n'y a plus aucun changement. Faites le ! C'est important pour la suite de votre voyage dans Guix.

Je m'arrête ici pour ce journal. En fonction de son succès il y aura des suites, déjà pour améliorer notre configuration système de base. (il manque l'utilisation du swapfile par exemple, pour l'instant on l'a créé pour rien), l'utilisation du serveur de substitut nonguix dans le système installé, la définition de services supplémentaires, le microcode cpu, la gestion de l'énergie, etc. Ensuite pour la gestion de la home avec guix home, et la définition de services utilisateurs simples (mpd par exemple). Peut-être ensuite le packaging d'applications simples, voire la contribution au projet.

Pour l'instant nous n'avons pas activé la prise en charge du serveur de substituts de nonguix dans le système installé. C'est pas forcément trivial même avec la doc donc il y aura un journal à ce propos si ça vous intéresse. Je pense qu'il y en a assez pour aujourd'hui.
Attention cela signifie que si vous installez un paquet provenant de nonguix (mise à jour du noyau, ou firefox, ou autre), il sera compilé en local.

Si vous connaissez déjà un peu Guix, je serais curieux d'avoir votre retour sur ce journal. Je me répète, je suis loin d'être sûr de moi dans ce que je fais, il y a peut-être des erreurs. En tous cas j'ai écris ce journal dans mon système fraîchement configuré, donc ça démarre.

Si vous estimez que ce journal a besoin d'un peu plus de contexte (autrement dit, si vous avez la flemme de lire la documentation de Guix), n'hésitez pas à le dire, je ferais un journal préquel.

Merci pour votre patience. Je vous prie d'agréer Madame, Monsieur, des bisous.

Commentaires : voir le flux Atom ouvrir dans le navigateur

par Paul C.

LinuxFr.org : les journaux

LinuxFr.org : Journaux

firefox, nouvelle fenêtre dans une session isolée

 -  15 avril - 

Les fenêtres de navigation privées de firefox partagent leurs cookies de session or je souhaitais avoir des fenêtres de navigation isolées, (qui ne (...)


Pretendo tente de déprogrammer l'obsolescence des consoles Nintendo

 -  9 avril - 

Ah Nal,Gros N vient de faire un gros doigt aux utilisateurs de ses consoles 3DS et Wii U en annonçant la fermeture des services en ligne pour (...)


[Trolldi] Vulgarisation sur l'IA pour décideur pressé

 -  5 avril - 

Cher 'Nal,Je fais un article-marque-page sur un post tout frais de Ploum où il est question d'un fantasme vieux comme le Talmud avec le Golem. (...)


Super Marian and Robin: les roms en collant

 -  3 avril - 

Bonjour Nal,Je t'écris pour te proposer de tester mon nouveau jeu: Super Marian and Robin.Il s'agit d'un jeu de plateformes pour un ou deux (...)


Le roi est mort, vive le roi ! Les alternatives de Redis sont là

 -  3 avril - 

Bonjour Nal !Après le changement de licence de Redis, ce qui devait arriver arriva, et des alternatives libres apparaissent.Tout d'abord, on a (...)