Merge remote-tracking branch 'RPi-Distro/dev' into dev
# Conflicts: # README.md # stage3/00-install-packages/00-packages
This commit is contained in:
		
							parent
							
								
									047334dea0
								
							
						
					
					
						commit
						4df2c00cee
					
				
							
								
								
									
										142
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										142
									
								
								README.md
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1,3 +1,4 @@
 | 
			
		|||
<<<<<<< HEAD
 | 
			
		||||
#Dependencies
 | 
			
		||||
 | 
			
		||||
`sudo apt-get update && sudo apt-get install git quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin -y &&
 | 
			
		||||
| 
						 | 
				
			
			@ -9,9 +10,109 @@ sudo ./build.sh
 | 
			
		|||
 | 
			
		||||
#Stage Anatomy
 | 
			
		||||
 | 
			
		||||
=======
 | 
			
		||||
# pi-gen
 | 
			
		||||
 | 
			
		||||
_Tool used to create the raspberrypi.org Raspbian images_
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### TODO
 | 
			
		||||
1. Documentation
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Dependencies
 | 
			
		||||
 | 
			
		||||
On Debian-based systems:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
apt-get install quilt parted realpath qemu-user-static debootstrap zerofree pxz zip \
 | 
			
		||||
dosfstools bsdtar libcap2-bin grep rsync
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
The file `depends` contains a list of tools needed.  The format of this
 | 
			
		||||
package is `<tool>[:<debian-package>]`.
 | 
			
		||||
 | 
			
		||||
>>>>>>> RPi-Distro/dev
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<<<<<<< HEAD
 | 
			
		||||
# drideOS (Raspbian) Stage Overview
 | 
			
		||||
=======
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
 * `BASE_DIR`  (Default: location of `build.sh`)
 | 
			
		||||
 | 
			
		||||
   **CAUTION**: Currently, changing this value will probably break build.sh
 | 
			
		||||
 | 
			
		||||
   Top-level directory for `pi-gen`.  Contains stage directories, build
 | 
			
		||||
   scripts, and by default both work and deployment directories.
 | 
			
		||||
 | 
			
		||||
 * `WORK_DIR`  (Default: `"$BASE_DIR/work"`)
 | 
			
		||||
 | 
			
		||||
   Directory in which `pi-gen` builds the target system.  This value can be
 | 
			
		||||
   changed if you have a suitably large, fast storage location for stages to
 | 
			
		||||
   be built and cached.  Note, `WORK_DIR` stores a complete copy of the target
 | 
			
		||||
   system for each build stage, amounting to tens of gigabytes in the case of
 | 
			
		||||
   Raspbian.
 | 
			
		||||
 | 
			
		||||
 * `DEPLOY_DIR`  (Default: `"$BASE_DIR/deploy"`)
 | 
			
		||||
 | 
			
		||||
   Output directory for target system images and NOOBS bundles.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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:
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
>>>>>>> RPi-Distro/dev
 | 
			
		||||
 | 
			
		||||
The build of Raspbian is divided up into several stages for logical clarity
 | 
			
		||||
and modularity.  This causes some initial complexity, but it simplifies
 | 
			
		||||
| 
						 | 
				
			
			@ -41,4 +142,45 @@ maintenance and allows for more easy customization.
 | 
			
		|||
   creates necessary groups and gives the pi user access to sudo and the
 | 
			
		||||
   standard console hardware permission groups.
 | 
			
		||||
 | 
			
		||||
<<<<<<< HEAD
 | 
			
		||||
- Stage 3, Install Dride related softwere.
 | 
			
		||||
=======
 | 
			
		||||
   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).
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# 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.
 | 
			
		||||
>>>>>>> RPi-Distro/dev
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,8 +16,8 @@ bootstrap(){
 | 
			
		|||
	fi
 | 
			
		||||
 | 
			
		||||
	capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
 | 
			
		||||
		--arch armhf\
 | 
			
		||||
		--no-check-gpg \
 | 
			
		||||
		--arch armhf \
 | 
			
		||||
		--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
 | 
			
		||||
		$1 $2 $3"
 | 
			
		||||
}
 | 
			
		||||
export -f bootstrap
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								stage0/files/raspberrypi.gpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								stage0/files/raspberrypi.gpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
# For more options and information see
 | 
			
		||||
# http://rpf.io/configtxtreadme
 | 
			
		||||
# http://rpf.io/configtxt
 | 
			
		||||
# Some settings may impact device functionality. See link above for details
 | 
			
		||||
 | 
			
		||||
# uncomment if you get no picture on HDMI for a default "safe" mode
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user