From 7a265338683b6e8100d34eda6e04b113ceba0e7f Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 13 Aug 2009 00:07:42 +0200 Subject: enable cfgfs for rb532 - choose backend at runtime - do not hardcode partition device anymore --- package/cfgfs/Config.in | 3 ++- package/cfgfs/Makefile | 11 +---------- package/cfgfs/src/fwcf.sh | 41 +++++++++++++++++++++++++++++++++-------- 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/package/cfgfs/Config.in b/package/cfgfs/Config.in index 78051901b..e3412a458 100644 --- a/package/cfgfs/Config.in +++ b/package/cfgfs/Config.in @@ -4,7 +4,8 @@ config ADK_PACKAGE_CFGFS select BUSYBOX_COMM select BUSYBOX_MD5SUM select BUSYBOX_FEATURE_SORT_BIG - depends on ADK_LINUX_X86_ALIX1C || ADK_LINUX_CRIS_FOXBOARD + depends on ADK_LINUX_X86_ALIX1C || ADK_LINUX_CRIS_FOXBOARD || \ + ADK_LINUX_MIPS_RB532 default y help Adopted from FreeWRT fwcf diff --git a/package/cfgfs/Makefile b/package/cfgfs/Makefile index 1485cb9d9..790f536fc 100644 --- a/package/cfgfs/Makefile +++ b/package/cfgfs/Makefile @@ -5,7 +5,7 @@ include ${TOPDIR}/rules.mk PKG_NAME:= cfgfs PKG_VERSION:= 1.0.6 -PKG_RELEASE:= 2 +PKG_RELEASE:= 3 PKG_DESCR:= compressed config filesystem PKG_SECTION:= base @@ -27,14 +27,5 @@ do-install: ${INSTALL_DIR} ${IDIR_CFGFS}/sbin ${INSTALL_BIN} ${WRKBUILD}/fwcf.sh ${IDIR_CFGFS}/sbin/cfgfs ${INSTALL_BIN} ${WRKBUILD}/fwcf.helper.out ${IDIR_CFGFS}/sbin/cfgfs.helper -ifeq ($(ARCH),cris) - ${INSTALL_BIN} ${WRKBUILD}/mtd ${IDIR_CFGFS}/sbin/mtd - echo '#!/bin/sh' > ${IDIR_CFGFS}/sbin/cfgfs.write - echo 'mtd -F write - cfgfs' >> ${IDIR_CFGFS}/sbin/cfgfs.write -else - echo '#!/bin/sh' > ${IDIR_CFGFS}/sbin/cfgfs.write - echo 'cat > /dev/sda2' >> ${IDIR_CFGFS}/sbin/cfgfs.write -endif - chmod 755 ${IDIR_CFGFS}/sbin/cfgfs.write include ${TOPDIR}/mk/pkg-bottom.mk diff --git a/package/cfgfs/src/fwcf.sh b/package/cfgfs/src/fwcf.sh index fcaaf80a0..84eef3780 100644 --- a/package/cfgfs/src/fwcf.sh +++ b/package/cfgfs/src/fwcf.sh @@ -114,10 +114,12 @@ EOF esac # find backend device, first try to find partition with ID 88 +mtd=0 part=$(fdisk -l|awk '$5 == 88 { print $1 }') if [ -z $part ]; then # otherwise search for MTD device with name cfgfs part=/dev/mtd$(fgrep '"cfgfs"' /proc/mtd 2>/dev/null | sed 's/^mtd\([^:]*\):.*$/\1/')ro + mtd=1 fi if [[ ! -e $part ]]; then @@ -127,7 +129,11 @@ fi if test $1 = erase; then dd if="$part" 2>&1 | md5sum 2>&1 >/dev/urandom - cfgfs.helper -Me | cfgfs.write + if [ $mtd -eq 1 ]; then + cfgfs.helper -Me | mtd -F write - cfgfs + else + cfgfs.helper -Me | cat > $part + fi exit $? fi @@ -153,7 +159,12 @@ if test $1 = setup; then unclean=2 else x=$(dd if="$part" bs=4 count=1 2>/dev/null) - [[ "$x" = "FWCF" ]] || cfgfs.helper -Me | cfgfs.write + [[ "$x" = "FWCF" ]] || \ + if [ $mtd -eq 1 ]; then + cfgfs.helper -Me | mtd -F write - cfgfs + else + cfgfs.helper -Me | cat > $part + fi if ! cfgfs.helper -U /tmp/.cfgfs/temp <"$part"; then unclean=1 echo 'cfgfs: error: cannot extract' @@ -246,9 +257,16 @@ if test $1 = commit; then [[ "$x" = "$y" ]] && rm "../temp/$f" done rv=0 - if ! ( cfgfs.helper -M /tmp/.cfgfs/temp | cfgfs.write ); then - echo 'cfgfs: error: cannot write to $part!' - rv=6 + if [ $mtd -eq 1 ]; then + if ! ( cfgfs.helper -M /tmp/.cfgfs/temp | mtd -F write - cfgfs ); then + echo 'cfgfs: error: cannot write to $part!' + rv=6 + fi + else + if ! ( cfgfs.helper -M /tmp/.cfgfs/temp | cat > $part ); then + echo 'cfgfs: error: cannot write to $part!' + rv=6 + fi fi umount /tmp/.cfgfs/temp exit $rv @@ -368,9 +386,16 @@ if test $1 = restore; then rm -rf /tmp/.cfgfs.restore exit 12 fi - if ! ( cfgfs.helper -MD dump | cfgfs.write ); then - echo 'cfgfs: error: cannot write to $part!' - exit 6 + if [ $mtd -eq 1 ]; then + if ! ( cfgfs.helper -MD dump | mtd -F write - cfgfs ); then + echo 'cfgfs: error: cannot write to $part!' + exit 6 + fi + else + if ! ( cfgfs.helper -MD dump | cat > $part ); then + echo 'cfgfs: error: cannot write to $part!' + exit 6 + fi fi cd / rm -rf /tmp/.cfgfs.restore -- cgit v1.2.3