Check for NOOBS files in /boot

This commit is contained in:
Serge Schneider
2015-03-30 15:33:17 +01:00
parent 1f02f85bb8
commit ba094cac9d

View File

@@ -14,6 +14,12 @@ if [[ ${BOOT_PATH:-"unset"} == "unset" && ${ROOT_PATH:-"unset"} != "unset" ]] ||
exit 1 exit 1
fi fi
if [[ ${BOOT_PATH:-"unset"} == "unset" ]]; then
NOOBS_CHECK=${NOOBS_CHECK:-1}
else
NOOBS_CHECK=${NOOBS_CHECK:-0}
fi
BRANCH=${BRANCH:-"master"} BRANCH=${BRANCH:-"master"}
ROOT_PATH=${ROOT_PATH:-"/"} ROOT_PATH=${ROOT_PATH:-"/"}
BOOT_PATH=${BOOT_PATH:-"/boot"} BOOT_PATH=${BOOT_PATH:-"/boot"}
@@ -208,6 +214,46 @@ function remove_rev {
fi fi
} }
function noobs_fix {
echo " !!! $BOOT_PATH appears to contain NOOBS files"
echo " This may occur if fstab contains incorrect entries."
echo " rpi-update will attempt to correct fstab."
read -p "Would you like to proceed? (y/N)" -n 1 -r -s
echo
if ! [[ $REPLY =~ ^[Yy]$ ]]; then
exit 1;
fi
if ! grep -qE "/dev/mmcblk0p1\s+/boot" ${ROOT_PATH}/etc/fstab; then
echo "Unexpected fstab entry"
exit 1
fi
local ROOTNUM=`cat /proc/cmdline | sed -n 's|.*root=/dev/mmcblk0p\([0-9]*\).*|\1|p'`
if [ ! "$ROOTNUM" ];then
echo "Could not determine root partition."
exit 1
fi
local BOOT_DEV="/dev/mmcblk0p$((ROOTNUM-1))"
local ROOT_DEV="/dev/mmcblk0p${ROOTNUM}"
sed ${ROOT_PATH}/etc/fstab -e "s|^.*[^#].* / |${ROOT_DEV} / |;s|^.*[^#].* /boot |${BOOT_DEV} /boot |"
read -p "Does this look correct? (y/N)" -n 1 -r -s
echo
if ! [[ $REPLY =~ ^[Yy]$ ]]; then
exit 1;
fi
sed ${ROOT_PATH}/etc/fstab -i -e "s|^.*[^#].* / |${ROOT_DEV} / |;s|^.*[^#].* /boot |${BOOT_DEV} /boot |"
umount /boot
if [ $? -ne 0 ]; then
echo "Failed to umount /boot. Remount manually and try again."
exit 1
else
mount /boot
fi
}
if [[ ${EUID} -ne 0 ]]; then if [[ ${EUID} -ne 0 ]]; then
echo " !!! This tool must be run as root" echo " !!! This tool must be run as root"
exit 1 exit 1
@@ -229,6 +275,10 @@ if [[ ${SKIP_KERNEL} -eq 0 ]] && [[ ! -d "${FW_MODPATH}" ]]; then
exit 1 exit 1
fi fi
if [[ ${NOOBS_CHECK} -eq 1 ]] && [[ -f ${BOOT_PATH}/recovery.elf ]]; then
noobs_fix
fi
command -v readelf >/dev/null 2>&1 || { command -v readelf >/dev/null 2>&1 || {
echo " !!! This tool requires you have readelf installed, please install it first" echo " !!! This tool requires you have readelf installed, please install it first"
echo " In Debian, try: sudo apt-get install binutils" echo " In Debian, try: sudo apt-get install binutils"