mirror of
https://github.com/raspberrypi/rpi-update.git
synced 2026-01-20 21:13:38 +08:00
Add support for Pi4 and warnings for dangerous updates
WANT_PI4=1 allows update from a Pi3 system but should be used with caution.
This commit is contained in:
56
rpi-update
56
rpi-update
@@ -35,6 +35,7 @@ SKIP_BACKUP=${SKIP_BACKUP:-0}
|
|||||||
SKIP_DOWNLOAD=${SKIP_DOWNLOAD:-0}
|
SKIP_DOWNLOAD=${SKIP_DOWNLOAD:-0}
|
||||||
SKIP_WARNING=${SKIP_WARNING:-0}
|
SKIP_WARNING=${SKIP_WARNING:-0}
|
||||||
WANT_SYMVERS=${WANT_SYMVERS:-0}
|
WANT_SYMVERS=${WANT_SYMVERS:-0}
|
||||||
|
WANT_PI4=${WANT_PI4:-0}
|
||||||
PRUNE_MODULES=${PRUNE_MODULES:-0}
|
PRUNE_MODULES=${PRUNE_MODULES:-0}
|
||||||
RPI_UPDATE_UNSUPPORTED=${RPI_UPDATE_UNSUPPORTED:-0}
|
RPI_UPDATE_UNSUPPORTED=${RPI_UPDATE_UNSUPPORTED:-0}
|
||||||
JUST_CHECK=${JUST_CHECK:-0}
|
JUST_CHECK=${JUST_CHECK:-0}
|
||||||
@@ -121,9 +122,15 @@ function update_modules {
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp -R "${FW_REPOLOCAL}/modules/"* "${FW_MODPATH}/"
|
|
||||||
find "${FW_REPOLOCAL}/modules" -mindepth 1 -maxdepth 1 -type d | while read DIR; do
|
find "${FW_REPOLOCAL}/modules" -mindepth 1 -maxdepth 1 -type d | while read DIR; do
|
||||||
BASEDIR=$(basename "${DIR}")
|
BASEDIR="$(basename "${DIR}")"
|
||||||
|
if [[ ${WANT_PI4} -ne 1 ]]; then
|
||||||
|
ENDSWITH=${BASEDIR: -4}
|
||||||
|
if [[ "${ENDSWITH}" == "v7l+" ]]; then
|
||||||
|
continue;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
cp -R "${DIR}" "${FW_MODPATH}/"
|
||||||
echo " *** depmod ${BASEDIR}"
|
echo " *** depmod ${BASEDIR}"
|
||||||
depmod -b "${ROOT_PATH}" -a "${BASEDIR}"
|
depmod -b "${ROOT_PATH}" -a "${BASEDIR}"
|
||||||
done
|
done
|
||||||
@@ -197,15 +204,48 @@ function show_notice {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function check_partition {
|
||||||
|
local PARTSIZE=0
|
||||||
|
if command -v df > /dev/null 2>&1 ; then
|
||||||
|
local M=$(df -P ${BOOT_PATH} | awk 'END{print $1}')
|
||||||
|
if command -v lsblk > /dev/null 2>&1 ; then
|
||||||
|
PARTSIZE=$(lsblk -bno SIZE ${M})
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo PARTSIZE:$PARTSIZE
|
||||||
|
if [ $PARTSIZE -lt $(( 256*1024*1024 )) ]; then
|
||||||
|
echo "Partition size $(( $PARTSIZE >> 20 ))M may not be sufficient for new Pi4 files"
|
||||||
|
echo "This could result in a system that will not boot."
|
||||||
|
echo "256M FAT partition is recommended. Ensure you have a backup if continuing."
|
||||||
|
if [[ ${SKIP_WARNING} -ne 0 ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
read -p "Would you like to proceed? (y/N)" -n 1 -r -s
|
||||||
|
echo ""
|
||||||
|
if ! [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function update_firmware {
|
function update_firmware {
|
||||||
echo " *** Updating firmware"
|
echo " *** Updating firmware"
|
||||||
rm -rf "${FW_PATH}/"*.elf
|
rm -rf "${FW_PATH}/"*.elf
|
||||||
rm -rf "${FW_PATH}/"bootcode.bin
|
rm -rf "${FW_PATH}/"bootcode.bin
|
||||||
cp "${FW_REPOLOCAL}/"*.elf "${FW_PATH}/"
|
if [[ ${WANT_PI4} -eq 1 ]]; then
|
||||||
|
cp "${FW_REPOLOCAL}/"*.elf "${FW_PATH}/"
|
||||||
|
cp "${FW_REPOLOCAL}/"*.dat "${FW_PATH}/"
|
||||||
|
else
|
||||||
|
cp "${FW_REPOLOCAL}/"start[^4]*.elf "${FW_PATH}/"
|
||||||
|
cp "${FW_REPOLOCAL}/"fixup[^4]*.dat "${FW_PATH}/"
|
||||||
|
fi
|
||||||
cp "${FW_REPOLOCAL}/"*.bin "${FW_PATH}/"
|
cp "${FW_REPOLOCAL}/"*.bin "${FW_PATH}/"
|
||||||
cp "${FW_REPOLOCAL}/"*.dat "${FW_PATH}/"
|
|
||||||
if [[ ${SKIP_KERNEL} -eq 0 ]]; then
|
if [[ ${SKIP_KERNEL} -eq 0 ]]; then
|
||||||
cp "${FW_REPOLOCAL}/"*.img "${FW_PATH}/"
|
if [[ ${WANT_PI4} -eq 1 ]]; then
|
||||||
|
cp "${FW_REPOLOCAL}/"*.img "${FW_PATH}/"
|
||||||
|
else
|
||||||
|
cp "${FW_REPOLOCAL}/"kernel.img "${FW_REPOLOCAL}/"kernel7.img "${FW_PATH}/"
|
||||||
|
fi
|
||||||
if [[ -n $(shopt -s nullglob; echo "${FW_REPOLOCAL}/"*.dtb*) ]]; then
|
if [[ -n $(shopt -s nullglob; echo "${FW_REPOLOCAL}/"*.dtb*) ]]; then
|
||||||
cp "${FW_REPOLOCAL}/"*.dtb* "${FW_PATH}/"
|
cp "${FW_REPOLOCAL}/"*.dtb* "${FW_PATH}/"
|
||||||
fi
|
fi
|
||||||
@@ -271,6 +311,12 @@ function do_backup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function do_update {
|
function do_update {
|
||||||
|
if [ -f ${FW_PATH}/kernel7l.img ]; then
|
||||||
|
WANT_PI4=1
|
||||||
|
fi
|
||||||
|
if [[ ${WANT_PI4} -eq 1 ]]; then
|
||||||
|
check_partition
|
||||||
|
fi
|
||||||
show_notice
|
show_notice
|
||||||
download_rev
|
download_rev
|
||||||
if [[ -f "${FW_REPOLOCAL}/pre-install" ]]; then
|
if [[ -f "${FW_REPOLOCAL}/pre-install" ]]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user