Browse Source

Apply upstream Bookworm patches.

v7.0
Luigi F. Cruz 6 months ago
parent
commit
eeaace2e61
25 changed files with 94 additions and 150 deletions
  1. +10
    -12
      build-docker.sh
  2. +1
    -3
      build.sh
  3. +1
    -1
      export-image/02-set-sources/01-run.sh
  4. +1
    -2
      export-image/04-set-partuuid/00-run.sh
  5. +4
    -1
      export-image/05-finalise/01-run.sh
  6. +6
    -6
      export-image/prerun.sh
  7. +2
    -2
      stage0/00-configure-apt/files/raspi.list
  8. +6
    -6
      stage0/00-configure-apt/files/sources.list
  9. +6
    -2
      stage0/02-firmware/01-packages
  10. +3
    -0
      stage0/02-firmware/02-run.sh
  11. +1
    -1
      stage0/prerun.sh
  12. +15
    -2
      stage1/00-boot-files/00-run.sh
  13. +14
    -48
      stage1/00-boot-files/files/config.txt
  14. +1
    -1
      stage1/01-sys-tweaks/files/fstab
  15. +8
    -5
      stage2/01-sys-tweaks/00-packages
  16. +2
    -2
      stage2/01-sys-tweaks/00-patches/07-resize-init.diff
  17. +0
    -1
      stage2/02-net-tweaks/00-packages
  18. +2
    -20
      stage2/02-net-tweaks/01-run.sh
  19. +1
    -1
      stage3/00-install-packages/00-packages
  20. +2
    -1
      stage3/00-install-packages/00-packages-nr
  21. +0
    -5
      stage3/01-tweaks/00-run.sh
  22. +0
    -6
      stage4/00-install-packages/00-packages
  23. +5
    -0
      stage4/00-install-packages/00-run.sh
  24. +0
    -22
      stage4/00-install-packages/01-packages
  25. +3
    -0
      stage4/00-install-packages/01-run.sh

+ 10
- 12
build-docker.sh View File

@@ -1,6 +1,8 @@
#!/bin/bash -eu
#!/usr/bin/env bash
# Note: Avoid usage of arrays as MacOS users have an older version of bash (v3.x) which does not supports arrays
set -eu

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
DIR="$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)"

BUILD_OPTS="$*"

@@ -84,18 +86,12 @@ ${DOCKER} build --build-arg BASE_IMAGE=debian:bullseye -t pi-gen "${DIR}"

if [ "${CONTAINER_EXISTS}" != "" ]; then
DOCKER_CMDLINE_NAME="${CONTAINER_NAME}_cont"
DOCKER_CMDLINE_PRE=( \
--rm \
)
DOCKER_CMDLINE_POST=( \
--volumes-from="${CONTAINER_NAME}" \
)
DOCKER_CMDLINE_PRE="--rm"
DOCKER_CMDLINE_POST="--volumes-from=\"${CONTAINER_NAME}\""
else
DOCKER_CMDLINE_NAME="${CONTAINER_NAME}"
DOCKER_CMDLINE_PRE=( \
)
DOCKER_CMDLINE_POST=( \
)
DOCKER_CMDLINE_PRE=""
DOCKER_CMDLINE_POST=""
fi

# Check if binfmt_misc is required
@@ -136,6 +132,7 @@ fi

trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${DOCKER_CMDLINE_NAME}' SIGINT SIGTERM
time ${DOCKER} run \
$DOCKER_CMDLINE_PRE \
--name "${DOCKER_CMDLINE_NAME}" \
--privileged \
--cap-add=ALL \
@@ -144,6 +141,7 @@ time ${DOCKER} run \
${PIGEN_DOCKER_OPTS} \
--volume "${CONFIG_FILE}":/config:ro \
-e "GIT_HASH=${GIT_HASH}" \
$DOCKER_CMDLINE_POST \
pi-gen \
bash -e -o pipefail -c "
dpkg-reconfigure qemu-user-static &&


+ 1
- 3
build.sh View File

@@ -226,9 +226,7 @@ export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi}
export FIRST_USER_NAME=${FIRST_USER_NAME:-pi}
export FIRST_USER_PASS
export DISABLE_FIRST_BOOT_USER_RENAME=${DISABLE_FIRST_BOOT_USER_RENAME:-0}
export RELEASE=${RELEASE:-bullseye} # Don't forget to update stage0/prerun.sh
export WPA_ESSID
export WPA_PASSWORD
export RELEASE=${RELEASE:-bookworm} # Don't forget to update stage0/prerun.sh
export WPA_COUNTRY
export ENABLE_SSH="${ENABLE_SSH:-0}"
export PUBKEY_ONLY_SSH="${PUBKEY_ONLY_SSH:-0}"


