doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping'.

* doc/guix.texi (Reduced Binary Seed Bootstrap):
This commit is contained in:
Jan Nieuwenhuizen 2018-10-08 18:07:42 +02:00
parent cf7658f7cb
commit e065823a59
No known key found for this signature in database
GPG Key ID: F3C1A0D9C1D65273
1 changed files with 72 additions and 69 deletions

View File

@ -211,7 +211,6 @@ GNU Distribution
* Package Modules:: Packages from the programmer's viewpoint. * Package Modules:: Packages from the programmer's viewpoint.
* Packaging Guidelines:: Growing the distribution. * Packaging Guidelines:: Growing the distribution.
* Bootstrapping:: GNU/Linux built from scratch. * Bootstrapping:: GNU/Linux built from scratch.
* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
* Porting:: Targeting another platform or kernel. * Porting:: Targeting another platform or kernel.
System Installation System Installation
@ -8825,7 +8824,6 @@ For information on porting to other architectures or kernels,
* Package Modules:: Packages from the programmer's viewpoint. * Package Modules:: Packages from the programmer's viewpoint.
* Packaging Guidelines:: Growing the distribution. * Packaging Guidelines:: Growing the distribution.
* Bootstrapping:: GNU/Linux built from scratch. * Bootstrapping:: GNU/Linux built from scratch.
* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
* Porting:: Targeting another platform or kernel. * Porting:: Targeting another platform or kernel.
@end menu @end menu
@ -23905,7 +23903,78 @@ re-create them if needed (more on that later).
For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is
more elaborate, @pxref{Reduced Binary Seed Bootstrap}. more elaborate, @pxref{Reduced Binary Seed Bootstrap}.
@unnumberedsubsec Preparing to Use the Bootstrap Binaries @menu
* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
* Preparing to Use the Bootstrap Binaries:: Building that what matters most.
@end menu
@node Reduced Binary Seed Bootstrap
@subsection The Reduced Binary Seed Bootstrap
Guix---like other GNU/Linux distributions---is traditionally bootstrapped from
a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU
Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the
GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are
``taken for granted.''
Taking these binaries for granted means that we consider them to be a correct
and trustworthy `seed' for building the complete system. Therein lies a
problem: the current combined size of these bootstrap binaries is about 250MB
(@pxref{Bootstrappable Builds,,, mes, Mes Reference Manual}). Auditing or
even inspecting these is next to impossible.
For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced
Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source
Bootstrap'' and while we are working towards that goal it would be hyperbole
to use that term for what we do now.}.
The Reduced Binary Seed bootstrap removes the most critical tools---from a
trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
Library are replaced by: @code{mescc-tools-seed} (a tiny assembler and linker)
@code{mes-seed} (a small Scheme Interpreter and a C compiler writen in Scheme)
and @code{tinycc-seed} (the Mes C Library, built for TinyCC). Using these new
binary seeds and a new set of
@c
packages@footnote{@c
mescc-tools-boot,
nyacc-boot,
mes-boot,
tcc-boot0,
tcc-boot,
make-mesboot0,
diffutils-mesboot,
binutils-mesboot0,
gcc-core-mesboot,
mesboot-headers,
glibc-mesboot0,
gcc-mesboot0,
binutils-mesboot,
make-mesboot,
gcc-mesboot1,
gcc-mesboot1-wrapper,
glibc-headers-mesboot,
glibc-mesboot,
gcc-mesboot,
and
gcc-mesboot-wrapper.
}
@c
the ``missing'' Binutils, GCC, and the GNU C Library are built from source.
From here on the more traditional bootstrap process resumes. This approach
has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to
reduce this further. If you are interested, join us on @code{#bootstrappable}
on the Freenode IRC network.
@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot
@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png
Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap
compiler used to build the rest of GuixSD.
@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot}
@node Preparing to Use the Bootstrap Binaries
@subsection Preparing to Use the Bootstrap Binaries
@c As of Emacs 24.3, Info-mode displays the image, but since it's a @c As of Emacs 24.3, Info-mode displays the image, but since it's a
@c large image, it's hard to scroll. Oh well. @c large image, it's hard to scroll. Oh well.
@ -24058,72 +24127,6 @@ bootstrap GCC with a sequence of assemblers, interpreters, and compilers
of increasing complexity, which could be built from source starting from of increasing complexity, which could be built from source starting from
a simple and auditable assembler. Your help is welcome! a simple and auditable assembler. Your help is welcome!
@node Reduced Binary Seed Bootstrap
@section The Reduced Binary Seed Bootstrap
Guix---like other GNU/Linux distributions---is traditionally bootstrapped from
a set of bootstrap binaries: Bourne shell, command-line tools provided by GNU
Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the
GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are
``taken for granted.''
Taking these binaries for granted means that we consider them to be a correct
and trustworthy `seed' for building the complete system. Therein lies a
problem: the current combined size of these bootstrap binaries is about 250MB
(@pxref{Bootstrappable Builds,,, mes, Mes Reference Manual}). Auditing or
even inspecting these is next to impossible.
For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced
Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source
Bootstrap'' and while we are working towards that goal it would be hyperbole
to use that term for what we do now.}.
The Reduced Binary Seed bootstrap removes the most critical tools---from a
trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
Library are replaced by: @code{mescc-tools-seed} (a tiny assembler and linker)
@code{mes-seed} (a small Scheme Interpreter and a C compiler writen in Scheme)
and @code{tinycc-seed} (the Mes C Library, built for TinyCC). Using these new
binary seeds and a new set of
@c
packages@footnote{@c
mescc-tools-boot,
nyacc-boot,
mes-boot,
tcc-boot0,
tcc-boot,
make-mesboot0,
diffutils-mesboot,
binutils-mesboot0,
gcc-core-mesboot,
mesboot-headers,
glibc-mesboot0,
gcc-mesboot0,
binutils-mesboot,
make-mesboot,
gcc-mesboot1,
gcc-mesboot1-wrapper,
glibc-headers-mesboot,
glibc-mesboot,
gcc-mesboot,
and
gcc-mesboot-wrapper.
}
@c
the ``missing'' Binutils, GCC, and the GNU C Library are built from source.
From here on the more traditional bootstrap process resumes. This approach
has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to
reduce this further. If you are interested, join us on @code{#bootstrappable}
on the Freenode IRC network.
@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot
@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png
Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap
compiler used to build the rest of GuixSD.
@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot}
@node Porting @node Porting
@section Porting to a New Platform @section Porting to a New Platform