Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
acc4f56597 |
@@ -0,0 +1,3 @@
|
||||
test:
|
||||
script:
|
||||
- echo "test"
|
||||
@@ -1,24 +1,12 @@
|
||||
# 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>]`.
|
||||
|
||||
`quilt parted realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin grep rsync`
|
||||
|
||||
## Config
|
||||
|
||||
@@ -41,57 +29,29 @@ The following environment variables are supported:
|
||||
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 -v pigen_work`
|
||||
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).
|
||||
|
||||
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
|
||||
|
||||
@@ -138,32 +98,20 @@ maintenance and allows for more easy customization.
|
||||
enhancements, etc. This is a base desktop system, with some development
|
||||
tools installed.
|
||||
|
||||
- **Stage 4** - Raspbian system meant to fit on a 4GB card. More development
|
||||
tools, an email client, learning tools like Scratch, specialized packages
|
||||
like sonic-pi, system documentation, office productivity, etc. This is the
|
||||
stage that installs all of the things that make Raspbian friendly to new
|
||||
users.
|
||||
|
||||
- **Stage 5** - The official Raspbian Desktop image. Right now only adds
|
||||
Mathematica.
|
||||
- **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.
|
||||
|
||||
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).
|
||||
|
||||
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
|
||||
echo "IMG_NAME='Raspbian'" > config
|
||||
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
|
||||
rm stage4/EXPORT*
|
||||
sudo ./build.sh # or ./build-docker.sh
|
||||
```
|
||||
|
||||
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.
|
||||
# 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.
|
||||
|
||||
+5
-7
@@ -12,9 +12,9 @@ if ! $DOCKER ps >/dev/null; then
|
||||
fi
|
||||
set -e
|
||||
|
||||
config_mount="/dev/null:/dev/null"
|
||||
config_mount=
|
||||
if [ -f config ]; then
|
||||
config_mount="$(pwd)/config:/pi-gen/config:ro"
|
||||
config_mount="-v $(pwd)/config:/pi-gen/config:ro"
|
||||
source config
|
||||
fi
|
||||
|
||||
@@ -45,7 +45,7 @@ fi
|
||||
if [ "$CONTAINER_EXISTS" != "" ] && [ "$CONTINUE" != "1" ]; then
|
||||
echo "Container $CONTAINER_NAME already exists and you did not specify CONTINUE=1. Aborting."
|
||||
echo "You can delete the existing container like this:"
|
||||
echo " docker rm -v $CONTAINER_NAME"
|
||||
echo " docker rm $CONTAINER_NAME"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -54,7 +54,6 @@ if [ "$CONTAINER_EXISTS" != "" ]; then
|
||||
trap "echo 'got CTRL+C... please wait 5s';docker stop -t 5 ${CONTAINER_NAME}_cont" SIGINT SIGTERM
|
||||
time $DOCKER run --rm --privileged \
|
||||
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
|
||||
-e IMG_NAME=${IMG_NAME}\
|
||||
pi-gen \
|
||||
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
||||
cd /pi-gen; ./build.sh;
|
||||
@@ -63,9 +62,8 @@ if [ "$CONTAINER_EXISTS" != "" ]; then
|
||||
else
|
||||
trap "echo 'got CTRL+C... please wait 5s'; docker stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM
|
||||
$DOCKER run --name "${CONTAINER_NAME}" --privileged \
|
||||
-e IMG_NAME=${IMG_NAME}\
|
||||
-v "$(pwd)/deploy:/pi-gen/deploy" \
|
||||
-v "${config_mount}" \
|
||||
-v $(pwd)/deploy:/pi-gen/deploy \
|
||||
${config_mount} \
|
||||
pi-gen \
|
||||
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
||||
cd /pi-gen; ./build.sh &&
|
||||
|
||||
@@ -128,7 +128,7 @@ if [ -z "${IMG_NAME}" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export IMG_DATE=${IMG_DATE:-"$(date +%Y-%m-%d)"}
|
||||
export IMG_DATE=${IMG_DATE:-"$(date -u +%Y-%m-%d)"}
|
||||
|
||||
export BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
||||
|
||||
@@ -35,8 +35,6 @@ rm -f ${ROOTFS_DIR}/var/lib/dbus/machine-id
|
||||
|
||||
true > ${ROOTFS_DIR}/etc/machine-id
|
||||
|
||||
ln -nsf /proc/mounts ${ROOTFS_DIR}/etc/mtab
|
||||
|
||||
for _FILE in $(find ${ROOTFS_DIR}/var/log/ -type f); do
|
||||
true > ${_FILE}
|
||||
done
|
||||
|
||||
@@ -8,12 +8,12 @@ rm -f ${IMG_FILE}
|
||||
rm -rf ${ROOTFS_DIR}
|
||||
mkdir -p ${ROOTFS_DIR}
|
||||
|
||||
BOOT_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1)
|
||||
TOTAL_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR} --exclude var/cache/apt/archives --block-size=1 | cut -f 1)
|
||||
BOOT_SIZE=$(du -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1)
|
||||
TOTAL_SIZE=$(du -s ${EXPORT_ROOTFS_DIR} --exclude var/cache/apt/archives --block-size=1 | cut -f 1)
|
||||
|
||||
IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024)))
|
||||
IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (400 * 1024 * 1024)))
|
||||
|
||||
truncate -s ${IMG_SIZE} ${IMG_FILE}
|
||||
fallocate -l ${IMG_SIZE} ${IMG_FILE}
|
||||
fdisk -H 255 -S 63 ${IMG_FILE} <<EOF
|
||||
o
|
||||
n
|
||||
@@ -51,7 +51,7 @@ echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH"
|
||||
echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH"
|
||||
|
||||
mkdosfs -n boot -F 32 -v $BOOT_DEV > /dev/null
|
||||
mkfs.ext4 -O ^metadata_csum,^huge_file $ROOT_DEV > /dev/null
|
||||
mkfs.ext4 -O ^huge_file $ROOT_DEV > /dev/null
|
||||
|
||||
mount -v $ROOT_DEV ${ROOTFS_DIR} -t ext4
|
||||
mkdir -p ${ROOTFS_DIR}/boot
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"description": "NOOBS_DESCRIPTION",
|
||||
"feature_level": 35120124,
|
||||
"kernel": "4.9",
|
||||
"kernel": "4.4",
|
||||
"name": "NOOBS_NAME",
|
||||
"password": "raspberry",
|
||||
"release_date": "UNRELEASED",
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
UNRELEASED:
|
||||
* New kernel and firmware
|
||||
* Filesystem created without the metadata_csum feature
|
||||
2017-06-21:
|
||||
* Scratch 2 application included
|
||||
* Thonny Python IDE included
|
||||
* New icons with thinner outlines
|
||||
* Volume control more linear in behaviour
|
||||
* Updated Flash player
|
||||
* Updated RealVNC server and viewer
|
||||
* Various tweaks and bugfixes
|
||||
* New kernel and firmware
|
||||
2017-04-10:
|
||||
* Wolfram Mathematica updated to version 11.0.1
|
||||
* Adobe Flash Player updated to version 25.0.0.127
|
||||
* Use PARTUUID to support USB boot
|
||||
|
||||
+2
-2
@@ -17,8 +17,8 @@ bootstrap(){
|
||||
|
||||
capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
|
||||
--arch armhf\
|
||||
--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
|
||||
$1 $2 $3" || rmdir "$2/debootstrap"
|
||||
--no-check-gpg \
|
||||
$1 $2 $3"
|
||||
}
|
||||
export -f bootstrap
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
locales
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
# For more options and information see
|
||||
# http://rpf.io/configtxt
|
||||
# http://rpf.io/configtxtreadme
|
||||
# Some settings may impact device functionality. See link above for details
|
||||
|
||||
# uncomment if you get no picture on HDMI for a default "safe" mode
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
ssh less fbset sudo psmisc strace module-init-tools ed ncdu crda
|
||||
ssh locales less fbset sudo psmisc strace module-init-tools ed ncdu crda
|
||||
console-setup keyboard-configuration debconf-utils parted unzip
|
||||
build-essential manpages-dev python bash-completion gdb pkg-config
|
||||
python-rpi.gpio v4l-utils
|
||||
@@ -16,4 +16,3 @@ apt-listchanges
|
||||
usb-modeswitch
|
||||
apt-transport-https
|
||||
libpam-chksshpwd
|
||||
rpi-update
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
|
||||
xpdf gtk2-engines alsa-utils
|
||||
desktop-base
|
||||
git
|
||||
git-core rpi-update
|
||||
omxplayer
|
||||
raspberrypi-artwork
|
||||
policykit-1
|
||||
|
||||
@@ -33,5 +33,3 @@ python-picraft python3-picraft
|
||||
python3-codebug-tether python3-codebug-i2c-tether
|
||||
python-sense-emu python3-sense-emu sense-emu-tools python-sense-emu-doc
|
||||
pprompt
|
||||
scratch2
|
||||
python3-thonny
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
python-automationhat python3-automationhat
|
||||
python-blinkt python3-blinkt
|
||||
python-cap1xxx python3-cap1xxx
|
||||
python-drumhat python3-drumhat
|
||||
python-envirophat python3-envirophat
|
||||
python-explorerhat python3-explorerhat
|
||||
python-fourletterphat python3-fourletterphat
|
||||
python-microdotphat python3-microdotphat
|
||||
python-mote python3-mote
|
||||
python-motephat python3-motephat
|
||||
python-phatbeat python3-phatbeat
|
||||
python-pianohat python3-pianohat
|
||||
python-piglow python3-piglow
|
||||
python-rainbowhat python3-rainbowhat
|
||||
python-scrollphat python3-scrollphat
|
||||
python-scrollphathd python3-scrollphathd
|
||||
python-sn3218 python3-sn3218
|
||||
python-skywriter python3-skywriter
|
||||
python-touchphat python3-touchphat
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
NOOBS_NAME="Raspbian"
|
||||
NOOBS_NAME="Raspbian with PIXEL"
|
||||
NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (full desktop version)"
|
||||
|
||||
Reference in New Issue
Block a user