+ 1
- 1
export-image/02-set-sources/01-run.sh View File

@@ -4,6 +4,6 @@ rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache"
find "${ROOTFS_DIR}/var/lib/apt/lists/" -type f -delete
on_chroot << EOF
apt-get update
apt-get -y dist-upgrade
apt-get -y dist-upgrade --auto-remove --purge
apt-get clean
EOF

+ 1
- 2
export-image/04-set-partuuid/00-run.sh View File

@@ -12,7 +12,6 @@ if [ "${NO_PRERUN_QCOW2}" = "0" ]; then
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"

sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" "${ROOTFS_DIR}/boot/firmware/cmdline.txt"
fi


+ 4
- 1
export-image/05-finalise/01-run.sh View File

@@ -3,7 +3,10 @@
IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img"
INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info"

sed -i 's/^update_initramfs=.*/update_initramfs=all/' "${ROOTFS_DIR}/etc/initramfs-tools/update-initramfs.conf"

on_chroot << EOF
update-initramfs -u
if [ -x /etc/init.d/fake-hwclock ]; then
/etc/init.d/fake-hwclock stop
fi
@@ -53,7 +56,7 @@ 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 -m 644 "${ROOTFS_DIR}/etc/rpi-issue" "${ROOTFS_DIR}/boot/firmware/issue.txt"

cp "$ROOTFS_DIR/etc/rpi-issue" "$INFO_FILE"



+ 6
- 6
export-image/prerun.sh View File

@@ -10,8 +10,8 @@ if [ "${NO_PRERUN_QCOW2}" = "0" ]; then
rm -rf "${ROOTFS_DIR}"
mkdir -p "${ROOTFS_DIR}"

BOOT_SIZE="$((256 * 1024 * 1024))"
ROOT_SIZE=$(du --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --exclude boot --block-size=1 | cut -f 1)
BOOT_SIZE="$((512 * 1024 * 1024))"
ROOT_SIZE=$(du --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --exclude boot/firmware --block-size=1 | cut -f 1)

# All partition sizes and starts will be aligned to this size
ALIGN="$((4 * 1024 * 1024))"
@@ -59,9 +59,9 @@ if [ "${NO_PRERUN_QCOW2}" = "0" ]; then
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
mkdir -p "${ROOTFS_DIR}/boot/firmware"
mount -v "$BOOT_DEV" "${ROOTFS_DIR}/boot/firmware" -t vfat

rsync -aHAXx --exclude /var/cache/apt/archives --exclude /boot "${EXPORT_ROOTFS_DIR}/" "${ROOTFS_DIR}/"
rsync -rtx "${EXPORT_ROOTFS_DIR}/boot/" "${ROOTFS_DIR}/boot/"
rsync -aHAXx --exclude /var/cache/apt/archives --exclude /boot/firmware "${EXPORT_ROOTFS_DIR}/" "${ROOTFS_DIR}/"
rsync -rtx "${EXPORT_ROOTFS_DIR}/boot/firmware/" "${ROOTFS_DIR}/boot/firmware/"
fi

+ 2
- 2
stage0/00-configure-apt/files/raspi.list View File

@@ -1,3 +1,3 @@
deb http://archive.raspberrypi.org/debian/ RELEASE main
deb http://archive.raspberrypi.com/debian/ RELEASE main
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ RELEASE main
#deb-src http://archive.raspberrypi.com/debian/ RELEASE main

+ 6
- 6
stage0/00-configure-apt/files/sources.list View File

@@ -1,7 +1,7 @@
deb http://deb.debian.org/debian RELEASE main contrib non-free
deb http://security.debian.org/debian-security RELEASE-security main contrib non-free
deb http://deb.debian.org/debian RELEASE-updates main contrib non-free
deb http://deb.debian.org/debian RELEASE main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ RELEASE-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian RELEASE-updates main contrib non-free non-free-firmware
# 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
#deb-src http://deb.debian.org/debian RELEASE main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian-security/ RELEASE-security main contrib non-free non-free-firmware
#deb-src http://deb.debian.org/debian RELEASE-updates main contrib non-free non-free-firmware

+ 6
- 2
stage0/02-firmware/01-packages View File

