Skip to content
Snippets Groups Projects
Select Git revision
  • 0x4A6F-rpi4
  • 0x4A6F-master
  • master
  • v2018.2.2-ffs
  • v2018.2.x default protected
  • v2016.2.4-batmanbug
  • radv-filterd
  • v2016.2.x
  • hoodselector
  • v2016.1.x
  • babel
  • v2015.1.x
  • 2014.4.x
  • 2014.3.x
  • v2018.2.2-ffs0.1
  • v2018.2.1-ffs0.1
  • v2018.2.1
  • v2018.2-ffs0.1
  • v2018.2
  • v2018.1.4
  • v2018.1.3
  • v2018.1.2
  • v2018.1.1
  • v2018.1
  • v2017.1.8
  • v2017.1.7
  • v2017.1.6
  • v2017.1.5
  • v2017.1.4
  • v2017.1.3
  • v2017.1.2
  • v2016.2.7
  • v2017.1.1
  • v2017.1
34 results

0016-procd-remove-procd-nand-package.patch

Blame
  • Forked from firmware / FFS Gluon
    3118 commits behind the upstream repository.
    0016-procd-remove-procd-nand-package.patch 24.63 KiB
    From: Matthias Schiffer <mschiffer@universe-factory.net>
    Date: Fri, 21 Apr 2017 20:37:58 +0200
    Subject: procd: remove procd-nand package
    
    We always want to support staged upgrades now, so it's better to include
    upgraded into the main package. /lib/upgrade/nand.sh is moved to
    base-files.
    
    The procd-nand-firstboot package is removed for now, it may return later
    as a separate package.
    
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    
    diff --git a/package/base-files/Makefile b/package/base-files/Makefile
    index 305d0bfd333fd17f0f7c57ee2298dbfd4b97fe29..fe4430d59092dae9ba2ffbea61f58ac7b4b41dc6 100644
    --- a/package/base-files/Makefile
    +++ b/package/base-files/Makefile
    @@ -19,7 +19,9 @@ PKG_BUILD_DEPENDS:=usign/host
     PKG_LICENSE:=GPL-2.0
     
     # Extend depends from version.mk
    -PKG_CONFIG_DEPENDS += CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE
    +PKG_CONFIG_DEPENDS += \
    +	CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE \
    +	CONFIG_NAND_SUPPORT
     
     include $(INCLUDE_DIR)/package.mk
     
    @@ -31,7 +33,7 @@ endif
     define Package/base-files
       SECTION:=base
       CATEGORY:=Base system
    -  DEPENDS:=+netifd +libc +procd +jsonfilter +SIGNED_PACKAGES:usign +SIGNED_PACKAGES:lede-keyring +fstools +fwtool
    +  DEPENDS:=+netifd +libc +procd +jsonfilter +SIGNED_PACKAGES:usign +SIGNED_PACKAGES:lede-keyring +NAND_SUPPORT:ubi-utils +fstools +fwtool
       TITLE:=Base filesystem for Lede
       URL:=http://openwrt.org/
       VERSION:=$(PKG_RELEASE)-$(REVISION)
    @@ -106,9 +108,16 @@ ifdef CONFIG_SIGNED_PACKAGES
       endef
     endif
     
    +ifeq ($(CONFIG_NAND_SUPPORT),)
    +  define Package/base-files/nand-support
    +	rm -f $(1)/lib/upgrade/nand.sh
    +  endef
    +endif
    +
     define Package/base-files/install
     	$(CP) ./files/* $(1)/
     	$(Package/base-files/install-key)
    +	$(Package/base-files/nand-support)
     	if [ -d $(GENERIC_PLATFORM_DIR)/base-files/. ]; then \
     		$(CP) $(GENERIC_PLATFORM_DIR)/base-files/* $(1)/; \
     	fi
    diff --git a/package/base-files/files/lib/upgrade/nand.sh b/package/base-files/files/lib/upgrade/nand.sh
    new file mode 100644
    index 0000000000000000000000000000000000000000..6bd2005344c081df20e5a330a69e49e37225c39f
    --- /dev/null
    +++ b/package/base-files/files/lib/upgrade/nand.sh
    @@ -0,0 +1,376 @@
    +#!/bin/sh
    +# Copyright (C) 2014 OpenWrt.org
    +#
    +
    +. /lib/functions.sh
    +
    +# 'kernel' partition on NAND contains the kernel
    +CI_KERNPART="kernel"
    +
    +# 'ubi' partition on NAND contains UBI
    +CI_UBIPART="ubi"
    +
    +ubi_mknod() {
    +	local dir="$1"
    +	local dev="/dev/$(basename $dir)"
    +
    +	[ -e "$dev" ] && return 0
    +
    +	local devid="$(cat $dir/dev)"
    +	local major="${devid%%:*}"
    +	local minor="${devid##*:}"
    +	mknod "$dev" c $major $minor
    +}
    +
    +nand_find_volume() {
    +	local ubidevdir ubivoldir
    +	ubidevdir="/sys/devices/virtual/ubi/$1"
    +	[ ! -d "$ubidevdir" ] && return 1
    +	for ubivoldir in $ubidevdir/${1}_*; do
    +		[ ! -d "$ubivoldir" ] && continue
    +		if [ "$( cat $ubivoldir/name )" = "$2" ]; then
    +			basename $ubivoldir
    +			ubi_mknod "$ubivoldir"
    +			return 0
    +		fi
    +	done
    +}
    +
    +nand_find_ubi() {
    +	local ubidevdir ubidev mtdnum
    +	mtdnum="$( find_mtd_index $1 )"
    +	[ ! "$mtdnum" ] && return 1
    +	for ubidevdir in /sys/devices/virtual/ubi/ubi*; do
    +		[ ! -d "$ubidevdir" ] && continue
    +		cmtdnum="$( cat $ubidevdir/mtd_num )"
    +		[ ! "$mtdnum" ] && continue
    +		if [ "$mtdnum" = "$cmtdnum" ]; then
    +			ubidev=$( basename $ubidevdir )
    +			ubi_mknod "$ubidevdir"
    +			echo $ubidev
    +			return 0
    +		fi
    +	done
    +}
    +
    +nand_get_magic_long() {
    +	dd if="$1" skip=$2 bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
    +}
    +
    +get_magic_long_tar() {
    +	( tar xf $1 $2 -O | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null
    +}
    +
    +identify_magic() {
    +	local magic=$1
    +	case "$magic" in
    +		"55424923")
    +			echo "ubi"
    +			;;
    +		"31181006")
    +			echo "ubifs"
    +			;;
    +		"68737173")
    +			echo "squashfs"
    +			;;
    +		"d00dfeed")
    +			echo "fit"
    +			;;
    +		"4349"*)
    +			echo "combined"
    +			;;
    +		*)
    +			echo "unknown $magic"
    +			;;
    +	esac
    +}
    +
    +
    +identify() {
    +	identify_magic $(nand_get_magic_long "$1" "${2:-0}")
    +}
    +
    +identify_tar() {
    +	identify_magic $(get_magic_long_tar "$1" "$2")
    +}
    +
    +nand_restore_config() {
    +	sync
    +	local ubidev=$( nand_find_ubi $CI_UBIPART )
    +	local ubivol="$( nand_find_volume $ubidev rootfs_data )"
    +	[ ! "$ubivol" ] &&
    +		ubivol="$( nand_find_volume $ubidev rootfs )"
    +	mkdir /tmp/new_root
    +	if ! mount -t ubifs /dev/$ubivol /tmp/new_root; then
    +		echo "mounting ubifs $ubivol failed"
    +		rmdir /tmp/new_root
    +		return 1
    +	fi
    +	mv "$1" "/tmp/new_root/sysupgrade.tgz"
    +	umount /tmp/new_root
    +	sync
    +	rmdir /tmp/new_root
    +}
    +
    +nand_upgrade_prepare_ubi() {
    +	local rootfs_length="$1"
    +	local rootfs_type="$2"
    +	local has_kernel="${3:-0}"
    +	local has_env="${4:-0}"
    +
    +	local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
    +	if [ ! "$mtdnum" ]; then
    +		echo "cannot find ubi mtd partition $CI_UBIPART"
    +		return 1
    +	fi
    +
    +	local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    +	if [ ! "$ubidev" ]; then
    +		ubiattach -m "$mtdnum"
    +		sync
    +		ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    +	fi
    +
    +	if [ ! "$ubidev" ]; then
    +		ubiformat /dev/mtd$mtdnum -y
    +		ubiattach -m "$mtdnum"
    +		sync
    +		ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    +		[ "$has_env" -gt 0 ] && {
    +			ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB
    +			ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB
    +		}
    +	fi
    +
    +	local kern_ubivol="$( nand_find_volume $ubidev kernel )"
    +	local root_ubivol="$( nand_find_volume $ubidev rootfs )"
    +	local data_ubivol="$( nand_find_volume $ubidev rootfs_data )"
    +
    +	# remove ubiblock device of rootfs
    +	local root_ubiblk="ubiblock${root_ubivol:3}"
    +	if [ "$root_ubivol" -a -e "/dev/$root_ubiblk" ]; then
    +		echo "removing $root_ubiblk"
    +		if ! ubiblock -r /dev/$root_ubivol; then
    +			echo "cannot remove $root_ubiblk"
    +			return 1;
    +		fi
    +	fi
    +
    +	# kill volumes
    +	[ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N kernel || true
    +	[ "$root_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs || true
    +	[ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || true
    +
    +	# update kernel
    +	if [ "$has_kernel" = "1" ]; then
    +		if ! ubimkvol /dev/$ubidev -N kernel -s $kernel_length; then
    +			echo "cannot create kernel volume"
    +			return 1;
    +		fi
    +	fi
    +
    +	# update rootfs
    +	local root_size_param
    +	if [ "$rootfs_type" = "ubifs" ]; then
    +		root_size_param="-m"
    +	else
    +		root_size_param="-s $rootfs_length"
    +	fi
    +	if ! ubimkvol /dev/$ubidev -N rootfs $root_size_param; then
    +		echo "cannot create rootfs volume"
    +		return 1;
    +	fi
    +
    +	# create rootfs_data for non-ubifs rootfs
    +	if [ "$rootfs_type" != "ubifs" ]; then
    +		if ! ubimkvol /dev/$ubidev -N rootfs_data -m; then
    +			echo "cannot initialize rootfs_data volume"
    +			return 1
    +		fi
    +	fi
    +	sync
    +	return 0
    +}
    +
    +nand_do_upgrade_success() {
    +	local conf_tar="/tmp/sysupgrade.tgz"
    +
    +	sync
    +	[ -f "$conf_tar" ] && nand_restore_config "$conf_tar"
    +	echo "sysupgrade successful"
    +	umount -a
    +	reboot -f
    +}
    +
    +# Flash the UBI image to MTD partition
    +nand_upgrade_ubinized() {
    +	local ubi_file="$1"
    +	local mtdnum="$(find_mtd_index "$CI_UBIPART")"
    +
    +	[ ! "$mtdnum" ] && {
    +		CI_UBIPART="rootfs"
    +		mtdnum="$(find_mtd_index "$CI_UBIPART")"
    +	}
    +
    +	if [ ! "$mtdnum" ]; then
    +		echo "cannot find mtd device $CI_UBIPART"
    +		umount -a
    +		reboot -f
    +	fi
    +
    +	local mtddev="/dev/mtd${mtdnum}"
    +	ubidetach -p "${mtddev}" || true
    +	sync
    +	ubiformat "${mtddev}" -y -f "${ubi_file}"
    +	ubiattach -p "${mtddev}"
    +	nand_do_upgrade_success
    +}
    +
    +# Write the UBIFS image to UBI volume
    +nand_upgrade_ubifs() {
    +	local rootfs_length=`(cat $1 | wc -c) 2> /dev/null`
    +
    +	nand_upgrade_prepare_ubi "$rootfs_length" "ubifs" "0" "0"
    +
    +	local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    +	local root_ubivol="$(nand_find_volume $ubidev rootfs)"
    +	ubiupdatevol /dev/$root_ubivol -s $rootfs_length $1
    +
    +	nand_do_upgrade_success
    +}
    +
    +nand_board_name() {
    +	if type 'platform_nand_board_name' >/dev/null 2>/dev/null; then
    +		platform_nand_board_name
    +		return
    +	fi
    +
    +	cat /tmp/sysinfo/board_name
    +}
    +
    +nand_upgrade_tar() {
    +	local tar_file="$1"
    +	local board_name="$(nand_board_name)"
    +	local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
    +
    +	local kernel_length=`(tar xf $tar_file sysupgrade-$board_name/kernel -O | wc -c) 2> /dev/null`
    +	local rootfs_length=`(tar xf $tar_file sysupgrade-$board_name/root -O | wc -c) 2> /dev/null`
    +
    +	local rootfs_type="$(identify_tar "$tar_file" sysupgrade-$board_name/root)"
    +
    +	local has_kernel=1
    +	local has_env=0
    +
    +	[ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
    +		tar xf $tar_file sysupgrade-$board_name/kernel -O | mtd write - $CI_KERNPART
    +	}
    +	[ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=0
    +
    +	nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "$has_kernel" "$has_env"
    +
    +	local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    +	[ "$has_kernel" = "1" ] && {
    +		local kern_ubivol="$(nand_find_volume $ubidev kernel)"
    +	 	tar xf $tar_file sysupgrade-$board_name/kernel -O | \
    +			ubiupdatevol /dev/$kern_ubivol -s $kernel_length -
    +	}
    +
    +	local root_ubivol="$(nand_find_volume $ubidev rootfs)"
    +	tar xf $tar_file sysupgrade-$board_name/root -O | \
    +		ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
    +
    +	nand_do_upgrade_success
    +}
    +
    +# Recognize type of passed file and start the upgrade process
    +nand_do_upgrade_stage2() {
    +	local file_type=$(identify $1)
    +
    +	if type 'platform_nand_pre_upgrade' >/dev/null 2>/dev/null; then
    +		platform_nand_pre_upgrade "$1"
    +	fi
    +
    +	[ ! "$(find_mtd_index "$CI_UBIPART")" ] && CI_UBIPART="rootfs"
    +
    +	case "$file_type" in
    +		"ubi")		nand_upgrade_ubinized $1;;
    +		"ubifs")	nand_upgrade_ubifs $1;;
    +		*)		nand_upgrade_tar $1;;
    +	esac
    +}
    +
    +nand_upgrade_stage2() {
    +	[ $1 = "nand" ] && {
    +		[ -f "$2" ] && {
    +			touch /tmp/sysupgrade
    +
    +			killall -9 telnetd
    +			killall -9 dropbear
    +			killall -9 ash
    +
    +			kill_remaining TERM
    +			sleep 3
    +			kill_remaining KILL
    +
    +			sleep 1
    +
    +			if [ -n "$(rootfs_type)" ]; then
    +				v "Switching to ramdisk..."
    +				run_ramfs ". /lib/functions.sh; include /lib/upgrade; nand_do_upgrade_stage2 $2"
    +			else
    +				nand_do_upgrade_stage2 $2
    +			fi
    +			return 0
    +		}
    +		echo "Nand upgrade failed"
    +		exit 1
    +	}
    +}
    +
    +nand_upgrade_stage1() {
    +	[ -f /tmp/sysupgrade-nand-path ] && {
    +		path="$(cat /tmp/sysupgrade-nand-path)"
    +		[ "$SAVE_CONFIG" != 1 -a -f "$CONF_TAR" ] &&
    +			rm $CONF_TAR
    +
    +		ubus call system nandupgrade "{\"prefix\": \"$RAM_ROOT\", \"path\": \"$path\" }"
    +		exit 0
    +	}
    +}
    +
    +# Check if passed file is a valid one for NAND sysupgrade. Currently it accepts
    +# 3 types of files:
    +# 1) UBI - should contain an ubinized image, header is checked for the proper
    +#    MAGIC
    +# 2) UBIFS - should contain UBIFS partition that will replace "rootfs" volume,
    +#    header is checked for the proper MAGIC
    +# 3) TAR - archive has to include "sysupgrade-BOARD" directory with a non-empty
    +#    "CONTROL" file (at this point its content isn't verified)
    +#
    +# You usually want to call this function in platform_check_image.
    +#
    +# $(1): board name, used in case of passing TAR file
    +# $(2): file to be checked
    +nand_do_platform_check() {
    +	local board_name="$1"
    +	local tar_file="$2"
    +	local control_length=`(tar xf $tar_file sysupgrade-$board_name/CONTROL -O | wc -c) 2> /dev/null`
    +	local file_type="$(identify $2)"
    +
    +	[ "$control_length" = 0 -a "$file_type" != "ubi" -a "$file_type" != "ubifs" ] && {
    +		echo "Invalid sysupgrade file."
    +		return 1
    +	}
    +
    +	return 0
    +}
    +
    +# Start NAND upgrade process
    +#
    +# $(1): file to be used for upgrade
    +nand_do_upgrade() {
    +	echo -n $1 > /tmp/sysupgrade-nand-path
    +	install_bin /sbin/upgraded
    +	ln -s "$RAM_ROOT"/sbin/upgraded /tmp/upgraded
    +	nand_upgrade_stage1
    +}
    diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile
    index 4598711c2252e2c0ffc322fa2d00508de3e5a775..5f2d21c102c7781ce047b166d61354f0f7430eb7 100644
    --- a/package/system/procd/Makefile
    +++ b/package/system/procd/Makefile
    @@ -22,11 +22,9 @@ PKG_LICENSE_FILES:=
     
     PKG_MAINTAINER:=John Crispin <john@phrozen.org>
     
    -PKG_FLAGS:=nonshared
    -
     PKG_CONFIG_DEPENDS:= \
     	CONFIG_TARGET_INIT_PATH CONFIG_KERNEL_SECCOMP \
    -	CONFIG_NAND_SUPPORT CONFIG_PROCD_SHOW_BOOT CONFIG_PROCD_ZRAM_TMPFS \
    +	CONFIG_PROCD_SHOW_BOOT CONFIG_PROCD_ZRAM_TMPFS \
     	CONFIG_KERNEL_NAMESPACES CONFIG_PACKAGE_procd-ujail CONFIG_PACKAGE_procd-seccomp
     
     include $(INCLUDE_DIR)/package.mk
    @@ -42,7 +40,7 @@ TARGET_LDFLAGS += $(if $(CONFIG_USE_GLIBC),-lrt)
     define Package/procd
       SECTION:=base
       CATEGORY:=Base system
    -  DEPENDS:=+ubusd +ubus +libjson-script +ubox +USE_GLIBC:librt +libubox +libubus +NAND_SUPPORT:procd-nand
    +  DEPENDS:=+ubusd +ubus +libjson-script +ubox +USE_GLIBC:librt +libubox +libubus
       TITLE:=OpenWrt system process manager
     endef
     
    @@ -60,20 +58,6 @@ define Package/procd-seccomp
       TITLE:=OpenWrt process seccomp helper + utrace
     endef
     
    -define Package/procd-nand
    -  SECTION:=utils
    -  CATEGORY:=Utilities
    -  DEPENDS:=@NAND_SUPPORT +ubi-utils
    -  TITLE:=OpenWrt sysupgrade nand helper
    -endef
    -
    -define Package/procd-nand-firstboot
    -  SECTION:=utils
    -  CATEGORY:=Utilities
    -  DEPENDS:=procd-nand
    -  TITLE:=OpenWrt firstboot nand helper
    -endef
    -
     define Package/procd/config
     menu "Configuration"
     	depends on PACKAGE_procd
    @@ -91,10 +75,6 @@ endmenu
     endef
     
     
    -ifeq ($(CONFIG_NAND_SUPPORT),y)
    -  CMAKE_OPTIONS += -DBUILD_UPGRADED=1
    -endif
    -
     ifeq ($(CONFIG_PROCD_SHOW_BOOT),y)
       CMAKE_OPTIONS += -DSHOW_BOOT_ON_CONSOLE=1
     endif
    @@ -114,7 +94,7 @@ endif
     define Package/procd/install
     	$(INSTALL_DIR) $(1)/sbin $(1)/etc $(1)/lib/functions
     
    -	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{init,procd,askfirst,udevtrigger} $(1)/sbin/
    +	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{init,procd,askfirst,udevtrigger,upgraded} $(1)/sbin/
     	$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libsetlbf.so $(1)/lib
     	$(INSTALL_BIN) ./files/reload_config $(1)/sbin/
     	$(INSTALL_DATA) ./files/hotplug*.json $(1)/etc/
    @@ -133,21 +113,6 @@ define Package/procd-seccomp/install
     	$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libpreload-trace.so $(1)/lib
     endef
     
    -define Package/procd-nand/install
    -	$(INSTALL_DIR) $(1)/sbin $(1)/lib/upgrade
    -
    -	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/upgraded $(1)/sbin/
    -	$(INSTALL_DATA) ./files/nand.sh $(1)/lib/upgrade/
    -endef
    -
    -define Package/procd-nand-firstboot/install
    -	$(INSTALL_DIR) $(1)/lib/preinit
    -
    -	$(INSTALL_DATA) ./files/nand-preinit.sh $(1)/lib/preinit/60-nand-firstboot.sh
    -endef
    -
     $(eval $(call BuildPackage,procd))
     $(eval $(call BuildPackage,procd-ujail))
     $(eval $(call BuildPackage,procd-seccomp))
    -$(eval $(call BuildPackage,procd-nand))
    -$(eval $(call BuildPackage,procd-nand-firstboot))
    diff --git a/package/system/procd/files/nand-preinit.sh b/package/system/procd/files/nand-preinit.sh
    deleted file mode 100644
    index cf596246d1f2891cbeb7b5c7cac4bb6e002b13fb..0000000000000000000000000000000000000000
    --- a/package/system/procd/files/nand-preinit.sh
    +++ /dev/null
    @@ -1,21 +0,0 @@
    -#!/bin/sh
    -# Copyright (C) 2014 OpenWrt.org
    -
    -nand_takeover() {
    -	. /lib/upgrade/nand.sh
    -	mtd=$(find_mtd_index "$CI_UBIPART")
    -	esize=$(cat /proc/mtd | grep mtd$mtd |cut -d" " -f 3)
    -	[ -z "$esize" ] && return 1
    -	esize=$(printf "%d" 0x$esize)
    -	for a in `seq 0 64`; do
    -		mtd -o $((a * esize)) -l 400 dump /dev/mtd$mtd > /tmp/takeover.hdr
    -		MAGIC=$(dd if=/tmp/takeover.hdr bs=1 skip=261 count=5 2> /dev/null)
    -		SIZE=$(printf "%d" 0x$(dd if=/tmp/takeover.hdr bs=4 count=1 2> /dev/null | hexdump -v -n 4 -e '1/1 "%02x"'))
    -		[ "$MAGIC" = "ustar" ] && {
    -			mtd -o $((a * esize)) -l $((SIZE + 4)) dump /dev/mtd$mtd | dd bs=1 skip=4 of=/tmp/sysupgrade.tar
    -			nand_do_upgrade_stage2 /tmp/sysupgrade.tar
    -		}
    -	done
    -}
    -
    -boot_hook_add initramfs nand_takeover
    diff --git a/package/system/procd/files/nand.sh b/package/system/procd/files/nand.sh
    deleted file mode 100644
    index 6bd2005344c081df20e5a330a69e49e37225c39f..0000000000000000000000000000000000000000
    --- a/package/system/procd/files/nand.sh
    +++ /dev/null
    @@ -1,376 +0,0 @@
    -#!/bin/sh
    -# Copyright (C) 2014 OpenWrt.org
    -#
    -
    -. /lib/functions.sh
    -
    -# 'kernel' partition on NAND contains the kernel
    -CI_KERNPART="kernel"
    -
    -# 'ubi' partition on NAND contains UBI
    -CI_UBIPART="ubi"
    -
    -ubi_mknod() {
    -	local dir="$1"
    -	local dev="/dev/$(basename $dir)"
    -
    -	[ -e "$dev" ] && return 0
    -
    -	local devid="$(cat $dir/dev)"
    -	local major="${devid%%:*}"
    -	local minor="${devid##*:}"
    -	mknod "$dev" c $major $minor
    -}
    -
    -nand_find_volume() {
    -	local ubidevdir ubivoldir
    -	ubidevdir="/sys/devices/virtual/ubi/$1"
    -	[ ! -d "$ubidevdir" ] && return 1
    -	for ubivoldir in $ubidevdir/${1}_*; do
    -		[ ! -d "$ubivoldir" ] && continue
    -		if [ "$( cat $ubivoldir/name )" = "$2" ]; then
    -			basename $ubivoldir
    -			ubi_mknod "$ubivoldir"
    -			return 0
    -		fi
    -	done
    -}
    -
    -nand_find_ubi() {
    -	local ubidevdir ubidev mtdnum
    -	mtdnum="$( find_mtd_index $1 )"
    -	[ ! "$mtdnum" ] && return 1
    -	for ubidevdir in /sys/devices/virtual/ubi/ubi*; do
    -		[ ! -d "$ubidevdir" ] && continue
    -		cmtdnum="$( cat $ubidevdir/mtd_num )"
    -		[ ! "$mtdnum" ] && continue
    -		if [ "$mtdnum" = "$cmtdnum" ]; then
    -			ubidev=$( basename $ubidevdir )
    -			ubi_mknod "$ubidevdir"
    -			echo $ubidev
    -			return 0
    -		fi
    -	done
    -}
    -
    -nand_get_magic_long() {
    -	dd if="$1" skip=$2 bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
    -}
    -
    -get_magic_long_tar() {
    -	( tar xf $1 $2 -O | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null
    -}
    -
    -identify_magic() {
    -	local magic=$1
    -	case "$magic" in
    -		"55424923")
    -			echo "ubi"
    -			;;
    -		"31181006")
    -			echo "ubifs"
    -			;;
    -		"68737173")
    -			echo "squashfs"
    -			;;
    -		"d00dfeed")
    -			echo "fit"
    -			;;
    -		"4349"*)
    -			echo "combined"
    -			;;
    -		*)
    -			echo "unknown $magic"
    -			;;
    -	esac
    -}
    -
    -
    -identify() {
    -	identify_magic $(nand_get_magic_long "$1" "${2:-0}")
    -}
    -
    -identify_tar() {
    -	identify_magic $(get_magic_long_tar "$1" "$2")
    -}
    -
    -nand_restore_config() {
    -	sync
    -	local ubidev=$( nand_find_ubi $CI_UBIPART )
    -	local ubivol="$( nand_find_volume $ubidev rootfs_data )"
    -	[ ! "$ubivol" ] &&
    -		ubivol="$( nand_find_volume $ubidev rootfs )"
    -	mkdir /tmp/new_root
    -	if ! mount -t ubifs /dev/$ubivol /tmp/new_root; then
    -		echo "mounting ubifs $ubivol failed"
    -		rmdir /tmp/new_root
    -		return 1
    -	fi
    -	mv "$1" "/tmp/new_root/sysupgrade.tgz"
    -	umount /tmp/new_root
    -	sync
    -	rmdir /tmp/new_root
    -}
    -
    -nand_upgrade_prepare_ubi() {
    -	local rootfs_length="$1"
    -	local rootfs_type="$2"
    -	local has_kernel="${3:-0}"
    -	local has_env="${4:-0}"
    -
    -	local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
    -	if [ ! "$mtdnum" ]; then
    -		echo "cannot find ubi mtd partition $CI_UBIPART"
    -		return 1
    -	fi
    -
    -	local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    -	if [ ! "$ubidev" ]; then
    -		ubiattach -m "$mtdnum"
    -		sync
    -		ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    -	fi
    -
    -	if [ ! "$ubidev" ]; then
    -		ubiformat /dev/mtd$mtdnum -y
    -		ubiattach -m "$mtdnum"
    -		sync
    -		ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    -		[ "$has_env" -gt 0 ] && {
    -			ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB
    -			ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB
    -		}
    -	fi
    -
    -	local kern_ubivol="$( nand_find_volume $ubidev kernel )"
    -	local root_ubivol="$( nand_find_volume $ubidev rootfs )"
    -	local data_ubivol="$( nand_find_volume $ubidev rootfs_data )"
    -
    -	# remove ubiblock device of rootfs
    -	local root_ubiblk="ubiblock${root_ubivol:3}"
    -	if [ "$root_ubivol" -a -e "/dev/$root_ubiblk" ]; then
    -		echo "removing $root_ubiblk"
    -		if ! ubiblock -r /dev/$root_ubivol; then
    -			echo "cannot remove $root_ubiblk"
    -			return 1;
    -		fi
    -	fi
    -
    -	# kill volumes
    -	[ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N kernel || true
    -	[ "$root_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs || true
    -	[ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || true
    -
    -	# update kernel
    -	if [ "$has_kernel" = "1" ]; then
    -		if ! ubimkvol /dev/$ubidev -N kernel -s $kernel_length; then
    -			echo "cannot create kernel volume"
    -			return 1;
    -		fi
    -	fi
    -
    -	# update rootfs
    -	local root_size_param
    -	if [ "$rootfs_type" = "ubifs" ]; then
    -		root_size_param="-m"
    -	else
    -		root_size_param="-s $rootfs_length"
    -	fi
    -	if ! ubimkvol /dev/$ubidev -N rootfs $root_size_param; then
    -		echo "cannot create rootfs volume"
    -		return 1;
    -	fi
    -
    -	# create rootfs_data for non-ubifs rootfs
    -	if [ "$rootfs_type" != "ubifs" ]; then
    -		if ! ubimkvol /dev/$ubidev -N rootfs_data -m; then
    -			echo "cannot initialize rootfs_data volume"
    -			return 1
    -		fi
    -	fi
    -	sync
    -	return 0
    -}
    -
    -nand_do_upgrade_success() {
    -	local conf_tar="/tmp/sysupgrade.tgz"
    -
    -	sync
    -	[ -f "$conf_tar" ] && nand_restore_config "$conf_tar"
    -	echo "sysupgrade successful"
    -	umount -a
    -	reboot -f
    -}
    -
    -# Flash the UBI image to MTD partition
    -nand_upgrade_ubinized() {
    -	local ubi_file="$1"
    -	local mtdnum="$(find_mtd_index "$CI_UBIPART")"
    -
    -	[ ! "$mtdnum" ] && {
    -		CI_UBIPART="rootfs"
    -		mtdnum="$(find_mtd_index "$CI_UBIPART")"
    -	}
    -
    -	if [ ! "$mtdnum" ]; then
    -		echo "cannot find mtd device $CI_UBIPART"
    -		umount -a
    -		reboot -f
    -	fi
    -
    -	local mtddev="/dev/mtd${mtdnum}"
    -	ubidetach -p "${mtddev}" || true
    -	sync
    -	ubiformat "${mtddev}" -y -f "${ubi_file}"
    -	ubiattach -p "${mtddev}"
    -	nand_do_upgrade_success
    -}
    -
    -# Write the UBIFS image to UBI volume
    -nand_upgrade_ubifs() {
    -	local rootfs_length=`(cat $1 | wc -c) 2> /dev/null`
    -
    -	nand_upgrade_prepare_ubi "$rootfs_length" "ubifs" "0" "0"
    -
    -	local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    -	local root_ubivol="$(nand_find_volume $ubidev rootfs)"
    -	ubiupdatevol /dev/$root_ubivol -s $rootfs_length $1
    -
    -	nand_do_upgrade_success
    -}
    -
    -nand_board_name() {
    -	if type 'platform_nand_board_name' >/dev/null 2>/dev/null; then
    -		platform_nand_board_name
    -		return
    -	fi
    -
    -	cat /tmp/sysinfo/board_name
    -}
    -
    -nand_upgrade_tar() {
    -	local tar_file="$1"
    -	local board_name="$(nand_board_name)"
    -	local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
    -
    -	local kernel_length=`(tar xf $tar_file sysupgrade-$board_name/kernel -O | wc -c) 2> /dev/null`
    -	local rootfs_length=`(tar xf $tar_file sysupgrade-$board_name/root -O | wc -c) 2> /dev/null`
    -
    -	local rootfs_type="$(identify_tar "$tar_file" sysupgrade-$board_name/root)"
    -
    -	local has_kernel=1
    -	local has_env=0
    -
    -	[ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
    -		tar xf $tar_file sysupgrade-$board_name/kernel -O | mtd write - $CI_KERNPART
    -	}
    -	[ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=0
    -
    -	nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "$has_kernel" "$has_env"
    -
    -	local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
    -	[ "$has_kernel" = "1" ] && {
    -		local kern_ubivol="$(nand_find_volume $ubidev kernel)"
    -	 	tar xf $tar_file sysupgrade-$board_name/kernel -O | \
    -			ubiupdatevol /dev/$kern_ubivol -s $kernel_length -
    -	}
    -
    -	local root_ubivol="$(nand_find_volume $ubidev rootfs)"
    -	tar xf $tar_file sysupgrade-$board_name/root -O | \
    -		ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
    -
    -	nand_do_upgrade_success
    -}
    -
    -# Recognize type of passed file and start the upgrade process
    -nand_do_upgrade_stage2() {
    -	local file_type=$(identify $1)
    -
    -	if type 'platform_nand_pre_upgrade' >/dev/null 2>/dev/null; then
    -		platform_nand_pre_upgrade "$1"
    -	fi
    -
    -	[ ! "$(find_mtd_index "$CI_UBIPART")" ] && CI_UBIPART="rootfs"
    -
    -	case "$file_type" in
    -		"ubi")		nand_upgrade_ubinized $1;;
    -		"ubifs")	nand_upgrade_ubifs $1;;
    -		*)		nand_upgrade_tar $1;;
    -	esac
    -}
    -
    -nand_upgrade_stage2() {
    -	[ $1 = "nand" ] && {
    -		[ -f "$2" ] && {
    -			touch /tmp/sysupgrade
    -
    -			killall -9 telnetd
    -			killall -9 dropbear
    -			killall -9 ash
    -
    -			kill_remaining TERM
    -			sleep 3
    -			kill_remaining KILL
    -
    -			sleep 1
    -
    -			if [ -n "$(rootfs_type)" ]; then
    -				v "Switching to ramdisk..."
    -				run_ramfs ". /lib/functions.sh; include /lib/upgrade; nand_do_upgrade_stage2 $2"
    -			else
    -				nand_do_upgrade_stage2 $2
    -			fi
    -			return 0
    -		}
    -		echo "Nand upgrade failed"
    -		exit 1
    -	}
    -}
    -
    -nand_upgrade_stage1() {
    -	[ -f /tmp/sysupgrade-nand-path ] && {
    -		path="$(cat /tmp/sysupgrade-nand-path)"
    -		[ "$SAVE_CONFIG" != 1 -a -f "$CONF_TAR" ] &&
    -			rm $CONF_TAR
    -
    -		ubus call system nandupgrade "{\"prefix\": \"$RAM_ROOT\", \"path\": \"$path\" }"
    -		exit 0
    -	}
    -}
    -
    -# Check if passed file is a valid one for NAND sysupgrade. Currently it accepts
    -# 3 types of files:
    -# 1) UBI - should contain an ubinized image, header is checked for the proper
    -#    MAGIC
    -# 2) UBIFS - should contain UBIFS partition that will replace "rootfs" volume,
    -#    header is checked for the proper MAGIC
    -# 3) TAR - archive has to include "sysupgrade-BOARD" directory with a non-empty
    -#    "CONTROL" file (at this point its content isn't verified)
    -#
    -# You usually want to call this function in platform_check_image.
    -#
    -# $(1): board name, used in case of passing TAR file
    -# $(2): file to be checked
    -nand_do_platform_check() {
    -	local board_name="$1"
    -	local tar_file="$2"
    -	local control_length=`(tar xf $tar_file sysupgrade-$board_name/CONTROL -O | wc -c) 2> /dev/null`
    -	local file_type="$(identify $2)"
    -
    -	[ "$control_length" = 0 -a "$file_type" != "ubi" -a "$file_type" != "ubifs" ] && {
    -		echo "Invalid sysupgrade file."
    -		return 1
    -	}
    -
    -	return 0
    -}
    -
    -# Start NAND upgrade process
    -#
    -# $(1): file to be used for upgrade
    -nand_do_upgrade() {
    -	echo -n $1 > /tmp/sysupgrade-nand-path
    -	install_bin /sbin/upgraded
    -	ln -s "$RAM_ROOT"/sbin/upgraded /tmp/upgraded
    -	nand_upgrade_stage1
    -}