Compare commits

..
Author SHA1 Message Date
Serge Schneider acc4f56597 Add .gitlab-ci.yml 2017-04-05 16:50:37 +01:00
61 changed files with 154 additions and 350 deletions
-2
View File
@@ -1,5 +1,3 @@
output/
work/
deploy/
apt-cacher-ng/
.git/objects/*
-1
View File
@@ -5,4 +5,3 @@ postrun.sh
SKIP
.pc
*-pc
apt-cacher-ng/
+3
View File
@@ -0,0 +1,3 @@
test:
script:
- echo "test"
+2 -4
View File
@@ -1,12 +1,10 @@
FROM debian:stretch
ENV DEBIAN_FRONTEND noninteractive
FROM debian:jessie
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 curl xxd \
bsdtar libcap2-bin rsync grep \
&& rm -rf /var/lib/apt/lists/*
COPY . /pi-gen/
View File
+18 -82
View File
@@ -1,24 +1,12 @@
# pi-gen
_Tool used to create the raspberrypi.org Raspbian images_
### TODO
1. Documentation
## Dependencies
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>]`.
`quilt parted realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin grep rsync`
## Config
@@ -41,69 +29,29 @@ 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 -v pigen_work`
You can then remove the build container with `docker rm pigen_work`
If something breaks along the line, you can edit the corresponding scripts, and
continue:
```bash
```
CONTINUE=1 ./build-docker.sh
```
There is a possibility that even when running from a docker container, the
installation of `qemu-user-static` will silently fail when building the image
because `binfmt-support` _must be enabled on the underlying kernel_. An easy
fix is to ensure `binfmt-support` is installed on the host machine before
starting the `./build-docker.sh` script (or using your own docker build
solution).
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
@@ -138,11 +86,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
@@ -150,32 +98,20 @@ maintenance and allows for more easy customization.
enhancements, etc. This is a base desktop system, with some development
tools installed.
- **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 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 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.
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).
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* 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.
# Example for building a lite system
$ touch ./stage3/SKIP ./stage4/SKIP
$ rm stage4/EXPORT*
```
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.
+11 -18
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
DOCKER="docker"
set +e
$DOCKER ps >/dev/null 2>&1
@@ -13,9 +12,9 @@ if ! $DOCKER ps >/dev/null; then
fi
set -e
config_file=()
config_mount=
if [ -f config ]; then
config_file=("--env-file" "$(pwd)/config")
config_mount="-v $(pwd)/config:/pi-gen/config:ro"
source config
fi
@@ -24,7 +23,7 @@ CONTINUE=${CONTINUE:-0}
if [ "$*" != "" ] || [ -z "${IMG_NAME}" ]; then
if [ -z "${IMG_NAME}" ]; then
echo "IMG_NAME not set in 'config'" 1>&2
echo "IMG_NAME not set in 'build'" 1>&2
echo 1>&2
fi
cat >&2 <<EOF
@@ -46,35 +45,29 @@ 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"
echo " docker rm $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
time $DOCKER run --name "${CONTAINER_NAME}" --privileged \
-e IMG_NAME=${IMG_NAME}\
"${config_file[@]}" \
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} \
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/"
+5 -9
View File
@@ -119,7 +119,6 @@ if [ "$(id -u)" != "0" ]; then
exit 1
fi
if [ -f config ]; then
source config
fi
@@ -129,8 +128,7 @@ if [ -z "${IMG_NAME}" ]; then
exit 1
fi
export USE_QEMU=${USE_QEMU:-0}
export IMG_DATE=${IMG_DATE:-"$(date +%Y-%m-%d)"}
export IMG_DATE=${IMG_DATE:-"$(date -u +%Y-%m-%d)"}
export BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export SCRIPT_DIR="${BASE_DIR}/scripts"
@@ -179,12 +177,10 @@ for EXPORT_DIR in ${EXPORT_DIRS}; do
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
if [ -e ${EXPORT_DIR}/EXPORT_NOOBS ]; then
source ${EXPORT_DIR}/EXPORT_NOOBS
STAGE_DIR=${BASE_DIR}/export-noobs
run_stage
fi
done
-3
View File
@@ -10,6 +10,3 @@ capsh:libcap2-bin
bsdtar
grep
rsync
xz:xz-utils
curl
xxd
-10
View File
@@ -1,10 +0,0 @@
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,3 +1,2 @@
#!/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/ stretch main ui staging
+deb http://archive.raspberrypi.org/debian/ stretch main ui
-deb http://archive.raspberrypi.org/debian/ jessie main ui staging
+deb http://archive.raspberrypi.org/debian/ jessie main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui
#deb-src http://archive.raspberrypi.org/debian/ jessie main ui
+1 -1
View File
@@ -1,3 +1,3 @@
#!/bin/bash -e
#/bin/bash -e
install -m 644 files/resolv.conf ${ROOTFS_DIR}/etc/
+1 -2
View File
@@ -1,8 +1,7 @@
#!/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' ')"
IMGID="$(fdisk -l ${IMG_FILE} | sed -n 's/Disk identifier: 0x\([^ ]*\)/\1/p')"
BOOT_PARTUUID="${IMGID}-01"
ROOT_PARTUUID="${IMGID}-02"
+3 -28
View File
@@ -1,7 +1,6 @@
#!/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
@@ -15,10 +14,8 @@ 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
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~
@@ -38,37 +35,16 @@ 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}
@@ -80,8 +56,7 @@ 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
cp "$INFO_FILE" "$DEPLOY_DIR"
+5 -13
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img"
unmount_image ${IMG_FILE}
@@ -9,13 +8,12 @@ rm -f ${IMG_FILE}
rm -rf ${ROOTFS_DIR}
mkdir -p ${ROOTFS_DIR}
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)
BOOT_SIZE=$(du -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1)
TOTAL_SIZE=$(du -s ${EXPORT_ROOTFS_DIR} --exclude var/cache/apt/archives --block-size=1 | cut -f 1)
ROUND_SIZE="$((4 * 1024 * 1024))"
IMG_SIZE=$(((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024) + ROUND_SIZE) / ROUND_SIZE * ROUND_SIZE))
IMG_SIZE=$((BOOT_SIZE + TOTAL_SIZE + (400 * 1024 * 1024)))
truncate -s ${IMG_SIZE} ${IMG_FILE}
fallocate -l ${IMG_SIZE} ${IMG_FILE}
fdisk -H 255 -S 63 ${IMG_FILE} <<EOF
o
n
@@ -52,14 +50,8 @@ 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 -L rootfs -O $ROOT_FEATURES $ROOT_DEV > /dev/null
mkfs.ext4 -O ^huge_file $ROOT_DEV > /dev/null
mount -v $ROOT_DEV ${ROOTFS_DIR} -t ext4
mkdir -p ${ROOTFS_DIR}/boot
+3 -4
View File
@@ -1,7 +1,7 @@
{
"description": "NOOBS_DESCRIPTION",
"feature_level": 35120124,
"kernel": "4.9",
"kernel": "4.4",
"name": "NOOBS_NAME",
"password": "raspberry",
"release_date": "UNRELEASED",
@@ -10,10 +10,9 @@
"Pi Model",
"Pi 2",
"Pi Zero",
"Pi 3",
"Pi Compute Module 3"
"Pi 3"
],
"url": "http://www.raspbian.org/",
"username": "pi",
"version": "stretch"
"version": "jessie"
}
@@ -1,47 +1,4 @@
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
+2 -4
View File
@@ -31,10 +31,8 @@ mkdir -p ${NOOBS_DIR}
mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs
mount $BOOT_DEV ${STAGE_WORK_DIR}/rootfs/boot
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 .
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 --numeric-owner --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs --one-file-system -cpf ${NOOBS_DIR}/root.tar.xz .
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}
+3 -3
View File
@@ -16,9 +16,9 @@ bootstrap(){
fi
capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \
--arch armhf \
--keyring "${STAGE_DIR}/files/raspberrypi.gpg" \
$1 $2 $3" || rmdir "$2/debootstrap"
--arch armhf\
--no-check-gpg \
$1 $2 $3"
}
export -f bootstrap
+2 -2
View File
@@ -1,5 +1,5 @@
# dependencies_check
# $@ Dependency files to check
# $@ Dependnecy 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 "Required dependencies not installed"
echo "Reqired dependencies not installed"
echo
echo "This can be resolved on Debian/Raspbian systems by installing:"
echo "$missing"
-3
View File
@@ -1,3 +0,0 @@
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
@@ -1,3 +0,0 @@
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
+3
View File
@@ -0,0 +1,3 @@
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
@@ -0,0 +1,3 @@
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
-1
View File
@@ -1 +0,0 @@
locales
Binary file not shown.
+1 -2
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
bootstrap stretch ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/
bootstrap jessie ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/
fi
+1 -1
View File
@@ -1,5 +1,5 @@
# For more options and information see
# http://rpf.io/configtxt
# http://rpf.io/configtxtreadme
# 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
View File
@@ -1,3 +1,2 @@
#!/bin/sh
exit 101
@@ -0,0 +1,13 @@
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
View File
@@ -1 +1,2 @@
01-hosts.diff
02-persistant-net.diff
+4 -1
View File
@@ -1,6 +1,9 @@
#!/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
ln -sf /dev/null ${ROOTFS_DIR}/etc/systemd/network/99-default.link
on_chroot << EOF
dpkg-divert --add --local /lib/udev/rules.d/75-persistent-net-generator.rules
EOF
-1
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
File diff suppressed because one or more lines are too long
+2 -7
View File
@@ -1,4 +1,4 @@
ssh less fbset sudo psmisc strace ed ncdu crda
ssh locales less fbset sudo psmisc strace module-init-tools 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 nfs-common usbutils
fake-hwclock ntp nfs-common usbutils
libraspberrypi-dev libraspberrypi-doc libfreetype6-dev
dosfstools
dphys-swapfile
@@ -16,8 +16,3 @@ apt-listchanges
usb-modeswitch
apt-transport-https
libpam-chksshpwd
rpi-update
libmtp-runtime
rsync
htop
man-db
+1
View File
@@ -2,4 +2,5 @@
02-swap.diff
04-inputrc.diff
05-path.diff
06-rc_local.diff
07-resize-init.diff
+3 -22
View File
@@ -1,5 +1,7 @@
#!/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
@@ -9,36 +11,15 @@ 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
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 apply_noobs_os_config
systemctl enable resize2fs_once
EOF
fi
on_chroot << \EOF
for GRP in input spi i2c gpio; do
-3
View File
@@ -1,3 +0,0 @@
KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"
@@ -0,0 +1,31 @@
#!/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
-20
View File
@@ -1,20 +0,0 @@
#!/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
@@ -0,0 +1,11 @@
[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
+1 -2
View File
@@ -1,4 +1,3 @@
wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek
wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-ralink firmware-realtek
raspberrypi-net-mods
dhcpcd5
net-tools
+1 -1
View File
@@ -1,3 +1,3 @@
[Service]
ExecStart=
ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w
ExecStart=/sbin/dhcpcd -q -w
-3
View File
@@ -1,4 +1 @@
IMG_SUFFIX="-lite"
if [ "${USE_QEMU}" = "1" ]; then
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
fi
+1 -1
View File
@@ -1,2 +1,2 @@
NOOBS_NAME="Raspbian Lite"
NOOBS_DESCRIPTION="A port of Debian Stretch for the Raspberry Pi (minimal version)"
NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (minimal version)"
-1
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
+1 -4
View File
@@ -1,13 +1,10 @@
gstreamer1.0-x gstreamer1.0-omx gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
xpdf gtk2-engines alsa-utils
desktop-base
git
git-core rpi-update
omxplayer
raspberrypi-artwork
policykit-1
gvfs
rfkill
chromium-browser rpi-chromium-mods
gldriver-test
fonts-droid-fallback
fonts-liberation2
+1
View File
@@ -6,3 +6,4 @@ 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
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
+4 -3
View File
@@ -8,10 +8,11 @@ python-serial python3-serial
python-picamera python3-picamera
debian-reference-en dillo x2x
raspberrypi-net-mods raspberrypi-ui-mods
smartsim
smartsim penguinspuzzle
python-pip python3-pip
python3-numpy
pypy
python3-pifacecommon python3-pifacedigitalio python3-pifacedigital-scratch-handler python-pifacecommon python-pifacedigitalio
minecraft-pi python-minecraftpi
alacarte rc-gui sense-hat
claws-mail
@@ -22,13 +23,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
-19
View File
@@ -1,19 +0,0 @@
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
-3
View File
@@ -1,4 +1 @@
IMG_SUFFIX="-4GB"
if [ "${USE_QEMU}" = "1" ]; then
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
fi
-1
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi
-3
View File
@@ -1,4 +1 @@
IMG_SUFFIX=""
if [ "${USE_QEMU}" = "1" ]; then
export IMG_SUFFIX="${IMG_SUFFIX}-qemu"
fi
+2 -2
View File
@@ -1,2 +1,2 @@
NOOBS_NAME="Raspbian"
NOOBS_DESCRIPTION="A port of Debian Stretch for the Raspberry Pi (full desktop version)"
NOOBS_NAME="Raspbian with PIXEL"
NOOBS_DESCRIPTION="A port of Debian jessie for the Raspberry Pi (full desktop version)"
-1
View File
@@ -1,5 +1,4 @@
#!/bin/bash -e
if [ ! -d ${ROOTFS_DIR} ]; then
copy_previous
fi