Siguiente: , Subir: Lanzamiento inicial   [Índice general][Índice]


14.1 El lanzamiento inicial a partir de la semilla binaria reducida

Guix—al igual que otras distribuciones de GNU/Linux—se lanza inicialmente desde un conjunto de binarios de manera tradicional: un shell Bourne, herramientas de línea de órdenes que proporcionan GNU Coreutils, Awk, Findutils, ‘sed’ y ‘grep’ y Guile, GCC, Binutils y la biblioteca de C de GNU (véase Lanzamiento inicial). Habitualmente dichos binarios se “dan por hecho”.

El dar por hecho estos binarios significa que consideramos que son una “semilla” correcta y fiable para la construcción del sistema completo. En esta asunción yace un problema: el tamaño combinado de dichos binarios necesarios para el lanzamiento inicial es de alrededor de 250MB (véase Bootstrappable Builds en GNU Mes). Auditar o incluso la inspeccionar de dichos binarios es prácticamente imposible.

En i686-linux y x86_64-linux, Guix basa su lanzamiento inicial en una “semilla binaria reducida”46.

El lanzamiento inicial basado en la semilla binaria reducida elimina las herramientas más críticas—desde una perspectiva de confianza—de los binarios del lanzamiento inicial: GCC, Binutils y la biblioteca de C de GNU se sustituyen por: bootstrap-mescc-tools (un pequeño ensamblador y enlazador) y bootstrap-mes (un pequeño intérprete de Scheme, un compilador de C escrito en Scheme y la biblioteca de C de Mes, construida para TinyCC y para GCC).

Mediante el uso de estas nuevas semillas binarias, los paquetes Binutils, GCC, y la biblioteca de C de GNU “que faltan” se construyen desde las fuentes. De aquí en adelante se prosigue con el proceso del lanzamiento inicial más tradicional. Esta aproximación redujo el tamaño de los binarios del lanzamiento inicial a cerca de 145MB en la versión 1.1 de Guix.

El siguiente paso que Guix ha tomado es sustituir el intérprete de órdenes y sus utilidades con implementaciones en el dialecto Guile de Scheme, el lanzamiento inicial basado únicamente en Scheme. Gash (véase Gash en The Gash manual) es un intérprete de órdenes compatible con POSIX que sustituye a Bash, y viene con Gash Utils que contiene reemplazos minimalistas de Awk, las GNU Core Utilities, Grep, Gzip, Sed y Tar. El resto de semillas binarias del lanzamiento inicial que se han eliminado se construyen ahora desde las fuentes.

La construcción del sistema GNU desde las fuentes es actualmente únicamente posible añadiendo algunos paquetes históricos de GNU como pasos intermedios47. Si Gash y sus utilidades maduran, y los paquetes de GNU vuelven a ser más fáciles de lanzar de manera inicial (por ejemplo, las nuevas entregas de GNU Sed también incluyen de nuevo archivadores comprimidos con gzip, como alternativa a la compresión xz que es más difícil de lanzar inicialmente), esperemos que este conjunto agregado de paquetes pueda reducirse más aún otra vez.

A continuación se encuentra el grafo de dependencias generado para gcc-core-mesboot0, el compilador del lanzamiento inicial usado para el lanzamiento inicial tradicional del resto del sistema Guix.

Grafo de dependencias de
gcc-core-mesboot0

La única semilla binaria del lanzamiento inicial que queda48 son un intérprete de Scheme y un compilador de Scheme: GNU Mes y GNU Guile49.

Esta reducción adicional ha llevado el tamaño de la semilla de binarios inicial a cerca de los 60MB para i686-linux y x86_64-linux.

Se está trabajando en eliminar todos los binarios de nuestra pila de software libre del lanzamiento inicial, en pos de un lanzamiento inicial basado completamente en fuentes. También se está trabajando en proporcionar estos lanzamientos iniciales a las arquitecturas arm-linux y aarch64-linux y a Hurd.

Si tiene interés, puede unirse a ‘#bootstrappable’ en la red de IRC de Freenode o participar en las discusiones a través de bug-mes@gnu.org o gash-devel@nongnu.org.


Notas al pie

(46)

Nos gustaría decir: “lanzamiento inicial completamente desde las fuentes” pero, aunque estamos trabajando por alcanzar ese objetivo, sería una hipérbole usar dicho término para describir el proceso que seguimos en la actualidad.

(47)

Paquetes como gcc-2.95.3, binutils-2.14, glibc-2.2.5, gzip-1.2.4, tar-1.22, y algunos otros. Para obtener más detalles véase gnu/packages/commencement.scm.

(48)

Ignorando los 68KB de mescc-tools; que se eliminará más adelante, junto a mes.

(49)

En este grafo no se muestran los binarios estáticos para bash, tar, y xz que se usan para hacer que Guile pueda funcionar.


Siguiente: , Subir: Lanzamiento inicial   [Índice general][Índice]