Compare commits
92
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b71bf31793 | ||
|
|
4b08ad07b1 | ||
|
|
aa8731012e | ||
|
|
53259b48d3 | ||
|
|
5c44fc727e | ||
|
|
35994f5d9c | ||
|
|
31fcc80953 | ||
|
|
90adfb1551 | ||
|
|
9f2941954f | ||
|
|
52c6748e67 | ||
|
|
732a87415d | ||
|
|
9aa87dbfb4 | ||
|
|
26fcf59f3f | ||
|
|
496e41575e | ||
|
|
e7e04fcde3 | ||
|
|
5024709d70 | ||
|
|
727db0ed63 | ||
|
|
e64ea5bce4 | ||
|
|
63c312d1fe | ||
|
|
2f032b1d19 | ||
|
|
05b31b287d | ||
|
|
b8c94731c5 | ||
|
|
c0513c547a | ||
|
|
dc0fb57fb9 | ||
|
|
fcb8cca6ce | ||
|
|
ce46fac1d4 | ||
|
|
3cc13f2aa2 | ||
|
|
4dc1e1670e | ||
|
|
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 |
@@ -1,3 +1,5 @@
|
||||
output/
|
||||
work/
|
||||
deploy/
|
||||
apt-cacher-ng/
|
||||
.git/objects/*
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
deploy/*
|
||||
work/*
|
||||
config
|
||||
postrun.sh
|
||||
SKIP
|
||||
.pc
|
||||
*-pc
|
||||
apt-cacher-ng/
|
||||
|
||||
+4
-2
@@ -1,10 +1,12 @@
|
||||
FROM debian:jessie
|
||||
FROM debian:stretch
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
|
||||
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 \
|
||||
bsdtar libcap2-bin rsync grep udev xz-utils curl xxd \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY . /pi-gen/
|
||||
|
||||
@@ -1,12 +1,24 @@
|
||||
# pi-gen
|
||||
|
||||
_Tool used to create the raspberrypi.org Raspbian images_
|
||||
|
||||
|
||||
### TODO
|
||||
1. Documentation
|
||||
|
||||
|
||||
## Dependencies
|
||||
|
||||
`quilt parted realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin grep rsync`
|
||||
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
|
||||
|
||||
@@ -29,29 +41,69 @@ The following environment variables are supported:
|
||||
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.
|
||||
|
||||
**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"`)
|
||||
|
||||
Output directory for target system images and NOOBS bundles.
|
||||
|
||||
* `USE_QEMU` (Default: `"0"`)
|
||||
|
||||
This enable the Qemu mode and set filesystem and image suffix if set to 1.
|
||||
|
||||
|
||||
A simple example for building Raspbian:
|
||||
|
||||
```bash
|
||||
IMG_NAME='Raspbian'
|
||||
```
|
||||
|
||||
|
||||
## Docker Build
|
||||
|
||||
```bash
|
||||
vi config # Edit your config file. See above.
|
||||
./build-docker.sh
|
||||
```
|
||||
|
||||
If everything goes well, your finished image will be in the `deploy/` folder.
|
||||
You can then remove the build container with `docker rm pigen_work`
|
||||
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).
|
||||
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
|
||||
|
||||
@@ -86,11 +138,11 @@ maintenance and allows for more easy customization.
|
||||
standard console hardware permission groups.
|
||||
|
||||
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
|
||||
in with more essential packages presently, though they need not be with
|
||||
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.
|
||||
|
||||
- **Stage 3** - desktop system. Here's where you get the full desktop system
|
||||
@@ -98,20 +150,32 @@ maintenance and allows for more easy customization.
|
||||
enhancements, etc. This is a base desktop system, with some development
|
||||
tools installed.
|
||||
|
||||
- **Stage 4** - complete Raspbian system. More development tools, an email
|
||||
client, learning tools like Scratch, specialized packages like sonic-pi and
|
||||
wolfram-engine, system documentation, office productivity, etc. This is
|
||||
the stage that installs all of the things that make Raspbian friendly to
|
||||
new users.
|
||||
- **Stage 4** - Raspbian system meant to fit on a 4GB card. More development
|
||||
tools, an email client, learning tools like Scratch, specialized packages
|
||||
like sonic-pi, system documentation, office productivity, etc. This is the
|
||||
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
|
||||
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).
|
||||
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
|
||||
$ touch ./stage3/SKIP ./stage4/SKIP
|
||||
$ rm stage4/EXPORT*
|
||||
echo "IMG_NAME='Raspbian'" > config
|
||||
touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP
|
||||
rm stage4/EXPORT* stage5/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.
|
||||
|
||||
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.
|
||||
|
||||
+18
-11
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
DOCKER="docker"
|
||||
set +e
|
||||
$DOCKER ps >/dev/null 2>&1
|
||||
@@ -12,9 +13,9 @@ if ! $DOCKER ps >/dev/null; then
|
||||
fi
|
||||
set -e
|
||||
|
||||
config_mount=
|
||||
config_file=()
|
||||
if [ -f config ]; then
|
||||
config_mount="-v $(pwd)/config:/pi-gen/config:ro"
|
||||
config_file=("--env-file" "$(pwd)/config")
|
||||
source config
|
||||
fi
|
||||
|
||||
@@ -23,7 +24,7 @@ CONTINUE=${CONTINUE:-0}
|
||||
|
||||
if [ "$*" != "" ] || [ -z "${IMG_NAME}" ]; then
|
||||
if [ -z "${IMG_NAME}" ]; then
|
||||
echo "IMG_NAME not set in 'build'" 1>&2
|
||||
echo "IMG_NAME not set in 'config'" 1>&2
|
||||
echo 1>&2
|
||||
fi
|
||||
cat >&2 <<EOF
|
||||
@@ -45,29 +46,35 @@ 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 $CONTAINER_NAME"
|
||||
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
|
||||
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
|
||||
wait "$!"
|
||||
else
|
||||
trap "echo 'got CTRL+C... please wait 5s'; docker stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM
|
||||
$DOCKER run --name "${CONTAINER_NAME}" --privileged \
|
||||
-v $(pwd)/deploy:/pi-gen/deploy \
|
||||
${config_mount} \
|
||||
trap "echo 'got CTRL+C... please wait 5s'; $DOCKER stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM
|
||||
time $DOCKER run --name "${CONTAINER_NAME}" --privileged \
|
||||
-e IMG_NAME=${IMG_NAME}\
|
||||
"${config_file[@]}" \
|
||||
pi-gen \
|
||||
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
||||
cd /pi-gen; ./build.sh &&
|
||||
rsync -av work/*/build.log deploy/" &
|
||||
wait
|
||||
wait "$!"
|
||||
fi
|
||||
echo "copying results from deploy/"
|
||||
$DOCKER cp "${CONTAINER_NAME}":/pi-gen/deploy .
|
||||
ls -lah deploy
|
||||
$DOCKER rm -v $CONTAINER_NAME
|
||||
|
||||
echo "Done! Your image(s) should be in deploy/"
|
||||
|
||||
@@ -67,10 +67,10 @@ EOF
|
||||
./${i}-run.sh
|
||||
log "End ${SUB_STAGE_DIR}/${i}-run.sh"
|
||||
fi
|
||||
if [ -f ${i}-run-chroot ]; then
|
||||
log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot"
|
||||
on_chroot < ${i}-run-chroot
|
||||
log "End ${SUB_STAGE_DIR}/${i}-run-chroot"
|
||||
if [ -f ${i}-run-chroot.sh ]; then
|
||||
log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot.sh"
|
||||
on_chroot < ${i}-run-chroot.sh
|
||||
log "End ${SUB_STAGE_DIR}/${i}-run-chroot.sh"
|
||||
fi
|
||||
done
|
||||
popd > /dev/null
|
||||
@@ -119,6 +119,7 @@ if [ "$(id -u)" != "0" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
if [ -f config ]; then
|
||||
source config
|
||||
fi
|
||||
@@ -128,12 +129,13 @@ if [ -z "${IMG_NAME}" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export IMG_DATE=${IMG_DATE:-"$(date -u +%Y-%m-%d)"}
|
||||
export USE_QEMU=${USE_QEMU:-0}
|
||||
export IMG_DATE=${IMG_DATE:-"$(date +%Y-%m-%d)"}
|
||||
|
||||
export BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
||||
export WORK_DIR="${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"
|
||||
export DEPLOY_DIR="${BASE_DIR}/deploy"
|
||||
export WORK_DIR=${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}
|
||||
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
|
||||
export LOG_FILE="${WORK_DIR}/build.log"
|
||||
|
||||
export CLEAN
|
||||
@@ -148,6 +150,8 @@ export PREV_STAGE_DIR
|
||||
export ROOTFS_DIR
|
||||
export PREV_ROOTFS_DIR
|
||||
export IMG_SUFFIX
|
||||
export NOOBS_NAME
|
||||
export NOOBS_DESCRIPTION
|
||||
export EXPORT_DIR
|
||||
export EXPORT_ROOTFS_DIR
|
||||
|
||||
@@ -172,13 +176,23 @@ done
|
||||
CLEAN=1
|
||||
for EXPORT_DIR in ${EXPORT_DIRS}; do
|
||||
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
|
||||
run_stage
|
||||
if [ "${USE_QEMU}" != "1" ]; then
|
||||
if [ -e ${EXPORT_DIR}/EXPORT_NOOBS ]; then
|
||||
source ${EXPORT_DIR}/EXPORT_NOOBS
|
||||
STAGE_DIR=${BASE_DIR}/export-noobs
|
||||
run_stage
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -x postrun.sh ]; then
|
||||
log "Begin postrun.sh"
|
||||
cd "${BASE_DIR}"
|
||||
./postrun.sh
|
||||
log "End postrun.sh"
|
||||
fi
|
||||
|
||||
log "End ${BASE_DIR}"
|
||||
|
||||
@@ -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
|
||||
|
||||
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/rootfs/etc/apt/sources.list.d/raspi.list
|
||||
@@ -1,3 +1,3 @@
|
||||
-deb http://archive.raspberrypi.org/debian/ jessie main ui staging
|
||||
+deb http://archive.raspberrypi.org/debian/ jessie main ui
|
||||
-deb http://archive.raspberrypi.org/debian/ stretch main ui staging
|
||||
+deb http://archive.raspberrypi.org/debian/ stretch main ui
|
||||
# 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,3 +1,3 @@
|
||||
#/bin/bash -e
|
||||
#!/bin/bash -e
|
||||
|
||||
install -m 644 files/resolv.conf ${ROOTFS_DIR}/etc/
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
|
||||
|
||||
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
|
||||
|
||||
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="$(dd if=${IMG_FILE} skip=440 bs=1 count=4 2>/dev/null | xxd -e | cut -f 2 -d' ')"
|
||||
|
||||
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
+87
@@ -0,0 +1,87 @@
|
||||
#!/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 [ "${USE_QEMU}" != "1" ]; then
|
||||
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
|
||||
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"
|
||||
rm -f "${ROOTFS_DIR}/etc/vnc/updateid"
|
||||
|
||||
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"
|
||||
+16
-8
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
|
||||
|
||||
unmount_image ${IMG_FILE}
|
||||
@@ -8,19 +9,20 @@ rm -f ${IMG_FILE}
|
||||
rm -rf ${ROOTFS_DIR}
|
||||
mkdir -p ${ROOTFS_DIR}
|
||||
|
||||
BOOT_SIZE=$(du -sh ${EXPORT_ROOTFS_DIR}/boot -B M | cut -f 1 | tr -d M)
|
||||
TOTAL_SIZE=$(du -sh ${EXPORT_ROOTFS_DIR} -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 --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
|
||||
ROUND_SIZE="$((4 * 1024 * 1024))"
|
||||
IMG_SIZE=$(((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024) + ROUND_SIZE) / ROUND_SIZE * ROUND_SIZE))
|
||||
|
||||
fallocate -l ${IMG_SIZE} ${IMG_FILE}
|
||||
fdisk ${IMG_FILE} > /dev/null 2>&1 <<EOF
|
||||
truncate -s ${IMG_SIZE} ${IMG_FILE}
|
||||
fdisk -H 255 -S 63 ${IMG_FILE} <<EOF
|
||||
o
|
||||
n
|
||||
|
||||
|
||||
8192
|
||||
+`expr $BOOT_SIZE \* 3`M
|
||||
+$((BOOT_SIZE * 2 /512))
|
||||
p
|
||||
t
|
||||
c
|
||||
@@ -50,11 +52,17 @@ ROOT_DEV=$(losetup --show -f -o ${ROOT_OFFSET} --sizelimit ${ROOT_LENGTH} ${IMG_
|
||||
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 ^huge_file $ROOT_DEV > /dev/null
|
||||
mkfs.ext4 -L rootfs -O $ROOT_FEATURES $ROOT_DEV > /dev/null
|
||||
|
||||
mount -v $ROOT_DEV ${ROOTFS_DIR} -t ext4
|
||||
mkdir -p ${ROOTFS_DIR}/boot
|
||||
mount -v $BOOT_DEV ${ROOTFS_DIR}/boot -t vfat
|
||||
|
||||
rsync -aHAXx ${EXPORT_ROOTFS_DIR}/ ${ROOTFS_DIR}/
|
||||
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 files/partitions.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}/
|
||||
|
||||
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)
|
||||
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|ROOT_SIZE|${ROOT_SIZE}|"
|
||||
|
||||
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}/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|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}/
|
||||
|
||||
|
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,
|
||||
"kernel": "4.4",
|
||||
"name": "Raspbian",
|
||||
"kernel": "4.9",
|
||||
"name": "NOOBS_NAME",
|
||||
"password": "raspberry",
|
||||
"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",
|
||||
@@ -10,9 +10,10 @@
|
||||
"Pi Model",
|
||||
"Pi 2",
|
||||
"Pi Zero",
|
||||
"Pi 3"
|
||||
"Pi 3",
|
||||
"Pi Compute Module 3"
|
||||
],
|
||||
"url": "http://www.raspbian.org/",
|
||||
"username": "pi",
|
||||
"version": "jessie"
|
||||
"version": "stretch"
|
||||
}
|
||||
|
||||
@@ -12,18 +12,22 @@ mkdir -p /tmp/1 /tmp/2
|
||||
mount "$part1" /tmp/1
|
||||
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|^.* /boot |${part1} /boot |"
|
||||
|
||||
if [ -e /mnt/ssh ]; then
|
||||
if [ -f /mnt/ssh ]; then
|
||||
cp /mnt/ssh /tmp/1/
|
||||
fi
|
||||
|
||||
if [ -e /mnt/ssh.txt ]; then
|
||||
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
|
||||
sed -i 's| quiet init=/usr/lib/raspi-config/init_resize.sh||' /tmp/1/cmdline.txt
|
||||
fi
|
||||
|
||||
@@ -1,5 +1,54 @@
|
||||
UNRELEASED:
|
||||
* Added battery monitor plugin for taskbar - works on x86 images or first-generation Pi-Top
|
||||
* Added cutdown mode to PCManFM file manager to reduce complexity
|
||||
* Added ability to rename files in PCManFM by clicking name when selected
|
||||
* Bug fix in Bluetooth ALSA module to reduce truncation of audio at end of playback
|
||||
* Various small tweaks, bug fixes and theme modifications
|
||||
* New kernel and firmware
|
||||
2017-09-07:
|
||||
* Disable predictable network interface names for Ethernet devices
|
||||
* Bug fix for keyboard settings dialog in Raspberry Pi Configuration
|
||||
* Bug fix for crash on some videos and animations in Chromium
|
||||
* Bug fix for taskbar crash when running RealVNC server
|
||||
* Bug fix for reloading projects with extensions in Scratch 2
|
||||
* Bug fix for MAC address problem in Bluetooth
|
||||
* Simple mode and new icons in Thonny
|
||||
* New Japanese translations in Raspberry Pi Configuration
|
||||
* Install fonts-droid-fallback for international fonts
|
||||
2017-08-16:
|
||||
* 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
|
||||
* Wireless firmware for Pi 3 and Pi 0W modified to address Broadpwn exploit
|
||||
* 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
|
||||
|
||||
@@ -31,8 +31,10 @@ mkdir -p ${NOOBS_DIR}
|
||||
mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs
|
||||
mount $BOOT_DEV ${STAGE_WORK_DIR}/rootfs/boot
|
||||
|
||||
bsdtar --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs/boot -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"
|
||||
|
||||
bsdtar --numeric-owner --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 .
|
||||
bsdtar --numeric-owner --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs --one-file-system -cpf ${NOOBS_DIR}/root.tar.xz .
|
||||
|
||||
unmount_image ${IMG_FILE}
|
||||
|
||||
+3
-3
@@ -17,8 +17,8 @@ bootstrap(){
|
||||
|
||||
capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
|
||||
--arch armhf \
|
||||
--no-check-gpg \
|
||||
$1 $2 $3"
|
||||
--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
|
||||
$1 $2 $3" || rmdir "$2/debootstrap"
|
||||
}
|
||||
export -f bootstrap
|
||||
|
||||
@@ -28,7 +28,7 @@ copy_previous(){
|
||||
false
|
||||
fi
|
||||
mkdir -p "${ROOTFS_DIR}"
|
||||
rsync -aHAXx "${PREV_ROOTFS_DIR}/" "${ROOTFS_DIR}/"
|
||||
rsync -aHAXx --exclude var/cache/apt/archives "${PREV_ROOTFS_DIR}/" "${ROOTFS_DIR}/"
|
||||
}
|
||||
export -f copy_previous
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# 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
|
||||
# a : and the name of a package if the package on a Debian-ish system is not
|
||||
@@ -21,7 +21,7 @@ dependencies_check()
|
||||
done
|
||||
|
||||
if [[ "$missing" ]]; then
|
||||
echo "Reqired dependencies not installed"
|
||||
echo "Required dependencies not installed"
|
||||
echo
|
||||
echo "This can be resolved on Debian/Raspbian systems by installing:"
|
||||
echo "$missing"
|
||||
|
||||
@@ -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
|
||||
|
||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||
bootstrap jessie ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/
|
||||
bootstrap stretch ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/
|
||||
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
|
||||
# http://www.raspberrypi.org/documentation/configuration/config-txt.md
|
||||
# http://rpf.io/configtxt
|
||||
# Some settings may impact device functionality. See link above for details
|
||||
|
||||
# uncomment if you get no picture on HDMI for a default "safe" mode
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
proc /proc proc defaults 0 0
|
||||
/dev/mmcblk0p1 /boot vfat defaults 0 2
|
||||
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
|
||||
BOOTDEV /boot vfat defaults 0 2
|
||||
ROOTDEV / ext4 defaults,noatime 0 1
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
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
|
||||
02-persistant-net.diff
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
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
|
||||
|
||||
on_chroot << EOF
|
||||
dpkg-divert --add --local /lib/udev/rules.d/75-persistent-net-generator.rules
|
||||
EOF
|
||||
ln -sf /dev/null ${ROOTFS_DIR}/etc/systemd/network/99-default.link
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||
copy_previous
|
||||
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
|
||||
build-essential manpages-dev python bash-completion gdb pkg-config
|
||||
python-rpi.gpio v4l-utils
|
||||
@@ -6,7 +6,7 @@ avahi-daemon
|
||||
lua5.1
|
||||
luajit
|
||||
hardlink ca-certificates curl
|
||||
fake-hwclock ntp nfs-common usbutils
|
||||
fake-hwclock nfs-common usbutils
|
||||
libraspberrypi-dev libraspberrypi-doc libfreetype6-dev
|
||||
dosfstools
|
||||
dphys-swapfile
|
||||
@@ -15,3 +15,9 @@ pi-bluetooth
|
||||
apt-listchanges
|
||||
usb-modeswitch
|
||||
apt-transport-https
|
||||
libpam-chksshpwd
|
||||
rpi-update
|
||||
libmtp-runtime
|
||||
rsync
|
||||
htop
|
||||
man-db
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
--- a/rootfs/boot/cmdline.txt
|
||||
+++ b/rootfs/boot/cmdline.txt
|
||||
@@ -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=/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
|
||||
+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
|
||||
|
||||
@@ -2,5 +2,4 @@
|
||||
02-swap.diff
|
||||
04-inputrc.diff
|
||||
05-path.diff
|
||||
06-rc_local.diff
|
||||
07-resize-init.diff
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
install -m 644 files/regenerate_ssh_host_keys.service ${ROOTFS_DIR}/lib/systemd/system/
|
||||
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 -d ${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d
|
||||
@@ -11,15 +9,36 @@ install -m 644 files/50raspi ${ROOTFS_DIR}/etc/apt/apt.conf.d/
|
||||
|
||||
install -m 644 files/console-setup ${ROOTFS_DIR}/etc/default/
|
||||
|
||||
install -m 755 files/rc.local ${ROOTFS_DIR}/etc/
|
||||
|
||||
on_chroot << EOF
|
||||
systemctl disable hwclock.sh
|
||||
systemctl disable nfs-common
|
||||
systemctl disable rpcbind
|
||||
systemctl disable ssh
|
||||
systemctl enable regenerate_ssh_host_keys
|
||||
systemctl enable apply_noobs_os_config
|
||||
EOF
|
||||
|
||||
if [ "${USE_QEMU}" = "1" ]; then
|
||||
echo "enter QEMU mode"
|
||||
install -m 644 files/90-qemu.rules ${ROOTFS_DIR}/etc/udev/rules.d/
|
||||
if [ -e ${ROOTFS_DIR}/etc/ld.so.preload.disabled ]; then
|
||||
rm ${ROOTFS_DIR}/etc/ld.so.preload.disabled
|
||||
touch ${ROOTFS_DIR}/etc/ld.so.preload.disabled
|
||||
fi
|
||||
if [ -e ${ROOTFS_DIR}/etc/ld.so.preload ]; then
|
||||
rm ${ROOTFS_DIR}/etc/ld.so.preload
|
||||
touch ${ROOTFS_DIR}/etc/ld.so.preload
|
||||
fi
|
||||
on_chroot << EOF
|
||||
systemctl disable resize2fs_once
|
||||
EOF
|
||||
echo "leaving QEMU mode"
|
||||
else
|
||||
on_chroot << EOF
|
||||
systemctl enable resize2fs_once
|
||||
EOF
|
||||
fi
|
||||
|
||||
on_chroot << \EOF
|
||||
for GRP in input spi i2c gpio; do
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
KERNEL=="sda", SYMLINK+="mmcblk0"
|
||||
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
|
||||
KERNEL=="sda2", SYMLINK+="root"
|
||||
@@ -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
|
||||
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,11 +0,0 @@
|
||||
[Unit]
|
||||
Description=Regenerate SSH host keys
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStartPre=/bin/sh -c "if [ -e /dev/hwrng ]; then dd if=/dev/hwrng of=/dev/urandom count=1 bs=4096; fi"
|
||||
ExecStart=/usr/bin/ssh-keygen -A
|
||||
ExecStartPost=/bin/rm /lib/systemd/system/regenerate_ssh_host_keys.service ; /usr/sbin/update-rc.d regenerate_ssh_host_keys remove
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -12,7 +12,7 @@
|
||||
case "$1" in
|
||||
start)
|
||||
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 &&
|
||||
update-rc.d resize2fs_once remove &&
|
||||
rm /etc/init.d/resize2fs_once &&
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
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
|
||||
net-tools
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
[Service]
|
||||
ExecStart=
|
||||
ExecStart=/sbin/dhcpcd -q -w
|
||||
ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
on_chroot << EOF
|
||||
apt-get clean
|
||||
EOF
|
||||
+4
-1
@@ -1 +1,4 @@
|
||||
-lite
|
||||
IMG_SUFFIX="-lite"
|
||||
if [ "${USE_QEMU}" = "1" ]; then
|
||||
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
||||
fi
|
||||
|
||||
@@ -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
|
||||
|
||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||
copy_previous
|
||||
fi
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
|
||||
xpdf gtk2-engines alsa-utils
|
||||
desktop-base
|
||||
git-core rpi-update
|
||||
git
|
||||
omxplayer
|
||||
raspberrypi-artwork
|
||||
policykit-1
|
||||
gvfs
|
||||
rfkill
|
||||
chromium-browser rpi-chromium-mods
|
||||
gldriver-test
|
||||
fonts-droid-fallback
|
||||
fonts-liberation2
|
||||
|
||||
@@ -6,4 +6,3 @@ update-alternatives --install /usr/bin/x-www-browser \
|
||||
update-alternatives --install /usr/bin/gnome-www-browser \
|
||||
gnome-www-browser /usr/bin/chromium-browser 86
|
||||
EOF
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||
copy_previous
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
# Enable realtime process priority?
|
||||
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,11 @@ python3-pgzero
|
||||
python-serial python3-serial
|
||||
python-picamera python3-picamera
|
||||
debian-reference-en dillo x2x
|
||||
wolfram-engine
|
||||
raspberrypi-net-mods raspberrypi-ui-mods
|
||||
smartsim penguinspuzzle
|
||||
smartsim
|
||||
python-pip python3-pip
|
||||
python3-numpy
|
||||
pypy
|
||||
python3-pifacecommon python3-pifacedigitalio python3-pifacedigital-scratch-handler python-pifacecommon python-pifacedigitalio
|
||||
minecraft-pi python-minecraftpi
|
||||
alacarte rc-gui sense-hat
|
||||
claws-mail
|
||||
@@ -24,13 +22,13 @@ nodered
|
||||
libgl1-mesa-dri libgles1-mesa libgles2-mesa xcompmgr
|
||||
geany
|
||||
piclone
|
||||
pulseaudio-module-bluetooth
|
||||
wiringpi pigpio python-pigpio python3-pigpio raspi-gpio python-gpiozero python3-gpiozero python3-rpi.gpio
|
||||
python-spidev python3-spidev
|
||||
python-twython python3-twython
|
||||
python-smbus python3-smbus
|
||||
python-flask python3-flask
|
||||
python-picraft python3-picraft
|
||||
python3-codebug-tether python3-codebug-i2c-tether
|
||||
python-sense-emu python3-sense-emu sense-emu-tools python-sense-emu-doc
|
||||
pprompt
|
||||
scratch2
|
||||
python3-thonny
|
||||
|
||||
@@ -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 +0,0 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
on_chroot << EOF
|
||||
apt-get clean
|
||||
EOF
|
||||
@@ -0,0 +1,4 @@
|
||||
IMG_SUFFIX="-4GB"
|
||||
if [ "${USE_QEMU}" = "1" ]; then
|
||||
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
|
||||
if [ ! -d ${ROOTFS_DIR} ]; then
|
||||
copy_previous
|
||||
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,4 @@
|
||||
IMG_SUFFIX=""
|
||||
if [ "${USE_QEMU}" = "1" ]; then
|
||||
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
|
||||
fi
|
||||
@@ -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