Merge remote-tracking branch 'RPi-Distro/dev' into dev

# Conflicts:
#	README.md
#	stage3/00-install-packages/00-packages
This commit is contained in:
Yossi 2017-06-07 13:44:00 +03:00
parent 047334dea0
commit 4df2c00cee
4 changed files with 145 additions and 3 deletions

142
README.md
View File

@ -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

View File

@ -17,7 +17,7 @@ bootstrap(){
capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
--arch armhf \
--no-check-gpg \
--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
$1 $2 $3"
}
export -f bootstrap

Binary file not shown.

View File

@ -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