@@ -1,2 +1,6 @@
raspberrypi-bootloader
raspberrypi-kernel
initramfs-tools
raspi-firmware
linux-image-rpi-v8
linux-image-rpi-2712
linux-headers-rpi-v8
linux-headers-rpi-2712

+ 3
- 0
stage0/02-firmware/02-run.sh View File

@@ -0,0 +1,3 @@
#!/bin/bash -e

sed -i 's/^update_initramfs=.*/update_initramfs=no/' "${ROOTFS_DIR}/etc/initramfs-tools/update-initramfs.conf"

+ 1
- 1
stage0/prerun.sh View File

@@ -1,6 +1,6 @@
#!/bin/bash -e

if [ "$RELEASE" != "bullseye" ]; then
if [ "$RELEASE" != "bookworm" ]; then
echo "WARNING: RELEASE does not match the intended option for this branch."
echo " Please check the relevant README.md section."
fi


+ 15
- 2
stage1/00-boot-files/00-run.sh View File

@@ -1,4 +1,17 @@
#!/bin/bash -e

install -m 644 files/cmdline.txt "${ROOTFS_DIR}/boot/"
install -m 644 files/config.txt "${ROOTFS_DIR}/boot/"
mkdir -p "${ROOTFS_DIR}/boot/firmware"

if ! [ -L "${ROOTFS_DIR}/boot/overlays" ]; then
ln -s firmware/overlays "${ROOTFS_DIR}/boot/overlays"
fi

install -m 644 files/cmdline.txt "${ROOTFS_DIR}/boot/firmware/"
if ! [ -L "${ROOTFS_DIR}/boot/cmdline.txt" ]; then
ln -s firmware/cmdline.txt "${ROOTFS_DIR}/boot/cmdline.txt"
fi

install -m 644 files/config.txt "${ROOTFS_DIR}/boot/firmware/"
if ! [ -L "${ROOTFS_DIR}/boot/config.txt" ]; then
ln -s firmware/config.txt "${ROOTFS_DIR}/boot/config.txt"
fi

+ 14
- 48
stage1/00-boot-files/files/config.txt View File

@@ -1,73 +1,44 @@
# For more options and information see
# http://rpf.io/configtxt
# http://rptl.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
#hdmi_safe=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1920
#framebuffer_height=1080

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Additional overlays and parameters are documented
# /boot/firmware/overlays/README

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Automatically load initramfs files, if found
auto_initramfs=1

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

# Don't have the firmware create an initial video= setting in cmdline.txt.
# Use the kernel's default instead.
disable_fw_kms_setup=1

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

# Run as fast as firmware / board allows
arm_boost=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
@@ -76,8 +47,3 @@ otg_mode=1

[all]

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]

+ 1
- 1
stage1/01-sys-tweaks/files/fstab View File

@@ -1,3 +1,3 @@
proc /proc proc defaults 0 0
BOOTDEV /boot vfat defaults 0 2
BOOTDEV /boot/firmware vfat defaults 0 2
ROOTDEV / ext4 defaults,noatime 0 1

+ 8
- 5
stage2/01-sys-tweaks/00-packages View File

@@ -1,13 +1,17 @@
ssh less fbset sudo psmisc strace ed ncdu crda
ssh less fbset sudo psmisc strace ed ncdu
console-setup keyboard-configuration debconf-utils parted
build-essential manpages-dev bash-completion gdb pkg-config
python-is-python3
python3-rpi.gpio v4l-utils
v4l-utils
python3-libgpiod
python3-gpiozero
pigpio python3-pigpio raspi-gpio python3-rpi.gpio
python3-spidev
python3-smbus2
avahi-daemon
lua5.1
luajit
hardlink ca-certificates curl
ca-certificates curl
fake-hwclock nfs-common usbutils
libraspberrypi-dev libraspberrypi-doc libfreetype6-dev
dosfstools
@@ -24,12 +28,11 @@ htop
man-db
policykit-1
ssh-import-id
rng-tools
ethtool
ntfs-3g
pciutils
rpi-eeprom
raspinfo
raspi-utils
udisks2
unzip zip p7zip-full
file


+ 2
- 2
stage2/01-sys-tweaks/00-patches/07-resize-init.diff View File

@@ -1,5 +1,5 @@
--- stage2.orig/rootfs/boot/cmdline.txt
+++ stage2/rootfs/boot/cmdline.txt
--- stage2.orig/rootfs/boot/firmware/cmdline.txt
+++ stage2/rootfs/boot/firmware/cmdline.txt
@@ -1 +1 @@
-console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 fsck.repair=yes rootwait
+console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspberrypi-sys-mods/firstboot

