aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/base-files/files/lib/upgrade/common.sh27
-rwxr-xr-xpackage/base-files/files/lib/upgrade/stage243
-rwxr-xr-xpackage/base-files/files/sbin/sysupgrade2
-rwxr-xr-xtarget/linux/ar71xx/base-files/lib/upgrade/platform.sh2
-rw-r--r--target/linux/bcm53xx/base-files/lib/upgrade/platform.sh2
-rw-r--r--target/linux/ipq806x/base-files/lib/upgrade/platform.sh2
-rw-r--r--target/linux/kirkwood/base-files/lib/upgrade/platform.sh2
-rwxr-xr-xtarget/linux/mvebu/base-files/lib/upgrade/platform.sh2
-rwxr-xr-xtarget/linux/pistachio/base-files/lib/upgrade/platform.sh2
-rw-r--r--target/linux/rb532/base-files/lib/upgrade/platform.sh2
10 files changed, 40 insertions, 46 deletions
diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh
index c8b71015c2..428ec735d6 100644
--- a/package/base-files/files/lib/upgrade/common.sh
+++ b/package/base-files/files/lib/upgrade/common.sh
@@ -6,28 +6,33 @@ RAM_ROOT=/tmp/root
libs() { ldd $* 2>/dev/null | sed -r 's/(.* => )?(.*) .*/\2/'; }
install_file() { # <file> [ <file> ... ]
+ local target dest dir
for file in "$@"; do
+ if [ -L "$file" ]; then
+ target="$(readlink -f "$file")"
+ dest="$RAM_ROOT/$file"
+ [ ! -f "$dest" ] && {
+ dir="$(dirname "$dest")"
+ mkdir -p "$dir"
+ ln -s "$target" "$dest"
+ }
+ file="$target"
+ fi
dest="$RAM_ROOT/$file"
- [ -f $file -a ! -f $dest ] && {
- dir="$(dirname $dest)"
+ [ -f "$file" -a ! -f "$dest" ] && {
+ dir="$(dirname "$dest")"
mkdir -p "$dir"
- cp $file $dest
+ cp "$file" "$dest"
}
done
}
-install_bin() { # <file> [ <symlink> ... ]
+install_bin() {
+ local src files
src=$1
files=$1
[ -x "$src" ] && files="$src $(libs $src)"
install_file $files
- shift
- for link in "$@"; do {
- dest="$RAM_ROOT/$link"
- dir="$(dirname $dest)"
- mkdir -p "$dir"
- [ -f "$dest" ] || ln -s $src $dest
- }; done
}
run_hooks() {
diff --git a/package/base-files/files/lib/upgrade/stage2 b/package/base-files/files/lib/upgrade/stage2
index 9d12cc801c..5a439f1201 100755
--- a/package/base-files/files/lib/upgrade/stage2
+++ b/package/base-files/files/lib/upgrade/stage2
@@ -17,6 +17,9 @@ export VERBOSE=1
export CONFFILES=/tmp/sysupgrade.conffiles
export CONF_TAR=/tmp/sysupgrade.tgz
+RAMFS_COPY_BIN= # extra programs for temporary ramfs root
+RAMFS_COPY_DATA= # extra data files
+
[ -f "$CONF_TAR" ] || export SAVE_CONFIG=0
[ -f /tmp/sysupgrade.always.overwrite.bootdisk.partmap ] && export SAVE_PARTITIONS=0
@@ -41,32 +44,20 @@ supivot() { # <new_root> <old_root>
}
switch_to_ramfs() {
- install_bin /bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount \
- /sbin/pivot_root /sbin/reboot /bin/sync /bin/dd /bin/grep \
- /bin/cp /bin/mv /bin/tar /usr/bin/md5sum "/usr/bin/[" /bin/dd \
- /bin/vi /bin/ls /bin/cat /usr/bin/awk /usr/bin/hexdump \
- /bin/sleep /bin/zcat /usr/bin/bzcat /usr/bin/printf /usr/bin/wc \
- /bin/cut /usr/bin/printf /bin/sync /bin/mkdir /bin/rmdir \
- /bin/rm /usr/bin/basename /bin/kill /bin/chmod /usr/bin/find \
- /bin/mknod /bin/touch /bin/sed
-
- install_bin /sbin/mtd
- install_bin /sbin/mount_root
- install_bin /sbin/snapshot
- install_bin /sbin/snapshot_tool
- install_bin /usr/sbin/ubiupdatevol
- install_bin /usr/sbin/ubiattach
- install_bin /usr/sbin/ubiblock
- install_bin /usr/sbin/ubiformat
- install_bin /usr/sbin/ubidetach
- install_bin /usr/sbin/ubirsvol
- install_bin /usr/sbin/ubirmvol
- install_bin /usr/sbin/ubimkvol
- install_bin /usr/sbin/partx
- install_bin /usr/sbin/losetup
- install_bin /usr/sbin/mkfs.ext4
- for file in $RAMFS_COPY_BIN; do
- install_bin ${file//:/ }
+ for binary in \
+ /bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount \
+ pivot_root mount_root reboot sync kill sleep \
+ md5sum hexdump cat zcat bzcat dd tar \
+ ls basename find cp mv rm mkdir rmdir mknod touch chmod \
+ '[' printf wc grep awk sed cut \
+ mtd partx losetup mkfs.ext4 \
+ ubiupdatevol ubiattach ubiblock ubiformat \
+ ubidetach ubirsvol ubirmvol ubimkvol \
+ snapshot snapshot_tool \
+ $RAMFS_COPY_BIN
+ do
+ local file="$(which "$binary" 2>/dev/null)"
+ [ -n "$file" ] && install_bin "$file"
done
install_file /etc/resolv.conf /lib/*.sh /lib/functions/*.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA
diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
index 809e789f9f..359f21f51c 100755
--- a/package/base-files/files/sbin/sysupgrade
+++ b/package/base-files/files/sbin/sysupgrade
@@ -4,8 +4,6 @@
. /lib/functions/system.sh
# initialize defaults
-RAMFS_COPY_BIN="" # extra programs for temporary ramfs root
-RAMFS_COPY_DATA="" # extra data files
export MTD_CONFIG_ARGS=""
export INTERACTIVE=0
export VERBOSE=1
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index cf51fe2d80..ba65a79006 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -7,7 +7,7 @@
PART_NAME=firmware
RAMFS_COPY_DATA=/lib/ar71xx.sh
-[ -x /usr/sbin/nandwrite ] && RAMFS_COPY_BIN=/usr/sbin/nandwrite
+RAMFS_COPY_BIN='nandwrite'
CI_BLKSZ=65536
CI_LDADR=0x80060000
diff --git a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
index 6a9e495045..1f778c72b6 100644
--- a/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
@@ -1,4 +1,4 @@
-RAMFS_COPY_BIN='/usr/bin/osafeloader /usr/bin/oseama'
+RAMFS_COPY_BIN='osafeloader oseama'
PART_NAME=firmware
diff --git a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
index 141058f7ba..246361bbf6 100644
--- a/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq806x/base-files/lib/upgrade/platform.sh
@@ -3,7 +3,7 @@
PART_NAME=firmware
REQUIRE_IMAGE_METADATA=1
-RAMFS_COPY_BIN='/usr/sbin/fw_printenv /usr/sbin/fw_setenv'
+RAMFS_COPY_BIN='fw_printenv fw_setenv'
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
platform_check_image() {
diff --git a/target/linux/kirkwood/base-files/lib/upgrade/platform.sh b/target/linux/kirkwood/base-files/lib/upgrade/platform.sh
index c8c66c1b9d..f75acb0d61 100644
--- a/target/linux/kirkwood/base-files/lib/upgrade/platform.sh
+++ b/target/linux/kirkwood/base-files/lib/upgrade/platform.sh
@@ -1,6 +1,6 @@
. /lib/kirkwood.sh
-RAMFS_COPY_BIN='/usr/sbin/fw_printenv /usr/sbin/fw_setenv'
+RAMFS_COPY_BIN='fw_printenv fw_setenv'
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
platform_check_image() {
diff --git a/target/linux/mvebu/base-files/lib/upgrade/platform.sh b/target/linux/mvebu/base-files/lib/upgrade/platform.sh
index 8085634dca..dd21c0958e 100755
--- a/target/linux/mvebu/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mvebu/base-files/lib/upgrade/platform.sh
@@ -5,7 +5,7 @@
. /lib/mvebu.sh
-RAMFS_COPY_BIN='/usr/sbin/fw_printenv /usr/sbin/fw_setenv'
+RAMFS_COPY_BIN='fw_printenv fw_setenv'
RAMFS_COPY_DATA='/lib/mvebu.sh /etc/fw_env.config /var/lock/fw_printenv.lock'
REQUIRE_IMAGE_METADATA=1
diff --git a/target/linux/pistachio/base-files/lib/upgrade/platform.sh b/target/linux/pistachio/base-files/lib/upgrade/platform.sh
index ee5d5066c3..4edc06bf9f 100755
--- a/target/linux/pistachio/base-files/lib/upgrade/platform.sh
+++ b/target/linux/pistachio/base-files/lib/upgrade/platform.sh
@@ -6,7 +6,7 @@
# See /LICENSE for more information.
#
-RAMFS_COPY_BIN="/usr/sbin/fw_printenv /usr/sbin/fw_setenv /bin/mkdir /bin/dmesg /bin/sed /bin/grep"
+RAMFS_COPY_BIN='fw_printenv fw_setenv dmesg'
RAMFS_COPY_DATA="/etc/fw_env.config"
REQUIRE_IMAGE_METADATA=0
diff --git a/target/linux/rb532/base-files/lib/upgrade/platform.sh b/target/linux/rb532/base-files/lib/upgrade/platform.sh
index 29fe18de30..bfa73a7a24 100644
--- a/target/linux/rb532/base-files/lib/upgrade/platform.sh
+++ b/target/linux/rb532/base-files/lib/upgrade/platform.sh
@@ -1,5 +1,5 @@
REQUIRE_IMAGE_METADATA=1
-RAMFS_COPY_BIN=/usr/sbin/nandwrite
+RAMFS_COPY_BIN='nandwrite'
CI_KERNPART=none
platform_check_image() {