summaryrefslogtreecommitdiff
path: root/target/linux/apm821xx/base-files/lib
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/apm821xx/base-files/lib')
-rwxr-xr-xtarget/linux/apm821xx/base-files/lib/apm821xx.sh4
-rw-r--r--target/linux/apm821xx/base-files/lib/preinit/79_move_config13
-rwxr-xr-xtarget/linux/apm821xx/base-files/lib/upgrade/platform.sh13
-rw-r--r--target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh36
4 files changed, 66 insertions, 0 deletions
diff --git a/target/linux/apm821xx/base-files/lib/apm821xx.sh b/target/linux/apm821xx/base-files/lib/apm821xx.sh
index 82f85c5..98e88cf 100755
--- a/target/linux/apm821xx/base-files/lib/apm821xx.sh
+++ b/target/linux/apm821xx/base-files/lib/apm821xx.sh
@@ -14,6 +14,10 @@ apm821xx_board_detect() {
name="mr24"
;;
+ *"MyBook Live"*)
+ name="mbl"
+ ;;
+
*)
name="unknown"
;;
diff --git a/target/linux/apm821xx/base-files/lib/preinit/79_move_config b/target/linux/apm821xx/base-files/lib/preinit/79_move_config
new file mode 100644
index 0000000..7c651b8
--- /dev/null
+++ b/target/linux/apm821xx/base-files/lib/preinit/79_move_config
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+BOOTPART=/dev/sda1
+
+move_config() {
+ if [ -b $BOOTPART ]; then
+ mkdir -p /boot
+ mount -t ext4 -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/apm821xx/base-files/lib/upgrade/platform.sh b/target/linux/apm821xx/base-files/lib/upgrade/platform.sh
index ddf775f..d5b0986 100755
--- a/target/linux/apm821xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/apm821xx/base-files/lib/upgrade/platform.sh
@@ -11,6 +11,11 @@ platform_check_image() {
[ "$#" -gt 1 ] && return 1
case "$board" in
+ mbl)
+ mbl_do_platform_check $board "$1"
+ return $?;
+ ;;
+
mr24)
merakinand_do_platform_check $board "$1"
return $?;
@@ -41,6 +46,10 @@ platform_do_upgrade() {
local board=$(apm821xx_board_name)
case "$board" in
+ mbl)
+ mbl_do_upgrade "$ARGV"
+ ;;
+
*)
default_do_upgrade "$ARGV"
;;
@@ -51,6 +60,10 @@ platform_copy_config() {
local board=$(apm821xx_board_name)
case "$board" in
+ mbl)
+ mbl_copy_config
+ ;;
+
*)
;;
esac
diff --git a/target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh b/target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh
new file mode 100644
index 0000000..d734751
--- /dev/null
+++ b/target/linux/apm821xx/base-files/lib/upgrade/wdbook.sh
@@ -0,0 +1,36 @@
+. /lib/functions.sh
+
+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"'
+}
+
+mbl_do_platform_check() {
+ local board="$1"
+ local file="$2"
+ local magic
+
+ magic=$(get_magic_at "$file" 510)
+
+ [ "$magic" != "55aa" ] && {
+ echo "Failed to verify MBR boot signature."
+ return 1
+ }
+
+ return 0;
+}
+
+mbl_do_upgrade() {
+ sync
+ get_image "$1" | dd of=/dev/sda bs=2M conv=fsync
+ sleep 1
+}
+
+mbl_copy_config() {
+ mkdir -p /boot
+ [ -f /boot/uImage ] || mount -t ext4 -o rw,noatime /dev/sda1 /boot
+ cp -af "$CONF_TAR" /boot/
+ sync
+ umount /boot
+}