Compare commits
No commits in common. "yunohost-bullseye" and "yunohost-buster" have entirely different histories.
yunohost-b
...
yunohost-b
35 changed files with 102 additions and 366 deletions
39
.github/workflows/main.yml
vendored
39
.github/workflows/main.yml
vendored
|
@ -1,39 +0,0 @@
|
||||||
# This is a basic workflow to help you get started with Actions
|
|
||||||
|
|
||||||
name: Build yunohost rpi image
|
|
||||||
|
|
||||||
# Controls when the workflow will run
|
|
||||||
on:
|
|
||||||
# Triggers the workflow on push or pull request events but only for the "yunohost-buster" branch
|
|
||||||
push:
|
|
||||||
branches: [ "yunohost-bullseye" ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ "yunohost-bullseye" ]
|
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
|
||||||
# This workflow contains a single job called "build"
|
|
||||||
build:
|
|
||||||
# The type of runner that the job will run on
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
|
|
||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
||||||
steps:
|
|
||||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
# Runs a set of commands using the runners shell
|
|
||||||
- name: Run a multi-line script
|
|
||||||
run: |
|
|
||||||
sudo apt update
|
|
||||||
sudo apt-get -y install coreutils quilt parted qemu-user-static debootstrap zerofree zip dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc qemu-utils kpartx gpg pigz
|
|
||||||
sudo curl -fsSL https://get.docker.com -o get-docker.sh
|
|
||||||
sudo sh ./get-docker.sh
|
|
||||||
sudo ./build-docker.sh
|
|
||||||
- uses: actions/upload-artifact@v3
|
|
||||||
with:
|
|
||||||
name: Upload deploy directory as artifact
|
|
||||||
path: deploy/
|
|
|
@ -1,4 +1,4 @@
|
||||||
ARG BASE_IMAGE=debian:bullseye
|
ARG BASE_IMAGE=debian:buster
|
||||||
FROM ${BASE_IMAGE}
|
FROM ${BASE_IMAGE}
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
@ -8,8 +8,7 @@ RUN apt-get -y update && \
|
||||||
git vim parted \
|
git vim parted \
|
||||||
quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools \
|
quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools \
|
||||||
libarchive-tools libcap2-bin rsync grep udev xz-utils curl xxd file kmod bc\
|
libarchive-tools libcap2-bin rsync grep udev xz-utils curl xxd file kmod bc\
|
||||||
binfmt-support ca-certificates qemu-utils kpartx fdisk gpg pigz\
|
binfmt-support ca-certificates qemu-utils kpartx \
|
||||||
procps lsof\
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY . /pi-gen/
|
COPY . /pi-gen/
|
||||||
|
|
87
README.md
87
README.md
|
@ -15,30 +15,12 @@ To install the required dependencies for `pi-gen` you should run:
|
||||||
```bash
|
```bash
|
||||||
apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \
|
apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \
|
||||||
dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \
|
dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \
|
||||||
qemu-utils kpartx gpg pigz
|
qemu-utils kpartx
|
||||||
```
|
```
|
||||||
|
|
||||||
The file `depends` contains a list of tools needed. The format of this
|
The file `depends` contains a list of tools needed. The format of this
|
||||||
package is `<tool>[:<debian-package>]`.
|
package is `<tool>[:<debian-package>]`.
|
||||||
|
|
||||||
## Getting started with building your images
|
|
||||||
|
|
||||||
Getting started is as simple as cloning this repository on your build machine. You
|
|
||||||
can do so with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone --depth 1 https://github.com/RPI-Distro/pi-gen.git
|
|
||||||
```
|
|
||||||
|
|
||||||
Using `--depth 1` with `git clone` will create a shallow clone, only containing
|
|
||||||
the latest revision of the repository. Do not do this on your development machine.
|
|
||||||
|
|
||||||
Also, be careful to clone the repository to a base path **NOT** containing spaces.
|
|
||||||
This configuration is not supported by debootstrap and will lead to `pi-gen` not
|
|
||||||
running.
|
|
||||||
|
|
||||||
After cloning the repository, you can move to the next step and start configuring
|
|
||||||
your build.
|
|
||||||
|
|
||||||
## Config
|
## Config
|
||||||
|
|
||||||
|
@ -55,7 +37,7 @@ The following environment variables are supported:
|
||||||
but you should use something else for a customized version. Export files
|
but you should use something else for a customized version. Export files
|
||||||
in stages may add suffixes to `IMG_NAME`.
|
in stages may add suffixes to `IMG_NAME`.
|
||||||
|
|
||||||
* `USE_QCOW2` **EXPERIMENTAL** (Default: `0` )
|
* `USE_QCOW2`(Default: `1` )
|
||||||
|
|
||||||
Instead of using traditional way of building the rootfs of every stage in
|
Instead of using traditional way of building the rootfs of every stage in
|
||||||
single subdirectories and copying over the previous one to the next one,
|
single subdirectories and copying over the previous one to the next one,
|
||||||
|
@ -78,9 +60,9 @@ The following environment variables are supported:
|
||||||
that the network block device is not disconnected correctly after the Docker process has
|
that the network block device is not disconnected correctly after the Docker process has
|
||||||
ended abnormally. In that case see [Disconnect an image if something went wrong](#Disconnect-an-image-if-something-went-wrong)
|
ended abnormally. In that case see [Disconnect an image if something went wrong](#Disconnect-an-image-if-something-went-wrong)
|
||||||
|
|
||||||
* `RELEASE` (Default: bullseye)
|
* `RELEASE` (Default: buster)
|
||||||
|
|
||||||
The release version to build images against. Valid values are jessie, stretch,
|
The release version to build images against. Valid values are jessie, stretch
|
||||||
buster, bullseye, and testing.
|
buster, bullseye, and testing.
|
||||||
|
|
||||||
* `APT_PROXY` (Default: unset)
|
* `APT_PROXY` (Default: unset)
|
||||||
|
@ -116,28 +98,9 @@ The following environment variables are supported:
|
||||||
|
|
||||||
Output directory for target system images and NOOBS bundles.
|
Output directory for target system images and NOOBS bundles.
|
||||||
|
|
||||||
* `DEPLOY_COMPRESSION` (Default: `zip`)
|
* `DEPLOY_ZIP` (Default: `1`)
|
||||||
|
|
||||||
Set to:
|
Setting to `0` will deploy the actual image (`.img`) instead of a zipped image (`.zip`).
|
||||||
* `none` to deploy the actual image (`.img`).
|
|
||||||
* `zip` to deploy a zipped image (`.zip`).
|
|
||||||
* `gz` to deploy a gzipped image (`.img.gz`).
|
|
||||||
* `xz` to deploy a xzipped image (`.img.xz`).
|
|
||||||
|
|
||||||
|
|
||||||
* `DEPLOY_ZIP` (Deprecated)
|
|
||||||
|
|
||||||
This option has been deprecated in favor of `DEPLOY_COMPRESSION`.
|
|
||||||
|
|
||||||
If `DEPLOY_ZIP=0` is still present in your config file, the behavior is the
|
|
||||||
same as with `DEPLOY_COMPRESSION=none`.
|
|
||||||
|
|
||||||
* `COMPRESSION_LEVEL` (Default: `6`)
|
|
||||||
|
|
||||||
Compression level to be used when using `zip`, `gz` or `xz` for
|
|
||||||
`DEPLOY_COMPRESSION`. From 0 to 9 (refer to the tool man page for more
|
|
||||||
information on this. Usually 0 is no compression but very fast, up to 9 with
|
|
||||||
the best compression but very slow ).
|
|
||||||
|
|
||||||
* `USE_QEMU` (Default: `"0"`)
|
* `USE_QEMU` (Default: `"0"`)
|
||||||
|
|
||||||
|
@ -357,7 +320,7 @@ maintenance and allows for more easy customization.
|
||||||
|
|
||||||
- **Stage 5** - The Raspbian Full image. More development
|
- **Stage 5** - The Raspbian Full image. More development
|
||||||
tools, an email client, learning tools like Scratch, specialized packages
|
tools, an email client, learning tools like Scratch, specialized packages
|
||||||
like sonic-pi, office productivity, etc.
|
like sonic-pi, office productivity, etc.
|
||||||
|
|
||||||
### Stage specification
|
### Stage specification
|
||||||
|
|
||||||
|
@ -409,8 +372,8 @@ Example:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
root@build-machine:~/$ lsblk | grep nbd
|
root@build-machine:~/$ lsblk | grep nbd
|
||||||
nbd1 43:32 0 10G 0 disk
|
nbd1 43:32 0 10G 0 disk
|
||||||
├─nbd1p1 43:33 0 10G 0 part
|
├─nbd1p1 43:33 0 10G 0 part
|
||||||
└─nbd1p1 253:0 0 10G 0 part
|
└─nbd1p1 253:0 0 10G 0 part
|
||||||
|
|
||||||
root@build-machine:~/$ ps xa | grep qemu-nbd
|
root@build-machine:~/$ ps xa | grep qemu-nbd
|
||||||
|
@ -434,7 +397,7 @@ It can happen, that your build stops in case of an error. Normally `./build.sh`
|
||||||
A typical message indicating that there are some orphaned device mapper entries is this:
|
A typical message indicating that there are some orphaned device mapper entries is this:
|
||||||
|
|
||||||
```
|
```
|
||||||
Failed to set NBD socket
|
Failed to set NBD socket
|
||||||
Disconnect client, due to: Unexpected end-of-file before all bytes were read
|
Disconnect client, due to: Unexpected end-of-file before all bytes were read
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -457,30 +420,15 @@ If that happens go through the following steps:
|
||||||
or
|
or
|
||||||
sudo ./imagetool.sh --cleanup
|
sudo ./imagetool.sh --cleanup
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: The `imagetool.sh` command will cleanup any /dev/nbdX that is not connected to a running `qemu-nbd` daemon. Be careful if you use network block devices for other tasks utilizing NBDs on your build machine as well.
|
Note: The `imagetool.sh` command will cleanup any /dev/nbdX that is not connected to a running `qemu-nbd` daemon. Be careful if you use network block devices for other tasks utilizing NBDs on your build machine as well.
|
||||||
|
|
||||||
Now you should be able to start a new build without running into troubles again. Most of the time, especially when using Docker build, you will only need no. 3 to get everything up and running again.
|
Now you should be able to start a new build without running into troubles again. Most of the time, especially when using Docker build, you will only need no. 3 to get everything up and running again.
|
||||||
|
|
||||||
# Troubleshooting
|
# Troubleshooting
|
||||||
|
|
||||||
## `64 Bit Systems`
|
## `64 Bit Systems`
|
||||||
Please note there is currently an issue when compiling with a 64 Bit OS. See
|
Please note there is currently an issue when compiling with a 64 Bit OS. See https://github.com/RPi-Distro/pi-gen/issues/271
|
||||||
https://github.com/RPi-Distro/pi-gen/issues/271
|
|
||||||
|
|
||||||
A 64 bit image can be generated from the `arm64` branch in this repository. Just
|
|
||||||
replace the command from [this section](#getting-started-with-building-your-images)
|
|
||||||
by the one below, and follow the rest of the documentation:
|
|
||||||
```bash
|
|
||||||
git clone --depth 1 --branch arm64 https://github.com/RPI-Distro/pi-gen.git
|
|
||||||
```
|
|
||||||
|
|
||||||
If you want to generate a 64 bits image from a Raspberry Pi running a 32 bits
|
|
||||||
version, you need to add `arm_64bit=1` to your `config.txt` file and reboot your
|
|
||||||
machine. This will restart your machine with a 64 bits kernel. This will only
|
|
||||||
work from a Raspberry Pi with a 64-bit capable processor (i.e. Raspberry Pi Zero
|
|
||||||
2, Raspberry Pi 3 or Raspberry Pi 4).
|
|
||||||
|
|
||||||
|
|
||||||
## `binfmt_misc`
|
## `binfmt_misc`
|
||||||
|
|
||||||
|
@ -489,16 +437,11 @@ possible to make use of `pi-gen` on an x86_64 system, even though it will be run
|
||||||
ARM binaries. This requires support from the [`binfmt_misc`](https://en.wikipedia.org/wiki/Binfmt_misc)
|
ARM binaries. This requires support from the [`binfmt_misc`](https://en.wikipedia.org/wiki/Binfmt_misc)
|
||||||
kernel module.
|
kernel module.
|
||||||
|
|
||||||
You may see one of the following errors:
|
You may see the following error:
|
||||||
|
|
||||||
```
|
```
|
||||||
update-binfmts: warning: Couldn't load the binfmt_misc module.
|
update-binfmts: warning: Couldn't load the binfmt_misc module.
|
||||||
```
|
```
|
||||||
```
|
|
||||||
W: Failure trying to run: chroot "/pi-gen/work/test/stage0/rootfs" /bin/true
|
|
||||||
and/or
|
|
||||||
chroot: failed to run command '/bin/true': Exec format error
|
|
||||||
```
|
|
||||||
|
|
||||||
To resolve this, ensure that the following files are available (install them if necessary):
|
To resolve this, ensure that the following files are available (install them if necessary):
|
||||||
|
|
||||||
|
@ -508,5 +451,3 @@ To resolve this, ensure that the following files are available (install them if
|
||||||
```
|
```
|
||||||
|
|
||||||
You may also need to load the module by hand - run `modprobe binfmt_misc`.
|
You may also need to load the module by hand - run `modprobe binfmt_misc`.
|
||||||
|
|
||||||
If you are using WSL to build you may have to enable the service `sudo update-binfmts --enable`
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ fi
|
||||||
CONTAINER_NAME=${CONTAINER_NAME:-pigen_work}
|
CONTAINER_NAME=${CONTAINER_NAME:-pigen_work}
|
||||||
CONTINUE=${CONTINUE:-0}
|
CONTINUE=${CONTINUE:-0}
|
||||||
PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0}
|
PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0}
|
||||||
PIGEN_DOCKER_OPTS=${PIGEN_DOCKER_OPTS:-""}
|
PIGEN_DOCKER_OPTS=${PIGEN_DOCKER_OPTS:-""}
|
||||||
|
|
||||||
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 'config'" 1>&2
|
||||||
|
@ -75,7 +75,16 @@ fi
|
||||||
# Modify original build-options to allow config file to be mounted in the docker container
|
# Modify original build-options to allow config file to be mounted in the docker container
|
||||||
BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')"
|
BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')"
|
||||||
|
|
||||||
${DOCKER} build --build-arg BASE_IMAGE=debian:bullseye -t pi-gen "${DIR}"
|
# Check the arch of the machine we're running on. If it's 64-bit, use a 32-bit base image instead
|
||||||
|
case "$(uname -m)" in
|
||||||
|
x86_64|aarch64)
|
||||||
|
BASE_IMAGE=i386/debian:buster
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
BASE_IMAGE=debian:buster
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
${DOCKER} build --build-arg BASE_IMAGE=${BASE_IMAGE} -t pi-gen "${DIR}"
|
||||||
|
|
||||||
if [ "${CONTAINER_EXISTS}" != "" ]; then
|
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
|
||||||
|
@ -89,8 +98,6 @@ if [ "${CONTAINER_EXISTS}" != "" ]; then
|
||||||
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
|
--volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \
|
||||||
pi-gen \
|
pi-gen \
|
||||||
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
||||||
# binfmt_misc is sometimes not mounted with debian bullseye image
|
|
||||||
(mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true) &&
|
|
||||||
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
|
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
|
||||||
rsync -av work/*/build.log deploy/" &
|
rsync -av work/*/build.log deploy/" &
|
||||||
wait "$!"
|
wait "$!"
|
||||||
|
@ -105,8 +112,6 @@ else
|
||||||
-e "GIT_HASH=${GIT_HASH}" \
|
-e "GIT_HASH=${GIT_HASH}" \
|
||||||
pi-gen \
|
pi-gen \
|
||||||
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static &&
|
||||||
# binfmt_misc is sometimes not mounted with debian bullseye image
|
|
||||||
(mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true) &&
|
|
||||||
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
|
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
|
||||||
rsync -av work/*/build.log deploy/" &
|
rsync -av work/*/build.log deploy/" &
|
||||||
wait "$!"
|
wait "$!"
|
||||||
|
|
34
build.sh
34
build.sh
|
@ -99,7 +99,7 @@ run_stage(){
|
||||||
STAGE_WORK_DIR="${WORK_DIR}/${STAGE}"
|
STAGE_WORK_DIR="${WORK_DIR}/${STAGE}"
|
||||||
ROOTFS_DIR="${STAGE_WORK_DIR}"/rootfs
|
ROOTFS_DIR="${STAGE_WORK_DIR}"/rootfs
|
||||||
|
|
||||||
if [ "${USE_QCOW2}" = "1" ]; then
|
if [ "${USE_QCOW2}" = "1" ]; then
|
||||||
if [ ! -f SKIP ]; then
|
if [ ! -f SKIP ]; then
|
||||||
load_qimage
|
load_qimage
|
||||||
fi
|
fi
|
||||||
|
@ -109,7 +109,7 @@ run_stage(){
|
||||||
unmount "${WORK_DIR}/${STAGE}"
|
unmount "${WORK_DIR}/${STAGE}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f SKIP_IMAGES ]; then
|
if [ ! -f SKIP_IMAGES ]; then
|
||||||
if [ -f "${STAGE_DIR}/EXPORT_IMAGE" ]; then
|
if [ -f "${STAGE_DIR}/EXPORT_IMAGE" ]; then
|
||||||
EXPORT_DIRS="${EXPORT_DIRS} ${STAGE_DIR}"
|
EXPORT_DIRS="${EXPORT_DIRS} ${STAGE_DIR}"
|
||||||
|
@ -133,7 +133,7 @@ run_stage(){
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${USE_QCOW2}" = "1" ]; then
|
if [ "${USE_QCOW2}" = "1" ]; then
|
||||||
unload_qimage
|
unload_qimage
|
||||||
else
|
else
|
||||||
# make sure we are not umounting during export-image stage
|
# make sure we are not umounting during export-image stage
|
||||||
|
@ -155,14 +155,6 @@ if [ "$(id -u)" != "0" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
if [[ $BASE_DIR = *" "* ]]; then
|
|
||||||
echo "There is a space in the base path of pi-gen"
|
|
||||||
echo "This is not a valid setup supported by debootstrap."
|
|
||||||
echo "Please remove the spaces, or move pi-gen directory to a base path without spaces" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
export BASE_DIR
|
export BASE_DIR
|
||||||
|
|
||||||
if [ -f config ]; then
|
if [ -f config ]; then
|
||||||
|
@ -203,27 +195,17 @@ fi
|
||||||
export USE_QEMU="${USE_QEMU:-0}"
|
export USE_QEMU="${USE_QEMU:-0}"
|
||||||
export IMG_DATE="${IMG_DATE:-"$(date +%Y-%m-%d)"}"
|
export IMG_DATE="${IMG_DATE:-"$(date +%Y-%m-%d)"}"
|
||||||
export IMG_FILENAME="${IMG_FILENAME:-"${IMG_DATE}-${IMG_NAME}"}"
|
export IMG_FILENAME="${IMG_FILENAME:-"${IMG_DATE}-${IMG_NAME}"}"
|
||||||
export ARCHIVE_FILENAME="${ARCHIVE_FILENAME:-"image_${IMG_DATE}-${IMG_NAME}"}"
|
export ZIP_FILENAME="${ZIP_FILENAME:-"image_${IMG_DATE}-${IMG_NAME}"}"
|
||||||
|
|
||||||
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
export SCRIPT_DIR="${BASE_DIR}/scripts"
|
||||||
export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_NAME}"}"
|
export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_NAME}"}"
|
||||||
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
|
export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"}
|
||||||
|
export DEPLOY_ZIP="${DEPLOY_ZIP:-1}"
|
||||||
# DEPLOY_ZIP was deprecated in favor of DEPLOY_COMPRESSION
|
|
||||||
# This preserve the old behavior with DEPLOY_ZIP=0 where no archive was created
|
|
||||||
if [ -z "${DEPLOY_COMPRESSION}" ] && [ "${DEPLOY_ZIP:-1}" = "0" ]; then
|
|
||||||
echo "DEPLOY_ZIP has been deprecated in favor of DEPLOY_COMPRESSION"
|
|
||||||
echo "Similar behavior to DEPLOY_ZIP=0 can be obtained with DEPLOY_COMPRESSION=none"
|
|
||||||
echo "Please update your config file"
|
|
||||||
DEPLOY_COMPRESSION=none
|
|
||||||
fi
|
|
||||||
export DEPLOY_COMPRESSION=${DEPLOY_COMPRESSION:-zip}
|
|
||||||
export COMPRESSION_LEVEL=${COMPRESSION_LEVEL:-6}
|
|
||||||
export LOG_FILE="${WORK_DIR}/build.log"
|
export LOG_FILE="${WORK_DIR}/build.log"
|
||||||
|
|
||||||
export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi}
|
export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi}
|
||||||
|
|
||||||
export RELEASE=${RELEASE:-bullseye}
|
export RELEASE=${RELEASE:-buster}
|
||||||
export WPA_ESSID
|
export WPA_ESSID
|
||||||
export WPA_PASSWORD
|
export WPA_PASSWORD
|
||||||
export WPA_COUNTRY
|
export WPA_COUNTRY
|
||||||
|
@ -269,7 +251,7 @@ source "${SCRIPT_DIR}/common"
|
||||||
source "${SCRIPT_DIR}/dependencies_check"
|
source "${SCRIPT_DIR}/dependencies_check"
|
||||||
|
|
||||||
export NO_PRERUN_QCOW2="${NO_PRERUN_QCOW2:-1}"
|
export NO_PRERUN_QCOW2="${NO_PRERUN_QCOW2:-1}"
|
||||||
export USE_QCOW2="${USE_QCOW2:-0}"
|
export USE_QCOW2="${USE_QCOW2:-1}"
|
||||||
export BASE_QCOW2_SIZE=${BASE_QCOW2_SIZE:-12G}
|
export BASE_QCOW2_SIZE=${BASE_QCOW2_SIZE:-12G}
|
||||||
source "${SCRIPT_DIR}/qcow2_handling"
|
source "${SCRIPT_DIR}/qcow2_handling"
|
||||||
if [ "${USE_QCOW2}" = "1" ]; then
|
if [ "${USE_QCOW2}" = "1" ]; then
|
||||||
|
@ -379,7 +361,7 @@ for EXPORT_DIR in ${EXPORT_DIRS}; do
|
||||||
|
|
||||||
else
|
else
|
||||||
run_stage
|
run_stage
|
||||||
fi
|
fi
|
||||||
if [ "${USE_QEMU}" != "1" ]; then
|
if [ "${USE_QEMU}" != "1" ]; then
|
||||||
if [ -e "${EXPORT_DIR}/EXPORT_NOOBS" ]; then
|
if [ -e "${EXPORT_DIR}/EXPORT_NOOBS" ]; then
|
||||||
# shellcheck source=/dev/null
|
# shellcheck source=/dev/null
|
||||||
|
|
4
config
4
config
|
@ -1,6 +1,6 @@
|
||||||
IMG_NAME="yunohost"
|
IMG_NAME="yunohost"
|
||||||
RELEASE="bullseye"
|
RELEASE="buster"
|
||||||
USE_QEMU="0"
|
USE_QEMU="1"
|
||||||
LOCALE_DEFAULT="en_US.UTF-8"
|
LOCALE_DEFAULT="en_US.UTF-8"
|
||||||
TARGET_HOSTNAME="yunohost"
|
TARGET_HOSTNAME="yunohost"
|
||||||
KEYBOARD_KEYMAP="us"
|
KEYBOARD_KEYMAP="us"
|
||||||
|
|
2
depends
2
depends
|
@ -19,5 +19,3 @@ lsmod:kmod
|
||||||
bc
|
bc
|
||||||
qemu-nbd:qemu-utils
|
qemu-nbd:qemu-utils
|
||||||
kpartx
|
kpartx
|
||||||
gpg
|
|
||||||
pigz
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
userconf-pi
|
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
on_chroot << EOF
|
|
||||||
SUDO_USER="${FIRST_USER_NAME}" rename-user -f -s
|
|
||||||
EOF
|
|
|
@ -78,7 +78,7 @@ cp "$ROOTFS_DIR/etc/rpi-issue" "$INFO_FILE"
|
||||||
|
|
||||||
mkdir -p "${DEPLOY_DIR}"
|
mkdir -p "${DEPLOY_DIR}"
|
||||||
|
|
||||||
rm -f "${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.*"
|
rm -f "${DEPLOY_DIR}/${ZIP_FILENAME}${IMG_SUFFIX}.zip"
|
||||||
rm -f "${DEPLOY_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img"
|
rm -f "${DEPLOY_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img"
|
||||||
|
|
||||||
mv "$INFO_FILE" "$DEPLOY_DIR/"
|
mv "$INFO_FILE" "$DEPLOY_DIR/"
|
||||||
|
@ -95,22 +95,11 @@ else
|
||||||
make_bootable_image "${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.qcow2" "$IMG_FILE"
|
make_bootable_image "${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.qcow2" "$IMG_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "${DEPLOY_COMPRESSION}" in
|
if [ "${DEPLOY_ZIP}" == "1" ]; then
|
||||||
zip)
|
|
||||||
pushd "${STAGE_WORK_DIR}" > /dev/null
|
pushd "${STAGE_WORK_DIR}" > /dev/null
|
||||||
zip -"${COMPRESSION_LEVEL}" \
|
zip "${DEPLOY_DIR}/${ZIP_FILENAME}${IMG_SUFFIX}.zip" \
|
||||||
"${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.zip" "$(basename "${IMG_FILE}")"
|
"$(basename "${IMG_FILE}")"
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
;;
|
else
|
||||||
gz)
|
mv "$IMG_FILE" "$DEPLOY_DIR/"
|
||||||
pigz --force -"${COMPRESSION_LEVEL}" "$IMG_FILE" --stdout > \
|
fi
|
||||||
"${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.img.gz"
|
|
||||||
;;
|
|
||||||
xz)
|
|
||||||
xz --compress --force --threads 0 --memlimit-compress=50% -"${COMPRESSION_LEVEL}" \
|
|
||||||
--stdout "$IMG_FILE" > "${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.img.xz"
|
|
||||||
;;
|
|
||||||
none | *)
|
|
||||||
cp "$IMG_FILE" "$DEPLOY_DIR/"
|
|
||||||
;;
|
|
||||||
esac
|
|
|
@ -1,15 +1,18 @@
|
||||||
{
|
{
|
||||||
"description": "NOOBS_DESCRIPTION",
|
"description": "NOOBS_DESCRIPTION",
|
||||||
|
"feature_level": 35120124,
|
||||||
"kernel": "KERNEL",
|
"kernel": "KERNEL",
|
||||||
"name": "NOOBS_NAME",
|
"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_models": [
|
"supported_models": [
|
||||||
"Pi Zero 2",
|
"Pi Model",
|
||||||
|
"Pi 2",
|
||||||
|
"Pi Zero",
|
||||||
"Pi 3",
|
"Pi 3",
|
||||||
"Pi 4",
|
|
||||||
"Pi Compute Module 3",
|
"Pi Compute Module 3",
|
||||||
"Pi Compute Module 4"
|
"Pi 4"
|
||||||
],
|
],
|
||||||
"url": "http://www.raspbian.org/",
|
"url": "http://www.raspbian.org/",
|
||||||
"username": "pi",
|
"username": "pi",
|
||||||
|
|
|
@ -1,119 +1,4 @@
|
||||||
UNRELEASED:
|
UNRELEASED:
|
||||||
*
|
|
||||||
2022-04-04:
|
|
||||||
* Default "pi” user has been removed; the first-boot wizard enforces the creation of a new user account
|
|
||||||
* rename-user script added to allow existing users to be renamed by temporarily rebooting to cut-down first-boot wizard
|
|
||||||
* Overscan now managed by xrandr under KMS, can be set independently for both monitors, and takes effect on the fly rather than requiring reboot
|
|
||||||
* GTK3 switch control now used in place of paired radio buttons throughout
|
|
||||||
* piwiz - first-boot wizard now runs in a separate session as a different user with different graphics
|
|
||||||
* piwiz - first-boot wizard now has automatic pairing for discoverable Bluetooth mice and keyboards
|
|
||||||
* lxinput - keyboard delay and repeat settings now persist across reboots under mutter
|
|
||||||
* raspi-config / rc_gui - removed pixel doubling option when KMS driver in use
|
|
||||||
* raspi-config - removed composition manager option when legacy driver in use
|
|
||||||
* arandr - restored support for interlaced displays
|
|
||||||
* mutter - implemented more intuitive window and application cycling behaviour
|
|
||||||
* pi-greeter - rebuilt for GTK3
|
|
||||||
* Bug fix - graphical corruption in system tray icons
|
|
||||||
* Bug fix - desktop items vanishing when dragged
|
|
||||||
* Bug fix - terminal windows not focussed correctly when launched
|
|
||||||
* Bug fix - crash after multiple update checks in updater plugin
|
|
||||||
* Bug fix - Raspberry Pi keyboard auto-detect by wizard was broken in previous release
|
|
||||||
* Bug fix - spurious "connected” dialog box shown when reconnecting to Bluetooth LE devices on boot
|
|
||||||
* Support for experimental Wayland backend added - can be enabled as an advanced option in raspi-config
|
|
||||||
* Various small bug fixes and graphical tweaks
|
|
||||||
* Chromium upgraded to version 98.0.4758.106
|
|
||||||
* FFmpeg HW acceleration improved
|
|
||||||
* OpenJDK 17 now defaults to 'client' JVM for ARMv6 compatibility
|
|
||||||
* Raspberry Pi firmware 69277bc713133a54a1d20554d79544da1ae2b6ca
|
|
||||||
* Linux kernel 5.15.30
|
|
||||||
2022-01-28:
|
|
||||||
* Policykit CVE-2021-4034 fix
|
|
||||||
* rc_gui - add combo box to allow resolution to be set for VNC connections
|
|
||||||
* rc_gui - camera interface switch removed
|
|
||||||
* lxpanel - remove appearance settings from preferences dialog; instead add menu option to open general Appearance Settings application
|
|
||||||
* lxpanel - add ellipses to menu items which open dialogs
|
|
||||||
* lxinput - read current mouse acceleration directly from xinput
|
|
||||||
* lxinput - use device IDs rather than names to cope with devices changing when powered-down
|
|
||||||
* lxinput - remove redundant changes to openbox config file
|
|
||||||
* plymouth - set KillMode to mixed to suppress warning message
|
|
||||||
* raspi-config - add option to switch composite video
|
|
||||||
* raspi-config - add option to switch to legacy camera mode
|
|
||||||
* raspi-config - add option to set resolution for headless connections
|
|
||||||
* raspberrypi-ui-mods - disable mutter when VNC server is running and fall back to openbox
|
|
||||||
* pipanel - add command-line option to open on arbitrary tab
|
|
||||||
* lxplug-network - suppress ’scan received’ logging message
|
|
||||||
* raspberrypi-ui-mods - set hover colour for taskbar items based on taskbar colour, not system highlight colour
|
|
||||||
* Legacy camera applications and libraries reinstalled (32-bit only)
|
|
||||||
* Bug fix - lxinput - lxsession config file not being written on first attempt
|
|
||||||
* Bug fix - lxinput - set timer for file write to prevent slider slowing down
|
|
||||||
* Bug fix - lxinput - write values to gsettings as well as xinput and xsettings to take effect within mutter
|
|
||||||
* Bug fix - lxinput - fix failure to parse and write non-English numeric formats
|
|
||||||
* Bug fix - arandr - various fixes to parsing of non-standard EDID blocks to enable model and serial to be correctly extracted
|
|
||||||
* Bug fix - arandr - refresh rate calculated to 3 decimal places for monitors which require it
|
|
||||||
* Bug fix - arandr - enable setting of left and right orientation
|
|
||||||
* Bug fix - arandr - add compatibility with new touchscreen driver
|
|
||||||
* Bug fix - arandr - apply settings correctly to DSI and composite displays
|
|
||||||
* Bug fix - lxplug-magnifier - fix crash when opening preferences without required magnifier package installed
|
|
||||||
* Bug fix - piwiz - launch screen reader install prompt as a new process to prevent audio lockups crashing wizard
|
|
||||||
* Bug fix - lxpanel - not loading some plugins (cpufreq, minimise all windows) due to icon loading code not compatible with GTK+3
|
|
||||||
* Bug fix - gtk+3 - disabled new GDK touch events to enable double-clicks to be detected on touchscreen
|
|
||||||
* Bug fix - xrdp - included backports from bookworm version of xrdp and xorgxrdp to restore window frames with mutter over xrdp connections
|
|
||||||
* Update various translations
|
|
||||||
* udisks2 added to lite image
|
|
||||||
* mkvtoolnix added to lite image
|
|
||||||
* 7z and zip support added to lite image
|
|
||||||
* gnome-keyring added to desktop images
|
|
||||||
* Raspberry Pi firmware c6d56567ff6ef17fd85159770f22abcf2c5953ed
|
|
||||||
* Linux kernel 5.10.92
|
|
||||||
2021-10-30:
|
|
||||||
* Based on Debian version 11 (bullseye)
|
|
||||||
* Desktop components (lxpanel and all plugins, libfm, pcmanfm) now built against GTK+3
|
|
||||||
* Applications (piwiz, pipanel, rc_gui, lxinput) now built against GTK+3
|
|
||||||
* PiXflat GTK+3 theme updated with numerous changes to support the above
|
|
||||||
* GTK+3 : toolbar icon size setting added
|
|
||||||
* GTK+3 : ability to request client-side decoration on windows added
|
|
||||||
* GTK+3 : setting for indent for frame labels in custom style added
|
|
||||||
* mutter window manager used instead of openbox on devices with 2GB or more of RAM
|
|
||||||
* mutter : title bar icon behaviour and appearance modified to match openbox
|
|
||||||
* mutter : additional keyboard shortcuts added
|
|
||||||
* mutter : various performance enhancements
|
|
||||||
* mutter compatibility added to screen magnifier
|
|
||||||
* Numerous changes to Appearance Settings application to support GTK+3 and mutter
|
|
||||||
* Updater plugin added to lxpanel to detect and install software updates
|
|
||||||
* File manager view options simplified to either list or icons, with separate menu option for thumbnails
|
|
||||||
* New file manager toolbar icons
|
|
||||||
* KMS used as default display driver
|
|
||||||
* Modifications to HDMI audio output selection to support the above
|
|
||||||
* xcompmgr enabled when openbox is running under KMS
|
|
||||||
* New default camera subsystem based on libcamera
|
|
||||||
* New camera demo applications (libcamera-still and libcamera-vid) have replaced raspistill and raspivid
|
|
||||||
* Legacy camera subsystem removed from 64-bit RPi OS (still available on 32-bit)
|
|
||||||
* Chromium upgraded to version 92.0.4515.98
|
|
||||||
* VLC media player upgraded to version 3.0.16
|
|
||||||
* Spurious drive removal warning after use of SD card copier removed
|
|
||||||
* Bookshelf application now includes Custom PC magazine
|
|
||||||
* Various translation updates - Italian, Korean, Polish, German, Armenian
|
|
||||||
* Startup wizard now installs Japanese fonts if needed
|
|
||||||
* Progress and information dialog boxes for lxpanel plugins now common to lxpanel, rather than in individual plugins
|
|
||||||
* Icon handling code for lxpanel plugins now common to lxpanel
|
|
||||||
* Package with 4K version of Raspberry Pi wallpaper added to Recommended Software
|
|
||||||
* Python Games and Minecraft removed from Recommended Software - neither is compatible with bullseye
|
|
||||||
* Bluetooth pairing and connection dialogs updated for compatibility with more devices
|
|
||||||
* Bluetooth devices always disconnected before removal to speed up removal process
|
|
||||||
* Bluetooth pairing dialog now only shows devices which offer services which are usable by Pi
|
|
||||||
* Separate Bluetooth unpair dialog removed - unpair now an option for each individual device
|
|
||||||
* Bug fix - mutter : header bar colours not updating when theme is changed
|
|
||||||
* Bug fix - GTK+3 : tooltips being displayed incorrectly at bottom of screen
|
|
||||||
* Bug fix - lxpanel : crash when using keyboard shortcut to enable magnifier when magnifier not installed
|
|
||||||
* Bug fix - lxpanel : lockup in Bluetooth plugin when connecting to certain devices
|
|
||||||
* Bug fix - lxpanel : discoverable mode icon could get out of sync with underlying Bluetooth system state
|
|
||||||
* Bug fix - piwiz : missing cities in timezone list
|
|
||||||
* Bug fix - piwiz : country-specific language packages not being installed
|
|
||||||
* Bug fix - bookshelf : now waits for longer between packets before timing out
|
|
||||||
* Bug fix - accented characters now displayed correctly in localisation dialogs
|
|
||||||
* Raspberry Pi firmware e2bab29767e51c683a312df20014e3277275b8a6
|
|
||||||
* Linux kernel 5.10.63
|
|
||||||
2021-05-07:
|
|
||||||
* Chromium upgraded to version 88.0.4324.187
|
* Chromium upgraded to version 88.0.4324.187
|
||||||
* NuScratch upgraded to version 20210507
|
* NuScratch upgraded to version 20210507
|
||||||
* Node-RED upgraded to version 1.3.4
|
* Node-RED upgraded to version 1.3.4
|
||||||
|
|
|
@ -3,7 +3,11 @@
|
||||||
NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_NAME}${IMG_SUFFIX}"
|
NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_NAME}${IMG_SUFFIX}"
|
||||||
mkdir -p "${STAGE_WORK_DIR}"
|
mkdir -p "${STAGE_WORK_DIR}"
|
||||||
|
|
||||||
IMG_FILE="${WORK_DIR}/export-image/${IMG_FILENAME}${IMG_SUFFIX}.img"
|
if [ "${DEPLOY_ZIP}" == "1" ]; then
|
||||||
|
IMG_FILE="${WORK_DIR}/export-image/${IMG_FILENAME}${IMG_SUFFIX}.img"
|
||||||
|
else
|
||||||
|
IMG_FILE="${DEPLOY_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img"
|
||||||
|
fi
|
||||||
|
|
||||||
unmount_image "${IMG_FILE}"
|
unmount_image "${IMG_FILE}"
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ Usage:
|
||||||
-p, --mount-point mount point for image
|
-p, --mount-point mount point for image
|
||||||
|
|
||||||
This tool will use /dev/nbd1 as default for mounting an image. If you want to use another device, execute like this:
|
This tool will use /dev/nbd1 as default for mounting an image. If you want to use another device, execute like this:
|
||||||
NBD_DEV=/dev/nbd2 ./$progname --mount --image-name <your image> --mount-point <your path>
|
NBD_DEV=/dev/nbd2 ./$progname --mount --image <your image> --mount-point <your path>
|
||||||
|
|
||||||
HEREDOC
|
HEREDOC
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,16 +9,17 @@ bootstrap(){
|
||||||
|
|
||||||
export http_proxy=${APT_PROXY}
|
export http_proxy=${APT_PROXY}
|
||||||
|
|
||||||
BOOTSTRAP_ARGS+=(--arch arm64)
|
if [ "$(dpkg --print-architecture)" != "armhf" ] && [ "$(dpkg --print-architecture)" != "aarch64" ]; then
|
||||||
BOOTSTRAP_ARGS+=(--include gnupg)
|
BOOTSTRAP_CMD=qemu-debootstrap
|
||||||
|
fi
|
||||||
|
|
||||||
|
BOOTSTRAP_ARGS+=(--arch armhf)
|
||||||
BOOTSTRAP_ARGS+=(--components "main,contrib,non-free")
|
BOOTSTRAP_ARGS+=(--components "main,contrib,non-free")
|
||||||
#BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg")
|
BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg")
|
||||||
BOOTSTRAP_ARGS+=(--exclude=info)
|
|
||||||
BOOTSTRAP_ARGS+=(--include=ca-certificates)
|
|
||||||
BOOTSTRAP_ARGS+=("$@")
|
BOOTSTRAP_ARGS+=("$@")
|
||||||
printf -v BOOTSTRAP_STR '%q ' "${BOOTSTRAP_ARGS[@]}"
|
printf -v BOOTSTRAP_STR '%q ' "${BOOTSTRAP_ARGS[@]}"
|
||||||
|
|
||||||
capsh --drop=cap_setfcap -- -c "'${BOOTSTRAP_CMD}' $BOOTSTRAP_STR" || true
|
setarch linux32 capsh --drop=cap_setfcap -- -c "'${BOOTSTRAP_CMD}' $BOOTSTRAP_STR" || true
|
||||||
|
|
||||||
if [ -d "$2/debootstrap" ] && ! rmdir "$2/debootstrap"; then
|
if [ -d "$2/debootstrap" ] && ! rmdir "$2/debootstrap"; then
|
||||||
cp "$2/debootstrap/debootstrap.log" "${STAGE_WORK_DIR}"
|
cp "$2/debootstrap/debootstrap.log" "${STAGE_WORK_DIR}"
|
||||||
|
@ -91,7 +92,7 @@ on_chroot() {
|
||||||
mount --bind /sys "${ROOTFS_DIR}/sys"
|
mount --bind /sys "${ROOTFS_DIR}/sys"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
capsh --drop=cap_setfcap "--chroot=${ROOTFS_DIR}/" -- -e "$@"
|
setarch linux32 capsh --drop=cap_setfcap "--chroot=${ROOTFS_DIR}/" -- -e "$@"
|
||||||
}
|
}
|
||||||
export -f on_chroot
|
export -f on_chroot
|
||||||
|
|
||||||
|
|
|
@ -12,9 +12,8 @@ else
|
||||||
rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
|
rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cat files/raspberrypi.gpg.key | gpg --dearmor > "${ROOTFS_DIR}/etc/apt/trusted.gpg.d/raspberrypi-archive-stable.gpg"
|
on_chroot apt-key add - < files/raspberrypi.gpg.key
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
dpkg --add-architecture armhf
|
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get dist-upgrade -y
|
apt-get dist-upgrade -y
|
||||||
EOF
|
EOF
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
raspberrypi-archive-keyring
|
|
|
@ -1,7 +1,3 @@
|
||||||
deb http://deb.debian.org/debian RELEASE main contrib non-free
|
deb http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi
|
||||||
deb http://security.debian.org/debian-security RELEASE-security main contrib non-free
|
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
|
||||||
deb http://deb.debian.org/debian RELEASE-updates main contrib non-free
|
#deb-src http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi
|
||||||
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
|
|
||||||
#deb-src http://deb.debian.org/debian RELEASE main contrib non-free
|
|
||||||
#deb-src http://security.debian.org/debian-security RELEASE-security main contrib non-free
|
|
||||||
#deb-src http://deb.debian.org/debian RELEASE-updates main contrib non-free
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
if [ ! -d "${ROOTFS_DIR}" ] || [ "${USE_QCOW2}" = "1" ]; then
|
if [ ! -d "${ROOTFS_DIR}" ] || [ "${USE_QCOW2}" = "1" ]; then
|
||||||
bootstrap ${RELEASE} "${ROOTFS_DIR}" http://deb.debian.org/debian/
|
bootstrap ${RELEASE} "${ROOTFS_DIR}" http://raspbian.raspberrypi.org/raspbian/
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
# 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
|
||||||
#hdmi_safe=1
|
#hdmi_safe=1
|
||||||
|
|
||||||
|
# uncomment this if your display has a black border of unused pixels visible
|
||||||
|
# and your display can output without overscan
|
||||||
|
#disable_overscan=1
|
||||||
|
|
||||||
# uncomment the following to adjust overscan. Use positive numbers if console
|
# uncomment the following to adjust overscan. Use positive numbers if console
|
||||||
# goes off screen, and negative if there is too much border
|
# goes off screen, and negative if there is too much border
|
||||||
#overscan_left=16
|
#overscan_left=16
|
||||||
|
@ -52,32 +56,10 @@
|
||||||
# Enable audio (loads snd_bcm2835)
|
# Enable audio (loads snd_bcm2835)
|
||||||
dtparam=audio=on
|
dtparam=audio=on
|
||||||
|
|
||||||
# Automatically load overlays for detected cameras
|
[pi4]
|
||||||
camera_auto_detect=1
|
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
|
||||||
|
dtoverlay=vc4-fkms-v3d
|
||||||
# Automatically load overlays for detected DSI displays
|
|
||||||
display_auto_detect=1
|
|
||||||
|
|
||||||
# Enable DRM VC4 V3D driver
|
|
||||||
dtoverlay=vc4-kms-v3d
|
|
||||||
max_framebuffers=2
|
max_framebuffers=2
|
||||||
|
|
||||||
# Run in 64-bit mode
|
|
||||||
arm_64bit=1
|
|
||||||
|
|
||||||
# Disable compensation for displays with overscan
|
|
||||||
disable_overscan=1
|
|
||||||
|
|
||||||
[cm4]
|
|
||||||
# Enable host mode on the 2711 built-in XHCI USB controller.
|
|
||||||
# This line should be removed if the legacy DWC2 controller is required
|
|
||||||
# (e.g. for USB device mode) or if USB support is not required.
|
|
||||||
otg_mode=1
|
|
||||||
|
|
||||||
[all]
|
|
||||||
|
|
||||||
[pi4]
|
|
||||||
# Run as fast as firmware / board allows
|
|
||||||
arm_boost=1
|
|
||||||
|
|
||||||
[all]
|
[all]
|
||||||
|
#dtoverlay=vc4-fkms-v3d
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
raspi-config
|
|
|
@ -1,3 +1,3 @@
|
||||||
proc /proc proc defaults 0 0
|
proc /proc proc defaults 0 0
|
||||||
BOOTDEV /boot vfat defaults,flush 0 2
|
BOOTDEV /boot vfat defaults 0 2
|
||||||
ROOTDEV / ext4 defaults,noatime 0 1
|
ROOTDEV / ext4 defaults,noatime 0 1
|
||||||
|
|
|
@ -3,6 +3,4 @@
|
||||||
echo "${TARGET_HOSTNAME}" > "${ROOTFS_DIR}/etc/hostname"
|
echo "${TARGET_HOSTNAME}" > "${ROOTFS_DIR}/etc/hostname"
|
||||||
echo "127.0.1.1 ${TARGET_HOSTNAME}" >> "${ROOTFS_DIR}/etc/hosts"
|
echo "127.0.1.1 ${TARGET_HOSTNAME}" >> "${ROOTFS_DIR}/etc/hosts"
|
||||||
|
|
||||||
on_chroot << EOF
|
ln -sf /dev/null "${ROOTFS_DIR}/etc/systemd/network/99-default.link"
|
||||||
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_net_names 1
|
|
||||||
EOF
|
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
libraspberrypi-bin libraspberrypi0
|
libraspberrypi-bin libraspberrypi0 raspi-config
|
||||||
systemd-timesyncd
|
|
||||||
|
|
1
stage2/00-copies-and-fills/01-packages
Normal file
1
stage2/00-copies-and-fills/01-packages
Normal file
|
@ -0,0 +1 @@
|
||||||
|
raspi-copies-and-fills
|
6
stage2/00-copies-and-fills/02-run.sh
Executable file
6
stage2/00-copies-and-fills/02-run.sh
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
if [ -f "${ROOTFS_DIR}/etc/ld.so.preload" ]; then
|
||||||
|
mv "${ROOTFS_DIR}/etc/ld.so.preload" "${ROOTFS_DIR}/etc/ld.so.preload.disabled"
|
||||||
|
fi
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
ssh less fbset sudo psmisc strace ed ncdu crda
|
ssh less fbset sudo psmisc strace ed ncdu crda
|
||||||
console-setup keyboard-configuration debconf-utils parted
|
console-setup keyboard-configuration debconf-utils parted unzip
|
||||||
build-essential manpages-dev bash-completion gdb pkg-config
|
build-essential manpages-dev python bash-completion gdb pkg-config
|
||||||
python-is-python3
|
python-rpi.gpio v4l-utils
|
||||||
python3-rpi.gpio v4l-utils
|
python-gpiozero
|
||||||
python3-gpiozero
|
python3-gpiozero
|
||||||
avahi-daemon
|
avahi-daemon
|
||||||
lua5.1
|
lua5.1
|
||||||
|
@ -26,9 +26,8 @@ policykit-1
|
||||||
ssh-import-id
|
ssh-import-id
|
||||||
rng-tools
|
rng-tools
|
||||||
ethtool
|
ethtool
|
||||||
|
vl805fw
|
||||||
ntfs-3g
|
ntfs-3g
|
||||||
pciutils
|
pciutils
|
||||||
rpi-eeprom
|
rpi-eeprom
|
||||||
raspinfo
|
raspinfo
|
||||||
udisks2
|
|
||||||
unzip zip p7zip-full
|
|
||||||
|
|
|
@ -1,3 +1 @@
|
||||||
cifs-utils
|
cifs-utils
|
||||||
libcamera-apps-lite
|
|
||||||
mkvtoolnix
|
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
install -v -d "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d"
|
||||||
|
install -v -m 644 files/wait.conf "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/"
|
||||||
|
|
||||||
install -v -d "${ROOTFS_DIR}/etc/wpa_supplicant"
|
install -v -d "${ROOTFS_DIR}/etc/wpa_supplicant"
|
||||||
install -v -m 600 files/wpa_supplicant.conf "${ROOTFS_DIR}/etc/wpa_supplicant/"
|
install -v -m 600 files/wpa_supplicant.conf "${ROOTFS_DIR}/etc/wpa_supplicant/"
|
||||||
|
|
||||||
on_chroot << EOF
|
|
||||||
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_boot_wait 0
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if [ -v WPA_COUNTRY ]; then
|
if [ -v WPA_COUNTRY ]; then
|
||||||
echo "country=${WPA_COUNTRY}" >> "${ROOTFS_DIR}/etc/wpa_supplicant/wpa_supplicant.conf"
|
echo "country=${WPA_COUNTRY}" >> "${ROOTFS_DIR}/etc/wpa_supplicant/wpa_supplicant.conf"
|
||||||
fi
|
fi
|
||||||
|
|
3
stage2/02-net-tweaks/files/wait.conf
Normal file
3
stage2/02-net-tweaks/files/wait.conf
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=/usr/lib/dhcpcd5/dhcpcd -q -w
|
|
@ -36,7 +36,7 @@ EOF
|
||||||
# Run the actual install
|
# Run the actual install
|
||||||
on_chroot << EOF
|
on_chroot << EOF
|
||||||
apt-get install insserv resolvconf -y
|
apt-get install insserv resolvconf -y
|
||||||
curl https://install.yunohost.org/bullseye | bash -s -- -a
|
curl https://install.yunohost.org/buster | bash -s -- -a
|
||||||
rm -f /etc/ssh/ssh_host_*
|
rm -f /etc/ssh/ssh_host_*
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
@ -46,10 +46,6 @@ sed -i '/PermitRootLogin/c\PermitRootLogin yes' /etc/ssh/sshd_config
|
||||||
echo "root:yunohost" | chpasswd
|
echo "root:yunohost" | chpasswd
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "Removing Raspbian sshd banner"
|
|
||||||
rm -f "${ROOTFS_DIR}/etc/ssh/sshd_config.d/rename_user.conf"
|
|
||||||
rm -f "${ROOTFS_DIR}/usr/share/userconf-pi/sshd_banner"
|
|
||||||
|
|
||||||
install -m 755 files/check_yunohost_is_installed.sh "${ROOTFS_DIR}/etc/profile.d/"
|
install -m 755 files/check_yunohost_is_installed.sh "${ROOTFS_DIR}/etc/profile.d/"
|
||||||
|
|
||||||
echo "Cleaning ..."
|
echo "Cleaning ..."
|
||||||
|
@ -64,7 +60,7 @@ EOF
|
||||||
# the rootfs/image after that ?
|
# the rootfs/image after that ?
|
||||||
while lsof 2>/dev/null | grep -q /root/rpi-image/work/*/export-image/rootfs/dev;
|
while lsof 2>/dev/null | grep -q /root/rpi-image/work/*/export-image/rootfs/dev;
|
||||||
do
|
do
|
||||||
for PID in `ps -ef --forest | grep "qemu-binfmt" | grep -v "grep" | grep "nginx\|nscd\|slapd\|nslcd" | awk '{print $2}'`
|
for PID in `ps -ef --forest | grep "qemu-arm-static" | grep -v "grep" | grep "nginx\|nscd\|slapd\|nslcd" | awk '{print $2}'`
|
||||||
do
|
do
|
||||||
echo "Killing $PID"
|
echo "Killing $PID"
|
||||||
kill -9 $PID || true
|
kill -9 $PID || true
|
||||||
|
@ -72,9 +68,9 @@ do
|
||||||
done
|
done
|
||||||
sleep 5
|
sleep 5
|
||||||
done
|
done
|
||||||
while ps -ef --forest | grep "qemu-binfmt" | grep -v "grep"
|
while ps -ef --forest | grep "qemu-arm-static" | grep -v "grep"
|
||||||
do
|
do
|
||||||
for PID in `ps -ef --forest | grep "qemu-binfmt" | grep -v "grep" | grep "nginx\|nscd\|slapd\|nslcd" | awk '{print $2}'`
|
for PID in `ps -ef --forest | grep "qemu-arm-static" | grep -v "grep" | grep "nginx\|nscd\|slapd\|nslcd" | awk '{print $2}'`
|
||||||
do
|
do
|
||||||
echo "Killing $PID"
|
echo "Killing $PID"
|
||||||
kill -9 $PID || true
|
kill -9 $PID || true
|
||||||
|
|
Loading…
Reference in a new issue