doc: Move Reduced Binary Seed Bootstrap' into Bootstrapping'.
				
					
				
			* doc/guix.texi (Reduced Binary Seed Bootstrap):
This commit is contained in:
		
							parent
							
								
									cf7658f7cb
								
							
						
					
					
						commit
						e065823a59
					
				
					 1 changed files with 72 additions and 69 deletions
				
			
		
							
								
								
									
										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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue