The upgrade procedure works similar to the x86 platforms: The configuration
files (sysupgrade.tgz) are saved in the boot partition and moved to the
standard place in a preinit script. Since the boot partition is FAT32 we need
the vfat modules and dependencies.

Signed-off-by: Bruno Randolf <b...@einfach.org>
---
 target/linux/brcm2708/Makefile                         |  3 ++-
 .../brcm2708/base-files/lib/preinit/79_move_config     | 18 ++++++++++++++++++
 .../linux/brcm2708/base-files/lib/upgrade/platform.sh  | 17 +++++++++++++++++
 3 files changed, 37 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/brcm2708/base-files/lib/preinit/79_move_config
 create mode 100644 target/linux/brcm2708/base-files/lib/upgrade/platform.sh

diff --git a/target/linux/brcm2708/Makefile b/target/linux/brcm2708/Makefile
index 30f6e1d..37ff204 100644
--- a/target/linux/brcm2708/Makefile
+++ b/target/linux/brcm2708/Makefile
@@ -19,7 +19,8 @@ SUBTARGETS:=bcm2708 bcm2709
 KERNEL_PATCHVER:=3.18
 
 include $(INCLUDE_DIR)/target.mk
-DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core 
kmod-sound-arm-bcm2835
+DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core 
kmod-sound-arm-bcm2835 \
+       kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1
 
 define Target/Description
        Build firmware image for Broadcom BCM2708/BCM2709 SoC devices.
diff --git a/target/linux/brcm2708/base-files/lib/preinit/79_move_config 
b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000..7bcea7b
--- /dev/null
+++ b/target/linux/brcm2708/base-files/lib/preinit/79_move_config
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Copyright (C) 2015 OpenWrt.org
+
+BOOTPART=/dev/mmcblk0p1
+
+move_config() {
+       if [ -b $BOOTPART ]; then
+               insmod nls_cp437
+               insmod nls_iso8859-1
+               insmod fat
+               insmod vfat
+               mount -t vfat -o rw,noatime $BOOTPART /mnt
+               [ -f /mnt/sysupgrade.tgz ] && mv -f /mnt/sysupgrade.tgz /
+               umount /mnt
+       fi
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/brcm2708/base-files/lib/upgrade/platform.sh 
b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
new file mode 100644
index 0000000..3e1ee00
--- /dev/null
+++ b/target/linux/brcm2708/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,17 @@
+platform_check_image() {
+       # i know no way to verify the image
+       return 0;
+}
+
+platform_do_upgrade() {
+       sync
+       get_image "$1" | dd of=/dev/mmcblk0 bs=2M conv=fsync
+       sleep 1
+}
+
+platform_copy_config() {
+       mount -t vfat -o rw,noatime /dev/mmcblk0p1 /mnt
+       cp -af "$CONF_TAR" /mnt/
+       sync
+       umount /mnt
+}
-- 
1.9.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to