doc: Move `Reduced Binary Seed Bootstrap' into `Bootstrapping'.
* doc/guix.texi (Reduced Binary Seed Bootstrap):
This commit is contained in:
parent
cf7658f7cb
commit
e065823a59
141
doc/guix.texi
141
doc/guix.texi
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue