iop upgrade: add upgrade of boot loader.

This commit is contained in:
Kenneth Johansson 2019-01-16 21:32:02 +01:00
parent 2187c6cadd
commit 351965e397
3 changed files with 75 additions and 5 deletions

View file

@ -233,7 +233,7 @@ function ssh_upgrade {
upd_sysupgrade=0
do_dialog=0
while getopts "f:hnxt:isc" opt; do
while getopts "f:hnxt:iscb" opt; do
case $opt in
n)
upd_noreboot=1
@ -308,8 +308,9 @@ function ssh_upgrade {
if [ $upd_sysupgrade -eq 0 ]
then
extra_args=""
[ $upd_noreboot -eq 1 ] && extra_args="$extra_args -n"
[ $upd_noreboot -eq 1 ] && extra_args="$extra_args -n"
[ $upd_forceimage -eq 1 ] && extra_args="$extra_args -x"
[ $upd_forceboot -eq 1 ] && extra_args="$extra_args -b"
file_size_kb=`du -k "$upd_fw" | cut -f1`
cat $upd_fw | pv -s ${file_size_kb}k | ssh root@$upd_host "iopu $extra_args"

View file

@ -11,6 +11,7 @@ cmdline="" # command line settings.
###############################################################################
# file local variables. should not be used in imported functions. Can be used
# by functions declared in this script
chroot_cmdline="" # command line for the iop_chroot command.
board="" # string, Board name that is going to be matched
# against header of firmware image
upd_ubi_id="" # num, UBI volume number for the volume name
@ -23,6 +24,7 @@ upd_cfe=0 # set to 1 if system is using cfe as bootloader.
log_stdout=1 # set to 0 to prevent the log to also print to stdout
upd_noreboot=0 # set to 1 if we should not reboot after programming
upd_forceimage=0 # set this to force upgrade even if image is for wrong board.
upd_forceboot=0 # set this to force upgrade of boot loader
###############################################################################
# import external functions
source /lib/upgrade/iopsys.sh
@ -97,9 +99,11 @@ function mount_newroot {
mkdir -p /tmp/newroot_overlay/tmp/oldroot
mount --bind / /tmp/newroot_overlay/tmp/oldroot
mount --bind /tmp /tmp/newroot_overlay/tmp/oldroot/tmp
}
function umount_newroot {
umount /tmp/newroot_overlay/tmp/oldroot/tmp
umount /tmp/newroot_overlay/tmp/oldroot
umount /tmp/newroot_overlay/tmp
umount /tmp/newroot_overlay/sys
@ -138,7 +142,7 @@ trap finish EXIT
trap timeout SIGALRM
trap sig_pipe SIGPIPE
while getopts "nrx" opt; do
while getopts "nrxb" opt; do
case $opt in
n)
upd_noreboot=1
@ -146,6 +150,9 @@ while getopts "nrx" opt; do
x)
upd_forceimage=1
;;
b)
upd_forceboot=1
;;
r)
upd_vol=$(get_flashbank_next)
mount_newroot
@ -207,8 +214,12 @@ log "Firmware programmed to flash."
log "Transfering configuration to new system."
# Force upgrade of boot loader
[ $upd_forceboot -eq 1 ] && chroot_cmdline="$chroot_cmdline -b"
mount_newroot
chroot /tmp/newroot_overlay /sbin/iopu_chroot
chroot /tmp/newroot_overlay /sbin/iopu_chroot $chroot_cmdline
umount_newroot
log "Update fully installed."

View file

@ -1,3 +1,61 @@
#!/bin/sh
#
# This program is intended to be run in a chroot environment where the old system
# is mounted in /tmp/oldroot
#
###############################################################################
# Global variables. can be used directly in any function called.
###############################################################################
# file local variables. should not be used in imported functions. Can be used
# by functions declared in this script
upd_forceboot=0
log_stdout=1 # set to 0 to prevent the log to also print to stdout
###############################################################################
# import external functions
source /lib/upgrade/iopsys.sh
[ -f /lib/upgrade/iopupgrade ] && source /lib/upgrade/iopupgrade
# only call function if it exists
function_call() {
if type "$1" 2>/dev/null >/dev/null
then
$1 $@
fi
}
# Cleanup and error handling functions.
function log {
TIME=$(date)
[ $log_stdout -eq 1 ] && echo "$@"
echo "[$TIME] $@" >>/root/upd_log
}
while getopts "hb" opt; do
case $opt in
h)
upd_usage
exit 1
;;
b)
upd_forceboot=1
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done
# copy old install log over
cp /tmp/oldroot/tmp/upd_log /root/upd_log
# Upgrade boot loader if needed.
function_call upd_program_boot
echo "now we run in chroot"