Compare commits
112
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aaaf0aea13 | ||
|
|
c2db8285a1 | ||
|
|
3fe8d79947 | ||
|
|
8d40bc1bb4 | ||
|
|
178b1e404b | ||
|
|
f2060a8ee2 | ||
|
|
7149e20f2d | ||
|
|
207003b5ed | ||
|
|
c77669ad9f | ||
|
|
6618df4b08 | ||
|
|
0f5f10d925 | ||
|
|
19fc4a367e | ||
|
|
036e5242b3 | ||
|
|
8f361a1c38 | ||
|
|
68cdf34cb4 | ||
|
|
3441133d1c | ||
|
|
fe45b73987 | ||
|
|
bab0fe3b0d | ||
|
|
4d65b2b357 | ||
|
|
137efd2379 | ||
|
|
dd7de2554c | ||
|
|
234c4b7937 | ||
|
|
be2018ee5f | ||
|
|
cdf1cf2aba | ||
|
|
22c4105b57 | ||
|
|
d2f88a6e4f | ||
|
|
c92638438a | ||
|
|
50e5c01f57 | ||
|
|
a0060bd475 | ||
|
|
d2b8d634b9 | ||
|
|
d347d8d5f7 | ||
|
|
530b66fd3f | ||
|
|
02728fe65e | ||
|
|
e583c18eba | ||
|
|
046db2d3d3 | ||
|
|
f9637fb24e | ||
|
|
921202e371 | ||
|
|
dc7b589e7a | ||
|
|
3c0b364028 | ||
|
|
51f27e752c | ||
|
|
f89ebe2382 | ||
|
|
d64c21bfc9 | ||
|
|
7bbaac3344 | ||
|
|
8e377c407f | ||
|
|
4e5dc43a36 | ||
|
|
d729fc2dbb | ||
|
|
0ee2578bc6 | ||
|
|
fa1e67f92e | ||
|
|
7360f24430 | ||
|
|
6c146a7bb7 | ||
|
|
c0a5b85f8f | ||
|
|
762e20cc0a | ||
|
|
000e61f84d | ||
|
|
16b3133f46 | ||
|
|
9cffa42a35 | ||
|
|
8373e58195 | ||
|
|
1f1ddb5f13 | ||
|
|
8f22f2f27e | ||
|
|
718a4e8c21 | ||
|
|
8e74b4f15c | ||
|
|
8f7c537d71 | ||
|
|
40b5af925b | ||
|
|
7748ed0df1 | ||
|
|
b0be14afdf | ||
|
|
daa9e35ada | ||
|
|
a68a0713e6 | ||
|
|
d664bfed4b | ||
|
|
5cccd741fe | ||
|
|
3fa66a0699 | ||
|
|
37902fb114 | ||
|
|
51fbf45dd7 | ||
|
|
8f017cb69a | ||
|
|
a45a061ec4 | ||
|
|
667318116a | ||
|
|
bc8a74858e | ||
|
|
a1c26242f6 | ||
|
|
c5e36bc86a | ||
|
|
9f5cfdea6b | ||
|
|
1806504983 | ||
|
|
a9c27d27bd | ||
|
|
d0020af839 | ||
|
|
09a29f745c | ||
|
|
2b3cb8ff72 | ||
|
|
06ba664bfc | ||
|
|
848cbf48a0 | ||
|
|
21a681692a | ||
|
|
c5e4f61df2 | ||
|
|
58e7e4023e | ||
|
|
845496123b | ||
|
|
b84399f9aa | ||
|
|
09590eba4a | ||
|
|
c4fb032d3b | ||
|
|
db10424a9b | ||
|
|
354be6e00b | ||
|
|
88622b63d3 | ||
|
|
dd72c202ce | ||
|
|
a6c7ad7736 | ||
|
|
efb26e03d8 | ||
|
|
ed1643bcda | ||
|
|
0908332966 | ||
|
|
5854406f80 | ||
|
|
c017c51d46 | ||
|
|
e06f61b573 | ||
|
|
801c8cac74 | ||
|
|
71793ce183 | ||
|
|
232d0a48a0 | ||
|
|
e800956bd8 | ||
|
|
24ad8c2adb | ||
|
|
017d3a4341 | ||
|
|
d1f766d2b8 | ||
|
|
1d18e27f9c | ||
|
|
7f0c59d5c1 |
@@ -0,0 +1,3 @@
|
|||||||
|
output/
|
||||||
|
work/
|
||||||
|
deploy/
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
deploy/*
|
deploy/*
|
||||||
work/*
|
work/*
|
||||||
config
|
config
|
||||||
|
postrun.sh
|
||||||
SKIP
|
SKIP
|
||||||
.pc
|
.pc
|
||||||
*-pc
|
*-pc
|
||||||
|
apt-cacher-ng/
|
||||||
|
|||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
FROM debian:stretch
|
||||||
|
|
||||||
|
RUN apt-get -y update && \
|
||||||
|
apt-get -y install \
|
||||||
|
git vim parted \
|
||||||
|
quilt realpath qemu-user-static debootstrap zerofree pxz zip dosfstools \
|
||||||
|
bsdtar libcap2-bin rsync grep udev xz-utils \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
COPY . /pi-gen/
|
||||||
|
|
||||||
|
VOLUME [ "/pi-gen/work", "/pi-gen/deploy"]
|
||||||
@@ -1,13 +1,26 @@
|
|||||||
#TODO
|
# pi-gen
|
||||||
|
|
||||||
1. Simplify running a single stage
|
_Tool used to create the raspberrypi.org Raspbian images_
|
||||||
|
|
||||||
|
|
||||||
|
### TODO
|
||||||
1. Documentation
|
1. Documentation
|
||||||
|
|
||||||
#Dependencies
|
|
||||||
|
|
||||||
`quilt kpartx realpath qemu-user-static debootstrap zerofree pxz zip`
|
## Dependencies
|
||||||
|
|
||||||
#Config
|
On Debian-based systems:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt-get install quilt parted realpath qemu-user-static debootstrap zerofree pxz zip \
|
||||||
|
dosfstools bsdtar libcap2-bin grep rsync xz-utils
|
||||||
|
```
|
||||||
|
|
||||||
|
The file `depends` contains a list of tools needed. The format of this
|
||||||
|
package is `<tool>[:<debian-package>]`.
|
||||||
|
|
||||||
|
|
||||||
|
## Config
|
||||||
|
|
||||||
Upon execution, `build.sh` will source the file `config` in the current
|
Upon execution, `build.sh` will source the file `config` in the current
|
||||||
working directory. This bash shell fragment is intended to set needed
|
working directory. This bash shell fragment is intended to set needed
|
||||||
@@ -15,8 +28,44 @@ environment variables.
|
|||||||
|
|
||||||
The following environment variables are supported:
|
The following environment variables are supported:
|
||||||
|
|
||||||
* `IMG_NAME`, the name of the distribution to build (required)
|
* `IMG_NAME` **required** (Default: unset)
|
||||||
* `APT_PROXY`, proxy/cache URL to be included in the build
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
If you have Docker installed, you can set up a local apt caching proxy to
|
||||||
|
like speed up subsequent builds like this:
|
||||||
|
|
||||||
|
docker-compose up -d
|
||||||
|
echo 'APT_PROXY=http://172.17.0.1:3142' >> config
|
||||||
|
|
||||||
|
* `BASE_DIR` (Default: location of `build.sh`)
|
||||||
|
|
||||||
|
**CAUTION**: Currently, changing this value will probably break build.sh
|
||||||
|
|
||||||
|
Top-level directory for `pi-gen`. Contains stage directories, build
|
||||||
|
scripts, and by default both work and deployment directories.
|
||||||
|
|
||||||
|
* `WORK_DIR` (Default: `"$BASE_DIR/work"`)
|
||||||
|
|
||||||
|
Directory in which `pi-gen` builds the target system. This value can be
|
||||||
|
changed if you have a suitably large, fast storage location for stages to
|
||||||
|
be built and cached. Note, `WORK_DIR` stores a complete copy of the target
|
||||||
|
system for each build stage, amounting to tens of gigabytes in the case of
|
||||||
|
Raspbian.
|
||||||
|
|
||||||
|
* `DEPLOY_DIR` (Default: `"$BASE_DIR/deploy"`)
|
||||||
|
|
||||||
|
Output directory for target system images and NOOBS bundles.
|
||||||
|
|
||||||
|
|
||||||
A simple example for building Raspbian:
|
A simple example for building Raspbian:
|
||||||
|
|
||||||
@@ -24,17 +73,41 @@ A simple example for building Raspbian:
|
|||||||
IMG_NAME='Raspbian'
|
IMG_NAME='Raspbian'
|
||||||
```
|
```
|
||||||
|
|
||||||
#Stage Anatomy
|
|
||||||
|
## Docker Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
vi config # Edit your config file. See above.
|
||||||
|
./build-docker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
If everything goes well, your finished image will be in the `deploy/` folder.
|
||||||
|
You can then remove the build container with `docker rm -v pigen_work`
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
#Raspbian Stage Overview
|
### 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
|
||||||
and modularity. This causes some initial complexity, but it simplifies
|
and modularity. This causes some initial complexity, but it simplifies
|
||||||
maintenance and allows for more easy customization.
|
maintenance and allows for more easy customization.
|
||||||
|
|
||||||
- Stage 0, bootstrap. The primary purpose of this stage is to create a
|
- **Stage 0** - bootstrap. The primary purpose of this stage is to create a
|
||||||
usable filesystem. This is accomplished largely through the use of
|
usable filesystem. This is accomplished largely through the use of
|
||||||
`debootstrap`, which creates a minimal filesystem suitable for use as a
|
`debootstrap`, which creates a minimal filesystem suitable for use as a
|
||||||
base.tgz on Debian systems. This stage also configures apt settings and
|
base.tgz on Debian systems. This stage also configures apt settings and
|
||||||
@@ -42,7 +115,7 @@ maintenance and allows for more easy customization.
|
|||||||
minimal core is installed but not configured, and the system will not quite
|
minimal core is installed but not configured, and the system will not quite
|
||||||
boot yet.
|
boot yet.
|
||||||
|
|
||||||
- Stage 1, truly minimal system. This stage makes the system bootable by
|
- **Stage 1** - truly minimal system. This stage makes the system bootable by
|
||||||
installing system files like `/etc/fstab`, configures the bootloader, makes
|
installing system files like `/etc/fstab`, configures the bootloader, makes
|
||||||
the network operable, and installs packages like raspi-config. At this
|
the network operable, and installs packages like raspi-config. At this
|
||||||
stage the system should boot to a local console from which you have the
|
stage the system should boot to a local console from which you have the
|
||||||
@@ -51,7 +124,7 @@ maintenance and allows for more easy customization.
|
|||||||
really usable yet in a traditional sense yet. Still, if you want minimal,
|
really usable yet in a traditional sense yet. Still, if you want minimal,
|
||||||
this is minimal and the rest you could reasonably do yourself as sysadmin.
|
this is minimal and the rest you could reasonably do yourself as sysadmin.
|
||||||
|
|
||||||
- State 2, lite system. This stage produces the Raspbian-Lite image. It
|
- **Stage 2** - lite system. This stage produces the Raspbian-Lite image. It
|
||||||
installs some optimized memory functions, sets timezone and charmap
|
installs some optimized memory functions, sets timezone and charmap
|
||||||
defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
|
defaults, installs fake-hwclock and ntp, wifi and bluetooth support,
|
||||||
dphys-swapfile, and other basics for managing the hardware. It also
|
dphys-swapfile, and other basics for managing the hardware. It also
|
||||||
@@ -59,20 +132,44 @@ maintenance and allows for more easy customization.
|
|||||||
standard console hardware permission groups.
|
standard console hardware permission groups.
|
||||||
|
|
||||||
There are a few tools that may not make a whole lot of sense here for
|
There are a few tools that may not make a whole lot of sense here for
|
||||||
development purposes on a minimal system such as basic python and lua
|
development purposes on a minimal system such as basic Python and Lua
|
||||||
packages as well as the `build-essential` package. They are lumped right
|
packages as well as the `build-essential` package. They are lumped right
|
||||||
in with more essential packages presently, though they need not be with
|
in with more essential packages presently, though they need not be with
|
||||||
pi-gen. These are understandable for Raspbian's target audience, but if
|
pi-gen. These are understandable for Raspbian's target audience, but if
|
||||||
you were looking for something between truly minimal and Raspbian-lite,
|
you were looking for something between truly minimal and Raspbian-Lite,
|
||||||
here's where you start trimming.
|
here's where you start trimming.
|
||||||
|
|
||||||
- Stage 3, desktop system. Here's where you get the full desktop system
|
- **Stage 3** - desktop system. Here's where you get the full desktop system
|
||||||
with X11 and LXDE, web browsers, git for development, Raspbian custom UI
|
with X11 and LXDE, web browsers, git for development, Raspbian custom UI
|
||||||
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, complete Raspbian system. More development tools, an email
|
- **Stage 4** - Raspbian system meant to fit on a 4GB card. More development
|
||||||
client, learning tools like Scratch, specialized packages like sonic-pi and
|
tools, an email client, learning tools like Scratch, specialized packages
|
||||||
wolfram-engine, system documentation, office productivity, etc. This is
|
like sonic-pi, system documentation, office productivity, etc. This is the
|
||||||
the stage that installs all of the things that make Raspbian friendly to
|
stage that installs all of the things that make Raspbian friendly to new
|
||||||
new users.
|
users.
|
||||||
|
|
||||||
|
- **Stage 5** - The official Raspbian Desktop image. Right now only adds
|
||||||
|
Mathematica.
|
||||||
|
|
||||||
|
### Stage specification
|
||||||
|
|
||||||
|
If you wish to build up to a specified stage (such as building up to stage 2
|
||||||
|
for a lite system), place an empty file named `SKIP` in each of the `./stage`
|
||||||
|
directories you wish not to include.
|
||||||
|
|
||||||
|
Then remove the `EXPORT*` files from `./stage4` (if building up to stage 2) or
|
||||||
|
from `./stage2` (if building a minimal system).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Example for building a lite system
|
||||||
|
echo "IMG_NAME='Raspbian'" > config
|
||||||
|
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
|
||||||
|
rm stage4/EXPORT*
|
||||||
|
sudo ./build.sh # or ./build-docker.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
If you wish to build further configurations upon (for example) the lite
|
||||||
|
system, you can also delete the contents of `./stage3` and `./stage4` and
|
||||||
|
replace with your own contents in the same format.
|
||||||
|
|||||||
Executable
+77
@@ -0,0 +1,77 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
DOCKER="docker"
|
||||||
|
set +e
|
||||||
|
$DOCKER ps >/dev/null 2>&1
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
DOCKER="sudo docker"
|
||||||
|
fi
|
||||||
|
if ! $DOCKER ps >/dev/null; then
|
||||||
|
echo "error connecting to docker:"
|
||||||
|
$DOCKER ps
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
set -e
|
||||||
|
|
||||||
|
|
||||||
|
config_mount=()
|
||||||
|
if [ -f config ]; then
|
||||||
|
config_mount=("-v" "$(pwd)/config:/pi-gen/config:ro")
|
||||||
|
source config
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONTAINER_NAME=${CONTAINER_NAME:-pigen_work}
|
||||||
|
CONTINUE=${CONTINUE:-0}
|
||||||
|
|
||||||
|
if [ "$*" != "" ] || [ -z "${IMG_NAME}" ]; then
|
||||||
|
if [ -z "${IMG_NAME}" ]; then
|
||||||
|
echo "IMG_NAME not set in 'build'" 1>&2
|
||||||
|
echo 1>&2
|
||||||
|
fi
|
||||||
|
cat >&2 <<EOF
|
||||||
|
Usage:
|
||||||
|
build-docker.sh [options]
|
||||||
|
Optional environment arguments: ( =<default> )
|
||||||
|
CONTAINER_NAME=pigen_work set a name for the build container
|
||||||
|
CONTINUE=0 continue from a previously started container
|
||||||
|
EOF
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CONTAINER_EXISTS=$($DOCKER ps -a --filter name="$CONTAINER_NAME" -q)
|
||||||
|
CONTAINER_RUNNING=$($DOCKER ps --filter name="$CONTAINER_NAME" -q)
|
||||||
|
if [ "$CONTAINER_RUNNING" != "" ]; then
|
||||||
|
echo "The build is already running in container $CONTAINER_NAME. Aborting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$CONTAINER_EXISTS" != "" ] && [ "$CONTINUE" != "1" ]; then
|
||||||
|
echo "Container $CONTAINER_NAME already exists and you did not specify CONTINUE=1. Aborting."
|
||||||
|
echo "You can delete the existing container like this:"
|
||||||
|
echo " docker rm -v $CONTAINER_NAME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
$DOCKER build -t pi-gen .
|
||||||
|
if [ "$CONTAINER_EXISTS" != "" ]; then
|
||||||
|
trap "echo 'got CTRL+C... please wait 5s';docker stop -t 5 ${CONTAINER_NAME}_cont" SIGINT SIGTERM
|
||||||
|
time $DOCKER run --rm --privileged \
|
||||||
|
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
|
||||||
|
-e IMG_NAME=${IMG_NAME}\
|
||||||
|
pi-gen \
|
||||||
|
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
||||||
|
cd /pi-gen; ./build.sh;
|
||||||
|
rsync -av work/*/build.log deploy/" &
|
||||||
|
wait
|
||||||
|
else
|
||||||
|
trap "echo 'got CTRL+C... please wait 5s'; docker stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM
|
||||||
|
$DOCKER run --name "${CONTAINER_NAME}" --privileged \
|
||||||
|
-e IMG_NAME=${IMG_NAME}\
|
||||||
|
-v "$(pwd)/deploy:/pi-gen/deploy" \
|
||||||
|
"${config_mount[@]}" \
|
||||||
|
pi-gen \
|
||||||
|
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
||||||
|
cd /pi-gen; ./build.sh &&
|
||||||
|
rsync -av work/*/build.log deploy/" &
|
||||||
|
wait
|
||||||
|
fi
|
||||||
|
echo "Done! Your image(s) should be in deploy/"
|
||||||
@@ -7,7 +7,7 @@ run_sub_stage()
|
|||||||
for i in {00..99}; do
|
for i in {00..99}; do
|
||||||
if [ -f ${i}-debconf ]; then
|
if [ -f ${i}-debconf ]; then
|
||||||
log "Begin ${SUB_STAGE_DIR}/${i}-debconf"
|
log "Begin ${SUB_STAGE_DIR}/${i}-debconf"
|
||||||
on_chroot sh -e - << EOF
|
on_chroot << EOF
|
||||||
debconf-set-selections <<SELEOF
|
debconf-set-selections <<SELEOF
|
||||||
`cat ${i}-debconf`
|
`cat ${i}-debconf`
|
||||||
SELEOF
|
SELEOF
|
||||||
@@ -18,7 +18,7 @@ EOF
|
|||||||
log "Begin ${SUB_STAGE_DIR}/${i}-packages-nr"
|
log "Begin ${SUB_STAGE_DIR}/${i}-packages-nr"
|
||||||
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 sh -e - << EOF
|
on_chroot << EOF
|
||||||
apt-get install --no-install-recommends -y $PACKAGES
|
apt-get install --no-install-recommends -y $PACKAGES
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
@@ -28,7 +28,7 @@ EOF
|
|||||||
log "Begin ${SUB_STAGE_DIR}/${i}-packages"
|
log "Begin ${SUB_STAGE_DIR}/${i}-packages"
|
||||||
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 sh -e - << EOF
|
on_chroot << EOF
|
||||||
apt-get install -y $PACKAGES
|
apt-get install -y $PACKAGES
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
@@ -67,10 +67,10 @@ EOF
|
|||||||
./${i}-run.sh
|
./${i}-run.sh
|
||||||
log "End ${SUB_STAGE_DIR}/${i}-run.sh"
|
log "End ${SUB_STAGE_DIR}/${i}-run.sh"
|
||||||
fi
|
fi
|
||||||
if [ -f ${i}-run-chroot ]; then
|
if [ -f ${i}-run-chroot.sh ]; then
|
||||||
log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot"
|
log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot.sh"
|
||||||
on_chroot sh -e - < ${i}-run-chroot
|
on_chroot < ${i}-run-chroot.sh
|
||||||
log "End ${SUB_STAGE_DIR}/${i}-run-chroot"
|
log "End ${SUB_STAGE_DIR}/${i}-run-chroot.sh"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
@@ -128,12 +128,12 @@ 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 BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
export BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
||||||
export WORK_DIR="${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"
|
export WORK_DIR=${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}
|
||||||
export DEPLOY_DIR="${BASE_DIR}/deploy"
|
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
|
||||||
export LOG_FILE="${WORK_DIR}/build.log"
|
export LOG_FILE="${WORK_DIR}/build.log"
|
||||||
|
|
||||||
export CLEAN
|
export CLEAN
|
||||||
@@ -148,6 +148,8 @@ export PREV_STAGE_DIR
|
|||||||
export ROOTFS_DIR
|
export ROOTFS_DIR
|
||||||
export PREV_ROOTFS_DIR
|
export PREV_ROOTFS_DIR
|
||||||
export IMG_SUFFIX
|
export IMG_SUFFIX
|
||||||
|
export NOOBS_NAME
|
||||||
|
export NOOBS_DESCRIPTION
|
||||||
export EXPORT_DIR
|
export EXPORT_DIR
|
||||||
export EXPORT_ROOTFS_DIR
|
export EXPORT_ROOTFS_DIR
|
||||||
|
|
||||||
@@ -172,13 +174,21 @@ done
|
|||||||
CLEAN=1
|
CLEAN=1
|
||||||
for EXPORT_DIR in ${EXPORT_DIRS}; do
|
for EXPORT_DIR in ${EXPORT_DIRS}; do
|
||||||
STAGE_DIR=${BASE_DIR}/export-image
|
STAGE_DIR=${BASE_DIR}/export-image
|
||||||
IMG_SUFFIX=$(cat ${EXPORT_DIR}/EXPORT_IMAGE)
|
source "${EXPORT_DIR}/EXPORT_IMAGE"
|
||||||
EXPORT_ROOTFS_DIR=${WORK_DIR}/$(basename ${EXPORT_DIR})/rootfs
|
EXPORT_ROOTFS_DIR=${WORK_DIR}/$(basename ${EXPORT_DIR})/rootfs
|
||||||
run_stage
|
run_stage
|
||||||
if [ -e ${EXPORT_DIR}/EXPORT_NOOBS ]; then
|
if [ -e ${EXPORT_DIR}/EXPORT_NOOBS ]; then
|
||||||
|
source ${EXPORT_DIR}/EXPORT_NOOBS
|
||||||
STAGE_DIR=${BASE_DIR}/export-noobs
|
STAGE_DIR=${BASE_DIR}/export-noobs
|
||||||
run_stage
|
run_stage
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ -x postrun.sh ]; then
|
||||||
|
log "Begin postrun.sh"
|
||||||
|
cd "${BASE_DIR}"
|
||||||
|
./postrun.sh
|
||||||
|
log "End postrun.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
log "End ${BASE_DIR}"
|
log "End ${BASE_DIR}"
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
quilt
|
quilt
|
||||||
|
parted
|
||||||
|
realpath
|
||||||
qemu-arm-static:qemu-user-static
|
qemu-arm-static:qemu-user-static
|
||||||
debootstrap
|
debootstrap
|
||||||
kpartx zerofree
|
zerofree
|
||||||
pxz zip
|
pxz zip
|
||||||
|
mkdosfs:dosfstools
|
||||||
|
capsh:libcap2-bin
|
||||||
|
bsdtar
|
||||||
|
grep
|
||||||
|
rsync
|
||||||
|
xz:xz-utils
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -1,2 +1,3 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
exit 101
|
exit 101
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ Index: export-jessie/rootfs/etc/apt/sources.list.d/raspi.list
|
|||||||
--- export-jessie.orig/rootfs/etc/apt/sources.list.d/raspi.list
|
--- export-jessie.orig/rootfs/etc/apt/sources.list.d/raspi.list
|
||||||
+++ export-jessie/rootfs/etc/apt/sources.list.d/raspi.list
|
+++ export-jessie/rootfs/etc/apt/sources.list.d/raspi.list
|
||||||
@@ -1,3 +1,3 @@
|
@@ -1,3 +1,3 @@
|
||||||
-deb http://archive.raspberrypi.org/debian/ jessie main ui staging
|
-deb http://archive.raspberrypi.org/debian/ stretch main ui staging
|
||||||
+deb http://archive.raspberrypi.org/debian/ jessie main ui
|
+deb http://archive.raspberrypi.org/debian/ stretch main ui
|
||||||
# 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/ jessie main ui
|
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
on_chroot << EOF
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get -y dist-upgrade
|
apt-get -y dist-upgrade
|
||||||
apt-get clean
|
apt-get clean
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
#/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
install -m 644 files/resolv.conf ${ROOTFS_DIR}/etc/
|
install -m 644 files/resolv.conf ${ROOTFS_DIR}/etc/
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
|
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
|
||||||
/etc/init.d/fake-hwclock stop
|
|
||||||
hardlink -t /usr/share/doc
|
|
||||||
EOF
|
|
||||||
|
|
||||||
rm -f ${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache
|
|
||||||
rm -f ${ROOTFS_DIR}/usr/sbin/policy-rc.d
|
|
||||||
rm -f ${ROOTFS_DIR}/usr/bin/qemu-arm-static
|
|
||||||
if [ -e ${ROOTFS_DIR}/etc/ld.so.preload.disabled ]; then
|
|
||||||
mv ${ROOTFS_DIR}/etc/ld.so.preload.disabled ${ROOTFS_DIR}/etc/ld.so.preload
|
|
||||||
fi
|
|
||||||
|
|
||||||
update_issue $(basename ${EXPORT_DIR})
|
|
||||||
install -m 644 ${ROOTFS_DIR}/etc/rpi-issue ${ROOTFS_DIR}/boot/issue.txt
|
|
||||||
install files/LICENSE.oracle ${ROOTFS_DIR}/boot/
|
|
||||||
|
|
||||||
ROOT_DEV=$(mount | grep "${ROOTFS_DIR} " | cut -f1 -d' ')
|
|
||||||
|
|
||||||
unmount ${ROOTFS_DIR}
|
|
||||||
zerofree -v ${ROOT_DEV}
|
|
||||||
|
|
||||||
unmount_image ${IMG_FILE}
|
|
||||||
|
|
||||||
mkdir -p ${DEPLOY_DIR}
|
|
||||||
|
|
||||||
rm -f ${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip
|
|
||||||
|
|
||||||
echo zip ${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip ${IMG_FILE}
|
|
||||||
pushd ${STAGE_WORK_DIR} > /dev/null
|
|
||||||
zip ${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip $(basename ${IMG_FILE})
|
|
||||||
popd > /dev/null
|
|
||||||
Executable
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
|
||||||
|
|
||||||
|
IMGID="$(fdisk -l ${IMG_FILE} | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')"
|
||||||
|
|
||||||
|
BOOT_PARTUUID="${IMGID}-01"
|
||||||
|
ROOT_PARTUUID="${IMGID}-02"
|
||||||
|
|
||||||
|
sed -i "s/BOOTDEV/PARTUUID=${BOOT_PARTUUID}/" ${ROOTFS_DIR}/etc/fstab
|
||||||
|
sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" ${ROOTFS_DIR}/etc/fstab
|
||||||
|
|
||||||
|
sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" ${ROOTFS_DIR}/boot/cmdline.txt
|
||||||
Executable
+84
@@ -0,0 +1,84 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
|
||||||
|
INFO_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.info"
|
||||||
|
|
||||||
|
on_chroot << EOF
|
||||||
|
/etc/init.d/fake-hwclock stop
|
||||||
|
hardlink -t /usr/share/doc
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ -d ${ROOTFS_DIR}/home/pi/.config ]; then
|
||||||
|
chmod 700 ${ROOTFS_DIR}/home/pi/.config
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f ${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache
|
||||||
|
rm -f ${ROOTFS_DIR}/usr/sbin/policy-rc.d
|
||||||
|
rm -f ${ROOTFS_DIR}/usr/bin/qemu-arm-static
|
||||||
|
if [ -e ${ROOTFS_DIR}/etc/ld.so.preload.disabled ]; then
|
||||||
|
mv ${ROOTFS_DIR}/etc/ld.so.preload.disabled ${ROOTFS_DIR}/etc/ld.so.preload
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f ${ROOTFS_DIR}/etc/apt/sources.list~
|
||||||
|
rm -f ${ROOTFS_DIR}/etc/apt/trusted.gpg~
|
||||||
|
|
||||||
|
rm -f ${ROOTFS_DIR}/etc/passwd-
|
||||||
|
rm -f ${ROOTFS_DIR}/etc/group-
|
||||||
|
rm -f ${ROOTFS_DIR}/etc/shadow-
|
||||||
|
rm -f ${ROOTFS_DIR}/etc/gshadow-
|
||||||
|
|
||||||
|
rm -f ${ROOTFS_DIR}/var/cache/debconf/*-old
|
||||||
|
rm -f ${ROOTFS_DIR}/var/lib/dpkg/*-old
|
||||||
|
|
||||||
|
rm -f ${ROOTFS_DIR}/usr/share/icons/*/icon-theme.cache
|
||||||
|
|
||||||
|
rm -f ${ROOTFS_DIR}/var/lib/dbus/machine-id
|
||||||
|
|
||||||
|
true > ${ROOTFS_DIR}/etc/machine-id
|
||||||
|
|
||||||
|
ln -nsf /proc/mounts ${ROOTFS_DIR}/etc/mtab
|
||||||
|
|
||||||
|
for _FILE in $(find ${ROOTFS_DIR}/var/log/ -type f); do
|
||||||
|
true > ${_FILE}
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f "${ROOTFS_DIR}/root/.vnc/private.key"
|
||||||
|
|
||||||
|
update_issue $(basename ${EXPORT_DIR})
|
||||||
|
install -m 644 ${ROOTFS_DIR}/etc/rpi-issue ${ROOTFS_DIR}/boot/issue.txt
|
||||||
|
install files/LICENSE.oracle ${ROOTFS_DIR}/boot/
|
||||||
|
|
||||||
|
|
||||||
|
cp "$ROOTFS_DIR/etc/rpi-issue" "$INFO_FILE"
|
||||||
|
|
||||||
|
firmware=$(zgrep "firmware as of" "$ROOTFS_DIR/usr/share/doc/raspberrypi-kernel/changelog.Debian.gz" | \
|
||||||
|
head -n1 | \
|
||||||
|
sed -n 's|.* \([^ ]*\)$|\1|p')
|
||||||
|
|
||||||
|
printf "\nFirmware: https://github.com/raspberrypi/firmware/tree/%s\n" "$firmware" >> "$INFO_FILE"
|
||||||
|
|
||||||
|
kernel=$(curl -s -L "https://github.com/raspberrypi/firmware/raw/$firmware/extra/git_hash")
|
||||||
|
printf "Kernel: https://github.com/raspberrypi/linux/tree/%s\n" "$kernel" >> "$INFO_FILE"
|
||||||
|
|
||||||
|
uname=$(curl -s -L "https://github.com/raspberrypi/firmware/raw/$firmware/extra/uname_string7")
|
||||||
|
printf "Uname string: %s\n" "$uname" >> "$INFO_FILE"
|
||||||
|
|
||||||
|
printf "\nPackages:\n">> "$INFO_FILE"
|
||||||
|
dpkg -l --root "$ROOTFS_DIR" >> "$INFO_FILE"
|
||||||
|
|
||||||
|
ROOT_DEV=$(mount | grep "${ROOTFS_DIR} " | cut -f1 -d' ')
|
||||||
|
|
||||||
|
unmount ${ROOTFS_DIR}
|
||||||
|
zerofree -v ${ROOT_DEV}
|
||||||
|
|
||||||
|
unmount_image ${IMG_FILE}
|
||||||
|
|
||||||
|
mkdir -p ${DEPLOY_DIR}
|
||||||
|
|
||||||
|
rm -f ${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip
|
||||||
|
|
||||||
|
pushd ${STAGE_WORK_DIR} > /dev/null
|
||||||
|
zip ${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip $(basename ${IMG_FILE})
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
cp "$INFO_FILE" "$DEPLOY_DIR"
|
||||||
+31
-12
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
|
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
|
||||||
|
|
||||||
unmount_image ${IMG_FILE}
|
unmount_image ${IMG_FILE}
|
||||||
@@ -8,19 +9,19 @@ rm -f ${IMG_FILE}
|
|||||||
rm -rf ${ROOTFS_DIR}
|
rm -rf ${ROOTFS_DIR}
|
||||||
mkdir -p ${ROOTFS_DIR}
|
mkdir -p ${ROOTFS_DIR}
|
||||||
|
|
||||||
BOOT_SIZE=$(du -sh ${EXPORT_ROOTFS_DIR}/boot -B M | cut -f 1 | tr -d M)
|
BOOT_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1)
|
||||||
TOTAL_SIZE=$(du -sh ${EXPORT_ROOTFS_DIR} -B M | cut -f 1 | tr -d M)
|
TOTAL_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR} --exclude var/cache/apt/archives --block-size=1 | cut -f 1)
|
||||||
|
|
||||||
IMG_SIZE=$(expr $BOOT_SIZE \* 2 \+ $TOTAL_SIZE \+ 512)M
|
IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024)))
|
||||||
|
|
||||||
fallocate -l ${IMG_SIZE} ${IMG_FILE}
|
truncate -s ${IMG_SIZE} ${IMG_FILE}
|
||||||
fdisk ${IMG_FILE} > /dev/null 2>&1 <<EOF
|
fdisk -H 255 -S 63 ${IMG_FILE} <<EOF
|
||||||
o
|
o
|
||||||
n
|
n
|
||||||
|
|
||||||
|
|
||||||
8192
|
8192
|
||||||
+`expr $BOOT_SIZE \* 3`M
|
+$((BOOT_SIZE * 2 /512))
|
||||||
p
|
p
|
||||||
t
|
t
|
||||||
c
|
c
|
||||||
@@ -34,15 +35,33 @@ p
|
|||||||
w
|
w
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
LOOP_DEV=`kpartx -asv ${IMG_FILE} | grep -E -o -m1 'loop[[:digit:]]+' | head -n 1`
|
PARTED_OUT=$(parted -s ${IMG_FILE} unit b print)
|
||||||
BOOT_DEV=/dev/mapper/${LOOP_DEV}p1
|
BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
|
||||||
ROOT_DEV=/dev/mapper/${LOOP_DEV}p2
|
| cut -d" " -f 2 | tr -d B)
|
||||||
|
BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
|
||||||
|
| cut -d" " -f 4 | tr -d B)
|
||||||
|
|
||||||
mkdosfs -n boot -S 512 -s 16 -v $BOOT_DEV > /dev/null
|
ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
|
||||||
mkfs.ext4 -O ^huge_file $ROOT_DEV > /dev/null
|
| cut -d" " -f 2 | tr -d B)
|
||||||
|
ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
|
||||||
|
| cut -d" " -f 4 | tr -d B)
|
||||||
|
|
||||||
|
BOOT_DEV=$(losetup --show -f -o ${BOOT_OFFSET} --sizelimit ${BOOT_LENGTH} ${IMG_FILE})
|
||||||
|
ROOT_DEV=$(losetup --show -f -o ${ROOT_OFFSET} --sizelimit ${ROOT_LENGTH} ${IMG_FILE})
|
||||||
|
echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH"
|
||||||
|
echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH"
|
||||||
|
|
||||||
|
ROOT_FEATURES="^huge_file"
|
||||||
|
for FEATURE in metadata_csum 64bit; do
|
||||||
|
if grep -q "$FEATURE" /etc/mke2fs.conf; then
|
||||||
|
ROOT_FEATURES="^$FEATURE,$ROOT_FEATURES"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
mkdosfs -n boot -F 32 -v $BOOT_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
|
||||||
mount -v $BOOT_DEV ${ROOTFS_DIR}/boot -t vfat
|
mount -v $BOOT_DEV ${ROOTFS_DIR}/boot -t vfat
|
||||||
|
|
||||||
rsync ${EXPORT_ROOTFS_DIR}/ ${ROOTFS_DIR}/ -aHAX
|
rsync -aHAXx --exclude var/cache/apt/archives ${EXPORT_ROOTFS_DIR}/ ${ROOTFS_DIR}/
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}"
|
|||||||
install -v -m 744 files/partition_setup.sh ${NOOBS_DIR}/
|
install -v -m 744 files/partition_setup.sh ${NOOBS_DIR}/
|
||||||
install -v files/partitions.json ${NOOBS_DIR}/
|
install -v files/partitions.json ${NOOBS_DIR}/
|
||||||
install -v files/os.json ${NOOBS_DIR}/
|
install -v files/os.json ${NOOBS_DIR}/
|
||||||
install -v files/Raspbian.png ${NOOBS_DIR}/
|
install -v files/OS.png ${NOOBS_DIR}/
|
||||||
install -v files/release_notes.txt ${NOOBS_DIR}/
|
install -v files/release_notes.txt ${NOOBS_DIR}/
|
||||||
|
|
||||||
tar -v -c -C files/marketing -f ${NOOBS_DIR}/marketing.tar .
|
tar -v -c -C files/marketing -f ${NOOBS_DIR}/marketing.tar .
|
||||||
@@ -19,13 +19,18 @@ ROOT_SIZE=$(expr ${ROOT_SIZE} / 1000000 \+ 1)
|
|||||||
BOOT_NOM=$(expr ${BOOT_SIZE} \* 3)
|
BOOT_NOM=$(expr ${BOOT_SIZE} \* 3)
|
||||||
ROOT_NOM=$(expr ${ROOT_SIZE} \+ 400)
|
ROOT_NOM=$(expr ${ROOT_SIZE} \+ 400)
|
||||||
|
|
||||||
|
mv "${NOOBS_DIR}/OS.png" "${NOOBS_DIR}/$(echo ${NOOBS_NAME} | sed 's/ /_/g').png"
|
||||||
|
|
||||||
sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_SIZE|${BOOT_SIZE}|"
|
sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_SIZE|${BOOT_SIZE}|"
|
||||||
sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_SIZE|${ROOT_SIZE}|"
|
sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_SIZE|${ROOT_SIZE}|"
|
||||||
|
|
||||||
sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_NOM|${BOOT_NOM}|"
|
sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_NOM|${BOOT_NOM}|"
|
||||||
sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_NOM|${ROOT_NOM}|"
|
sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_NOM|${ROOT_NOM}|"
|
||||||
|
|
||||||
sed ${NOOBS_DIR}/release_notes.txt -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|UNRELEASED|${IMG_DATE}|"
|
||||||
|
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}/release_notes.txt -i -e "s|UNRELEASED|${IMG_DATE}|"
|
||||||
|
|
||||||
cp -a ${NOOBS_DIR} ${DEPLOY_DIR}/
|
cp -a ${NOOBS_DIR} ${DEPLOY_DIR}/
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"description": "A community-created port of Debian jessie for the Raspberry Pi",
|
"description": "NOOBS_DESCRIPTION",
|
||||||
"feature_level": 35120124,
|
"feature_level": 35120124,
|
||||||
"kernel": "4.4",
|
"kernel": "4.9",
|
||||||
"name": "Raspbian",
|
"name": "NOOBS_NAME",
|
||||||
"password": "raspberry",
|
"password": "raspberry",
|
||||||
"release_date": "UNRELEASED",
|
"release_date": "UNRELEASED",
|
||||||
"supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041,0092,0093,2082",
|
"supported_hex_revisions": "2,3,4,5,6,7,8,9,d,e,f,10,11,12,14,19,1040,1041,0092,0093,2082",
|
||||||
@@ -14,5 +14,5 @@
|
|||||||
],
|
],
|
||||||
"url": "http://www.raspbian.org/",
|
"url": "http://www.raspbian.org/",
|
||||||
"username": "pi",
|
"username": "pi",
|
||||||
"version": "jessie"
|
"version": "stretch"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,12 +12,24 @@ mkdir -p /tmp/1 /tmp/2
|
|||||||
mount "$part1" /tmp/1
|
mount "$part1" /tmp/1
|
||||||
mount "$part2" /tmp/2
|
mount "$part2" /tmp/2
|
||||||
|
|
||||||
sed /tmp/1/cmdline.txt -i -e "s|root=/dev/[^ ]*|root=${part2}|"
|
sed /tmp/1/cmdline.txt -i -e "s|root=[^ ]*|root=${part2}|"
|
||||||
sed /tmp/2/etc/fstab -i -e "s|^.* / |${part2} / |"
|
sed /tmp/2/etc/fstab -i -e "s|^.* / |${part2} / |"
|
||||||
sed /tmp/2/etc/fstab -i -e "s|^.* /boot |${part1} /boot |"
|
sed /tmp/2/etc/fstab -i -e "s|^.* /boot |${part1} /boot |"
|
||||||
|
|
||||||
|
if [ -f /mnt/ssh ]; then
|
||||||
|
cp /mnt/ssh /tmp/1/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /mnt/ssh.txt ]; then
|
||||||
|
cp /mnt/ssh.txt /tmp/1/
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f /settings/wpa_supplicant.conf ]; then
|
||||||
|
cp /settings/wpa_supplicant.conf /tmp/1/
|
||||||
|
fi
|
||||||
|
|
||||||
if ! grep -q resize /proc/cmdline; then
|
if ! grep -q resize /proc/cmdline; then
|
||||||
sed -i 's/ quiet init=.*$//' /tmp/1/cmdline.txt
|
sed -i 's| quiet init=/usr/lib/raspi-config/init_resize.sh||' /tmp/1/cmdline.txt
|
||||||
fi
|
fi
|
||||||
|
|
||||||
umount /tmp/1
|
umount /tmp/1
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
{
|
{
|
||||||
"filesystem_type": "FAT",
|
"filesystem_type": "FAT",
|
||||||
"label": "boot",
|
"label": "boot",
|
||||||
|
"mkfs_options": "-F 32",
|
||||||
"partition_size_nominal": BOOT_NOM,
|
"partition_size_nominal": BOOT_NOM,
|
||||||
"uncompressed_tarball_size": BOOT_SIZE,
|
"uncompressed_tarball_size": BOOT_SIZE,
|
||||||
"want_maximised": false
|
"want_maximised": false
|
||||||
|
|||||||
@@ -1,4 +1,75 @@
|
|||||||
UNRELEASED:
|
UNRELEASED:
|
||||||
|
* Based on Raspbian Stretch (Debian version 9)
|
||||||
|
* Version 60 of Chromium browser included
|
||||||
|
* Version 3.0.1 of Sonic Pi included
|
||||||
|
* Version 6.1.1 of RealVNC included
|
||||||
|
* Version 0.17.4 of NodeRED included
|
||||||
|
* Bluetooth audio routed via ALSA rather than Pulseaudio
|
||||||
|
* SenseHAT extension added to Scratch 2
|
||||||
|
* Various desktop applications modified to prompt for sudo password if needed
|
||||||
|
* lxinput control options for mouse speed simplified
|
||||||
|
* lxpanel plugins moved into separate packages
|
||||||
|
* Latest kernel and firmware
|
||||||
|
* Various small tweaks, bug fixes and theme modifications
|
||||||
|
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
|
||||||
|
* Adobe Flash Player updated to version 25.0.0.127
|
||||||
|
* Use PARTUUID to support USB boot
|
||||||
|
2017-03-02:
|
||||||
|
* Updated kernel and firmware (final Pi Zero W support)
|
||||||
|
* Wolfram Mathematica updated to version 11
|
||||||
|
* NOOBS installs now checks for presence of 'ssh' file on the NOOBS partition.
|
||||||
|
2017-02-16:
|
||||||
|
* Chromium browser updated to version 56
|
||||||
|
* Adobe Flash Player updated to version 24.0.0.221
|
||||||
|
* RealVNC Server and Viewer updated to version 6.0.2 (RealVNC Connect)
|
||||||
|
* Sonic Pi updated to version 2.11
|
||||||
|
* Node-RED updated to version 0.15.3
|
||||||
|
* Scratch updated to version 120117
|
||||||
|
* Detection of SSH enabled with default password moved into PAM
|
||||||
|
* Updated desktop GL driver to support use of fake KMS option
|
||||||
|
* Raspberry Pi Configuration and raspi-config allow setting of fixed HDMI resolution
|
||||||
|
* raspi-config allows enabling of serial hardware independent of serial terminal
|
||||||
|
* Updates to kernel and firmware
|
||||||
|
* Various minor bug fixes and usability and appearance tweaks
|
||||||
|
2017-01-11:
|
||||||
|
* Re-release of the 2016-11-25 image with a FAT32-formatted boot partition
|
||||||
|
2016-11-25:
|
||||||
|
* SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition
|
||||||
|
* Prompt for password change at boot when SSH enabled with default password unchanged
|
||||||
|
* Adobe Flash Player included
|
||||||
|
* Updates to hardware video acceleration in Chromium browser
|
||||||
|
* Greeter now uses background image from last set in Appearance Settings rather than pi user
|
||||||
|
* Updated version of Scratch
|
||||||
|
* Rastrack option removed from raspi-config and Raspberry Pi Configuration
|
||||||
|
* Ability to disable graphical boot splash screen added to raspi-config and Raspberry Pi Configuration
|
||||||
|
* Appearance Settings dialog made tabbed to work better on small screens
|
||||||
|
* Raspberry Pi Configuration now requires current password to change password
|
||||||
|
* Various small bug fixes
|
||||||
|
* Updated firmware and kernel
|
||||||
|
2016-09-23:
|
||||||
|
* New PIXEL desktop environment - new icon set, window design, desktop images, splash screen and greeter
|
||||||
|
* Chromium web browser included
|
||||||
|
* Infinality font rendering patches included
|
||||||
|
* RealVNC server and viewer included
|
||||||
|
* SenseHAT emulator included
|
||||||
|
* Rfkill entries added to Wifi and Bluetooth panel plugins
|
||||||
|
* Updates to various standard applications, including Scratch and NodeRED
|
||||||
|
* Various bug fixes, tweaks and translation updates
|
||||||
|
* Updated firmware and kernel (https://github.com/raspberrypi/firmware/commit/ad8608c08b122b2c228dba0ff5070d6e9519faf5)
|
||||||
|
2016-05-27:
|
||||||
* Fixed crash of lxpanel when D-bus not accessible
|
* Fixed crash of lxpanel when D-bus not accessible
|
||||||
* Fixed permissions for D-bus Bluetooth access
|
* Fixed permissions for D-bus Bluetooth access
|
||||||
* Removed sudo from shutdown options
|
* Removed sudo from shutdown options
|
||||||
|
|||||||
+21
-7
@@ -9,18 +9,32 @@ cp ${WORK_DIR}/export-image/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img ${STAGE_WOR
|
|||||||
|
|
||||||
rm -rf ${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}
|
rm -rf ${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}
|
||||||
|
|
||||||
LOOP_DEV=`kpartx -asv ${IMG_FILE} | grep -E -o -m1 'loop[[:digit:]]+' | head -n 1`
|
PARTED_OUT=$(parted -s ${IMG_FILE} unit b print)
|
||||||
BOOT_DEV=/dev/mapper/${LOOP_DEV}p1
|
BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
|
||||||
ROOT_DEV=/dev/mapper/${LOOP_DEV}p2
|
| cut -d" " -f 2 | tr -d B)
|
||||||
|
BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \
|
||||||
|
| cut -d" " -f 4 | tr -d B)
|
||||||
|
|
||||||
|
ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
|
||||||
|
| cut -d" " -f 2 | tr -d B)
|
||||||
|
ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \
|
||||||
|
| cut -d" " -f 4 | tr -d B)
|
||||||
|
|
||||||
|
BOOT_DEV=$(losetup --show -f -o ${BOOT_OFFSET} --sizelimit ${BOOT_LENGTH} ${IMG_FILE})
|
||||||
|
ROOT_DEV=$(losetup --show -f -o ${ROOT_OFFSET} --sizelimit ${ROOT_LENGTH} ${IMG_FILE})
|
||||||
|
echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH"
|
||||||
|
echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH"
|
||||||
|
|
||||||
mkdir -p ${STAGE_WORK_DIR}/rootfs
|
mkdir -p ${STAGE_WORK_DIR}/rootfs
|
||||||
mkdir -p ${STAGE_WORK_DIR}/bootfs
|
|
||||||
mkdir -p ${NOOBS_DIR}
|
mkdir -p ${NOOBS_DIR}
|
||||||
|
|
||||||
mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs
|
mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs
|
||||||
mount $BOOT_DEV ${STAGE_WORK_DIR}/bootfs
|
mount $BOOT_DEV ${STAGE_WORK_DIR}/rootfs/boot
|
||||||
|
|
||||||
tar -I pxz -C ${STAGE_WORK_DIR}/bootfs -cpf ${NOOBS_DIR}/boot.tar.xz .
|
ln -sv "/lib/systemd/system/apply_noobs_os_config.service" "$ROOTFS_DIR/etc/systemd/system/multi-user.target.wants/apply_noobs_os_config.service"
|
||||||
tar -I pxz -C ${STAGE_WORK_DIR}/rootfs -cpf ${NOOBS_DIR}/root.tar.xz .
|
|
||||||
|
bsdtar --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs/boot -cpf ${NOOBS_DIR}/boot.tar.xz .
|
||||||
|
umount ${STAGE_WORK_DIR}/rootfs/boot
|
||||||
|
bsdtar --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs --one-file-system -cpf ${NOOBS_DIR}/root.tar.xz .
|
||||||
|
|
||||||
unmount_image ${IMG_FILE}
|
unmount_image ${IMG_FILE}
|
||||||
|
|||||||
+36
-29
@@ -1,10 +1,11 @@
|
|||||||
log (){
|
log (){
|
||||||
date +"[%T] $@" | tee -a ${LOG_FILE}
|
date +"[%T] $@" | tee -a "${LOG_FILE}"
|
||||||
}
|
}
|
||||||
export -f log
|
export -f log
|
||||||
|
|
||||||
bootstrap(){
|
bootstrap(){
|
||||||
local ARCH=$(dpkg --print-architecture)
|
local ARCH
|
||||||
|
ARCH=$(dpkg --print-architecture)
|
||||||
|
|
||||||
export http_proxy=${APT_PROXY}
|
export http_proxy=${APT_PROXY}
|
||||||
|
|
||||||
@@ -14,20 +15,20 @@ bootstrap(){
|
|||||||
local BOOTSTRAP_CMD=debootstrap
|
local BOOTSTRAP_CMD=debootstrap
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${BOOTSTRAP_CMD} --components=main,contrib,non-free \
|
capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
|
||||||
--arch armhf\
|
--arch armhf \
|
||||||
--no-check-gpg \
|
--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
|
||||||
$1 $2 $3
|
$1 $2 $3" || rmdir "$2/debootstrap"
|
||||||
}
|
}
|
||||||
export -f bootstrap
|
export -f bootstrap
|
||||||
|
|
||||||
copy_previous(){
|
copy_previous(){
|
||||||
if [ ! -d ${PREV_ROOTFS_DIR} ]; then
|
if [ ! -d "${PREV_ROOTFS_DIR}" ]; then
|
||||||
echo "Previous stage rootfs not found"
|
echo "Previous stage rootfs not found"
|
||||||
false
|
false
|
||||||
fi
|
fi
|
||||||
mkdir -p ${ROOTFS_DIR}
|
mkdir -p "${ROOTFS_DIR}"
|
||||||
rsync -aHAX ${PREV_ROOTFS_DIR}/ ${ROOTFS_DIR}/
|
rsync -aHAXx --exclude var/cache/apt/archives "${PREV_ROOTFS_DIR}/" "${ROOTFS_DIR}/"
|
||||||
}
|
}
|
||||||
export -f copy_previous
|
export -f copy_previous
|
||||||
|
|
||||||
@@ -38,10 +39,11 @@ unmount(){
|
|||||||
DIR=$1
|
DIR=$1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while mount | grep -q $DIR; do
|
while mount | grep -q "$DIR"; do
|
||||||
local LOCS=`mount | grep $DIR | cut -f 3 -d ' ' | sort -r`
|
local LOCS
|
||||||
|
LOCS=$(mount | grep "$DIR" | cut -f 3 -d ' ' | sort -r)
|
||||||
for loc in $LOCS; do
|
for loc in $LOCS; do
|
||||||
umount $loc
|
umount "$loc"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -50,42 +52,47 @@ export -f unmount
|
|||||||
unmount_image(){
|
unmount_image(){
|
||||||
sync
|
sync
|
||||||
sleep 1
|
sleep 1
|
||||||
local LOOP_DEV=$(losetup -j ${1} | cut -f1 -d':')
|
local LOOP_DEVICES
|
||||||
|
LOOP_DEVICES=$(losetup -j "${1}" | cut -f1 -d':')
|
||||||
|
for LOOP_DEV in ${LOOP_DEVICES}; do
|
||||||
if [ -n "${LOOP_DEV}" ]; then
|
if [ -n "${LOOP_DEV}" ]; then
|
||||||
local MOUNTED_DIR=$(mount | grep $(basename ${LOOP_DEV} | head -n 1 | cut -f 3 -d ' '))
|
local MOUNTED_DIR
|
||||||
if [ -n "${MOUNTED_DIR}" ]; then
|
MOUNTED_DIR=$(mount | grep "$(basename "${LOOP_DEV}")" | head -n 1 | cut -f 3 -d ' ')
|
||||||
unmount $(dirname ${MOUNTED_DIR})
|
if [ -n "${MOUNTED_DIR}" ] && [ "${MOUNTED_DIR}" != "/" ]; then
|
||||||
|
unmount "$(dirname "${MOUNTED_DIR}")"
|
||||||
fi
|
fi
|
||||||
sleep 1
|
sleep 1
|
||||||
kpartx -ds ${LOOP_DEV}
|
losetup -d "${LOOP_DEV}"
|
||||||
losetup -d ${LOOP_DEV}
|
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
}
|
}
|
||||||
export -f unmount_image
|
export -f unmount_image
|
||||||
|
|
||||||
on_chroot() {
|
on_chroot() {
|
||||||
if ! mount | grep -q `realpath ${ROOTFS_DIR}/proc`; then
|
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/proc)"; then
|
||||||
mount -t proc proc ${ROOTFS_DIR}/proc
|
mount -t proc proc "${ROOTFS_DIR}/proc"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! mount | grep -q `realpath ${ROOTFS_DIR}/dev`; then
|
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/dev)"; then
|
||||||
mount --bind /dev ${ROOTFS_DIR}/dev
|
mount --bind /dev "${ROOTFS_DIR}/dev"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! mount | grep -q `realpath ${ROOTFS_DIR}/dev/pts`; then
|
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/dev/pts)"; then
|
||||||
mount --bind /dev/pts ${ROOTFS_DIR}/dev/pts
|
mount --bind /dev/pts "${ROOTFS_DIR}/dev/pts"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! mount | grep -q `realpath ${ROOTFS_DIR}/sys`; then
|
if ! mount | grep -q "$(realpath "${ROOTFS_DIR}"/sys)"; then
|
||||||
mount --bind /sys ${ROOTFS_DIR}/sys
|
mount --bind /sys "${ROOTFS_DIR}/sys"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chroot ${ROOTFS_DIR}/ "$@"
|
capsh --drop=cap_setfcap "--chroot=${ROOTFS_DIR}/" -- "$@"
|
||||||
}
|
}
|
||||||
export -f on_chroot
|
export -f on_chroot
|
||||||
|
|
||||||
update_issue() {
|
update_issue() {
|
||||||
local GIT_HASH=$(git rev-parse HEAD)
|
local GIT_HASH
|
||||||
echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using pi-gen, https://github.com/RPi-Distro/pi-gen, ${GIT_HASH}, ${1}" > ${ROOTFS_DIR}/etc/rpi-issue
|
GIT_HASH=$(git rev-parse HEAD)
|
||||||
|
echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using pi-gen, https://github.com/RPi-Distro/pi-gen, ${GIT_HASH}, ${1}" > "${ROOTFS_DIR}/etc/rpi-issue"
|
||||||
}
|
}
|
||||||
export -f update_issue
|
export -f update_issue
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# dependencies_check
|
# dependencies_check
|
||||||
# $@ Dependnecy files to check
|
# $@ Dependency files to check
|
||||||
#
|
#
|
||||||
# Each dependency is in the form of a tool to test for, optionally followed by
|
# Each dependency is in the form of a tool to test for, optionally followed by
|
||||||
# a : and the name of a package if the package on a Debian-ish system is not
|
# a : and the name of a package if the package on a Debian-ish system is not
|
||||||
@@ -21,7 +21,7 @@ dependencies_check()
|
|||||||
done
|
done
|
||||||
|
|
||||||
if [[ "$missing" ]]; then
|
if [[ "$missing" ]]; then
|
||||||
echo "Reqired dependencies not installed"
|
echo "Required dependencies not installed"
|
||||||
echo
|
echo
|
||||||
echo "This can be resolved on Debian/Raspbian systems by installing:"
|
echo "This can be resolved on Debian/Raspbian systems by installing:"
|
||||||
echo "$missing"
|
echo "$missing"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
on_chroot apt-key add - < files/raspberrypi.gpg.key
|
on_chroot apt-key add - < files/raspberrypi.gpg.key
|
||||||
on_chroot sh -e - << EOF
|
on_chroot << EOF
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get dist-upgrade -y
|
apt-get dist-upgrade -y
|
||||||
EOF
|
EOF
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
deb http://archive.raspberrypi.org/debian/ stretch main ui staging
|
||||||
|
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
||||||
|
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi
|
||||||
|
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
||||||
|
#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
deb http://archive.raspberrypi.org/debian/ jessie main ui staging
|
|
||||||
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
|
||||||
#deb-src http://archive.raspberrypi.org/debian/ jessie main ui
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
|
|
||||||
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
|
||||||
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
locales
|
||||||
Binary file not shown.
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||||
bootstrap jessie ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/
|
bootstrap stretch ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 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
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# For more options and information see
|
# For more options and information see
|
||||||
# http://www.raspberrypi.org/documentation/configuration/config-txt.md
|
# http://rpf.io/configtxt
|
||||||
# Some settings may impact device functionality. See link above for details
|
# Some settings may impact device functionality. See link above for details
|
||||||
|
|
||||||
# uncomment if you get no picture on HDMI for a default "safe" mode
|
# uncomment if you get no picture on HDMI for a default "safe" mode
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ install -m 644 files/noclear.conf ${ROOTFS_DIR}/etc/systemd/system/[email protected]
|
|||||||
install -m 744 files/policy-rc.d ${ROOTFS_DIR}/usr/sbin/policy-rc.d #TODO: Necessary in systemd?
|
install -m 744 files/policy-rc.d ${ROOTFS_DIR}/usr/sbin/policy-rc.d #TODO: Necessary in systemd?
|
||||||
install -v -m 644 files/fstab ${ROOTFS_DIR}/etc/fstab
|
install -v -m 644 files/fstab ${ROOTFS_DIR}/etc/fstab
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
on_chroot << EOF
|
||||||
if ! id -u pi >/dev/null 2>&1; then
|
if ! id -u pi >/dev/null 2>&1; then
|
||||||
adduser --disabled-password --gecos "" pi
|
adduser --disabled-password --gecos "" pi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
proc /proc proc defaults 0 0
|
proc /proc proc defaults 0 0
|
||||||
/dev/mmcblk0p1 /boot vfat defaults 0 2
|
BOOTDEV /boot vfat defaults 0 2
|
||||||
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
|
ROOTDEV / ext4 defaults,noatime 0 1
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
exit 101
|
exit 101
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
Index: jessie-stage1/rootfs/lib/udev/rules.d/75-persistent-net-generator.rules
|
|
||||||
===================================================================
|
|
||||||
--- jessie-stage1.orig/rootfs/lib/udev/rules.d/75-persistent-net-generator.rules
|
|
||||||
+++ jessie-stage1/rootfs/lib/udev/rules.d/75-persistent-net-generator.rules
|
|
||||||
@@ -22,7 +22,7 @@ IMPORT{cmdline}="net.ifnames"
|
|
||||||
ENV{net.ifnames}=="1", GOTO="persistent_net_generator_end"
|
|
||||||
|
|
||||||
# device name whitelist
|
|
||||||
-KERNEL!="eth*|ath*|wlan*[0-9]|msh*|ra*|sta*|ctc*|lcs*|hsi*", \
|
|
||||||
+KERNEL!="ath*|msh*|ra*|sta*|ctc*|lcs*|hsi*", \
|
|
||||||
GOTO="persistent_net_generator_end"
|
|
||||||
|
|
||||||
# ignore Xen virtual interfaces
|
|
||||||
@@ -1,2 +1 @@
|
|||||||
01-hosts.diff
|
01-hosts.diff
|
||||||
02-persistant-net.diff
|
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
install -m 644 files/ipv6.conf ${ROOTFS_DIR}/etc/modprobe.d/ipv6.conf
|
install -m 644 files/ipv6.conf ${ROOTFS_DIR}/etc/modprobe.d/ipv6.conf
|
||||||
install -m 644 files/interfaces ${ROOTFS_DIR}/etc/network/interfaces
|
|
||||||
install -m 644 files/hostname ${ROOTFS_DIR}/etc/hostname
|
install -m 644 files/hostname ${ROOTFS_DIR}/etc/hostname
|
||||||
|
|
||||||
on_chroot sh -e - << EOF
|
on_chroot << EOF
|
||||||
dpkg-divert --add --local /lib/udev/rules.d/75-persistent-net-generator.rules
|
dpkg-divert --add --local /lib/udev/rules.d/75-persistent-net-generator.rules
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||||
copy_previous
|
copy_previous
|
||||||
fi
|
fi
|
||||||
|
|||||||
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 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
|
||||||
@@ -6,7 +6,7 @@ avahi-daemon
|
|||||||
lua5.1
|
lua5.1
|
||||||
luajit
|
luajit
|
||||||
hardlink ca-certificates curl
|
hardlink ca-certificates curl
|
||||||
fake-hwclock ntp nfs-common usbutils
|
fake-hwclock nfs-common usbutils
|
||||||
libraspberrypi-dev libraspberrypi-doc libfreetype6-dev
|
libraspberrypi-dev libraspberrypi-doc libfreetype6-dev
|
||||||
dosfstools
|
dosfstools
|
||||||
dphys-swapfile
|
dphys-swapfile
|
||||||
@@ -14,3 +14,9 @@ raspberrypi-sys-mods
|
|||||||
pi-bluetooth
|
pi-bluetooth
|
||||||
apt-listchanges
|
apt-listchanges
|
||||||
usb-modeswitch
|
usb-modeswitch
|
||||||
|
apt-transport-https
|
||||||
|
libpam-chksshpwd
|
||||||
|
rpi-update
|
||||||
|
libmtp-runtime
|
||||||
|
rsync
|
||||||
|
htop
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
Index: jessie-stage2/rootfs/etc/sudoers
|
|
||||||
===================================================================
|
|
||||||
--- jessie-stage2.orig/rootfs/etc/sudoers
|
|
||||||
+++ jessie-stage2/rootfs/etc/sudoers
|
|
||||||
@@ -25,3 +25,5 @@ root ALL=(ALL:ALL) ALL
|
|
||||||
# See sudoers(5) for more information on "#include" directives:
|
|
||||||
|
|
||||||
#includedir /etc/sudoers.d
|
|
||||||
+
|
|
||||||
+pi ALL=(ALL) NOPASSWD: ALL
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
Index: jessie-stage2/rootfs/etc/default/console-setup
|
|
||||||
===================================================================
|
|
||||||
--- jessie-stage2.orig/rootfs/etc/default/console-setup
|
|
||||||
+++ jessie-stage2/rootfs/etc/default/console-setup
|
|
||||||
@@ -6,9 +6,9 @@ ACTIVE_CONSOLES="/dev/tty[1-6]"
|
|
||||||
|
|
||||||
CHARMAP="UTF-8"
|
|
||||||
|
|
||||||
-CODESET="Lat15"
|
|
||||||
-FONTFACE="Fixed"
|
|
||||||
-FONTSIZE="8x16"
|
|
||||||
+CODESET="guess"
|
|
||||||
+FONTFACE=""
|
|
||||||
+FONTSIZE=""
|
|
||||||
|
|
||||||
VIDEOMODE=
|
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
--- a/rootfs/boot/cmdline.txt
|
--- a/rootfs/boot/cmdline.txt
|
||||||
+++ b/rootfs/boot/cmdline.txt
|
+++ b/rootfs/boot/cmdline.txt
|
||||||
@@ -1 +1 @@
|
@@ -1 +1 @@
|
||||||
-dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 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
|
||||||
+dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh
|
+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
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
00-sudoers.diff
|
|
||||||
01-useradd.diff
|
01-useradd.diff
|
||||||
02-swap.diff
|
02-swap.diff
|
||||||
03-console-setup.diff
|
|
||||||
04-inputrc.diff
|
04-inputrc.diff
|
||||||
05-path.diff
|
05-path.diff
|
||||||
06-rc_local.diff
|
|
||||||
07-resize-init.diff
|
07-resize-init.diff
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
install -m 755 files/regenerate_ssh_host_keys ${ROOTFS_DIR}/etc/init.d/
|
|
||||||
install -m 755 files/apply_noobs_os_config ${ROOTFS_DIR}/etc/init.d/
|
|
||||||
install -m 755 files/resize2fs_once ${ROOTFS_DIR}/etc/init.d/
|
install -m 755 files/resize2fs_once ${ROOTFS_DIR}/etc/init.d/
|
||||||
|
|
||||||
install -d ${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d
|
install -d ${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d
|
||||||
@@ -9,18 +7,20 @@ install -m 644 files/ttyoutput.conf ${ROOTFS_DIR}/etc/systemd/system/rc-local.
|
|||||||
|
|
||||||
install -m 644 files/50raspi ${ROOTFS_DIR}/etc/apt/apt.conf.d/
|
install -m 644 files/50raspi ${ROOTFS_DIR}/etc/apt/apt.conf.d/
|
||||||
|
|
||||||
|
install -m 644 files/console-setup ${ROOTFS_DIR}/etc/default/
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
install -m 755 files/rc.local ${ROOTFS_DIR}/etc/
|
||||||
|
|
||||||
|
on_chroot << EOF
|
||||||
systemctl disable hwclock.sh
|
systemctl disable hwclock.sh
|
||||||
systemctl disable nfs-common
|
systemctl disable nfs-common
|
||||||
systemctl disable rpcbind
|
systemctl disable rpcbind
|
||||||
systemctl disable ssh
|
systemctl disable ssh
|
||||||
systemctl enable regenerate_ssh_host_keys
|
systemctl enable regenerate_ssh_host_keys
|
||||||
systemctl enable apply_noobs_os_config
|
|
||||||
systemctl enable resize2fs_once
|
systemctl enable resize2fs_once
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
on_chroot sh -e - << \EOF
|
on_chroot << \EOF
|
||||||
for GRP in input spi i2c gpio; do
|
for GRP in input spi i2c gpio; do
|
||||||
groupadd -f -r $GRP
|
groupadd -f -r $GRP
|
||||||
done
|
done
|
||||||
@@ -29,11 +29,11 @@ for GRP in adm dialout cdrom audio users sudo video games plugdev input gpio spi
|
|||||||
done
|
done
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
on_chroot << EOF
|
||||||
setupcon --force --save-only -v
|
setupcon --force --save-only -v
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
on_chroot << EOF
|
||||||
usermod --pass='*' root
|
usermod --pass='*' root
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: apply_noobs_os_config
|
|
||||||
# Required-Start:
|
|
||||||
# Required-Stop:
|
|
||||||
# Default-Start: 2
|
|
||||||
# Default-Stop:
|
|
||||||
# Short-Description: Apply config from /boot/os_config.json
|
|
||||||
# Description:
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
. /lib/lsb/init-functions
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
log_daemon_msg "Applying config from /boot/os_config.json (if it exists)"
|
|
||||||
if raspi-config --apply-os-config; then
|
|
||||||
update-rc.d apply_noobs_os_config remove
|
|
||||||
rm /etc/init.d/apply_noobs_os_config
|
|
||||||
log_end_msg 0
|
|
||||||
else
|
|
||||||
log_end_msg 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: $0 start" >&2
|
|
||||||
exit 3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# CONFIGURATION FILE FOR SETUPCON
|
||||||
|
|
||||||
|
# Consult the console-setup(5) manual page.
|
||||||
|
|
||||||
|
ACTIVE_CONSOLES="/dev/tty[1-6]"
|
||||||
|
|
||||||
|
CHARMAP="UTF-8"
|
||||||
|
|
||||||
|
CODESET="guess"
|
||||||
|
FONTFACE=""
|
||||||
|
FONTSIZE=""
|
||||||
|
|
||||||
|
VIDEOMODE=
|
||||||
|
|
||||||
|
# The following is an example how to use a braille font
|
||||||
|
# FONT='lat9w-08.psf.gz brl-8x8.psf'
|
||||||
Executable
+20
@@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
#
|
||||||
|
# rc.local
|
||||||
|
#
|
||||||
|
# This script is executed at the end of each multiuser runlevel.
|
||||||
|
# Make sure that the script will "exit 0" on success or any other
|
||||||
|
# value on error.
|
||||||
|
#
|
||||||
|
# In order to enable or disable this script just change the execution
|
||||||
|
# bits.
|
||||||
|
#
|
||||||
|
# By default this script does nothing.
|
||||||
|
|
||||||
|
# Print the IP address
|
||||||
|
_IP=$(hostname -I) || true
|
||||||
|
if [ "$_IP" ]; then
|
||||||
|
printf "My IP address is %s\n" "$_IP"
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
### BEGIN INIT INFO
|
|
||||||
# Provides: regenerate_ssh_host_keys
|
|
||||||
# Required-Start:
|
|
||||||
# Required-Stop:
|
|
||||||
# Default-Start: 2
|
|
||||||
# Default-Stop:
|
|
||||||
# Short-Description: Regenerate ssh host keys
|
|
||||||
# Description:
|
|
||||||
### END INIT INFO
|
|
||||||
|
|
||||||
. /lib/lsb/init-functions
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
start)
|
|
||||||
log_daemon_msg "Regenerating ssh host keys (in background)"
|
|
||||||
nohup sh -c "if [ -e /dev/hwrng ]; then
|
|
||||||
dd if=/dev/hwrng of=/dev/urandom count=1 bs=4096
|
|
||||||
fi; \
|
|
||||||
yes | ssh-keygen -q -N '' -t dsa -f /etc/ssh/ssh_host_dsa_key && \
|
|
||||||
yes | ssh-keygen -q -N '' -t rsa -f /etc/ssh/ssh_host_rsa_key && \
|
|
||||||
yes | ssh-keygen -q -N '' -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key && \
|
|
||||||
yes | ssh-keygen -q -N '' -t ed25519 -f /etc/ssh/ssh_host_ed25519_key && \
|
|
||||||
systemctl enable ssh && sync && \
|
|
||||||
rm /etc/init.d/regenerate_ssh_host_keys && \
|
|
||||||
update-rc.d regenerate_ssh_host_keys remove && \
|
|
||||||
printf '\nfinished\n' && systemctl start ssh" > /var/log/regen_ssh_keys.log 2>&1 &
|
|
||||||
log_end_msg $?
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: $0 start" >&2
|
|
||||||
exit 3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
log_daemon_msg "Starting resize2fs_once"
|
log_daemon_msg "Starting resize2fs_once"
|
||||||
ROOT_DEV=`grep -Eo 'root=[[:graph:]]+' /proc/cmdline | cut -d '=' -f 2-` &&
|
ROOT_DEV=$(findmnt / -o source -n) &&
|
||||||
resize2fs $ROOT_DEV &&
|
resize2fs $ROOT_DEV &&
|
||||||
update-rc.d resize2fs_once remove &&
|
update-rc.d resize2fs_once remove &&
|
||||||
rm /etc/init.d/resize2fs_once &&
|
rm /etc/init.d/resize2fs_once &&
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-ralink firmware-realtek
|
wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek
|
||||||
|
raspberrypi-net-mods
|
||||||
dhcpcd5
|
dhcpcd5
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
Index: jessie-stage2/rootfs/etc/network/interfaces
|
|
||||||
===================================================================
|
|
||||||
--- jessie-stage2.orig/rootfs/etc/network/interfaces
|
|
||||||
+++ jessie-stage2/rootfs/etc/network/interfaces
|
|
||||||
@@ -1,4 +1,20 @@
|
|
||||||
-auto lo
|
|
||||||
+# interfaces(5) file used by ifup(8) and ifdown(8)
|
|
||||||
+
|
|
||||||
+# Please note that this file is written to be used with dhcpcd
|
|
||||||
+# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
|
|
||||||
|
|
||||||
+# Include files from /etc/network/interfaces.d:
|
|
||||||
+source-directory /etc/network/interfaces.d
|
|
||||||
+
|
|
||||||
+auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
-iface eth0 inet dhcp
|
|
||||||
+
|
|
||||||
+iface eth0 inet manual
|
|
||||||
+
|
|
||||||
+allow-hotplug wlan0
|
|
||||||
+iface wlan0 inet manual
|
|
||||||
+ wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
|
|
||||||
+
|
|
||||||
+allow-hotplug wlan1
|
|
||||||
+iface wlan1 inet manual
|
|
||||||
+ wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
00-interfaces.diff
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
[Service]
|
[Service]
|
||||||
ExecStart=
|
ExecStart=
|
||||||
ExecStart=/sbin/dhcpcd -q -w
|
ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
|
||||||
apt-get clean
|
|
||||||
EOF
|
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
-lite
|
IMG_SUFFIX="-lite"
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
NOOBS_NAME="Raspbian Lite"
|
||||||
|
NOOBS_DESCRIPTION="A port of Debian Stretch for the Raspberry Pi (minimal version)"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||||
copy_previous
|
copy_previous
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Adobe Flash Player. Copyright 1996-2015. Adobe Systems Incorporated. All Rights Reserved.
|
||||||
|
rpi-chromium-mods rpi-chromium-mods/adobe note
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
|
gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
|
||||||
xpdf gtk2-engines alsa-utils
|
xpdf gtk2-engines alsa-utils
|
||||||
desktop-base
|
desktop-base
|
||||||
git-core rpi-update
|
git
|
||||||
omxplayer
|
omxplayer
|
||||||
raspberrypi-artwork
|
raspberrypi-artwork
|
||||||
policykit-1
|
policykit-1
|
||||||
udisks
|
gvfs
|
||||||
rfkill
|
rfkill
|
||||||
chromium-browser rpi-chromium-mods
|
chromium-browser rpi-chromium-mods
|
||||||
|
gldriver-test
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
on_chroot << EOF
|
||||||
update-alternatives --install /usr/bin/x-www-browser \
|
update-alternatives --install /usr/bin/x-www-browser \
|
||||||
x-www-browser /usr/bin/chromium-browser 86
|
x-www-browser /usr/bin/chromium-browser 86
|
||||||
update-alternatives --install /usr/bin/gnome-www-browser \
|
update-alternatives --install /usr/bin/gnome-www-browser \
|
||||||
gnome-www-browser /usr/bin/chromium-browser 86
|
gnome-www-browser /usr/bin/chromium-browser 86
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
Index: jessie-stage3/rootfs/etc/lightdm/lightdm-gtk-greeter.conf
|
|
||||||
===================================================================
|
|
||||||
--- jessie-stage3.orig/rootfs/etc/lightdm/lightdm-gtk-greeter.conf
|
|
||||||
+++ jessie-stage3/rootfs/etc/lightdm/lightdm-gtk-greeter.conf
|
|
||||||
@@ -16,7 +16,7 @@
|
|
||||||
# screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen
|
|
||||||
#
|
|
||||||
[greeter]
|
|
||||||
-background=/usr/share/images/desktop-base/login-background.svg
|
|
||||||
+background=#ffffff
|
|
||||||
theme-name=Adwaita
|
|
||||||
#icon-theme-name=
|
|
||||||
#font-name=
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
01-lightdm.diff
|
|
||||||
@@ -1,15 +1,3 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
|
||||||
update-alternatives --set libgksu-gconf-defaults /usr/share/libgksu/debian/gconf-defaults.libgksu-sudo
|
|
||||||
update-gconf-defaults
|
|
||||||
EOF
|
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
|
||||||
update-alternatives --install /usr/share/images/desktop-base/desktop-background \
|
|
||||||
desktop-background /usr/share/raspberrypi-artwork/raspberry-pi-logo.png 100
|
|
||||||
EOF
|
|
||||||
|
|
||||||
rm -f ${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/wait.conf
|
rm -f ${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/wait.conf
|
||||||
install -m 644 files/55-storage.pkla ${ROOTFS_DIR}/etc/polkit-1/localauthority/50-local.d/
|
|
||||||
install -m 644 files/75source-profile ${ROOTFS_DIR}/etc/X11/Xsession.d/
|
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
[Storage Permissions]
|
|
||||||
Identity=unix-group:plugdev
|
|
||||||
Action=org.freedesktop.udisks.filesystem-mount;org.freedesktop.udisks.drive-eject;org.freedesktop.udisks.drive-detach;org.freedesktop.udisks.luks-unlock;org.freedesktop.udisks.inhibit-polling;org.freedesktop.udisks.drive-set-spindown
|
|
||||||
ResultAny=yes
|
|
||||||
ResultActive=yes
|
|
||||||
ResultInactive=no
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[ -f /etc/profile ] && . /etc/profile
|
|
||||||
[ -f "$HOME/.profile" ] && . "$HOME/.profile"
|
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||||
copy_previous
|
copy_previous
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,4 +1,2 @@
|
|||||||
# Enable realtime process priority?
|
# Enable realtime process priority?
|
||||||
jackd2 jackd/tweak_rt_limits boolean true
|
jackd2 jackd/tweak_rt_limits boolean true
|
||||||
# Do you accept the Wolfram - Raspberry Pi® Bundle License Agreement?
|
|
||||||
wolfram-engine shared/accepted-wolfram-eula boolean true
|
|
||||||
|
|||||||
@@ -7,13 +7,12 @@ python3-pgzero
|
|||||||
python-serial python3-serial
|
python-serial python3-serial
|
||||||
python-picamera python3-picamera
|
python-picamera python3-picamera
|
||||||
debian-reference-en dillo x2x
|
debian-reference-en dillo x2x
|
||||||
wolfram-engine
|
|
||||||
raspberrypi-net-mods raspberrypi-ui-mods
|
raspberrypi-net-mods raspberrypi-ui-mods
|
||||||
smartsim penguinspuzzle
|
fonts-liberation2
|
||||||
|
smartsim
|
||||||
python-pip python3-pip
|
python-pip python3-pip
|
||||||
python3-numpy
|
python3-numpy
|
||||||
pypy
|
pypy
|
||||||
python3-pifacecommon python3-pifacedigitalio python3-pifacedigital-scratch-handler python-pifacecommon python-pifacedigitalio
|
|
||||||
minecraft-pi python-minecraftpi
|
minecraft-pi python-minecraftpi
|
||||||
alacarte rc-gui sense-hat
|
alacarte rc-gui sense-hat
|
||||||
claws-mail
|
claws-mail
|
||||||
@@ -24,13 +23,13 @@ nodered
|
|||||||
libgl1-mesa-dri libgles1-mesa libgles2-mesa xcompmgr
|
libgl1-mesa-dri libgles1-mesa libgles2-mesa xcompmgr
|
||||||
geany
|
geany
|
||||||
piclone
|
piclone
|
||||||
pulseaudio-module-bluetooth
|
|
||||||
wiringpi pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio
|
wiringpi pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio
|
||||||
python-spidev python3-spidev
|
python-spidev python3-spidev
|
||||||
realvnc-vnc-server realvnc-vnc-viewer
|
|
||||||
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
|
python-picraft python3-picraft
|
||||||
python3-codebug-tether python3-codebug-i2c-tether
|
|
||||||
python-sense-emu python3-sense-emu sense-emu-tools python-sense-emu-doc
|
python-sense-emu python3-sense-emu sense-emu-tools python-sense-emu-doc
|
||||||
|
pprompt
|
||||||
|
scratch2
|
||||||
|
python3-thonny
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
libreoffice libreoffice-gtk
|
libreoffice libreoffice-gtk
|
||||||
timidity
|
timidity
|
||||||
pi-package
|
pi-package
|
||||||
|
realvnc-vnc-server realvnc-vnc-viewer
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
rm -f "${ROOTFS_DIR}/root/.vnc/private.key"
|
|
||||||
@@ -1,5 +1,3 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
ln -sf /etc/systemd/system/[email protected] ${ROOTFS_DIR}/etc/systemd/system/getty.target.wants/[email protected]
|
ln -sf /etc/systemd/system/[email protected] ${ROOTFS_DIR}/etc/systemd/system/getty.target.wants/[email protected]
|
||||||
|
|
||||||
install -v -m 644 files/40-scratch.rules ${ROOTFS_DIR}/etc/udev/rules.d/
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0003", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
Index: jessie-stage4/rootfs/etc/lightdm/lightdm.conf
|
|
||||||
===================================================================
|
|
||||||
--- jessie-stage4.orig/rootfs/etc/lightdm/lightdm.conf
|
|
||||||
+++ jessie-stage4/rootfs/etc/lightdm/lightdm.conf
|
|
||||||
@@ -114,7 +114,7 @@
|
|
||||||
#session-setup-script=
|
|
||||||
#session-cleanup-script=
|
|
||||||
#autologin-guest=false
|
|
||||||
-#autologin-user=
|
|
||||||
+autologin-user=pi
|
|
||||||
#autologin-user-timeout=0
|
|
||||||
#autologin-in-background=false
|
|
||||||
#autologin-session=UNIMPLEMENTED
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
0-autologin.diff
|
|
||||||
@@ -31,28 +31,3 @@ install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local"
|
|||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share"
|
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share"
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share/applications"
|
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share/applications"
|
||||||
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share/desktop-directories"
|
install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/pi/.local/share/desktop-directories"
|
||||||
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/pcmanfm
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/pcmanfm/LXDE-pi
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/openbox
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/lxsession
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.themes
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/gtk-3.0
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/.config/lxpanel
|
|
||||||
install -v -o 1000 -g 1000 -d ${ROOTFS_DIR}/home/pi/Desktop
|
|
||||||
|
|
||||||
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/pcmanfm/LXDE-pi/pcmanfm.conf ${ROOTFS_DIR}/home/pi/.config/pcmanfm/LXDE-pi/
|
|
||||||
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/pcmanfm/LXDE-pi/desktop-items-0.conf ${ROOTFS_DIR}/home/pi/.config/pcmanfm/LXDE-pi/
|
|
||||||
|
|
||||||
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/openbox/lxde-pi-rc.xml ${ROOTFS_DIR}/home/pi/.config/openbox/
|
|
||||||
|
|
||||||
rsync -a --chown=1000:1000 ${ROOTFS_DIR}/etc/xdg/lxsession/LXDE-pi ${ROOTFS_DIR}/home/pi/.config/lxsession/
|
|
||||||
rsync -a --chown=1000:1000 ${ROOTFS_DIR}/usr/share/themes/PiX ${ROOTFS_DIR}/home/pi/.themes/
|
|
||||||
|
|
||||||
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/usr/share/raspi-ui-overrides/gtk.css ${ROOTFS_DIR}/home/pi/.config/gtk-3.0/
|
|
||||||
|
|
||||||
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/usr/share/raspi-ui-overrides/Trolltech.conf ${ROOTFS_DIR}/home/pi/.config/
|
|
||||||
|
|
||||||
install -v -m 644 -o 1000 -g 1000 ${ROOTFS_DIR}/etc/xdg/lxpanel/launchtaskbar.cfg ${ROOTFS_DIR}/home/pi/.config/lxpanel/
|
|
||||||
rsync -a --chown=1000:1000 ${ROOTFS_DIR}/etc/xdg/lxpanel/profile/LXDE-pi ${ROOTFS_DIR}/home/pi/.config/lxpanel/
|
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
on_chroot sh -e - <<EOF
|
|
||||||
apt-get clean
|
|
||||||
EOF
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
IMG_SUFFIX="-4GB"
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||||
copy_previous
|
copy_previous
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Do you accept the Wolfram - Raspberry Pi® Bundle License Agreement?
|
||||||
|
wolfram-engine shared/accepted-wolfram-eula boolean true
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
wolfram-engine
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
IMG_SUFFIX=""
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
NOOBS_NAME="Raspbian"
|
||||||
|
NOOBS_DESCRIPTION="A port of Debian Stretch for the Raspberry Pi (full desktop version)"
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||||
|
copy_previous
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user