diff options
Diffstat (limited to 'target/linux/octeon')
-rwxr-xr-x | target/linux/octeon/base-files/lib/upgrade/platform.sh | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/target/linux/octeon/base-files/lib/upgrade/platform.sh b/target/linux/octeon/base-files/lib/upgrade/platform.sh index e4c7b6f438..11399a2629 100755 --- a/target/linux/octeon/base-files/lib/upgrade/platform.sh +++ b/target/linux/octeon/base-files/lib/upgrade/platform.sh @@ -1,11 +1,33 @@ # -# Copyright (C) 2010 OpenWrt.org +# Copyright (C) 2014 OpenWrt.org # . /lib/functions/octeon.sh +platform_get_rootfs() { + local rootfsdev + + if read cmdline < /proc/cmdline; then + case "$cmdline" in + *block2mtd=*) + rootfsdev="${cmdline##*block2mtd=}" + rootfsdev="${rootfsdev%%,*}" + ;; + *root=*) + rootfsdev="${cmdline##*root=}" + rootfsdev="${rootfsdev%% *}" + ;; + esac + + echo "${rootfsdev}" + fi +} + platform_do_upgrade() { local board=$(octeon_board_name) + local rootfs="$(platform_get_rootfs)" + + [ -d "${rootfs}" ] || return 1 case "$board" in erlite) @@ -22,7 +44,7 @@ platform_do_upgrade() { mount -t vfat /dev/sda1 /boot tar xf $tar_file sysupgrade-erlite/kernel -O > /boot/vmlinux.64 md5sum /boot/vmlinux.64 | cut -f1 -d " " > /boot/vmlinux.64.md5 - tar xf $tar_file sysupgrade-erlite/root -O | dd of=/dev/sda2 bs=4096 + tar xf $tar_file sysupgrade-erlite/root -O | dd of="${rootfs}" bs=4096 sync umount /mnt return 0 |