Compare commits
93 Commits
2019-06-20
...
master
Author | SHA1 | Date |
---|---|---|
B.J. Dweck | dd43d98867 | |
B.J. Dweck | 171dc63701 | |
B.J. Dweck | 03890a3973 | |
B.J. Dweck | 9556d96872 | |
B.J. Dweck | 3615fdce98 | |
B.J. Dweck | fac7876b18 | |
B.J. Dweck | 8f3c43116e | |
B.J. Dweck | d58c7244ec | |
B.J. Dweck | d6babca3c7 | |
B.J. Dweck | 5d9bb8b017 | |
B.J. Dweck | 2df48bcb6c | |
B.J. Dweck | e315c692d9 | |
B.J. Dweck | 052631361a | |
B.J. Dweck | bc2505a534 | |
B.J. Dweck | ff9a6a2f5d | |
B.J. Dweck | 4f80f9a7e4 | |
B.J. Dweck | 0e722a9e71 | |
Serge Schneider | d6207a620a | |
Serge Schneider | 78c9e2cf02 | |
Serge Schneider | 930d86115d | |
Serge Schneider | 9a3a10bf10 | |
Serge Schneider | f663d4c6d1 | |
Serge Schneider | 825107f040 | |
Serge Schneider | b9bb59c237 | |
DragonEagle | 08fc0b9a82 | |
Leandro Lisboa Penz | 8ef3f47d7f | |
Tim Visée | 65f91b8349 | |
Luigi F. Cruz | 38d22e976a | |
Serge Schneider | 5f884374b6 | |
Serge Schneider | 6d71ac0bf9 | |
Serge Schneider | 6b72a64f02 | |
Serge Schneider | e577677b62 | |
Serge Schneider | 87f7a59cab | |
Serge Schneider | 306c7eba3b | |
Serge Schneider | b4ea63c045 | |
Serge Schneider | bdbd85892e | |
Serge Schneider | ca31aef1f7 | |
Serge Schneider | 0a6624b26d | |
Serge Schneider | 24bb01dec2 | |
Andrew Pattison | f8f3d6fe93 | |
Andrew Pattison | f9375cdcec | |
Sam Tygier | 9d334bee66 | |
Sam Tygier | 024840034e | |
Sam Tygier | 271177a0f7 | |
Christian Decker | 9d15c0f7d1 | |
RaspberryPiFan | 32353a162b | |
Christian Decker | 18c3cebe94 | |
RaspberryPiFan | 8bdbbfb099 | |
RaspberryPiFan | d7c1ae21ca | |
Leander | 5456c3801f | |
Leander | 5e19033387 | |
Leander | 7f143a185e | |
snoe925 | a449c75fac | |
Serge Schneider | 95ba042c83 | |
Rene Klootwijk | d30343f626 | |
Serge Schneider | 19c0188798 | |
Matthijs Kooijman | 336ff2107e | |
Serge Schneider | 8026d9dc8f | |
Serge Schneider | 80d486687e | |
Serge Schneider | 5780006ecd | |
Matthijs Kooijman | 99f702f0ff | |
Serge Schneider | 946f164006 | |
Serge Schneider | 6538d5babf | |
fpicalausa | 652780757b | |
Serge Schneider | d1ed4a2982 | |
Russ Kubes | 00c22ab57e | |
Serge Schneider | e8460beb3b | |
Serge Schneider | 77833ba929 | |
Serge Schneider | c49261d756 | |
Serge Schneider | a016561600 | |
Serge Schneider | c1ff2b1cac | |
Serge Schneider | 28f344144c | |
Joshua Bussdieker | d1f7a38905 | |
Christophe Hurpeau | 8110eb4891 | |
Kevin Stone | 18b945ffb2 | |
Hugo Hromic | 920e22bdc5 | |
Jens Hilligsøe | 5436273ec7 | |
132ikl | c0714e33d6 | |
Serge Schneider | 9c0a25d852 | |
Serge Schneider | 210b51c293 | |
Serge Schneider | 4c575d7e8f | |
Serge Schneider | 175dfb027f | |
Serge Schneider | 37482277d3 | |
Serge Schneider | 4118f8d524 | |
gscscnd | 1143530351 | |
gscscnd | fd21eff626 | |
Samuele Maci | ae4ec6445e | |
Xerxes Rånby | 57ef9b88e3 | |
Ondřej Caletka | 3db1168fbd | |
Russ Kubes | 4ca539cb45 | |
Ryan Walmsley | 3c559aeb56 | |
Hugo Hromic | cf50ff26d2 | |
Serge Schneider | a4be08e275 |
|
@ -1,12 +1,13 @@
|
||||||
FROM debian:stretch
|
FROM debian:buster
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
|
||||||
RUN apt-get -y update && \
|
RUN apt-get -y update && \
|
||||||
apt-get -y install \
|
apt-get -y install --no-install-recommends \
|
||||||
git vim parted \
|
git vim parted \
|
||||||
quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools \
|
quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools \
|
||||||
bsdtar libcap2-bin rsync grep udev xz-utils curl xxd file kmod\
|
bsdtar libcap2-bin rsync grep udev xz-utils curl xxd file kmod bc\
|
||||||
|
binfmt-support ca-certificates \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY . /pi-gen/
|
COPY . /pi-gen/
|
||||||
|
|
|
@ -1,12 +1,21 @@
|
||||||
# pi-gen
|
# Burrow Pi Image
|
||||||
|
|
||||||
_Tool used to create the raspberrypi.org Raspbian images_
|
This is a fork of the [pi-gen](https://github.com/RPi-Distro/pi-gen) project, the "tool used to create the raspberrypi.org Raspbian images". `pi-gen` serves as a decent base becuase it:
|
||||||
|
|
||||||
|
* Builds compact images that self-inflate on the device during the first boot
|
||||||
|
* Provides a comfortable development workflow
|
||||||
|
|
||||||
|
I modified `pi-gen` with the following features:
|
||||||
|
|
||||||
|
* Rudefox Burrow installed
|
||||||
|
* Auto-login
|
||||||
|
* Read-only filesystem (as a security measure to prevent you from accidentally storing sensitive information on this low-security hardware)
|
||||||
|
* Most user-space networking packages removed (kernel still included networking capabilities)
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
pi-gen runs on Debian based operating systems. Currently it is only supported on
|
pi-gen runs on Debian based operating systems. Currently it is only supported on
|
||||||
either Debian Stretch or Ubuntu Xenial and is known to have issues building on
|
either Debian Buster or Ubuntu Xenial and is known to have issues building on
|
||||||
earlier releases of these systems. On other Linux distributions it may be possible
|
earlier releases of these systems. On other Linux distributions it may be possible
|
||||||
to use the Docker build described below.
|
to use the Docker build described below.
|
||||||
|
|
||||||
|
@ -14,7 +23,7 @@ To install the required dependencies for pi-gen you should run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \
|
apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \
|
||||||
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl
|
dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc
|
||||||
```
|
```
|
||||||
|
|
||||||
The file `depends` contains a list of tools needed. The format of this
|
The file `depends` contains a list of tools needed. The format of this
|
||||||
|
@ -29,13 +38,26 @@ environment variables.
|
||||||
|
|
||||||
The following environment variables are supported:
|
The following environment variables are supported:
|
||||||
|
|
||||||
* `IMG_NAME` **required** (Default: unset)
|
* `IMG_NAME` (Default: `RudefoxBurrow`)
|
||||||
|
|
||||||
The name of the image to build with the current stage directories. Setting
|
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,
|
`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
|
but you should use something else for a customized version. Export files
|
||||||
in stages may add suffixes to `IMG_NAME`.
|
in stages may add suffixes to `IMG_NAME`.
|
||||||
|
|
||||||
|
* `RUDEFOX_REPO_USERNAME` (Default: `anonymous`)
|
||||||
|
|
||||||
|
If the value is set to `anonymous`, then Burrow is pulled from the publicly available Rudefox repository. Otherwise, the build attempts to login to the Rudefox private repository for access to SNAPSHOT builds using the provided `RUDEFOX_REPO_USERNAME` / `RUDEFOX_REPO_PASSWORD` credentials.
|
||||||
|
|
||||||
|
* `RUDEFOX_BURROW_VERSION` (Default: `latest`)
|
||||||
|
|
||||||
|
If the value is set to `latest`, then the latest version is pulled from the Rudefox repository and installed. Otherwise, the specified version is downloadedand installed.
|
||||||
|
|
||||||
|
* `RELEASE` (Default: buster)
|
||||||
|
|
||||||
|
The release version to build images against. Valid values are jessie, stretch
|
||||||
|
buster, bullseye, and testing.
|
||||||
|
|
||||||
* `APT_PROXY` (Default: unset)
|
* `APT_PROXY` (Default: unset)
|
||||||
|
|
||||||
If you require the use of an apt proxy, set it here. This proxy setting
|
If you require the use of an apt proxy, set it here. This proxy setting
|
||||||
|
@ -62,7 +84,7 @@ The following environment variables are supported:
|
||||||
be built and cached. Note, `WORK_DIR` stores a complete copy of the target
|
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
|
system for each build stage, amounting to tens of gigabytes in the case of
|
||||||
Raspbian.
|
Raspbian.
|
||||||
|
|
||||||
**CAUTION**: If your working directory is on an NTFS partition you probably won't be able to build. Make sure this is a proper Linux filesystem.
|
**CAUTION**: If your working directory is on an NTFS partition you probably won't be able to build. Make sure this is a proper Linux filesystem.
|
||||||
|
|
||||||
* `DEPLOY_DIR` (Default: `"$BASE_DIR/deploy"`)
|
* `DEPLOY_DIR` (Default: `"$BASE_DIR/deploy"`)
|
||||||
|
@ -78,30 +100,72 @@ The following environment variables are supported:
|
||||||
Setting to '1' enables the QEMU mode - creating an image that can be mounted via QEMU for an emulated
|
Setting to '1' enables the QEMU mode - creating an image that can be mounted via QEMU for an emulated
|
||||||
environment. These images include "-qemu" in the image file name.
|
environment. These images include "-qemu" in the image file name.
|
||||||
|
|
||||||
* `FIRST_USER_NAME` (Default: "pi" )
|
* `LOCALE_DEFAULT` (Default: "en_CA.UTF-8" )
|
||||||
|
|
||||||
|
Default system locale.
|
||||||
|
|
||||||
|
* `TARGET_HOSTNAME` (Default: "burrow" )
|
||||||
|
|
||||||
|
Setting the hostname to the specified value.
|
||||||
|
|
||||||
|
* `KEYBOARD_MODEL` (Default: "Generic 101-key PC" )
|
||||||
|
|
||||||
|
Default keyboard model.
|
||||||
|
|
||||||
|
To get the current value from a running system, run `debconf-show
|
||||||
|
keyboard-configuration` and look at the
|
||||||
|
`keyboard-configuration/model` value.
|
||||||
|
|
||||||
|
* `KEYBOARD_KEYMAP` (Default: "us" )
|
||||||
|
|
||||||
|
Default keyboard keymap.
|
||||||
|
|
||||||
|
To get the current value from a running system, run `debconf-show
|
||||||
|
keyboard-configuration` and look at the
|
||||||
|
`keyboard-configuration/xkb-keymap` value.
|
||||||
|
|
||||||
|
* `KEYBOARD_LAYOUT` (Default: "English (UK)" )
|
||||||
|
|
||||||
|
Default keyboard layout.
|
||||||
|
|
||||||
|
To get the current value from a running system, run `debconf-show
|
||||||
|
keyboard-configuration` and look at the
|
||||||
|
`keyboard-configuration/variant` value.
|
||||||
|
|
||||||
|
* `TIMEZONE_DEFAULT` (Default: "Europe/London" )
|
||||||
|
|
||||||
|
Default keyboard layout.
|
||||||
|
|
||||||
|
To get the current value from a running system, look in
|
||||||
|
`/etc/timezone`.
|
||||||
|
|
||||||
|
* `FIRST_USER_NAME` (Default: "rudefox" )
|
||||||
|
|
||||||
Username for the first user
|
Username for the first user
|
||||||
|
|
||||||
* `FIRST_USER_PASS` (Default: "raspberry")
|
* `FIRST_USER_PASS` (Default: "burrow")
|
||||||
|
|
||||||
Password for the first user
|
Password for the first user
|
||||||
|
|
||||||
* `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset)
|
* `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset)
|
||||||
|
|
||||||
If these are set, they are use to configure `wpa_supplicant.conf`, so that the raspberry pi can automatically connect to a wifi network on first boot.
|
If these are set, they are use to configure `wpa_supplicant.conf`, so that the Raspberry Pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters.
|
||||||
|
|
||||||
* `ENABLE_SSH` (Default: `0`)
|
* `ENABLE_SSH` (Default: `0`)
|
||||||
|
|
||||||
Setting to `1` will enable ssh server for remote log in. Note that if you are using a common password such as the defaults there is a high risk of attackers taking over you RaspberryPi.
|
Setting to `1` will enable ssh server for remote log in. Note that if you are using a common password such as the defaults there is a high risk of attackers taking over you Raspberry Pi.
|
||||||
|
|
||||||
* `STAGE_LIST` (Default: `stage*`)
|
* `STAGE_LIST` (Default: `stage[0-2]`)
|
||||||
|
|
||||||
If set, then instead of working through the numeric stages in order, this list will be followed. For example setting to `"stage0 stage1 mystage stage2"` will run the contents of `mystage` before stage2. Note that quotes are needed around the list. An absolute or relative path can be given for stages outside the pi-gen directory.
|
The default setting builds only the "lite" image for Rudefox Burrow, which is all you need.
|
||||||
|
|
||||||
A simple example for building Raspbian:
|
If set, then instead of working through the numeric stages in order, this list will be followed. For example setting to `"stage0 stage1 mystage stage2"` will run the contents of `mystage` before stage2. Note that quotes are needed around the list. An absolute or relative path can be given for stages outside the pi-gen directory.
|
||||||
|
|
||||||
|
A simple example for building RaspbianBurrow:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
IMG_NAME='Raspbian'
|
APT_PROXY=http://172.17.10.10:3142
|
||||||
|
TIMEZONE_DEFAULT="America/Toronto"
|
||||||
```
|
```
|
||||||
|
|
||||||
The config file can also be specified on the command line as an argument the `build.sh` or `build-docker.sh` scripts.
|
The config file can also be specified on the command line as an argument the `build.sh` or `build-docker.sh` scripts.
|
||||||
|
@ -246,14 +310,13 @@ 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** - Normal Raspbian image. System meant to fit on a 4GB card. This is the
|
||||||
tools, an email client, learning tools like Scratch, specialized packages
|
stage that installs most things that make Raspbian friendly to new
|
||||||
like sonic-pi, system documentation, office productivity, etc. This is the
|
users like system documentation.
|
||||||
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
|
- **Stage 5** - The Raspbian Full image. More development
|
||||||
Mathematica.
|
tools, an email client, learning tools like Scratch, specialized packages
|
||||||
|
like sonic-pi, office productivity, etc.
|
||||||
|
|
||||||
### Stage specification
|
### Stage specification
|
||||||
|
|
||||||
|
@ -261,7 +324,7 @@ 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`
|
for a lite system), place an empty file named `SKIP` in each of the `./stage`
|
||||||
directories you wish not to include.
|
directories you wish not to include.
|
||||||
|
|
||||||
Then add an empty file named `SKIP_IMAGES` to `./stage4` (if building up to stage 2) or
|
Then add an empty file named `SKIP_IMAGES` to `./stage4` and `./stage5` (if building up to stage 2) or
|
||||||
to `./stage2` (if building a minimal system).
|
to `./stage2` (if building a minimal system).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -295,6 +358,9 @@ follows:
|
||||||
|
|
||||||
# Troubleshooting
|
# Troubleshooting
|
||||||
|
|
||||||
|
## `64 Bit Systems`
|
||||||
|
Please note there is currently an issue when compiling with a 64 Bit OS. See https://github.com/RPi-Distro/pi-gen/issues/271
|
||||||
|
|
||||||
## `binfmt_misc`
|
## `binfmt_misc`
|
||||||
|
|
||||||
Linux is able execute binaries from other architectures, meaning that it should be
|
Linux is able execute binaries from other architectures, meaning that it should be
|
||||||
|
|
|
@ -1,72 +1,89 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -eu
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||||
|
|
||||||
BUILD_OPTS="$*"
|
BUILD_OPTS="$*"
|
||||||
|
|
||||||
DOCKER="docker"
|
DOCKER="docker"
|
||||||
set +e
|
|
||||||
if ! $DOCKER ps >/dev/null 2>&1; then
|
if ! ${DOCKER} ps >/dev/null 2>&1; then
|
||||||
DOCKER="sudo docker"
|
DOCKER="sudo docker"
|
||||||
fi
|
fi
|
||||||
if ! $DOCKER ps >/dev/null; then
|
if ! ${DOCKER} ps >/dev/null; then
|
||||||
echo "error connecting to docker:"
|
echo "error connecting to docker:"
|
||||||
$DOCKER ps
|
${DOCKER} ps
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
set -e
|
|
||||||
|
|
||||||
if [ -f config ]; then
|
CONFIG_FILE=""
|
||||||
# shellcheck disable=SC1091
|
if [ -f "${DIR}/config" ]; then
|
||||||
source config
|
CONFIG_FILE="${DIR}/config"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while getopts "c:" flag
|
while getopts "c:" flag
|
||||||
do
|
do
|
||||||
case "$flag" in
|
case "${flag}" in
|
||||||
c)
|
c)
|
||||||
# shellcheck disable=SC1090
|
CONFIG_FILE="${OPTARG}"
|
||||||
source "$OPTARG"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Ensure that the configuration file is an absolute path
|
||||||
|
if test -x /usr/bin/realpath; then
|
||||||
|
CONFIG_FILE=$(realpath -s "$CONFIG_FILE" || realpath "$CONFIG_FILE")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure that the confguration file is present
|
||||||
|
if test -z "${CONFIG_FILE}"; then
|
||||||
|
echo "Configuration file need to be present in '${DIR}/config' or path passed as parameter"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
# shellcheck disable=SC1090
|
||||||
|
source ${CONFIG_FILE}
|
||||||
|
fi
|
||||||
|
|
||||||
CONTAINER_NAME=${CONTAINER_NAME:-pigen_work}
|
CONTAINER_NAME=${CONTAINER_NAME:-pigen_work}
|
||||||
CONTINUE=${CONTINUE:-0}
|
CONTINUE=${CONTINUE:-0}
|
||||||
PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0}
|
PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0}
|
||||||
|
|
||||||
if [ -z "${IMG_NAME}" ]; then
|
# Ensure the Git Hash is recorded before entering the docker container
|
||||||
echo "IMG_NAME not set in 'config'" 1>&2
|
GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"}
|
||||||
echo 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
CONTAINER_EXISTS=$($DOCKER ps -a --filter name="$CONTAINER_NAME" -q)
|
CONTAINER_EXISTS=$(${DOCKER} ps -a --filter name="${CONTAINER_NAME}" -q)
|
||||||
CONTAINER_RUNNING=$($DOCKER ps --filter name="$CONTAINER_NAME" -q)
|
CONTAINER_RUNNING=$(${DOCKER} ps --filter name="${CONTAINER_NAME}" -q)
|
||||||
if [ "$CONTAINER_RUNNING" != "" ]; then
|
if [ "${CONTAINER_RUNNING}" != "" ]; then
|
||||||
echo "The build is already running in container $CONTAINER_NAME. Aborting."
|
echo "The build is already running in container ${CONTAINER_NAME}. Aborting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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 -v ${CONTAINER_NAME}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
$DOCKER build -t pi-gen .
|
# Modify original build-options to allow config file to be mounted in the docker container
|
||||||
if [ "$CONTAINER_EXISTS" != "" ]; then
|
BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')"
|
||||||
trap 'echo "got CTRL+C... please wait 5s"; $DOCKER stop -t 5 ${CONTAINER_NAME}_cont' SIGINT SIGTERM
|
|
||||||
time $DOCKER run --rm --privileged \
|
${DOCKER} build -t pi-gen "${DIR}"
|
||||||
|
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 \
|
||||||
|
--volume "${CONFIG_FILE}":/config:ro \
|
||||||
|
-e "GIT_HASH=${GIT_HASH}" \
|
||||||
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
|
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
|
||||||
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 ${BUILD_OPTS} ;
|
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
|
||||||
rsync -av work/*/build.log deploy/" &
|
rsync -av work/*/build.log deploy/" &
|
||||||
wait "$!"
|
wait "$!"
|
||||||
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
|
||||||
time $DOCKER run --name "${CONTAINER_NAME}" --privileged \
|
time ${DOCKER} run --name "${CONTAINER_NAME}" --privileged \
|
||||||
|
--volume "${CONFIG_FILE}":/config:ro \
|
||||||
|
-e "GIT_HASH=${GIT_HASH}" \
|
||||||
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 ${BUILD_OPTS} &&
|
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
|
||||||
|
@ -74,12 +91,12 @@ else
|
||||||
wait "$!"
|
wait "$!"
|
||||||
fi
|
fi
|
||||||
echo "copying results from deploy/"
|
echo "copying results from deploy/"
|
||||||
$DOCKER cp "${CONTAINER_NAME}":/pi-gen/deploy .
|
${DOCKER} cp "${CONTAINER_NAME}":/pi-gen/deploy .
|
||||||
ls -lah deploy
|
ls -lah deploy
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
if [ "$PRESERVE_CONTAINER" != "1" ]; then
|
if [ "${PRESERVE_CONTAINER}" != "1" ]; then
|
||||||
$DOCKER rm -v "$CONTAINER_NAME"
|
${DOCKER} rm -v "${CONTAINER_NAME}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Done! Your image(s) should be in deploy/"
|
echo "Done! Your image(s) should be in deploy/"
|
||||||
|
|
43
build.sh
43
build.sh
|
@ -20,7 +20,7 @@ EOF
|
||||||
PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages-nr")"
|
PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages-nr")"
|
||||||
if [ -n "$PACKAGES" ]; then
|
if [ -n "$PACKAGES" ]; then
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
apt-get install --no-install-recommends -y $PACKAGES
|
apt-get -o APT::Acquire::Retries=3 install --no-install-recommends -y $PACKAGES
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
log "End ${SUB_STAGE_DIR}/${i}-packages-nr"
|
log "End ${SUB_STAGE_DIR}/${i}-packages-nr"
|
||||||
|
@ -30,7 +30,7 @@ EOF
|
||||||
PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages")"
|
PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages")"
|
||||||
if [ -n "$PACKAGES" ]; then
|
if [ -n "$PACKAGES" ]; then
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
apt-get install -y $PACKAGES
|
apt-get -o APT::Acquire::Retries=3 install -y $PACKAGES
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
log "End ${SUB_STAGE_DIR}/${i}-packages"
|
log "End ${SUB_STAGE_DIR}/${i}-packages"
|
||||||
|
@ -122,6 +122,8 @@ if [ "$(id -u)" != "0" ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
export BASE_DIR
|
||||||
|
|
||||||
if [ -f config ]; then
|
if [ -f config ]; then
|
||||||
# shellcheck disable=SC1091
|
# shellcheck disable=SC1091
|
||||||
|
@ -144,31 +146,41 @@ done
|
||||||
export PI_GEN=${PI_GEN:-pi-gen}
|
export PI_GEN=${PI_GEN:-pi-gen}
|
||||||
export PI_GEN_REPO=${PI_GEN_REPO:-https://github.com/RPi-Distro/pi-gen}
|
export PI_GEN_REPO=${PI_GEN_REPO:-https://github.com/RPi-Distro/pi-gen}
|
||||||
|
|
||||||
if [ -z "${IMG_NAME}" ]; then
|
export IMG_NAME="${IMG_NAME:-RasbianBurrow}"
|
||||||
echo "IMG_NAME not set" 1>&2
|
export RUDEFOX_REPO_USERNAME="${RUDEFOX_REPO_USERNAME:-anonymous}"
|
||||||
exit 1
|
export RUDEFOX_REPO_PASSWORD="${RUDEFOX_REPO_PASSWORD:-default}"
|
||||||
fi
|
export RUDEFOX_BURROW_VERSION="${RUDEFOX_BURROW_VERSION:-latest}"
|
||||||
|
|
||||||
export USE_QEMU="${USE_QEMU:-0}"
|
export USE_QEMU="${USE_QEMU:-0}"
|
||||||
export IMG_DATE="${IMG_DATE:-"$(date +%Y-%m-%d)"}"
|
export IMG_DATE="${IMG_DATE:-"$(date +%Y-%m-%d)"}"
|
||||||
export IMG_FILENAME="${IMG_FILENAME:-"${IMG_DATE}-${IMG_NAME}"}"
|
export IMG_FILENAME="${IMG_FILENAME:-"${IMG_DATE}-${IMG_NAME}"}"
|
||||||
export ZIP_FILENAME="${ZIP_FILENAME:-"image_${IMG_DATE}-${IMG_NAME}"}"
|
export ZIP_FILENAME="${ZIP_FILENAME:-"image_${IMG_DATE}-${IMG_NAME}"}"
|
||||||
|
|
||||||
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
||||||
export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}"
|
export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}"
|
||||||
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
|
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
|
||||||
export DEPLOY_ZIP="${DEPLOY_ZIP:-1}"
|
export DEPLOY_ZIP="${DEPLOY_ZIP:-1}"
|
||||||
export LOG_FILE="${WORK_DIR}/build.log"
|
export LOG_FILE="${WORK_DIR}/build.log"
|
||||||
|
|
||||||
export FIRST_USER_NAME=${FIRST_USER_NAME:-pi}
|
export TARGET_HOSTNAME=${TARGET_HOSTNAME:-burrow}
|
||||||
export FIRST_USER_PASS=${FIRST_USER_PASS:-raspberry}
|
|
||||||
|
export FIRST_USER_NAME=${FIRST_USER_NAME:-rudefox}
|
||||||
|
export FIRST_USER_PASS=${FIRST_USER_PASS:-burrow}
|
||||||
|
export RELEASE=${RELEASE:-buster}
|
||||||
export WPA_ESSID
|
export WPA_ESSID
|
||||||
export WPA_PASSWORD
|
export WPA_PASSWORD
|
||||||
export WPA_COUNTRY
|
export WPA_COUNTRY
|
||||||
export ENABLE_SSH="${ENABLE_SSH:-0}"
|
export ENABLE_SSH="${ENABLE_SSH:-0}"
|
||||||
|
|
||||||
export BASE_DIR
|
export LOCALE_DEFAULT="${LOCALE_DEFAULT:-en_CA.UTF-8}"
|
||||||
|
|
||||||
|
export KEYBOARD_MODEL="${KEYBOARD_MODEL:-Generic 101-key PC}"
|
||||||
|
export KEYBOARD_KEYMAP="${KEYBOARD_KEYMAP:-us}"
|
||||||
|
export KEYBOARD_LAYOUT="${KEYBOARD_LAYOUT:-English (UK)}"
|
||||||
|
|
||||||
|
export TIMEZONE_DEFAULT="${TIMEZONE_DEFAULT:-Europe/London}"
|
||||||
|
|
||||||
|
export GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"}
|
||||||
|
|
||||||
export CLEAN
|
export CLEAN
|
||||||
export IMG_NAME
|
export IMG_NAME
|
||||||
|
@ -197,6 +209,8 @@ source "${SCRIPT_DIR}/common"
|
||||||
# shellcheck source=scripts/dependencies_check
|
# shellcheck source=scripts/dependencies_check
|
||||||
source "${SCRIPT_DIR}/dependencies_check"
|
source "${SCRIPT_DIR}/dependencies_check"
|
||||||
|
|
||||||
|
dependencies_check "${BASE_DIR}/depends"
|
||||||
|
|
||||||
#check username is valid
|
#check username is valid
|
||||||
if [[ ! "$FIRST_USER_NAME" =~ ^[a-z][-a-z0-9_]*$ ]]; then
|
if [[ ! "$FIRST_USER_NAME" =~ ^[a-z][-a-z0-9_]*$ ]]; then
|
||||||
echo "Invalid FIRST_USER_NAME: $FIRST_USER_NAME"
|
echo "Invalid FIRST_USER_NAME: $FIRST_USER_NAME"
|
||||||
|
@ -208,12 +222,15 @@ if [[ -n "${APT_PROXY}" ]] && ! curl --silent "${APT_PROXY}" >/dev/null ; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dependencies_check "${BASE_DIR}/depends"
|
if [[ -n "${WPA_PASSWORD}" && ${#WPA_PASSWORD} -lt 8 || ${#WPA_PASSWORD} -gt 63 ]] ; then
|
||||||
|
echo "WPA_PASSWORD" must be between 8 and 63 characters
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
mkdir -p "${WORK_DIR}"
|
mkdir -p "${WORK_DIR}"
|
||||||
log "Begin ${BASE_DIR}"
|
log "Begin ${BASE_DIR}"
|
||||||
|
|
||||||
STAGE_LIST=${STAGE_LIST:-${BASE_DIR}/stage*}
|
STAGE_LIST=${STAGE_LIST:-${BASE_DIR}/stage[0-2]}
|
||||||
|
|
||||||
for STAGE_DIR in $STAGE_LIST; do
|
for STAGE_DIR in $STAGE_LIST; do
|
||||||
STAGE_DIR=$(realpath "${STAGE_DIR}")
|
STAGE_DIR=$(realpath "${STAGE_DIR}")
|
||||||
|
@ -237,7 +254,7 @@ for EXPORT_DIR in ${EXPORT_DIRS}; do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -x postrun.sh ]; then
|
if [ -x ${BASE_DIR}/postrun.sh ]; then
|
||||||
log "Begin postrun.sh"
|
log "Begin postrun.sh"
|
||||||
cd "${BASE_DIR}"
|
cd "${BASE_DIR}"
|
||||||
./postrun.sh
|
./postrun.sh
|
||||||
|
|
|
@ -4,8 +4,12 @@ IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img"
|
||||||
INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info"
|
INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info"
|
||||||
|
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
/etc/init.d/fake-hwclock stop
|
if [ -x /etc/init.d/fake-hwclock ]; then
|
||||||
hardlink -t /usr/share/doc
|
/etc/init.d/fake-hwclock stop
|
||||||
|
fi
|
||||||
|
if hash hardlink 2>/dev/null; then
|
||||||
|
hardlink -t /usr/share/doc
|
||||||
|
fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config" ]; then
|
if [ -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config" ]; then
|
||||||
|
|
|
@ -10,32 +10,27 @@ rm -rf "${ROOTFS_DIR}"
|
||||||
mkdir -p "${ROOTFS_DIR}"
|
mkdir -p "${ROOTFS_DIR}"
|
||||||
|
|
||||||
BOOT_SIZE="$((256 * 1024 * 1024))"
|
BOOT_SIZE="$((256 * 1024 * 1024))"
|
||||||
TOTAL_SIZE=$(du --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --block-size=1 | cut -f 1)
|
ROOT_SIZE=$(du --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --exclude boot --block-size=1 | cut -f 1)
|
||||||
|
|
||||||
ROUND_SIZE="$((4 * 1024 * 1024))"
|
# All partition sizes and starts will be aligned to this size
|
||||||
ROUNDED_ROOT_SECTOR=$(((BOOT_SIZE + ROUND_SIZE) / ROUND_SIZE * ROUND_SIZE / 512 + 8192))
|
ALIGN="$((4 * 1024 * 1024))"
|
||||||
IMG_SIZE=$(((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024) + ROUND_SIZE - 1) / ROUND_SIZE * ROUND_SIZE))
|
# Add this much space to the calculated file size. This allows for
|
||||||
|
# some overhead (since actual space usage is usually rounded up to the
|
||||||
|
# filesystem block size) and gives some free space on the resulting
|
||||||
|
# image.
|
||||||
|
ROOT_MARGIN="$(echo "($ROOT_SIZE * 0.2 + 200 * 1024 * 1024) / 1" | bc)"
|
||||||
|
|
||||||
|
BOOT_PART_START=$((ALIGN))
|
||||||
|
BOOT_PART_SIZE=$(((BOOT_SIZE + ALIGN - 1) / ALIGN * ALIGN))
|
||||||
|
ROOT_PART_START=$((BOOT_PART_START + BOOT_PART_SIZE))
|
||||||
|
ROOT_PART_SIZE=$(((ROOT_SIZE + ROOT_MARGIN + ALIGN - 1) / ALIGN * ALIGN))
|
||||||
|
IMG_SIZE=$((BOOT_PART_START + BOOT_PART_SIZE + ROOT_PART_SIZE))
|
||||||
|
|
||||||
truncate -s "${IMG_SIZE}" "${IMG_FILE}"
|
truncate -s "${IMG_SIZE}" "${IMG_FILE}"
|
||||||
fdisk -H 255 -S 63 "${IMG_FILE}" <<EOF
|
|
||||||
o
|
|
||||||
n
|
|
||||||
|
|
||||||
|
parted --script "${IMG_FILE}" mklabel msdos
|
||||||
8192
|
parted --script "${IMG_FILE}" unit B mkpart primary fat32 "${BOOT_PART_START}" "$((BOOT_PART_START + BOOT_PART_SIZE - 1))"
|
||||||
+$((BOOT_SIZE / 512))
|
parted --script "${IMG_FILE}" unit B mkpart primary ext4 "${ROOT_PART_START}" "$((ROOT_PART_START + ROOT_PART_SIZE - 1))"
|
||||||
p
|
|
||||||
t
|
|
||||||
c
|
|
||||||
n
|
|
||||||
|
|
||||||
|
|
||||||
${ROUNDED_ROOT_SECTOR}
|
|
||||||
|
|
||||||
|
|
||||||
p
|
|
||||||
w
|
|
||||||
EOF
|
|
||||||
|
|
||||||
PARTED_OUT=$(parted -sm "${IMG_FILE}" unit b print)
|
PARTED_OUT=$(parted -sm "${IMG_FILE}" unit b print)
|
||||||
BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^1:' | cut -d':' -f 2 | tr -d B)
|
BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^1:' | cut -d':' -f 2 | tr -d B)
|
||||||
|
|
|
@ -36,6 +36,7 @@ sed "${NOOBS_DIR}/partitions.json" -i -e "s|ROOT_NOM|${ROOT_NOM}|"
|
||||||
sed "${NOOBS_DIR}/os.json" -i -e "s|UNRELEASED|${IMG_DATE}|"
|
sed "${NOOBS_DIR}/os.json" -i -e "s|UNRELEASED|${IMG_DATE}|"
|
||||||
sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_NAME|${NOOBS_NAME}|"
|
sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_NAME|${NOOBS_NAME}|"
|
||||||
sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_DESCRIPTION|${NOOBS_DESCRIPTION}|"
|
sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_DESCRIPTION|${NOOBS_DESCRIPTION}|"
|
||||||
|
sed "${NOOBS_DIR}/os.json" -i -e "s|RELEASE|${RELEASE}|"
|
||||||
|
|
||||||
sed "${NOOBS_DIR}/release_notes.txt" -i -e "s|UNRELEASED|${IMG_DATE}|"
|
sed "${NOOBS_DIR}/release_notes.txt" -i -e "s|UNRELEASED|${IMG_DATE}|"
|
||||||
|
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.7 KiB |
|
@ -16,5 +16,5 @@
|
||||||
],
|
],
|
||||||
"url": "http://www.raspbian.org/",
|
"url": "http://www.raspbian.org/",
|
||||||
"username": "pi",
|
"username": "pi",
|
||||||
"version": "buster"
|
"version": "RELEASE"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,180 @@
|
||||||
UNRELEASED:
|
UNRELEASED:
|
||||||
*
|
*
|
||||||
|
2020-08-20:
|
||||||
|
* raspi-config - added selection of boot device order
|
||||||
|
* raspi-config - added selection of boot EEPROM version
|
||||||
|
* SD Card Copier - copy is now immediately aborted if drives are connected or disconnected while copying
|
||||||
|
* Version 32.0.0.414 of Flash player included
|
||||||
|
* User feedback survey removed from first run of Chromium
|
||||||
|
* Recommended Software - now allows multiple install and reinstall operations without having to close between each one
|
||||||
|
* Bug fix - misleading file browser from panel menu icon selection dialog - icons must now be in icon theme rather than arbitrary files
|
||||||
|
* Bug fix - items in main menu not being translated
|
||||||
|
* Bug fix - raspi-config not detecting audio devices in non-English locales
|
||||||
|
* Bug fix - Bookshelf claiming no disk space in non-English locales
|
||||||
|
* Bug fix - failed installation of both 32 and 64 bit versions of packages by Recommended Software on 64-bit images
|
||||||
|
* Italian translations added (thanks to Emanuele Goldoni and the Italian translation team)
|
||||||
|
* Raspberry Pi firmware ef72c17bcaaeb89093d87bcf71f3228e1b5e1fff
|
||||||
|
* Linux kernel 5.4.51
|
||||||
|
2020-05-27:
|
||||||
|
* Added Bookshelf application
|
||||||
|
* Added Raspberry Pi Diagnostics application
|
||||||
|
* Added magnifier plugin to taskbar - needs magnifier application installed from Recommended Software to enable
|
||||||
|
* Added Magnifier application to Recommended Software
|
||||||
|
* Added marketing questionnaire as initial Chromium tab
|
||||||
|
* Version 0.25 of Scratch 2 included - uses external application to access IMU on SenseHAT
|
||||||
|
* Version 1.0.5 of Scratch 3 included - uses external application to access IMU on SenseHAT
|
||||||
|
* Version 32.0.0.371 of Flash player included
|
||||||
|
* Version 1.0.6 of Node-RED included
|
||||||
|
* Version 6.7.1 of VNC Server included
|
||||||
|
* Version 6.20.113 of VNC Client included
|
||||||
|
* Internal audio outputs enabled as separate ALSA devices
|
||||||
|
* MagPi preinstall removed and replaced with Beginner’s Guide
|
||||||
|
* MagPi weblink removed from main menu
|
||||||
|
* Chromium made default application for PDF files
|
||||||
|
* Common icon loading code for lxpanel plugins used
|
||||||
|
* Italian translations added
|
||||||
|
* Initial move of mouse pointer to menu button disabled
|
||||||
|
* Padding at left of menu button removed
|
||||||
|
* Focus behaviour changed so that focus moves to desktop if no windows are opened - improves reliability of Orca screen reader
|
||||||
|
* Bug fix - focus bug in volume plugin
|
||||||
|
* Bug fix - keyboard repeat interval bug in Mouse & Keyboard Settings
|
||||||
|
* Bug fix - battery detection bug in battery plugin
|
||||||
|
* Bug fix - spurious active areas on taskbar when plugins are hidden
|
||||||
|
* Bug fix - occasional crash in file manager on file selection
|
||||||
|
* Disk ID is now regenerated on first boot
|
||||||
|
* Updated udev rules
|
||||||
|
- Remove unused argon rule
|
||||||
|
- Add vcsm-cma to video group
|
||||||
|
- Add pwm to gpio group
|
||||||
|
* i2cprobe: More flexible I2C/SPI alias mapping
|
||||||
|
* Raspberry Pi firmware 21e1fe3477ffb708a5736ed61a924fd650031136
|
||||||
|
* Linux kernel 4.19.118
|
||||||
|
2020-02-13:
|
||||||
|
* Raspberry Pi Configuration - screen blanking setting disabled if Xscreensaver is installed
|
||||||
|
* Bug fix - switch to turn off VNC server in Raspberry Pi Configuration has no effect
|
||||||
|
* Bug fix - fix %20 characters in file names
|
||||||
|
* Linux kernel 4.19.97
|
||||||
|
* Raspberry Pi firmware 9a34efbf2fc6a27231607ce91a7cb6bf3bdbc0c5
|
||||||
|
- gencmd: Fix measure_clock name for CLOCK_OUTPUT_108
|
||||||
|
- mmal isp: Remote alignment requirements for RGB24 formats
|
||||||
|
- Add missing flags for VC_IMAGE_PROP_YUVUV_4K_CHROMA_ALIGN
|
||||||
|
- platform: Compromise on gpu overclock settings
|
||||||
|
2020-02-05:
|
||||||
|
* Version 3.2.6 of Thonny included - significant improvements in speed, particularly when debugging
|
||||||
|
* Version 1.0.4 of Scratch 3 included - adds new "display stage" and "display sprite" blocks to SenseHAT extension, and loading of files from command line
|
||||||
|
* Version 32.0.0.314 of Flash player included
|
||||||
|
* Version 1.0.3 of NodeRED included
|
||||||
|
* Version 6.6.0 of RealVNC Server and version 6.19.923 of RealVNC Viewer included - adds support for audio
|
||||||
|
* Version 78.0.3904.108 of Chromium included
|
||||||
|
* Mesa updated to 19.3.2 for OpenGL ES 3.1 conformance
|
||||||
|
* Pixel doubling option added in Raspberry Pi Configuration on platforms using FKMS display driver
|
||||||
|
* Orca screen reader added to Recommended Software
|
||||||
|
* Code The Classics Python games added to Recommended Software
|
||||||
|
* File manager - new "places" pane added at top of sidebar to show mounted drives in simplified view; "new folder" icon added to taskbar; expanders in directory browser now correctly show state of subfolders
|
||||||
|
* Multiple monitor support improved - alignment of icons on second desktop corrected, Appearance Settings opens on correct tab when launched from context menu
|
||||||
|
* Raspberry Pi Touchscreen correctly aligned with display
|
||||||
|
* System clock synchronised before installing new packages in startup wizard and Recommended Software
|
||||||
|
* Mixer dialogs added to taskbar volume plugin; separate Audio Preferences application removed
|
||||||
|
* Raspberry Pi Configuration - separate tab added for display options; screen blanking control added
|
||||||
|
* Volume taskbar plugin and raspi-config modified to support separate ALSA devices for internal audio outputs (analogue and HDMI 1 and 2)
|
||||||
|
* Robustness improvements in volume, ejecter and battery taskbar plugins
|
||||||
|
* Movement of mouse pointer to menu button on startup now controlled by point_at_menu parameter in Global section of lxpanel configuration file
|
||||||
|
* Ctrl-Alt-Del and Ctrl-Alt-End shortcuts added to open shutdown options box
|
||||||
|
* Ctrl-Shift-Esc shortcut added to open task manager
|
||||||
|
* Enabled NEON routines in OpenSSL
|
||||||
|
* Linux kernel 4.19.97
|
||||||
|
* Raspberry Pi firmware 149cd7f0487e08e148efe604f8d4d359541cecf4
|
||||||
|
2019-09-26:
|
||||||
|
* rpi-eeprom included
|
||||||
|
- This will automatically update the SPI EEPROM on the Raspberry Pi 4 to the latest stable version.
|
||||||
|
See https://rpf.io/eeprom for more information.
|
||||||
|
* New icon theme for file manager icons
|
||||||
|
* Appearance Settings - option for identical desktop on both monitors
|
||||||
|
* Appearance Settings - option to show different desktop icons on both monitors
|
||||||
|
* Taskbar automatically moved to monitor 0 if monitor 1 not found at boot
|
||||||
|
* Switching of audio output between two HDMI devices added to volume plugin
|
||||||
|
* Switching of audio input devices added to volume plugin
|
||||||
|
* .asoundrc (ALSA config file) now uses 'plug' values to support more devices
|
||||||
|
* Audio Settings tool modified to integrate more closely with volume plugin to reduce duplicated code
|
||||||
|
* Screen Configuration tool now shows separate menus for resolution and refresh rate
|
||||||
|
* Primary and active monitor settings removed from Screen Configuration tool
|
||||||
|
* Overscan support added for FKMS driver
|
||||||
|
* New keyboard shortcuts added - Ctrl-Alt-End brings up shutdown menu; Ctrl-Alt-M moves taskbar between monitors
|
||||||
|
* Latest changes to Bluez ALSA interface integrated to improve connection to Bluetooth audio devices
|
||||||
|
* Mousepad used as simple text editor instead of leafpad
|
||||||
|
* Version 3.2 of Thonny added
|
||||||
|
* Version 74 of Chromium added
|
||||||
|
* Version 3.0.8 of VLC added
|
||||||
|
* Version 32.0.0.255 of Flash player added
|
||||||
|
* Version 6.5.0 of RealVNC Server added
|
||||||
|
* Version 6.19.715 of RealVNC Viewer added (full image only)
|
||||||
|
* Version 12.0.1 of Mathematica added (full image only)
|
||||||
|
* Version 0.20.8 of NodeRED added (full image only)
|
||||||
|
* Version 3.1.0 of Sonic Pi added (full image only)
|
||||||
|
* Scratch 3 added (full image only)
|
||||||
|
* Bug fix - URL handling in Terminal
|
||||||
|
* Bug fix - octal values in SSIDs in network plugin
|
||||||
|
* Bug fix - remaining value in progress bar when transferring files
|
||||||
|
* Bug fix - integration of xarchiver tool with file manager
|
||||||
|
* Bug fix - start menu opening on incorrect monitor
|
||||||
|
* Bug fix - minimised applications wrongly displayed on taskbar on second monitor
|
||||||
|
* Bug fix - Bluetooth icon disappearing on x86 platforms when Bluetooth turned off
|
||||||
|
* Bug fix - Screen Configuration tool not shown on x86 platforms and settings not being saved
|
||||||
|
* Various translation updates
|
||||||
|
* Various minor bug fixes
|
||||||
|
* Epiphany/Web removed
|
||||||
|
* ntfs-3g included
|
||||||
|
* pciutils added
|
||||||
|
* Linux kernel 4.19.75
|
||||||
|
* Raspberry Pi firmware 01508e81ec1e918448227ca864616d56c430b46d
|
||||||
|
2019-07-10:
|
||||||
|
* Clearer options for switching of Pi 4 video output in Raspberry Pi Configuration
|
||||||
|
* Option added to Appearance Settings to move taskbar to second monitor
|
||||||
|
* Option added to Recommended Software to restrict package installs by architecture
|
||||||
|
* New version of Adobe Flash player (32.0.0.223)
|
||||||
|
* Selection of screen refresh rates added to Screen Configuration
|
||||||
|
* Fix for missing text insertion cursor in LibreOffice on Pi 4
|
||||||
|
* Fix for Wi-fi interruption when Wi-fi icon on taskbar is clicked
|
||||||
|
* FIx for incorrect desktop background behind desktop login prompt
|
||||||
|
* Fix for segmentation faults when launching obconf and lxapperarance
|
||||||
|
* Fix for unclosed file pointer in Screen Configuration
|
||||||
|
* Fix for Bluetooth plugin freeze when large numbers of devices detected
|
||||||
|
* Fix for opening URLs not working in lxterminal
|
||||||
|
* Fix for start menu opening on incorrect monitor when launched from keyboard
|
||||||
|
* Fix for taskbar item not having [] removed when un-minimising on second monitor
|
||||||
|
* Fix for Chromium video playback and WebGL performance on Pi 4
|
||||||
|
* Remove 4kp60 option from Raspberry Pi Configuration
|
||||||
|
* Rename hdmi_enable_4k to hdmi_enable_4kp60 in /boot/config.txt and raspi-config
|
||||||
|
* Linux kernel 4.19.57
|
||||||
|
* Raspberry Pi firmware 356f5c2880a3c7e8774025aa6fc934a617553e7b
|
||||||
|
2019-06-20:
|
||||||
|
* Based on Debian Buster
|
||||||
|
* Support for Raspberry Pi 4 hardware
|
||||||
|
* FKMS OpenGL desktop graphics driver and xcompmgr compositing window manager used when running on Raspberry Pi 4
|
||||||
|
* Screen Configuration application added for use with FKMS driver
|
||||||
|
* Raspberry Pi 4 video output options added to Raspberry Pi Configuration
|
||||||
|
* Uses new PiXflat UI theme for GTK and Openbox
|
||||||
|
* CPU activity gauge plugin no longer shown on taskbar by default
|
||||||
|
* CPU temperature gauge plugin added (not shown by default)
|
||||||
|
* USB ejecter and Bluetooth taskbar icons hidden when not appropriate
|
||||||
|
* Version 74.0.3729.157 of Chromium web browser included
|
||||||
|
* Version 32.0.0.207 of Flash player included
|
||||||
|
* IDLE Python IDE removed
|
||||||
|
* Wolfram Mathematica removed temporarily due to incompatibility with Buster
|
||||||
|
* Display of package sizes removed from Recommended Software
|
||||||
|
* Appearance Settings modified to support independent settings for two monitors
|
||||||
|
* Oracle Java 7 and 8 replaced with OpenJDK 11
|
||||||
|
* Miscellaneous small bug fixes
|
||||||
|
* On-board 5GHz WiFi blocked by rfkill by default
|
||||||
|
The block is removed when taking one of the following actions:
|
||||||
|
- Selecting a locale in the first run wizard
|
||||||
|
- Setting the WiFi country in the Raspberry Pi Configuration tool or the Network Settings applet
|
||||||
|
- Setting the WiFi country in raspi-config
|
||||||
|
- Providing a wpa_supplicant.conf file through the boot partition
|
||||||
|
- Running 'rfkill unblock wifi'
|
||||||
|
* Boot partition size set to 256M
|
||||||
|
* Linux kernel 4.19.50
|
||||||
|
* Raspberry Pi firmware 88ca9081f5e51cdedd16d5dbc85ed12a25123201
|
||||||
2019-04-08:
|
2019-04-08:
|
||||||
* Chromium browser updated to version 72
|
* Chromium browser updated to version 72
|
||||||
* VLC media player updated to version 3.0.6
|
* VLC media player updated to version 3.0.6
|
||||||
|
|
|
@ -17,8 +17,9 @@ bootstrap(){
|
||||||
BOOTSTRAP_ARGS+=(--components "main,contrib,non-free")
|
BOOTSTRAP_ARGS+=(--components "main,contrib,non-free")
|
||||||
BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg")
|
BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg")
|
||||||
BOOTSTRAP_ARGS+=("$@")
|
BOOTSTRAP_ARGS+=("$@")
|
||||||
|
printf -v BOOTSTRAP_STR '%q ' "${BOOTSTRAP_ARGS[@]}"
|
||||||
|
|
||||||
setarch linux32 capsh --drop=cap_setfcap -- "${BOOTSTRAP_CMD}" "${BOOTSTRAP_ARGS[@]}" || true
|
setarch linux32 capsh --drop=cap_setfcap -- -c "'${BOOTSTRAP_CMD}' $BOOTSTRAP_STR" || true
|
||||||
|
|
||||||
if [ -d "$2/debootstrap" ]; then
|
if [ -d "$2/debootstrap" ]; then
|
||||||
rmdir "$2/debootstrap"
|
rmdir "$2/debootstrap"
|
||||||
|
@ -94,9 +95,6 @@ on_chroot() {
|
||||||
export -f on_chroot
|
export -f on_chroot
|
||||||
|
|
||||||
update_issue() {
|
update_issue() {
|
||||||
local GIT_HASH
|
|
||||||
GIT_HASH=$(git rev-parse HEAD)
|
|
||||||
echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using ${PI_GEN}, ${PI_GEN_REPO}, ${GIT_HASH}, ${1}" > "${ROOTFS_DIR}/etc/rpi-issue"
|
echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using ${PI_GEN}, ${PI_GEN_REPO}, ${GIT_HASH}, ${1}" > "${ROOTFS_DIR}/etc/rpi-issue"
|
||||||
}
|
}
|
||||||
export -f update_issue
|
export -f update_issue
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
install -m 644 files/sources.list "${ROOTFS_DIR}/etc/apt/"
|
install -m 644 files/sources.list "${ROOTFS_DIR}/etc/apt/"
|
||||||
install -m 644 files/raspi.list "${ROOTFS_DIR}/etc/apt/sources.list.d/"
|
install -m 644 files/raspi.list "${ROOTFS_DIR}/etc/apt/sources.list.d/"
|
||||||
|
sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list"
|
||||||
|
sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list.d/raspi.list"
|
||||||
|
|
||||||
if [ -n "$APT_PROXY" ]; then
|
if [ -n "$APT_PROXY" ]; then
|
||||||
install -m 644 files/51cache "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
|
install -m 644 files/51cache "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
deb http://archive.raspberrypi.org/debian/ buster main
|
deb http://archive.raspberrypi.org/debian/ RELEASE main
|
||||||
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
||||||
#deb-src http://archive.raspberrypi.org/debian/ buster main
|
#deb-src http://archive.raspberrypi.org/debian/ RELEASE main
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
|
deb http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi
|
||||||
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
||||||
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
|
#deb-src http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d "${ROOTFS_DIR}" ]; then
|
if [ ! -d "${ROOTFS_DIR}" ]; then
|
||||||
bootstrap buster "${ROOTFS_DIR}" http://raspbian.raspberrypi.org/raspbian/
|
bootstrap ${RELEASE} "${ROOTFS_DIR}" http://raspbian.raspberrypi.org/raspbian/
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
|
console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
|
||||||
|
|
|
@ -47,8 +47,9 @@
|
||||||
#dtparam=i2s=on
|
#dtparam=i2s=on
|
||||||
#dtparam=spi=on
|
#dtparam=spi=on
|
||||||
|
|
||||||
# Uncomment this to enable the lirc-rpi module
|
# Uncomment this to enable infrared communication.
|
||||||
#dtoverlay=lirc-rpi
|
#dtoverlay=gpio-ir,gpio_pin=17
|
||||||
|
#dtoverlay=gpio-ir-tx,gpio_pin=18
|
||||||
|
|
||||||
# Additional overlays and parameters are documented /boot/overlays/README
|
# Additional overlays and parameters are documented /boot/overlays/README
|
||||||
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
Index: jessie-stage1/rootfs/etc/hosts
|
|
||||||
===================================================================
|
|
||||||
--- jessie-stage1.orig/rootfs/etc/hosts
|
|
||||||
+++ jessie-stage1/rootfs/etc/hosts
|
|
||||||
@@ -3,3 +3,4 @@
|
|
||||||
ff02::1 ip6-allnodes
|
|
||||||
ff02::2 ip6-allrouters
|
|
||||||
|
|
||||||
+127.0.1.1 raspberrypi
|
|
|
@ -1 +0,0 @@
|
||||||
01-hosts.diff
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
install -m 644 files/ipv6.conf "${ROOTFS_DIR}/etc/modprobe.d/ipv6.conf"
|
echo "${TARGET_HOSTNAME}" > "${ROOTFS_DIR}/etc/hostname"
|
||||||
install -m 644 files/hostname "${ROOTFS_DIR}/etc/hostname"
|
echo "127.0.1.1 ${TARGET_HOSTNAME}" >> "${ROOTFS_DIR}/etc/hosts"
|
||||||
|
|
||||||
ln -sf /dev/null "${ROOTFS_DIR}/etc/systemd/network/99-default.link"
|
ln -sf /dev/null "${ROOTFS_DIR}/etc/systemd/network/99-default.link"
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
raspberrypi
|
|
|
@ -1,4 +0,0 @@
|
||||||
auto lo
|
|
||||||
|
|
||||||
iface lo inet loopback
|
|
||||||
iface eth0 inet dhcp
|
|
|
@ -1,3 +0,0 @@
|
||||||
# Don't load ipv6 by default
|
|
||||||
alias net-pf-10 off
|
|
||||||
#alias ipv6 off
|
|
|
@ -1,3 +1,6 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
mv "${ROOTFS_DIR}/etc/ld.so.preload" "${ROOTFS_DIR}/etc/ld.so.preload.disabled"
|
if [ -f "${ROOTFS_DIR}/etc/ld.so.preload" ]; then
|
||||||
|
mv "${ROOTFS_DIR}/etc/ld.so.preload" "${ROOTFS_DIR}/etc/ld.so.preload.disabled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
ssh less fbset sudo psmisc strace ed ncdu crda
|
less fbset sudo psmisc strace ed ncdu crda vim
|
||||||
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
|
||||||
|
@ -6,22 +6,20 @@ avahi-daemon
|
||||||
lua5.1
|
lua5.1
|
||||||
luajit
|
luajit
|
||||||
hardlink ca-certificates curl
|
hardlink ca-certificates curl
|
||||||
fake-hwclock nfs-common usbutils
|
fake-hwclock usbutils
|
||||||
libraspberrypi-dev libraspberrypi-doc libfreetype6-dev
|
libraspberrypi-dev libraspberrypi-doc libfreetype6-dev
|
||||||
dosfstools
|
dosfstools
|
||||||
dphys-swapfile
|
dphys-swapfile
|
||||||
raspberrypi-sys-mods
|
raspberrypi-sys-mods
|
||||||
pi-bluetooth
|
|
||||||
apt-listchanges
|
apt-listchanges
|
||||||
usb-modeswitch
|
usb-modeswitch
|
||||||
apt-transport-https
|
|
||||||
libpam-chksshpwd
|
libpam-chksshpwd
|
||||||
rpi-update
|
rpi-update
|
||||||
libmtp-runtime
|
libmtp-runtime
|
||||||
rsync
|
|
||||||
htop
|
|
||||||
man-db
|
man-db
|
||||||
policykit-1
|
policykit-1
|
||||||
ssh-import-id
|
|
||||||
rng-tools
|
rng-tools
|
||||||
ethtool
|
vl805fw
|
||||||
|
pciutils
|
||||||
|
rpi-eeprom
|
||||||
|
raspinfo
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
cifs-utils
|
|
|
@ -1,5 +1,5 @@
|
||||||
--- a/rootfs/boot/cmdline.txt
|
--- stage2.orig/rootfs/boot/cmdline.txt
|
||||||
+++ b/rootfs/boot/cmdline.txt
|
+++ stage2/rootfs/boot/cmdline.txt
|
||||||
@@ -1 +1 @@
|
@@ -1 +1 @@
|
||||||
-dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
|
-console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
|
||||||
+dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
|
+console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
|
||||||
|
|
|
@ -13,14 +13,7 @@ install -m 755 files/rc.local "${ROOTFS_DIR}/etc/"
|
||||||
|
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
systemctl disable hwclock.sh
|
systemctl disable hwclock.sh
|
||||||
systemctl disable nfs-common
|
|
||||||
systemctl disable rpcbind
|
systemctl disable rpcbind
|
||||||
if [ "${ENABLE_SSH}" == "1" ]; then
|
|
||||||
systemctl enable ssh
|
|
||||||
else
|
|
||||||
systemctl disable ssh
|
|
||||||
fi
|
|
||||||
systemctl enable regenerate_ssh_host_keys
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if [ "${USE_QEMU}" = "1" ]; then
|
if [ "${USE_QEMU}" = "1" ]; then
|
||||||
|
@ -53,4 +46,3 @@ on_chroot << EOF
|
||||||
usermod --pass='*' root
|
usermod --pass='*' root
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
rm -f "${ROOTFS_DIR}/etc/ssh/"ssh_host_*_key*
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek
|
|
||||||
raspberrypi-net-mods
|
|
||||||
dhcpcd5
|
|
||||||
net-tools
|
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
install -v -d "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d"
|
|
||||||
install -v -m 644 files/wait.conf "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/"
|
|
||||||
|
|
||||||
install -v -d "${ROOTFS_DIR}/etc/wpa_supplicant"
|
|
||||||
install -v -m 600 files/wpa_supplicant.conf "${ROOTFS_DIR}/etc/wpa_supplicant/"
|
|
||||||
|
|
||||||
if [ -v WPA_COUNTRY ]; then
|
|
||||||
echo "country=${WPA_COUNTRY}" >> "${ROOTFS_DIR}/etc/wpa_supplicant/wpa_supplicant.conf"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -v WPA_ESSID ] && [ -v WPA_PASSWORD ]; then
|
|
||||||
on_chroot <<EOF
|
|
||||||
wpa_passphrase "${WPA_ESSID}" "${WPA_PASSWORD}" >> "/etc/wpa_supplicant/wpa_supplicant.conf"
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Disable wifi on 5GHz models
|
|
||||||
mkdir -p "${ROOTFS_DIR}/var/lib/systemd/rfkill/"
|
|
||||||
echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmc:wlan"
|
|
||||||
echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmc:wlan"
|
|
|
@ -1,3 +0,0 @@
|
||||||
[Service]
|
|
||||||
ExecStart=
|
|
||||||
ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w
|
|
|
@ -1,2 +0,0 @@
|
||||||
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
|
|
||||||
update_config=1
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
echo "Europe/London" > "${ROOTFS_DIR}/etc/timezone"
|
echo "${TIMEZONE_DEFAULT}" > "${ROOTFS_DIR}/etc/timezone"
|
||||||
rm "${ROOTFS_DIR}/etc/localtime"
|
rm "${ROOTFS_DIR}/etc/localtime"
|
||||||
|
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
openjdk-8-jre-headless
|
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export RUDEFOX_REPO_BASE_URL="https://repo.rudefox.io"
|
||||||
|
export RUDEFOX_REPO_RELEASES="maven-releases"
|
||||||
|
export RUDEFOX_GROUP="io.rudefox"
|
||||||
|
export RUDEFOX_BURROW_ID="burrow"
|
||||||
|
export OUTFILE="burrow.tar"
|
||||||
|
|
||||||
|
|
||||||
|
export WGET_OPTS="--https-only -O ${OUTFILE} -v"
|
||||||
|
export WGET_URL="${RUDEFOX_REPO_BASE_URL}/service/rest/v1/search/assets/download?group=${RUDEFOX_GROUP}&name=${RUDEFOX_BURROW_ID}&maven.extension=tar"
|
||||||
|
|
||||||
|
|
||||||
|
if [ $RUDEFOX_BURROW_VERSION != "latest" ]
|
||||||
|
then
|
||||||
|
export WGET_URL="${WGET_URL}&maven.baseVersion=${RUDEFOX_BURROW_VERSION}"
|
||||||
|
else
|
||||||
|
export WGET_URL="${WGET_URL}&sort=version"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ $RUDEFOX_REPO_USERNAME != "anonymous" ]
|
||||||
|
then
|
||||||
|
export ENCODED_USERNAME=$(echo -n $RUDEFOX_REPO_USERNAME | base64 | sed 's/+/-/g; s/\//_/g; s/=/%3D/g';)
|
||||||
|
export ENCODED_PASSWORD=$(echo -n $RUDEFOX_REPO_PASSWORD | base64 | sed 's/+/-/g; s/\//_/g; s/=/%3D/g';)
|
||||||
|
export POST_DATA="username=${ENCODED_USERNAME}&password=${ENCODED_PASSWORD}"
|
||||||
|
|
||||||
|
wget --save-cookies cookies.txt --keep-session-cookies --post-data $POST_DATA "${RUDEFOX_REPO_BASE_URL}/service/rapture/session"
|
||||||
|
|
||||||
|
wget --load-cookies cookies.txt $WGET_OPTS $WGET_URL
|
||||||
|
|
||||||
|
rm cookies.txt
|
||||||
|
else
|
||||||
|
wget $WGET_OPTS "${WGET_URL}&repository=${RUDEFOX_REPO_RELEASES}"
|
||||||
|
fi
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
mkdir -p "${ROOTFS_DIR}/opt/"
|
||||||
|
rm -rf "${ROOTFS_DIR}/opt/rudefox-burrow"
|
||||||
|
tar -C "${ROOTFS_DIR}/opt/" -xvf burrow.tar
|
||||||
|
mv "${ROOTFS_DIR}/opt/burrow-"* "${ROOTFS_DIR}/opt/rudefox-burrow"
|
||||||
|
|
||||||
|
on_chroot <<EOF
|
||||||
|
ln -fs /opt/rudefox-burrow/bin/burrow /usr/bin/burrow
|
||||||
|
EOF
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
echo "" >> "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.bashrc"
|
||||||
|
echo ". <(burrow generate-completion)" >> "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.bashrc"
|
||||||
|
echo "alias seedgen='burrow mnemonic -i8b 256'" >> "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.bashrc"
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
echo "" >> "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.bashrc"
|
||||||
|
echo "unset HISTFILE" >> "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.bashrc"
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
on_chroot << ENDCHROOT
|
||||||
|
|
||||||
|
systemctl set-default multi-user.target
|
||||||
|
|
||||||
|
ln -fs /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
|
||||||
|
|
||||||
|
cat > /etc/systemd/system/getty@tty1.service.d/autologin.conf << EOF
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=-/sbin/agetty --autologin ${FIRST_USER_NAME} --noclear %I \\\$TERM
|
||||||
|
EOF
|
||||||
|
|
||||||
|
ENDCHROOT
|
|
@ -0,0 +1 @@
|
||||||
|
toilet figlet
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
rm -rf "${ROOTFS_DIR}/etc/motd"
|
||||||
|
rm -rf "${ROOTFS_DIR}/etc/update-motd.d/"*
|
||||||
|
install -m 755 files/* "${ROOTFS_DIR}/etc/update-motd.d/"
|
||||||
|
|
||||||
|
echo "" >> "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.bashrc"
|
||||||
|
echo "PS1=\"\\\\[\e[31m\\\\]Burrow>\\\\[\e[m\\\\] \"" >> "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.bashrc"
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
THIS_SCRIPT="header"
|
||||||
|
MOTD_DISABLE=""
|
||||||
|
|
||||||
|
toilet -f standard -F metal Burrow
|
||||||
|
|
||||||
|
printf '\nWelcome to RudeFox Burrow!\n'
|
||||||
|
printf '\n'
|
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "======================================================="
|
||||||
|
echo "=== TYPE: "
|
||||||
|
echo "=== seedgen "
|
||||||
|
echo "=== "
|
||||||
|
echo "=== to generate a new 24-word seed "
|
||||||
|
echo "======================================================="
|
||||||
|
echo ""
|
||||||
|
echo ""
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
install -d "${ROOTFS_DIR}/etc/systemd/system/enable-overlayfs.target.wants"
|
||||||
|
install -m 644 files/enable-overlayfs.service "${ROOTFS_DIR}/etc/systemd/system/"
|
||||||
|
install -m 644 files/enable-overlayfs.target "${ROOTFS_DIR}/etc/systemd/system/"
|
||||||
|
install -m 755 files/enable_overlayfs.sh "${ROOTFS_DIR}/usr/bin/"
|
||||||
|
|
||||||
|
on_chroot << EOF
|
||||||
|
ln -sf /etc/systemd/system/enable-overlayfs.service /etc/systemd/system/enable-overlayfs.target.wants/enable-overlayfs.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl set-default enable-overlayfs.target
|
||||||
|
EOF
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Enable Overlay Filesystem
|
||||||
|
After=multi-user.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/enable_overlayfs.sh
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=enable-overlayfs.target
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Enable Overlay Filesystem Target
|
||||||
|
Requires=multi-user.target
|
||||||
|
After=multi-user.target
|
||||||
|
AllowIsolate=yes
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
/usr/bin/raspi-config nonint do_overlayfs 0
|
||||||
|
systemctl set-default multi-user.target
|
||||||
|
reboot
|
|
@ -1,2 +1,2 @@
|
||||||
NOOBS_NAME="Raspbian Lite"
|
NOOBS_NAME="Raspberry Pi OS Lite (32-bit)"
|
||||||
NOOBS_DESCRIPTION="A port of Debian with no desktop environment"
|
NOOBS_DESCRIPTION="A port of Debian with no desktop environment"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
xserver-xorg-video-fbdev xserver-xorg xinit xserver-xorg-video-fbturbo
|
xserver-xorg-video-fbdev xserver-xorg xinit xserver-xorg-video-fbturbo
|
||||||
epiphany-browser
|
mousepad
|
||||||
lxde lxtask menu-xdg
|
lxde lxtask menu-xdg
|
||||||
zenity xdg-utils
|
zenity xdg-utils
|
||||||
gvfs-backends gvfs-fuse
|
gvfs-backends gvfs-fuse
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
python python3-pygame python-pygame python-tk
|
python python3-pygame python-pygame python-tk
|
||||||
python3 python3-tk python3-thonny
|
python3 python3-tk thonny
|
||||||
python3-pgzero
|
python3-pgzero
|
||||||
python-serial python3-serial
|
python-serial python3-serial
|
||||||
python-picamera python3-picamera
|
python-picamera python3-picamera
|
||||||
|
@ -18,7 +18,6 @@ python-spidev python3-spidev
|
||||||
python-twython python3-twython
|
python-twython python3-twython
|
||||||
python-smbus python3-smbus
|
python-smbus python3-smbus
|
||||||
python-flask python3-flask
|
python-flask python3-flask
|
||||||
python-picraft python3-picraft
|
|
||||||
pprompt
|
pprompt
|
||||||
piwiz
|
piwiz
|
||||||
rp-prefapps
|
rp-prefapps
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
BOOKSHELF_URL="https://magpi.raspberrypi.org/bookshelf.xml"
|
||||||
|
GUIDE_URL="$(curl -s "$BOOKSHELF_URL" | awk -F '[<>]' "/<TITLE>Raspberry Pi Beginner's Guide v3<\/TITLE>/ {f=1; next} f==1 && /PDF/ {print \$3; exit}")"
|
||||||
|
OUTPUT="$(basename "$GUIDE_URL" | cut -f1 -d'?')"
|
||||||
|
|
||||||
|
if [ ! -f "files/$OUTPUT" ]; then
|
||||||
|
rm files/*.pdf -f
|
||||||
|
curl -s "$GUIDE_URL" -o "files/$OUTPUT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
file "files/$OUTPUT" | grep -q "PDF document"
|
||||||
|
|
||||||
|
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/Bookshelf"
|
||||||
|
install -v -o 1000 -g 1000 -m 644 "files/$OUTPUT" "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/Bookshelf/"
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/sh -e
|
|
||||||
|
|
||||||
magpi_regex="MagPi[[:digit:]]*.pdf"
|
|
||||||
magpi_loc="https://www.raspberrypi.org/magpi-issues"
|
|
||||||
magpi_latest="$(curl "$magpi_loc/?C=M;O=D" -s | grep "$magpi_regex" -m 1 -o | head -n 1)"
|
|
||||||
|
|
||||||
if [ ! -f "files/$magpi_latest" ]; then
|
|
||||||
find files/ -regextype grep -regex "files/$magpi_regex" -delete
|
|
||||||
wget "$magpi_loc/$magpi_latest" -O "files/$magpi_latest"
|
|
||||||
fi
|
|
||||||
|
|
||||||
file "files/$magpi_latest" | grep -q "PDF document"
|
|
||||||
|
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/MagPi"
|
|
||||||
install -v -o 1000 -g 1000 -m 644 "files/$magpi_latest" "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/MagPi/"
|
|
|
@ -1,2 +1,2 @@
|
||||||
NOOBS_NAME="Raspbian"
|
NOOBS_NAME="Raspberry Pi OS (32-bit)"
|
||||||
NOOBS_DESCRIPTION="A port of Debian with the Raspberry Pi Desktop"
|
NOOBS_DESCRIPTION="A port of Debian with the Raspberry Pi Desktop"
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
mu-editor
|
mu-editor
|
||||||
sonic-pi
|
sonic-pi
|
||||||
scratch nuscratch scratch2
|
scratch nuscratch scratch2 scratch3
|
||||||
smartsim
|
smartsim
|
||||||
|
|
||||||
minecraft-pi python-minecraftpi
|
minecraft-pi python-minecraftpi python-picraft python3-picraft
|
||||||
python-sense-emu sense-emu-tools python-sense-emu-doc
|
python-sense-emu sense-emu-tools python-sense-emu-doc
|
||||||
|
|
||||||
|
wolfram-engine
|
||||||
claws-mail
|
claws-mail
|
||||||
greenfoot-unbundled bluej
|
greenfoot-unbundled bluej
|
||||||
nodered
|
nodered
|
||||||
realvnc-vnc-viewer
|
realvnc-vnc-viewer
|
||||||
|
|
||||||
python-games
|
python-games
|
||||||
|
code-the-classics
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
NOOBS_NAME="Raspbian Full"
|
NOOBS_NAME="Raspberry Pi OS Full (32-bit)"
|
||||||
NOOBS_DESCRIPTION="A port of Debian with desktop and recommended applications"
|
NOOBS_DESCRIPTION="A port of Debian with desktop and recommended applications"
|
||||||
|
|
Loading…
Reference in New Issue