40 lines
1.1 KiB
Bash
40 lines
1.1 KiB
Bash
#!/bin/sh
|
|
# rpi-pin-kernel-firmware: Pin a specific version of the rpi kernel and firmware
|
|
|
|
set -e
|
|
|
|
if [ $# -ne 1 ]; then
|
|
echo "Usage: $0 kernel-version"
|
|
echo
|
|
echo "e.g., $0 1.20201126-1"
|
|
exit 1
|
|
fi
|
|
|
|
if ! dpkg -l raspberrypi-kernel:armhf > /dev/null 2>&1; then
|
|
echo "This command is designed to run only on Raspbian with the armhf kernel"
|
|
echo 99
|
|
fi
|
|
|
|
|
|
if [ `id -u` -ne 0 ]; then
|
|
echo "If necessary, enter your password to run this script as root"
|
|
exec sudo sh "$0" "$1"
|
|
fi
|
|
|
|
version=$1
|
|
fileversion=$(echo $version | cut -d':' -f 2)
|
|
base=http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/
|
|
packagelist="libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libraspberrypi-doc raspberrypi-bootloader raspberrypi-kernel raspberrypi-kernel-headers"
|
|
|
|
set --
|
|
for package in $packagelist; do
|
|
filename="${package}_${fileversion}_armhf.deb"
|
|
set -- "$@" "$filename"
|
|
wget --continue -O "$filename" "$base/$filename"
|
|
done
|
|
|
|
dpkg -i "$@"
|
|
|
|
for package in $packagelist; do
|
|
/usr/bin/printf "Package: $package\nPin: version ${version}\nPin-Priority:999\n\n"
|
|
done > /etc/apt/preferences.d/99-adafruit-pin-kernel
|