aports/main/raspberrypi-bootloader/update-raspberrypi-bootloader
macmpi cf209125a1 main/raspberrypi-bootloader: save older config.txt if changed and notify.
Some config statements can not take place in usercfg include (https://www.raspberrypi.com/documentation/computers/config_txt.html#include).
Let user know config.txt eventually changed, and give opportunity to check older version.
2023-12-06 06:00:16 +00:00

47 lines
1.2 KiB
Bash

#!/bin/sh
if grep -q '^disable_trigger=1' /etc/update-raspberrypi-bootloader.conf 2>/dev/null; then
exit 0
fi
# see https://www.raspberrypi.com/documentation/computers/config_txt.html#kernel
# use the last found kernel for for example vmlinuz-rpi16k gets preference over
# vmlinuz-rpi
for i in /boot/vmlinuz* /boot/vmlinuz-lts /boot/vmlinuz-rpi /boot/vmlinuz-rpi*; do
if [ -e "$i" ]; then
kernel="${i#/boot/}"
initramfs="initramfs${kernel#vmlinuz}"
fi
done
if [ -z "$kernel" ]; then
echo "$0: WARNING: no kernel found" >&2
exit
fi
case "$(uname -m)" in
aarch64) arm_64bit=1;;
*) arm_64bit=0;;
esac
cat > /boot/config.txt.new <<-EOF
# do not modify this file as it will be overwritten on upgrade.
# create and/or modify usercfg.txt instead.
# https://www.raspberrypi.com/documentation/computers/config_txt.html
#
kernel=$kernel
initramfs $initramfs
arm_64bit=$arm_64bit
include usercfg.txt
EOF
if diff -bBN /boot/config.txt.new /boot/config.txt >/dev/null; then
rm -f /boot/config.txt.new
else
mv -f /boot/config.txt /boot/config.txt.old 2>/dev/null
mv -f /boot/config.txt.new /boot/config.txt
echo "$0: INFO: replaced config.txt and saved config.txt.old"
fi
echo "Configured kernel $kernel / $initramfs"