+ 0
- 1
stage2/02-net-tweaks/00-packages View File

@@ -1,5 +1,4 @@
wpasupplicant wireless-tools firmware-atheros firmware-brcm80211 firmware-libertas firmware-misc-nonfree firmware-realtek
raspberrypi-net-mods
dhcpcd5
network-manager
net-tools

+ 2
- 20
stage2/02-net-tweaks/01-run.sh View File

@@ -3,38 +3,20 @@
install -v -d "${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
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_netconf 1
EOF

if [ -v WPA_COUNTRY ]; then
on_chroot <<- EOF
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_wifi_country "${WPA_COUNTRY}"
EOF
fi

if [ -v WPA_ESSID ] && [ -v WPA_PASSWORD ]; then
on_chroot <<EOF
set -o pipefail
wpa_passphrase "${WPA_ESSID}" "${WPA_PASSWORD}" | tee -a "/etc/wpa_supplicant/wpa_supplicant.conf"
EOF
elif [ -v WPA_ESSID ]; then
cat >> "${ROOTFS_DIR}/etc/wpa_supplicant/wpa_supplicant.conf" << EOL

network={
ssid="${WPA_ESSID}"
key_mgmt=NONE
}
EOL
fi

# Disable wifi on 5GHz models if WPA_COUNTRY is not set
mkdir -p "${ROOTFS_DIR}/var/lib/systemd/rfkill/"
if [ -n "$WPA_COUNTRY" ]; then
echo 0 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan"
echo 0 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan"
echo 0 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-1001100000.mmc:wlan"
else
echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan"
echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan"
echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-1001100000.mmc:wlan"
fi

+ 1
- 1
stage3/00-install-packages/00-packages View File

@@ -1,5 +1,5 @@
gstreamer1.0-x gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-alsa gstreamer1.0-libav
qpdfview gtk2-engines alsa-utils
evince gtk2-engines alsa-utils
desktop-base
git
policykit-1


+ 2
- 1
stage3/00-install-packages/00-packages-nr View File

@@ -1,7 +1,8 @@
xserver-xorg xinit
mousepad
eom
lxde lxtask menu-xdg
zenity xdg-utils
gvfs-backends gvfs-fuse
lightdm gnome-themes-standard gnome-icon-theme
lightdm gnome-themes-extra-data gnome-icon-theme
gnome-keyring

+ 0
- 5
stage3/01-tweaks/00-run.sh View File

@@ -1,5 +0,0 @@
#!/bin/bash -e

on_chroot << EOF
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_boot_wait 1
EOF

+ 0
- 6
stage4/00-install-packages/00-packages View File

@@ -2,21 +2,16 @@ python3-pygame
python3-tk thonny
python3-pgzero
python3-serial
python3-picamera
debian-reference-en dillo
raspberrypi-net-mods raspberrypi-ui-mods
python3-pip
python3-numpy
pypy
alacarte rc-gui sense-hat
tree
libgl1-mesa-dri libgles1 libgles2-mesa xcompmgr
geany
piclone
pigpio python3-pigpio raspi-gpio python3-rpi.gpio
python3-spidev
python3-twython
python3-smbus
python3-flask
pprompt
piwiz
@@ -24,4 +19,3 @@ rp-prefapps
ffmpeg
vlc
rpi-imager
rpi-wayland

+ 5
- 0
stage4/00-install-packages/00-run.sh View File

@@ -0,0 +1,5 @@
#!/bin/bash -e

on_chroot << EOF
SUDO_USER="${FIRST_USER_NAME}" raspi-config nonint do_wayland W2
EOF

+ 0
- 22
stage4/00-install-packages/01-packages View File

@@ -1,22 +0,0 @@
python3-automationhat
python3-blinkt
python3-cap1xxx
python3-drumhat
python3-envirophat
python3-explorerhat
python3-fourletterphat
python3-microdotphat
python3-mote
python3-motephat
python3-phatbeat
python3-pianohat
python3-piglow
python3-rainbowhat
python3-scrollphat
python3-scrollphathd
python3-sn3218
python3-skywriter
python3-touchphat
python3-buttonshim
python3-unicornhathd
python3-pantilthat

+ 3
- 0
stage4/00-install-packages/01-run.sh View File

@@ -0,0 +1,3 @@
#!/bin/bash -e

sed -i 's/^.*HandlePowerKey=.*$/HandlePowerKey=ignore/' "${ROOTFS_DIR}/etc/systemd/logind.conf"

Loading…
Cancel
Save