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:
commit
f5b291c781
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -5,3 +5,4 @@ postrun.sh
|
||||||
SKIP
|
SKIP
|
||||||
.pc
|
.pc
|
||||||
*-pc
|
*-pc
|
||||||
|
apt-cacher-ng/
|
||||||
|
|
|
@ -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/
|
||||||
|
|
76
README.md
76
README.md
|
@ -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
|
||||||
|
|
|
@ -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 &&
|
||||||
|
|
2
build.sh
2
build.sh
|
@ -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
10
docker-compose.yml
Normal 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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
6
stage0/01-locale/00-debconf
Normal file
6
stage0/01-locale/00-debconf
Normal file
File diff suppressed because one or more lines are too long
1
stage0/01-locale/00-packages
Normal file
1
stage0/01-locale/00-packages
Normal file
|
@ -0,0 +1 @@
|
||||||
|
locales
|
File diff suppressed because one or more lines are too long
|
@ -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
|
||||||
|
|
10
stage3/00-install-packages/00-packages
Normal file
10
stage3/00-install-packages/00-packages
Normal 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
|
37
stage4/00-install-packages/00-packages
Normal file
37
stage4/00-install-packages/00-packages
Normal 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
|
19
stage4/00-install-packages/01-packages
Normal file
19
stage4/00-install-packages/01-packages
Normal 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
2
stage5/EXPORT_NOOBS
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
NOOBS_NAME="Raspbian"
|
||||||
|
NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (full desktop version)"
|
Loading…
Reference in New Issue
Block a user