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

# Conflicts:
#	README.md
#	scripts/common
#	stage3/00-install-packages/00-packages
#	stage4/00-install-packages/00-packages
#	stage5/EXPORT_NOOBS
This commit is contained in:
Yossi 2017-07-20 15:18:46 +03:00
commit f5b291c781
24 changed files with 127 additions and 97 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@ postrun.sh
SKIP SKIP
.pc .pc
*-pc *-pc
apt-cacher-ng/

View File

@ -1,10 +1,10 @@
FROM debian:jessie FROM debian:stretch
RUN apt-get -y update && \ RUN apt-get -y update && \
apt-get -y install \ apt-get -y install \
git vim parted \ git vim parted \
quilt realpath qemu-user-static debootstrap zerofree pxz zip dosfstools \ quilt realpath qemu-user-static debootstrap zerofree pxz zip dosfstools \
bsdtar libcap2-bin rsync grep \ bsdtar libcap2-bin rsync grep udev \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY . /pi-gen/ COPY . /pi-gen/

View File

@ -3,83 +3,9 @@
sudo apt-get update && sudo apt-get install git quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin -y && cd ../ && sudo apt-get update && sudo apt-get install git quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin -y && cd ../ &&
sudo git clone https://github.com/dride/drideOS-image-generator && cd drideOS-image-generator && sudo ./build.sh sudo git clone https://github.com/dride/drideOS-image-generator && cd drideOS-image-generator && sudo ./build.sh
# 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 ## Stage Anatomy
### Raspbian Stage Overview ### (drideOS) Raspbian Stage Overview
The build of Raspbian is divided up into several stages for logical clarity The build of Raspbian is divided up into several stages for logical clarity

View File

@ -12,9 +12,10 @@ if ! $DOCKER ps >/dev/null; then
fi fi
set -e set -e
config_mount=
config_mount=()
if [ -f config ]; then if [ -f config ]; then
config_mount="-v $(pwd)/config:/pi-gen/config:ro" config_mount=("-v" "$(pwd)/config:/pi-gen/config:ro")
source config source config
fi fi
@ -45,7 +46,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 $CONTAINER_NAME" echo " docker rm -v $CONTAINER_NAME"
exit 1 exit 1
fi fi
@ -54,6 +55,7 @@ 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;
@ -62,8 +64,9 @@ 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 \
-v $(pwd)/deploy:/pi-gen/deploy \ -e IMG_NAME=${IMG_NAME}\
${config_mount} \ -v "$(pwd)/deploy:/pi-gen/deploy" \
"${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 &&

View File

@ -128,7 +128,7 @@ if [ -z "${IMG_NAME}" ]; then
exit 1 exit 1
fi fi
export IMG_DATE=${IMG_DATE:-"$(date -u +%Y-%m-%d)"} export IMG_DATE=${IMG_DATE:-"$(date +%Y-%m-%d)"}
export OS_TYPE=$1 export OS_TYPE=$1

10
docker-compose.yml Normal file
View File

@ -0,0 +1,10 @@
version: '2'
services:
apt-cacher-ng:
restart: unless-stopped
image: sameersbn/apt-cacher-ng:latest
ports:
- "3142:3142"
volumes:
- ./apt-cacher-ng:/var/cache/apt-cacher-ng

View File

@ -35,6 +35,8 @@ 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

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 -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1) BOOT_SIZE=$(du --apparent-size -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) TOTAL_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR} --exclude var/cache/apt/archives --block-size=1 | cut -f 1)
IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (400 * 1024 * 1024))) IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024)))
fallocate -l ${IMG_SIZE} ${IMG_FILE} truncate -s ${IMG_SIZE} ${IMG_FILE}
fdisk -H 255 -S 63 ${IMG_FILE} <<EOF fdisk -H 255 -S 63 ${IMG_FILE} <<EOF
o o
n n
@ -50,8 +50,12 @@ ROOT_DEV=$(losetup --show -f -o ${ROOT_OFFSET} --sizelimit ${ROOT_LENGTH} ${IMG_
echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH" echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH"
echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH" echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH"
ROOT_FEATURES="^huge_file"
if grep -q "metadata_csum" /etc/mke2fs.conf; then
ROOT_FEATURES="^metadata_csum,$ROOT_FEATURES"
fi
mkdosfs -n boot -F 32 -v $BOOT_DEV > /dev/null mkdosfs -n boot -F 32 -v $BOOT_DEV > /dev/null
mkfs.ext4 -O ^huge_file $ROOT_DEV > /dev/null mkfs.ext4 -O $ROOT_FEATURES $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

View File

@ -1,7 +1,7 @@
{ {
"description": "NOOBS_DESCRIPTION", "description": "NOOBS_DESCRIPTION",
"feature_level": 35120124, "feature_level": 35120124,
"kernel": "4.4", "kernel": "4.9",
"name": "NOOBS_NAME", "name": "NOOBS_NAME",
"password": "raspberry", "password": "raspberry",
"release_date": "UNRELEASED", "release_date": "UNRELEASED",

View File

@ -1,4 +1,18 @@
UNRELEASED: UNRELEASED:
*
2017-07-05:
* 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

View File

@ -18,7 +18,7 @@ bootstrap(){
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" \ --keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
$1 $2 $3" $1 $2 $3" || rmdir "$2/debootstrap"
} }
export -f bootstrap export -f bootstrap

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
locales

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
ssh locales less fbset sudo psmisc strace module-init-tools ed ncdu crda ssh 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,3 +16,4 @@ apt-listchanges
usb-modeswitch usb-modeswitch
apt-transport-https apt-transport-https
libpam-chksshpwd libpam-chksshpwd
rpi-update

View File

@ -0,0 +1,10 @@
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
omxplayer
raspberrypi-artwork
policykit-1
gvfs
rfkill
chromium-browser rpi-chromium-mods

View File

@ -0,0 +1,37 @@
java-common oracle-java8-jdk
libreoffice-sdbc-hsqldb
sonic-pi
python idle python3-pygame python-pygame python-tk
python3 idle3 python3-tk
python3-pgzero
python-serial python3-serial
python-picamera python3-picamera
debian-reference-en dillo x2x
raspberrypi-net-mods raspberrypi-ui-mods
smartsim penguinspuzzle
python-pip python3-pip
python3-numpy
pypy
python3-pifacecommon python3-pifacedigitalio python3-pifacedigital-scratch-handler python-pifacecommon python-pifacedigitalio
minecraft-pi python-minecraftpi
alacarte rc-gui sense-hat
claws-mail
tree
scratch nuscratch
greenfoot bluej
nodered
libgl1-mesa-dri libgles1-mesa libgles2-mesa xcompmgr
geany
piclone
pulseaudio-module-bluetooth
wiringpi pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio
python-spidev python3-spidev
python-twython python3-twython
python-smbus python3-smbus
python-flask python3-flask
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

View File

@ -0,0 +1,19 @@
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

2
stage5/EXPORT_NOOBS Normal file
View File

@ -0,0 +1,2 @@
NOOBS_NAME="Raspbian"
NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (full desktop version)"