aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/rb532/base-files
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2017-01-05 17:22:16 +0100
committerFelix Fietkau <nbd@nbd.name>2017-01-07 17:50:57 +0100
commitad76fdfc8afc6e13b371cb47f6a82af39eabd414 (patch)
tree113092d72bb224bd420db3b4a0df8bc55738ef89 /target/linux/rb532/base-files
parent5b6b0aa267bac03a8fb75d2e6c7dd98f384b7fea (diff)
downloadupstream-ad76fdfc8afc6e13b371cb47f6a82af39eabd414.tar.gz
upstream-ad76fdfc8afc6e13b371cb47f6a82af39eabd414.tar.bz2
upstream-ad76fdfc8afc6e13b371cb47f6a82af39eabd414.zip
rb532: switch to UBI, drop yaffs2 support, use sysupgrade for NAND
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'target/linux/rb532/base-files')
-rw-r--r--target/linux/rb532/base-files/lib/preinit/10_sysinfo11
-rw-r--r--target/linux/rb532/base-files/lib/upgrade/platform.sh26
-rwxr-xr-xtarget/linux/rb532/base-files/sbin/cf2nand67
-rwxr-xr-xtarget/linux/rb532/base-files/sbin/wget2nand71
4 files changed, 37 insertions, 138 deletions
diff --git a/target/linux/rb532/base-files/lib/preinit/10_sysinfo b/target/linux/rb532/base-files/lib/preinit/10_sysinfo
new file mode 100644
index 0000000000..4c932fde19
--- /dev/null
+++ b/target/linux/rb532/base-files/lib/preinit/10_sysinfo
@@ -0,0 +1,11 @@
+get_model_rb532() {
+ grep system\ type /proc/cpuinfo | awk -F ": " '{print $2}'
+}
+
+do_sysinfo_rb532() {
+ mkdir -p /tmp/sysinfo
+ echo rb532 > /tmp/sysinfo/board_name
+ get_model_rb532 > /tmp/sysinfo/model
+}
+
+boot_hook_add preinit_main do_sysinfo_rb532
diff --git a/target/linux/rb532/base-files/lib/upgrade/platform.sh b/target/linux/rb532/base-files/lib/upgrade/platform.sh
new file mode 100644
index 0000000000..29fe18de30
--- /dev/null
+++ b/target/linux/rb532/base-files/lib/upgrade/platform.sh
@@ -0,0 +1,26 @@
+REQUIRE_IMAGE_METADATA=1
+RAMFS_COPY_BIN=/usr/sbin/nandwrite
+CI_KERNPART=none
+
+platform_check_image() {
+ [ -e /dev/ubi0 ] || {
+ ubiattach -m 1
+ sleep 1
+ }
+ return 0;
+}
+
+platform_pre_upgrade() {
+ nand_do_upgrade "$1"
+}
+
+platform_nand_pre_upgrade() {
+ local board_name="$(cat /tmp/sysinfo/board_name)"
+
+ mtd erase kernel
+ tar xf "$1" sysupgrade-$board_name/kernel -O | nandwrite -o /dev/mtd0 -
+}
+
+platform_do_upgrade() {
+ default_do_upgrade "$ARGV"
+}
diff --git a/target/linux/rb532/base-files/sbin/cf2nand b/target/linux/rb532/base-files/sbin/cf2nand
deleted file mode 100755
index 0bfc259ef6..0000000000
--- a/target/linux/rb532/base-files/sbin/cf2nand
+++ /dev/null
@@ -1,67 +0,0 @@
-#!/bin/sh
-. /lib/functions.sh
-
-copy_kernel() {
- local input="$1"
- local output="$2"
- local cmdline="$3"
- size="$(echo -n "$cmdline" | wc -c)"
- dd if="$input" bs=3M count=1 > "$output"
- /sbin/patch-cmdline "$output" "$cmdline"
-}
-
-fstype="$(mount | grep ' / ' | awk '$5 != "rootfs" {print $5}')"
-case "$fstype" in
- ext2|jffs2) echo "Copying from $fstype to yaffs2";;
- *) echo "Invalid filesystem."; exit 1;;
-esac
-
-[ -d /tmp/cf2nand ] && {
- echo "/tmp/cf2nand already exists"
- exit 1
-}
-
-mkdir /tmp/cf2nand
-mkdir /tmp/cf2nand/rootfs
-mount -t "$fstype" /dev/root /tmp/cf2nand/rootfs || {
- echo "Mounting rootfs failed."
- exit 1
-}
-
-boot="$(find_mtd_part 'Routerboard NAND boot')"
-main="$(find_mtd_part 'rootfs')"
-[ -z "$boot" -o -z "$main" ] && {
- echo "Cannot find NAND Flash partitions"
- exit 1
-}
-
-echo "Erasing filesystem..."
-mtd erase Boot 2>/dev/null >/dev/null
-mtd erase Main 2>/dev/null >/dev/null
-
-mkdir /tmp/cf2nand/p1
-mkdir /tmp/cf2nand/p2
-mount -t yaffs2 "$boot" /tmp/cf2nand/p1
-mount -t yaffs2 "$main" /tmp/cf2nand/p2
-
-echo "Copying kernel..."
-copy_kernel /dev/cfa1 /tmp/cf2nand/p1/kernel "root=/dev/mtdblock1 rootfstype=yaffs2 " 2>/dev/null >/dev/null
-umount /tmp/cf2nand/p1
-rmdir /tmp/cf2nand/p1
-
-echo "Copying filesystem..."
-( cd /tmp/cf2nand/rootfs; tar c . ) | ( cd /tmp/cf2nand/p2; tar x )
-echo "chmod ugo+x /" > /tmp/cf2nand/p2/etc/uci-defaults/set_root_permission
-sync
-# Use kexec is present
-[ -x /usr/bin/kexec ] && {
- kexec -l /tmp/cf2nand/p1/kernel --command-line="$(cat /proc/cmdline) root=/dev/mtdblock1 rootfstype=yaffs2"
- kexec -e
-}
-umount /tmp/cf2nand/p2
-rmdir /tmp/cf2nand/p2
-
-umount /tmp/cf2nand/rootfs
-rmdir /tmp/cf2nand/rootfs
-rmdir /tmp/cf2nand
-
diff --git a/target/linux/rb532/base-files/sbin/wget2nand b/target/linux/rb532/base-files/sbin/wget2nand
deleted file mode 100755
index 9a111fa896..0000000000
--- a/target/linux/rb532/base-files/sbin/wget2nand
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-# wget2nand
-# This script can be used to download a TGZ file from your build system which
-# contains the files to be installed on the NAND flash on your RB1xx card.
-# The one parameter is the URL of the TGZ file to be downloaded.
-# Licence GPL V2
-# Author david.goodenough@linkchoose.co.uk
-# Based on cf2nand from RB532 support
-. /lib/functions.sh
-
-[ -d /tmp/wget2nand ] && {
- echo "/tmp/wget2nand already exists"
- exit 1
-}
-
-# first get an address for br-lan using udhcpc
-killall udhcpc
-/sbin/udhcpc -i br-lan
-
-# need to find the wget server from the command line
-url=$1
-[ -z "$url" ] && {
- echo "No URL specified for image TGZ"
- echo "Usage : $0 URL"
- exit 1
-}
-
-boot="$(find_mtd_part 'Routerboard NAND Boot')"
-main="$(find_mtd_part 'rootfs')"
-[ -z "$boot" -o -z "$main" ] && {
- echo "Cannot find NAND Flash partitions"
- exit 1
-}
-
-echo "Erasing filesystem."
-mtd erase Boot 2>/dev/null >/dev/null
-mtd erase Main 2>/dev/null >/dev/null
-
-echo "Mounting $main as new root and $boot as boot partition"
-
-mkdir /tmp/wget2nand/
-mkdir /tmp/wget2nand-boot
-mount -t yaffs2 "$main" /tmp/wget2nand/
-mount -t yaffs2 "$boot" /tmp/wget2nand-boot
-
-echo "Copying filesystem..."
-( wget -O - $url/openwrt-rb532-rootfs.tgz) | ( cd /tmp/wget2nand/; tar xvz )
-wget -O /tmp/wget2nand-boot/kernel $url/openwrt-rb532-vmlinux
-
-# No need to patch the kernel, this was done during the build process
-chmod +x /tmp/wget2nand-boot/kernel
-
-# make sure everything is written before we unmount the partitions
-echo "chmod ugo+x /" > /tmp/wget2nand/etc/uci-defaults/set_root_permission
-sync
-ls /tmp/wget2nand-boot/
-ls /tmp/wget2nand/
-# use kexec if present
-[ -x /usr/bin/kexec ] && {
- kexec -l /tmp/wget2nand-boot/kernel --command-line="$(cat /proc/cmdline) root=$main rootfstype=yaffs2"
- kexec -e
-}
-
-# unmount the partitions and remove the directories into which they were mounted
-umount /tmp/wget2nand-boot
-umount /tmp/wget2nand
-rmdir /tmp/wget2nand-boot
-rmdir /tmp/wget2nand
-
-# all done
-echo "Image written, you can now reboot. Remember to change the boot source to Boot from Nand"