Compare commits

..
Author SHA1 Message Date
Serge Schneider acc4f56597 Add .gitlab-ci.yml 2017-04-05 16:50:37 +01:00
24 changed files with 44 additions and 132 deletions
+3
View File
@@ -0,0 +1,3 @@
test:
script:
- echo "test"
+16 -68
View File
@@ -1,24 +1,12 @@
# pi-gen # pi-gen
_Tool used to create the raspberrypi.org Raspbian images_ _Tool used to create the raspberrypi.org Raspbian images_
### TODO ### TODO
1. Documentation 1. Documentation
## Dependencies ## Dependencies
On Debian-based systems: `quilt parted realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin grep rsync`
```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>]`.
## Config ## 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 will not be included in the image, making it safe to use an `apt-cacher` or
similar package for development. 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: A simple example for building Raspbian:
```bash ```bash
IMG_NAME='Raspbian' IMG_NAME='Raspbian'
``` ```
## Docker Build ## Docker Build
```bash ```bash
vi config # Edit your config file. See above. vi config # Edit your config file. See above.
./build-docker.sh ./build-docker.sh
``` ```
If everything goes well, your finished image will be in the `deploy/` folder. 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 If something breaks along the line, you can edit the corresponding scripts, and
continue: continue:
```bash ```
CONTINUE=1 ./build-docker.sh CONTINUE=1 ./build-docker.sh
``` ```
There is a possibility that even when running from a docker container, the 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).
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 ## Stage Anatomy
@@ -138,32 +98,20 @@ maintenance and allows for more easy customization.
enhancements, etc. This is a base desktop system, with some development enhancements, etc. This is a base desktop system, with some development
tools installed. tools installed.
- **Stage 4** - Raspbian system meant to fit on a 4GB card. More development - **Stage 4** - complete Raspbian system. More development tools, an email
tools, an email client, learning tools like Scratch, specialized packages client, learning tools like Scratch, specialized packages like sonic-pi and
like sonic-pi, system documentation, office productivity, etc. This is the wolfram-engine, system documentation, office productivity, etc. This is
stage that installs all of the things that make Raspbian friendly to new the stage that installs all of the things that make Raspbian friendly to
users. new users.
- **Stage 5** - The official Raspbian Desktop image. Right now only adds
Mathematica.
### Stage specification ### 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 Then remove the `EXPORT*` files from `./stage4` (if building up to stage 2) or from `./stage2` (if building a minimal system).
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
echo "IMG_NAME='Raspbian'" > config
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
rm stage4/EXPORT*
sudo ./build.sh # or ./build-docker.sh
``` ```
# Example for building a lite system
If you wish to build further configurations upon (for example) the lite $ touch ./stage3/SKIP ./stage4/SKIP
system, you can also delete the contents of `./stage3` and `./stage4` and $ rm stage4/EXPORT*
replace with your own contents in the same format. ```
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
View File
@@ -12,9 +12,9 @@ if ! $DOCKER ps >/dev/null; then
fi fi
set -e set -e
config_mount="/dev/null:/dev/null" config_mount=
if [ -f config ]; then if [ -f config ]; then
config_mount="$(pwd)/config:/pi-gen/config:ro" config_mount="-v $(pwd)/config:/pi-gen/config:ro"
source config source config
fi fi
@@ -45,7 +45,7 @@ fi
if [ "$CONTAINER_EXISTS" != "" ] && [ "$CONTINUE" != "1" ]; then if [ "$CONTAINER_EXISTS" != "" ] && [ "$CONTINUE" != "1" ]; then
echo "Container $CONTAINER_NAME already exists and you did not specify CONTINUE=1. Aborting." echo "Container $CONTAINER_NAME already exists and you did not specify CONTINUE=1. Aborting."
echo "You can delete the existing container like this:" echo "You can delete the existing container like this:"
echo " docker rm -v $CONTAINER_NAME" echo " docker rm $CONTAINER_NAME"
exit 1 exit 1
fi 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 trap "echo 'got CTRL+C... please wait 5s';docker stop -t 5 ${CONTAINER_NAME}_cont" SIGINT SIGTERM
time $DOCKER run --rm --privileged \ time $DOCKER run --rm --privileged \
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \ --volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
-e IMG_NAME=${IMG_NAME}\
pi-gen \ pi-gen \
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
cd /pi-gen; ./build.sh; cd /pi-gen; ./build.sh;
@@ -63,9 +62,8 @@ if [ "$CONTAINER_EXISTS" != "" ]; then
else else
trap "echo 'got CTRL+C... please wait 5s'; docker stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM trap "echo 'got CTRL+C... please wait 5s'; docker stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM
$DOCKER run --name "${CONTAINER_NAME}" --privileged \ $DOCKER run --name "${CONTAINER_NAME}" --privileged \
-e IMG_NAME=${IMG_NAME}\ -v $(pwd)/deploy:/pi-gen/deploy \
-v "$(pwd)/deploy:/pi-gen/deploy" \ ${config_mount} \
-v "${config_mount}" \
pi-gen \ pi-gen \
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
cd /pi-gen; ./build.sh && cd /pi-gen; ./build.sh &&
+1 -1
View File
@@ -128,7 +128,7 @@ if [ -z "${IMG_NAME}" ]; then
exit 1 exit 1
fi 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 BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export SCRIPT_DIR="${BASE_DIR}/scripts" export SCRIPT_DIR="${BASE_DIR}/scripts"
-2
View File
@@ -35,8 +35,6 @@ rm -f ${ROOTFS_DIR}/var/lib/dbus/machine-id
true > ${ROOTFS_DIR}/etc/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 for _FILE in $(find ${ROOTFS_DIR}/var/log/ -type f); do
true > ${_FILE} true > ${_FILE}
done done
+5 -5
View File
@@ -8,12 +8,12 @@ rm -f ${IMG_FILE}
rm -rf ${ROOTFS_DIR} rm -rf ${ROOTFS_DIR}
mkdir -p ${ROOTFS_DIR} mkdir -p ${ROOTFS_DIR}
BOOT_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1) BOOT_SIZE=$(du -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) 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 fdisk -H 255 -S 63 ${IMG_FILE} <<EOF
o o
n n
@@ -51,7 +51,7 @@ echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH"
echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH" echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH"
mkdosfs -n boot -F 32 -v $BOOT_DEV > /dev/null 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 mount -v $ROOT_DEV ${ROOTFS_DIR} -t ext4
mkdir -p ${ROOTFS_DIR}/boot mkdir -p ${ROOTFS_DIR}/boot
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"description": "NOOBS_DESCRIPTION", "description": "NOOBS_DESCRIPTION",
"feature_level": 35120124, "feature_level": 35120124,
"kernel": "4.9", "kernel": "4.4",
"name": "NOOBS_NAME", "name": "NOOBS_NAME",
"password": "raspberry", "password": "raspberry",
"release_date": "UNRELEASED", "release_date": "UNRELEASED",
@@ -1,16 +1,4 @@
UNRELEASED: 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 * Wolfram Mathematica updated to version 11.0.1
* Adobe Flash Player updated to version 25.0.0.127 * Adobe Flash Player updated to version 25.0.0.127
* Use PARTUUID to support USB boot * Use PARTUUID to support USB boot
+3 -3
View File
@@ -16,9 +16,9 @@ bootstrap(){
fi fi
capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \ capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
--arch armhf \ --arch armhf\
--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \ --no-check-gpg \
$1 $2 $3" || rmdir "$2/debootstrap" $1 $2 $3"
} }
export -f bootstrap export -f bootstrap
File diff suppressed because one or more lines are too long
-1
View File
@@ -1 +0,0 @@
locales
Binary file not shown.
+1 -1
View File
@@ -1,5 +1,5 @@
# For more options and information see # 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 # Some settings may impact device functionality. See link above for details
# uncomment if you get no picture on HDMI for a default "safe" mode # 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 -2
View File
@@ -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 console-setup keyboard-configuration debconf-utils parted unzip
build-essential manpages-dev python bash-completion gdb pkg-config build-essential manpages-dev python bash-completion gdb pkg-config
python-rpi.gpio v4l-utils python-rpi.gpio v4l-utils
@@ -16,4 +16,3 @@ apt-listchanges
usb-modeswitch usb-modeswitch
apt-transport-https apt-transport-https
libpam-chksshpwd libpam-chksshpwd
rpi-update
+1 -1
View File
@@ -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 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 xpdf gtk2-engines alsa-utils
desktop-base desktop-base
git git-core rpi-update
omxplayer omxplayer
raspberrypi-artwork raspberrypi-artwork
policykit-1 policykit-1
-2
View File
@@ -33,5 +33,3 @@ python-picraft python3-picraft
python3-codebug-tether python3-codebug-i2c-tether python3-codebug-tether python3-codebug-i2c-tether
python-sense-emu python3-sense-emu sense-emu-tools python-sense-emu-doc python-sense-emu python3-sense-emu sense-emu-tools python-sense-emu-doc
pprompt pprompt
scratch2
python3-thonny
-19
View File
@@ -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
View File
@@ -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)" NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (full desktop version)"