Next: , Up: Lanzamiento inicial   [Contents][Index]


20.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 (see 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 (see Bootstrappable Builds in 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”48.

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 (see Gash in 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.

Building the GNU System from source is currently only possible by adding some historical GNU packages as intermediate steps49. As Gash and Gash Utils mature, and GNU packages become more bootstrappable again (e.g., new releases of GNU Sed will also ship as gzipped tarballs again, as alternative to the hard to bootstrap xz-compression), this set of added packages can hopefully be reduced again.

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

The only significant binary bootstrap seeds that remain50 are a Scheme interpreter and a Scheme compiler: GNU Mes and GNU Guile51.

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.


Footnotes

(48)

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.

(49)

Packages such as gcc-2.95.3, binutils-2.14, glibc-2.2.5, gzip-1.2.4, tar-1.22, and some others. For details, see gnu/packages/commencement.scm.

(50)

Ignoring the 68KB mescc-tools; that will be removed later, together with mes.

(51)

Not shown in this graph are the static binaries for bash, tar, and xz that are used to get Guile running.


Next: Preparación para usar los binarios del lanzamiento inicial, Up: Lanzamiento inicial   [Contents][Index]