Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # .gitignore # stage2/04-cleanup/00-run.sh # stage2/EXPORT_NOOBS # stage4/00-install-packages/00-debconf # stage4/00-install-packages/00-packages # stage4/00-install-packages/00-packages-nr # stage4/EXPORT_IMAGE
This commit is contained in:
		
						commit
						657944a9a3
					
				
							
								
								
									
										94
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										94
									
								
								README.md
									
									
									
									
									
								
							|  | @ -1,67 +1,18 @@ | |||
| # pi-gen | ||||
| _Tool used to create the raspberrypi.org Raspbian images_ | ||||
| #Dependencies | ||||
| 
 | ||||
| ### TODO | ||||
| 1. Documentation | ||||
| `quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin` | ||||
| 
 | ||||
| ## Dependencies | ||||
| #Stage Anatomy | ||||
| 
 | ||||
| `quilt parted realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin grep rsync` | ||||
| 
 | ||||
| ## Config | ||||
| 
 | ||||
| Upon execution, `build.sh` will source the file `config` in the current | ||||
| working directory.  This bash shell fragment is intended to set needed | ||||
| environment variables. | ||||
| 
 | ||||
| The following environment variables are supported: | ||||
| 
 | ||||
|  * `IMG_NAME` **required** (Default: unset) | ||||
| 
 | ||||
|    The name of the image to build with the current stage directories.  Setting | ||||
|    `IMG_NAME=Raspbian` is logical for an unmodified RPi-Distro/pi-gen build, | ||||
|    but you should use something else for a customized version.  Export files | ||||
|    in stages may add suffixes to `IMG_NAME`. | ||||
| 
 | ||||
|  * `APT_PROXY` (Default: unset) | ||||
| 
 | ||||
|    If you require the use of an apt proxy, set it here.  This proxy setting | ||||
|    will not be included in the image, making it safe to use an `apt-cacher` or | ||||
|    similar package for development. | ||||
| 
 | ||||
| A simple example for building Raspbian: | ||||
| 
 | ||||
| ```bash | ||||
| IMG_NAME='Raspbian' | ||||
| ``` | ||||
| 
 | ||||
| ## Docker Build | ||||
| 
 | ||||
| ```bash | ||||
| vi config         # Edit your config file. See above. | ||||
| ./build-docker.sh | ||||
| ``` | ||||
| If everything goes well, your finished image will be in the `deploy/` folder. | ||||
| You can then remove the build container with `docker rm pigen_work` | ||||
| 
 | ||||
| If something breaks along the line, you can edit the corresponding scripts, and | ||||
| continue: | ||||
| 
 | ||||
| ``` | ||||
| CONTINUE=1 ./build-docker.sh | ||||
| ``` | ||||
| 
 | ||||
| There is a possibility that even when running from a docker container, the installation of `qemu-user-static` will silently fail when building the image because `binfmt-support` _must be enabled on the underlying kernel_. An easy fix is to ensure `binfmt-support` is installed on the host machine before starting the `./build-docker.sh` script (or using your own docker build solution). | ||||
| 
 | ||||
| ## Stage Anatomy | ||||
| 
 | ||||
| ### Raspbian Stage Overview | ||||
| # drideOS (Raspbian) Stage Overview | ||||
| 
 | ||||
| The build of Raspbian is divided up into several stages for logical clarity | ||||
| and modularity.  This causes some initial complexity, but it simplifies | ||||
| 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 | ||||
|    `debootstrap`, which creates a minimal filesystem suitable for use as a | ||||
|    base.tgz on Debian systems.  This stage also configures apt settings and | ||||
|  | @ -69,7 +20,7 @@ maintenance and allows for more easy customization. | |||
|    minimal core is installed but not configured, and the system will not quite | ||||
|    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 | ||||
|    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 | ||||
|  | @ -78,40 +29,11 @@ maintenance and allows for more easy customization. | |||
|    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. | ||||
| 
 | ||||
|  - **Stage 2** - lite system.  This stage produces the Raspbian-Lite image.  It | ||||
|  - State 2, lite system.  This stage produces the Raspbian-Lite image.  It | ||||
|    installs some optimized memory functions, sets timezone and charmap | ||||
|    defaults, installs fake-hwclock and ntp, wifi and bluetooth support, | ||||
|    dphys-swapfile, and other basics for managing the hardware.  It also | ||||
|    creates necessary groups and gives the pi user access to sudo and the | ||||
|    standard console hardware permission groups. | ||||
| 
 | ||||
|    There are a few tools that may not make a whole lot of sense here for | ||||
|    development purposes on a minimal system such as basic python and lua | ||||
|    packages as well as the `build-essential` package.  They are lumped right | ||||
|    in with more essential packages presently, though they need not be with | ||||
|    pi-gen.  These are understandable for Raspbian's target audience, but if | ||||
|    you were looking for something between truly minimal and Raspbian-lite, | ||||
|    here's where you start trimming. | ||||
| 
 | ||||
|  - **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 | ||||
|    enhancements, etc.  This is a base desktop system, with some development | ||||
|    tools installed. | ||||
| 
 | ||||
|  - **Stage 4** - complete Raspbian system.  More development tools, an email | ||||
|    client, learning tools like Scratch, specialized packages like sonic-pi and | ||||
|    wolfram-engine, system documentation, office productivity, etc.  This is | ||||
|    the stage that installs all of the things that make Raspbian friendly to | ||||
|    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* | ||||
| ``` | ||||
| If you wish to build further configurations upon (for example) the lite system, you can also delete the contents of `./stage3` and `./stage4` and replace with your own contents in the same format. | ||||
| - Stage 3, Install Dride related softwere. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user