Suivant: Se préparer à utiliser les binaires de bootstrap, Monter: Bootstrapping [Table des matières][Index]
Guix — comme les autres distributions GNU/Linux — est traditionnellement bootstrappé à partir d’un ensemble de binaires de boostrap : Bourne shell, des outils en ligne de commande fournis par GNU Coreutils, Awk, Findutils, « sed » et « grep » et Guile, GCC, Binutils et la bibliothèque C de NU (voir Bootstrapping). Habituellement, ces binaires de bootstrap sont « pris pour acquis ».
Prendre les binaires de bootstrap pour acquis signifie que nous les considérons comme des « sources » corrects et de confiance pour la construction d’un système complet. Là se trouve le problème : la taille de ces binaires de bootstrap est d’environ 250 Mo (voir Bootstrappable Builds dans GNU Mes). Auditer ou même inspecter ces binaires est presque impossible.
Pour i686-linux
et x86_64-linux
, Guix propose maintenant un
bootstrap avec « source binaire réduite » 38.
Le bootstrap avec les sources binaires réduites supprime les outils les plus
critiques — du point de vue de la confiance — des binaires de bootstrap
: GCC, Binutils et la bibliothèque C de GNU sont remplacées par :
bootstrap-mescc-tools
(un petit assembleur et éditeur des liens) et
bootstrap-mes
(un petit interpréteur Scheme et un compilateur C écrit
en Scheme et la bibliothèque C de Mes, construite pour TinyCC et pour GCC).
À partir de ces nouvelles sources binaires, les Binutils, GCC et la bibliothèque C de GNU sont construits à partir des sources. À partir de là, les processus de bootstrap plus traditionnel continue. Cette approche a réduit la taille des binaires de bootstrap à environ 145 Mo dans Guix v1.1.
La prochaine étape qui Guix prépare est de remplacer le shell et tous ses utilitaires avec des implémentations en Guile Scheme, le bootstrap Scheme-seulement. Gash (voir Gash dans The Gash manual) est un shell compatible avec POSIX qui remplace Bash, et il propose Gash Utils qui a des remplaçants minimalistes pour Awk, les utilitaires GNu Core Utilities, Grep, Gzip, Sed et Tar. Le reste des binaires de bootstrap que nous avons enlevés sont maintenant construits à partir des sources.
Construire le Système GNU à partir des sources est actuellement seulement
possible en ajoutant certains paquets GNU historiques en tant qu’étapes
intermédiaires39. Tandis que Gash et Gash Utils
avancent, et que les paquets GNU deviennent de nouveau plus bootstrappables
(p. ex. les nouvelles versions de GNU Sed proposeront de nouveau des
archives gzip, en alternative à la compression xz
difficile à
boostrapper), on espère pouvoir réduire de nouveau cet ensemble de paquets
supplémentaires.
Le graphe ci-dessous montre le graphe de dépendance résultant pour
gcc-core-mesboot
, le compilateur de bootstrap utilisé pour le
bootstrap traditionnel du reste du système Guix.
La seule source binaire restant40 sont un interpréteur Scheme et un compilateur Scheme : GNU Mes et GNU Guile41.
Cette réduction supplémentaire a réduit la taille du bootstrap à environ 60
Mo pour i686-linux
et x86_64-linux
.
Le travail continue pour supprimer tous les blobs binaires de notre pile de
bootstrap libre, en essayant d’atteindre un bootstrap complet par les
sources. Le travail continue aussi pour apporter ces bootstraps aux
architectures arm-linux
et aarch64-linux
et au Hurd.
Si vous êtes intéressé·e, rejoignez-nous sur ‘#bootstrappable’ sur le réseau IRC Freenode our discutez-en sur bug-mes@gnu.org ou gash-devel@nongnu.org.
On aimerait pouvoir dire « Bootstrap Source Complet » et même si on travail vers ce but, utiliser ce terme serait une hyperbole pour ce qu’on fait actuellement.
Les paquets comme gcc-2.95.3
,
binutils-2.14
, glicb-2.2.5
, gzip-1.2.4
, tar-1.22
et certains autres. Pour les détails, voir
gnu/packages/commencement.scm.
En ignorant mescc-tools
qui
fait 68 Ko ; qui sera supprimée plus tard, avec mes
.
Ce graphe ne montre pas les binaires statiques pour
bash, tar
et xz
utilisés pour pouvoir lancer Guile.
Suivant: Se préparer à utiliser les binaires de bootstrap, Monter: Bootstrapping [Table des matières][Index]