[source] mvebu: add sysupgrade support for clearfog

LEDE Commits lede-commits at lists.infradead.org
Mon Sep 26 04:29:24 PDT 2016


jogo pushed a commit to source.git, branch master:
https://git.lede-project.org/6859098d97aaa4e60a795f5887911958ca134ed0

commit 6859098d97aaa4e60a795f5887911958ca134ed0
Author: Jonas Gorski <jonas.gorski at gmail.com>
AuthorDate: Mon Sep 26 12:02:40 2016 +0200

    mvebu: add sysupgrade support for clearfog
    
    Add and enable sysupgrade support for clearfog boards, based on how the
    brcm2708 target does it.
    
    Signed-off-by: Jonas Gorski <jonas.gorski at gmail.com>
    Acked-by: Felix Fietkau <nbd at nbd.name>
---
 .../mvebu/base-files/lib/preinit/79_move_config    | 18 ++++++++++++
 .../linux/mvebu/base-files/lib/upgrade/clearfog.sh | 32 ++++++++++++++++++++++
 .../linux/mvebu/base-files/lib/upgrade/linksys.sh  | 19 ++++++++-----
 .../linux/mvebu/base-files/lib/upgrade/platform.sh | 16 +++++++++++
 target/linux/mvebu/image/Makefile                  |  2 +-
 5 files changed, 79 insertions(+), 8 deletions(-)

diff --git a/target/linux/mvebu/base-files/lib/preinit/79_move_config b/target/linux/mvebu/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000..b0ee62a
--- /dev/null
+++ b/target/linux/mvebu/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
+		mkdir -p /boot
+		mount -t vfat -o rw,noatime $BOOTPART /boot
+		[ -f /boot/sysupgrade.tgz ] && mv -f /boot/sysupgrade.tgz /
+	fi
+}
+
+boot_hook_add preinit_mount_root move_config
diff --git a/target/linux/mvebu/base-files/lib/upgrade/clearfog.sh b/target/linux/mvebu/base-files/lib/upgrade/clearfog.sh
new file mode 100644
index 0000000..5388b22
--- /dev/null
+++ b/target/linux/mvebu/base-files/lib/upgrade/clearfog.sh
@@ -0,0 +1,32 @@
+get_magic_at() {
+	local file="$1"
+	local pos="$2"
+	get_image "$file" | dd bs=1 count=2 skip="$pos" 2>/dev/null | hexdump -v -n 2 -e '1/1 "%02x"'
+}
+
+platform_check_image_clearfog() {
+	local file="$1"
+	local magic
+
+	magic=$(get_magic_at "$file" 510)
+	[ "$magic" != "55aa" ] && {
+		echo "Failed to verify MBR boot signature."
+		return 1
+	}
+
+	return 0;
+}
+
+platform_do_upgrade_clearfog() {
+	sync
+	get_image "$1" | dd of=/dev/mmcblk0 bs=2M conv=fsync
+	sleep 1
+}
+
+platform_copy_config_clearfog() {
+	mkdir -p /boot
+	[ -f /boot/kernel.img ] || mount -t vfat -o rw,noatime /dev/mmcblk0p1 /boot
+	cp -af "$CONF_TAR" /boot/
+	sync
+	umount /boot
+}
diff --git a/target/linux/mvebu/base-files/lib/upgrade/linksys.sh b/target/linux/mvebu/base-files/lib/upgrade/linksys.sh
index fc40333..baa29dc 100644
--- a/target/linux/mvebu/base-files/lib/upgrade/linksys.sh
+++ b/target/linux/mvebu/base-files/lib/upgrade/linksys.sh
@@ -74,13 +74,18 @@ platform_do_upgrade_linksys() {
 }
 
 linksys_preupgrade() {
-	export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /usr/sbin/fw_printenv /usr/sbin/fw_setenv"
-	export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /bin/mkdir /bin/touch"
-	export RAMFS_COPY_DATA="${RAMFS_COPY_DATA} /etc/fw_env.config /var/lock/fw_printenv.lock"
+	local board=$(mvebu_board_name)
 
-	[ -f /tmp/sysupgrade.tgz ] && {
-		cp /tmp/sysupgrade.tgz /tmp/syscfg/sysupgrade.tgz
-	}
+	case "$board" in
+	armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+		export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /usr/sbin/fw_printenv /usr/sbin/fw_setenv"
+		export RAMFS_COPY_BIN="${RAMFS_COPY_BIN} /bin/mkdir /bin/touch"
+		export RAMFS_COPY_DATA="${RAMFS_COPY_DATA} /etc/fw_env.config /var/lock/fw_printenv.lock"
+
+		[ -f /tmp/sysupgrade.tgz ] && {
+			cp /tmp/sysupgrade.tgz /tmp/syscfg/sysupgrade.tgz
+		}
+		;;
+	esac
 }
 
-append sysupgrade_pre_upgrade linksys_preupgrade
diff --git a/target/linux/mvebu/base-files/lib/upgrade/platform.sh b/target/linux/mvebu/base-files/lib/upgrade/platform.sh
index 2f699a7..5652e98 100755
--- a/target/linux/mvebu/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mvebu/base-files/lib/upgrade/platform.sh
@@ -20,6 +20,10 @@ platform_check_image() {
 		}
 		return 0;
 		;;
+	armada-388-clearfog)
+		platform_check_image_clearfog "$ARGV"
+		return $?
+		;;
 	esac
 
 	echo "Sysupgrade is not yet supported on $board."
@@ -33,11 +37,23 @@ platform_do_upgrade() {
 	armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-shelby|armada-xp-linksys-mamba)
 		platform_do_upgrade_linksys "$ARGV"
 		;;
+	armada-388-clearfog)
+		platform_do_upgrade_clearfog "$ARGV"
+		;;
 	*)
 		default_do_upgrade "$ARGV"
 		;;
 	esac
 }
+platform_copy_config() {
+	local board=$(mvebu_board_name)
+
+	case "$board" in
+	armada-388-clearfog)
+		platform_copy_config_clearfog "$ARGV"
+		;;
+	esac
+}
 
 disable_watchdog() {
 	killall watchdog
diff --git a/target/linux/mvebu/image/Makefile b/target/linux/mvebu/image/Makefile
index 377f098..b0cc164 100644
--- a/target/linux/mvebu/image/Makefile
+++ b/target/linux/mvebu/image/Makefile
@@ -175,7 +175,7 @@ define Device/armada-388-clearfog
   KERNEL_INSTALL := 1
   KERNEL := dtb | kernel-bin
   DEVICE_TITLE := SolidRun ClearFog
-  DEVICE_PACKAGES := mkf2fs e2fsprogs swconfig
+  DEVICE_PACKAGES := mkf2fs e2fsprogs swconfig kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1
   IMAGES := bundle.tar.gz sdcard.img.gz
   IMAGE/bundle.tar.gz := clearfog-bundle
   IMAGE/sdcard.img.gz := boot-scr | boot-img | sdcard-img | gzip



More information about the lede-commits mailing list