diff options
author | Felix Fietkau <nbd@nbd.name> | 2017-01-05 17:22:16 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-01-07 17:50:57 +0100 |
commit | ad76fdfc8afc6e13b371cb47f6a82af39eabd414 (patch) | |
tree | 113092d72bb224bd420db3b4a0df8bc55738ef89 /target/linux/rb532/base-files | |
parent | 5b6b0aa267bac03a8fb75d2e6c7dd98f384b7fea (diff) | |
download | upstream-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_sysinfo | 11 | ||||
-rw-r--r-- | target/linux/rb532/base-files/lib/upgrade/platform.sh | 26 | ||||
-rwxr-xr-x | target/linux/rb532/base-files/sbin/cf2nand | 67 | ||||
-rwxr-xr-x | target/linux/rb532/base-files/sbin/wget2nand | 71 |
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" |