#!/bin/sh # Install or download packages and/or sysupgrade. # Script version 1.34 Rafal Drzymala 2013-2014 # # Changelog # # 1.00 RD First stable code # 1.04 RD Change code sequence # 1.05 RD Code tune up # 1.06 RD Code tune up # 1.07 RD ExtRoot code improvements # 1.08 RD Add image check sum control # 1.09 RD Add command line switch on/off-line package post-install # Add command line switch to disable configuration backup # 1.10 RD Preparation scripts code improvements # 1.11 RD Preparation scripts code improvements (2) # 1.12 RD Preparation scripts code improvements (3) # 1.13 RD Preparation scripts code improvements (4) # 1.14 RD Extroot scripts code improvements # 1.15 RD Help improvements # 1.16 RD Help improvements (2), Preparation scripts code improvements (5) # 1.17 RD Extroot scripts code improvements (2) # 1.18 RD Include installed packages options # 1.19 RD Extroot scripts code improvements (3) # 1.20 RD Add status led toggle # 1.21 RD Correct rc.local manipulation code # 1.22 RD Add packages disabling to sysupgrade process # Preparation scripts code improvements (5) # 1.23 RD Extroot scripts code improvements # 1.24 RD Added recurrence of checking of package dependences # Changed packages initialization script name convention # 1.25 RD Preparation scripts code improvements (6) # 1.26 RD Preparation scripts code improvements (7) # 1.27 RD Code tune up # 1.28 RD Code tune up # 1.29 RD Dependency check code improvements # 1.30 RD Added post install file removing # Added external script # 1.31 RD Added backup command # 1.32 RD Removed I/O control after post install file removing # 1.33 RD Added variables to image source path # 1.34 RD Added image file and packages files sums calculation # # Destination /sbin/install.sh # . /etc/openwrt_release local CMD="" local OFFLINE_POST_INSTALL="1" local INCLUDE_INSTALLED="1" local HOST_NAME="" local BACKUP_ENABLE="1" local BACKUP_PATH="" local BACKUP_FILE="" local INSTALL_PATH="/tmp" local PACKAGES="" local IMAGE_SOURCE="" local IMAGE_FILENAME="sysupgrade.bin" local POST_INSTALL_SCRIPT="post-installer" local POST_INSTALLER="/bin/$POST_INSTALL_SCRIPT.sh" local POST_INSTALLER_LOG="/usr/$POST_INSTALL_SCRIPT.log" local INSTALLER_KEEP_FILE="/lib/upgrade/keep.d/$POST_INSTALL_SCRIPT" local RC_LOCAL="/etc/rc.local" local POST_INSTALL_REMOVE="/etc/config/*-opkg" local RUN_SCRIPT="" check_exit_code() { local CODE=$? if [ $CODE != 0 ]; then echo "Abort, error ($CODE) detected!" exit $CODE fi } get_mount_device() { # local CHECK_PATH=$1 [ -L $CHECK_PATH ] && CHECK_PATH=$($BIN_LS -l $CHECK_PATH | $BIN_AWK -F " -> " '{print $2}') $BIN_AWK -v path="$CHECK_PATH" 'BEGIN{FS=" ";device=""}path~"^"$2{if($2>point){device=$1;point=$2}}END{print device}' /proc/mounts check_exit_code } which_binary() { # [ [...]] while [ -n "$1" ]; do local WHICH=$(which $1) if [ "$WHICH" == "" ]; then echo "Binary $1 not found in system!" exit 1 else eval "export -- \"BIN_$(echo $1 | tr '[a-z]' '[A-Z]')=$WHICH\"" fi shift done } add_to_keep_file() { # local CONTENT="$1" local ROOT_PATH="$2" $BIN_ECHO "$1">>$ROOT_PATH$INSTALLER_KEEP_FILE check_exit_code } run_script() { # if [ "$RUN_SCRIPT" != "" ] && [ -x $RUN_SCRIPT ]; then $BIN_ECHO "Run script $RUN_SCRIPT $1 ..." $RUN_SCRIPT $1 check_exit_code $BIN_ECHO "Script $RUN_SCRIPT exited." fi } add_to_post_installer_log() { # $BIN_ECHO "$($BIN_DATE) $1">>$POST_INSTALLER_LOG } package_script_execute() { #