Merge pull request #43 from sam3d/dev
Add stage specification documentation
This commit is contained in:
		
						commit
						bc8a74858e
					
				
							
								
								
									
										33
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								README.md
									
									
									
									
									
								
							| 
						 | 
					@ -1,12 +1,14 @@
 | 
				
			||||||
#TODO
 | 
					# pi-gen
 | 
				
			||||||
 | 
					_Tool used to create the raspberrypi.org Raspbian images_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### TODO
 | 
				
			||||||
1. Documentation
 | 
					1. Documentation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Dependencies
 | 
					## Dependencies
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin`
 | 
					`quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Config
 | 
					## Config
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Upon execution, `build.sh` will source the file `config` in the current
 | 
					Upon execution, `build.sh` will source the file `config` in the current
 | 
				
			||||||
working directory.  This bash shell fragment is intended to set needed
 | 
					working directory.  This bash shell fragment is intended to set needed
 | 
				
			||||||
| 
						 | 
					@ -33,17 +35,17 @@ A simple example for building Raspbian:
 | 
				
			||||||
IMG_NAME='Raspbian'
 | 
					IMG_NAME='Raspbian'
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Stage Anatomy
 | 
					## Stage Anatomy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#Raspbian Stage Overview
 | 
					### Raspbian Stage Overview
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The build of Raspbian is divided up into several stages for logical clarity
 | 
					The build of Raspbian is divided up into several stages for logical clarity
 | 
				
			||||||
and modularity.  This causes some initial complexity, but it simplifies
 | 
					and modularity.  This causes some initial complexity, but it simplifies
 | 
				
			||||||
maintenance and allows for more easy customization.
 | 
					maintenance and allows for more easy customization.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - Stage 0, bootstrap.  The primary purpose of this stage is to create a
 | 
					 - **Stage 0** - bootstrap.  The primary purpose of this stage is to create a
 | 
				
			||||||
   usable filesystem.  This is accomplished largely through the use of
 | 
					   usable filesystem.  This is accomplished largely through the use of
 | 
				
			||||||
   `debootstrap`, which creates a minimal filesystem suitable for use as a
 | 
					   `debootstrap`, which creates a minimal filesystem suitable for use as a
 | 
				
			||||||
   base.tgz on Debian systems.  This stage also configures apt settings and
 | 
					   base.tgz on Debian systems.  This stage also configures apt settings and
 | 
				
			||||||
| 
						 | 
					@ -51,7 +53,7 @@ maintenance and allows for more easy customization.
 | 
				
			||||||
   minimal core is installed but not configured, and the system will not quite
 | 
					   minimal core is installed but not configured, and the system will not quite
 | 
				
			||||||
   boot yet.
 | 
					   boot yet.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - Stage 1, truly minimal system.  This stage makes the system bootable by
 | 
					 - **Stage 1** - truly minimal system.  This stage makes the system bootable by
 | 
				
			||||||
   installing system files like `/etc/fstab`, configures the bootloader, makes
 | 
					   installing system files like `/etc/fstab`, configures the bootloader, makes
 | 
				
			||||||
   the network operable, and installs packages like raspi-config.  At this
 | 
					   the network operable, and installs packages like raspi-config.  At this
 | 
				
			||||||
   stage the system should boot to a local console from which you have the
 | 
					   stage the system should boot to a local console from which you have the
 | 
				
			||||||
| 
						 | 
					@ -60,7 +62,7 @@ maintenance and allows for more easy customization.
 | 
				
			||||||
   really usable yet in a traditional sense yet.  Still, if you want minimal,
 | 
					   really usable yet in a traditional sense yet.  Still, if you want minimal,
 | 
				
			||||||
   this is minimal and the rest you could reasonably do yourself as sysadmin.
 | 
					   this is minimal and the rest you could reasonably do yourself as sysadmin.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - State 2, lite system.  This stage produces the Raspbian-Lite image.  It
 | 
					 - **Stage 2** - lite system.  This stage produces the Raspbian-Lite image.  It
 | 
				
			||||||
   installs some optimized memory functions, sets timezone and charmap
 | 
					   installs some optimized memory functions, sets timezone and charmap
 | 
				
			||||||
   defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
 | 
					   defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
 | 
				
			||||||
   dphys-swapfile, and other basics for managing the hardware.  It also
 | 
					   dphys-swapfile, and other basics for managing the hardware.  It also
 | 
				
			||||||
| 
						 | 
					@ -75,13 +77,24 @@ maintenance and allows for more easy customization.
 | 
				
			||||||
   you were looking for something between truly minimal and Raspbian-lite,
 | 
					   you were looking for something between truly minimal and Raspbian-lite,
 | 
				
			||||||
   here's where you start trimming.
 | 
					   here's where you start trimming.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - Stage 3, desktop system.  Here's where you get the full desktop system
 | 
					 - **Stage 3** - desktop system.  Here's where you get the full desktop system
 | 
				
			||||||
   with X11 and LXDE, web browsers, git for development, Raspbian custom UI
 | 
					   with X11 and LXDE, web browsers, git for development, Raspbian custom UI
 | 
				
			||||||
   enhancements, etc.  This is a base desktop system, with some development
 | 
					   enhancements, etc.  This is a base desktop system, with some development
 | 
				
			||||||
   tools installed.
 | 
					   tools installed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 - Stage 4, complete Raspbian system.  More development tools, an email
 | 
					 - **Stage 4** - complete Raspbian system.  More development tools, an email
 | 
				
			||||||
   client, learning tools like Scratch, specialized packages like sonic-pi and
 | 
					   client, learning tools like Scratch, specialized packages like sonic-pi and
 | 
				
			||||||
   wolfram-engine, system documentation, office productivity, etc.  This is
 | 
					   wolfram-engine, system documentation, office productivity, etc.  This is
 | 
				
			||||||
   the stage that installs all of the things that make Raspbian friendly to
 | 
					   the stage that installs all of the things that make Raspbian friendly to
 | 
				
			||||||
   new users.
 | 
					   new users.
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					### Stage specification
 | 
				
			||||||
 | 
					If you wish to build up to a specified stage (such as building up to stage 2 for a lite system), place an empty file named `SKIP` in each of the `./stage` directories you wish not to include.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Then remove the `EXPORT*` files from `./stage4` (if building up to stage 2) or from `./stage2` (if building a minimal system).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					# Example for building a lite system
 | 
				
			||||||
 | 
					$ touch ./stage3/SKIP ./stage4/SKIP
 | 
				
			||||||
 | 
					$ rm stage4/EXPORT*
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user