From 4df2c00cee983d5016cf5da05ee2ae7bb803a62c Mon Sep 17 00:00:00 2001 From: Yossi Date: Wed, 7 Jun 2017 13:44:00 +0300 Subject: [PATCH] Merge remote-tracking branch 'RPi-Distro/dev' into dev # Conflicts: # README.md # stage3/00-install-packages/00-packages --- README.md | 142 ++++++++++++++++++++++++++ scripts/common | 4 +- stage0/files/raspberrypi.gpg | Bin 0 -> 2424 bytes stage1/00-boot-files/files/config.txt | 2 +- 4 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 stage0/files/raspberrypi.gpg diff --git a/README.md b/README.md index 9b404fe..f957079 100755 --- a/README.md +++ b/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 `[:]`. + +>>>>>>> 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 diff --git a/scripts/common b/scripts/common index bd18a07..74f9c4c 100644 --- a/scripts/common +++ b/scripts/common @@ -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 diff --git a/stage0/files/raspberrypi.gpg b/stage0/files/raspberrypi.gpg new file mode 100644 index 0000000000000000000000000000000000000000..fe1d207eb1ec50f159e3b99415dd00b363262fb4 GIT binary patch literal 2424 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 literal 0 HcmV?d00001 diff --git a/stage1/00-boot-files/files/config.txt b/stage1/00-boot-files/files/config.txt index 9c6860c..06364c5 100644 --- a/stage1/00-boot-files/files/config.txt +++ b/stage1/00-boot-files/files/config.txt @@ -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