gluon/patches/lede/0014-procd-remove-procd-nand-package.patch

935 lines
25 KiB
Diff
Raw Normal View History

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 4fbc9a265b535d850fe812085677b3f6aabf4e1f..c971de4deee7cd331ddcad6b87eb9fefd7af6a64 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
2017-06-27 15:42:12 +00:00
@@ -19,7 +19,9 @@ PKG_BUILD_DEPENDS:=usign/host
PKG_LICENSE:=GPL-2.0
2017-06-27 15:42:12 +00:00
# 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
2017-06-27 15:42:12 +00:00
@@ -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)
modules: update LEDE c3cdc53164 ag71xx: Fix rx ring buffer stall on small packets flood on qca956x and qca953x. e07ee06aad ar71xx: QCA956X: add missing register 7bc25dfa63 mvebu: fix mvneta build with Linux 4.4.110 541a1a7ff5 lantiq: activate noise margin delta for VDSL too dea8979a81 Lantiq: make possible to tweak DSL SRN from UCI 9934231670 libubox: update to latest lede-17.01 git HEAD 7f5a040359 kernel: update kernel 4.4 to version 4.4.110 ddedcb19e5 brcm47xx: relocate the stack in loader da43069f5b brcm47xx: relocate loader to higher address f19416ae9d fstools: backport fix from master branch 55c23e44f4 procd: update to latest git HEAD ffbbcc9b34 brcm47xx: image: build firmware for Asus WL-500g Deluxe 0426596453 Revert "iptables: fix nftables compile issue (FS#711)" da126d557c iptables: fix nftables compile issue (FS#711) 473e994571 rpcd: backport version 2017-12-07 from master b833944eb2 uci: update to HEAD of lede-17.01 branch dca4dfacf2 iproute2: cake: fix patch format error ee55629a30 kernel: bump 4.4 to 4.4.108 for 17.01 c4e9487cf5 iproute2: cake: support new operating modes for 17.01 4f1dca9eca kmod-sched-cake: bump to latest bake of cake for 17.01 959a49dc15 ramips: fix widora neo diag led a1908023cc base-files: fix logic when to show failsafe banner 1c9299877b base-files: set FAILSAFE in /etc/profile when /tmp/.failsafe exists 2603c85060 wireguard: bump to 20171221 f8a441e020 kernel: bump 4.4 to 4.4.107 ceea0ac25d wireguard: bump to 20171211 ebb54740c7 brcm47xx: remove target specific network preinit config b41d154f50 rules.mk: export TMPDIR e719a08cc1 usbutils: Update usb.ids file to latest 4cfcfecf76 hostapd: remove unused local var declaration 796bc21023 hostapd: don't set htmode for wpa_supplicant 50147d41b9 libnl-tiny: use fixed message size instead of using the page size 0625814426 packages: nvram: fix memory leak in _nvram_free 0f175041ad mac80211: don't pass the hostapd ctrl iface in adhoc 05f0fac189 hostapd: explicitly set beacon interval for wpa_supplicant 7f78a86254 hostapd: set mcast_rate in mesh mode c315843f88 igmpproxy: remove firewall rules when service is stopped 91e48304a9 openvpn: add support to start/stop single instances e5c284bb81 package/elfutils: add CFLAG -Wno-format-nonliteral dde29b2b01 tools/coreutils: install readlink 2f75641b1f uhttpd: fix query string handling 79024cd3be openssl: fix cryptodev config dependency bead60c2d3 uqmi: replace legacy command invoke with newer type 5872c19c63 procd: Always tell cmake whether to include seccomp support or not cd901ef1a6 libunwind: disable building with ssp 1aedf2f149 tools/squashfs: use host cflags 7fa70027d4 ppp: make the patches apply correctly again d63eb474b3 ppp: fix compile warning 9bd667fc24 dropbear: fix PKG_CONFIG_DEPENDS 9d1bfb8f4d dropbear: make ssh compression support configurable ed4f4f1a8e procd: Install seccomp-trace symlink 77e79b2dd0 openvpn: update to 2.4.4 5beb0abc83 build: remove @ as it's causing an error eff1f7e7ef usbutils: avoid duplicating the git revision 9cf371c1f4 dnsmasq: Pass TARGET_CPPFLAGS to Makefile 2f80d84638 wwan: json format in some modem definitions c61cf4a447 base-files: add /etc/profile.d to conffiles bdc998c696 base-files: order conffiles alphabetically c58e824acc procd: mdns: Support txt values with spaces aaa73fea36 ar71xx: fix switch port numbering on RB750r2 and RB750UPr2 b69ea02a00 scripts/dowload.pl: use glob to expand target dir 80a22eee4b samba36: Remove syslog and load printers lines. 71797b6eca samba36: Don't resolve interfaces. 1458bc2d9c samba36: Remove guest ok since LuCI configures it. f0065554b2 config: make CONFIG_ALL_* select other CONIFG_ALL_* options 2b88309335 nvram: add help message for nvram magic not found 118a2ea0bc nvram: improve argument check when program start c446ee4ad4 nvram: add usage() function 9e84d333b1 nvram: fix memory leak 3b6b892d67 ca-certificates: Update to 20170717 23b9dc2eca base-files: drop unused preinit_echo function ca7c9db47f tools/pkg-config: Update to 0.29.2 75d8127338 base-files: suppress uci not found output in login.sh b616aa6db7 scripts/package-metadata.pl: inhibit compile deps on missing build types 2e1a87a3e1 build: bundle-libraries.sh: do not override argv[0] in inner exec calls a37f8b0c6e samba36: Remove legacy options 89c4f47caa scripts/download.pl: Adjust URLs 338968a170 build: fix invocation of bundled ld.so in SDK and Imagebuilder 0a976262a5 kmod-sched-cake: drop maintainer 610e2afdcc zlib: use default Build/Configure rule cf11a41af6 lzo: use default Build/Configure rule c86490605c netfilter: add iptables-mod-rpfilter package ea23ba9a25 bzip2: add symlink to binary d413c75d24 dropbear: add option to set max auth tries 8693ab5152 dropbear: server support option '-T' max auth tries 0e6a6c8487 hostapd: configure NAS ID regardless of encryption ef3649d90e hostapd: add acct_interval option 3027a68093 valgrind: bump to 3.13.0 3129db331c busybox: backport 'ip rule suppress_{prefixlength, ifgroup}' 86158ad37d libunwind: update to version 1.2.1 59004433e9 imagebuilder: don't rewrite package list output 74eeb07817 imagebuilder: clean package_list 7f3f2bc03b build: remove old kernel-headers build directories c7234e3036 imagebuilder: add package_list function 9c3e4b5434 base-files: board.json's switch reset means existence, not argument 7d1f4073ce gdb: remove Build/Compile rule ; default one works 9a99039989 rb532: enable high-res timers, refresh kernel config e802cbfc25 xburst: enable high-res timers, refresh kernel config e01367e3af kernel: add CONFIG_SCHED_HRTICK=y to the generic config 6e1e2e7b96 package/grub2: update to 2.02 13a5568d6e ip17xx: correct aneg_done return value 816fb3433b mvswitch: fix autonegotiation issue 41ee45428b ppp: propagate master firewall zone to dynamic slave interface a44c44077e usbmode: remove devices with unsupported modes e8bd0a606a tar: override symlink permissions 59a1c1675d tools/sparse: Update to snapshot 2017-03-31 a6e5943a2a elfutils: Pass -Wno-unused-result to silence warnings as errors 08070221ed gcc: fix documentation entries added by 910-mbsd_multi.patch ef43c04c34 scripts/download.pl: print the command used to download files 6e09b20563 tools/libressl: update to 2.5.4 08be74f699 tools/isl: update to 0.18 26ea59cd01 lldpd: bump to 0.9.7 444b64f533 libunwind: update to 1.2 e5612d6640 lantiq: spi: double time out tolerance 28c350f2f0 base-files: fix default procd reload 108a42bcba ramips: support jumbo frame on mt7621 up to 2k 8d4c047dd1 lldpd: drop specific respawn params [use system-wide] 8ee15ed61a elfutils: bump to 0.169 9754a9c606 devel/trace-cmd: Update to 2.6.1 79def69047 comgt-3g: enable modem before to setpin 070463fb61 devel/strace: Update to 4.16 67caf6bbce network/utils/ipset: Update to 6.32 f0a493160c mac80211: gracefully handle preexisting VIF 827f108b42 scripts: Probe external toolchains for libthread-db bb9eb2c96e build: new fixes for symlinked .config handling 4607007a86 build: allow val.% targets to bypass the prepare steps 90575776b7 x86: keep /boot mounted for kexec 6b9eb0c73a hostapd: fix reload frequency change patch 040ff6fdbd build: remove absolute path to perl and replace with /usr/bin/env perl 98588273b1 kernel: allow selecting RTC drivers on targets without explicit RTC support f30114c7c4 dropbear: fix procd interface trigger install 3e7f191008 include/packages-defaults.mk: Remove LARGEFILE option a1392e08c5 netifd: return error status in reload_service 10182cb2c6 grub2: update to 2.02~rc2 38ea91ea9a base-files: use restart if no reload hook for service 9b24d99b91 iproute2: add libgenl.h and ll_map.h to InstallDev section 94597229c3 busybox: fix installation of cron and ntpd scripts in the default config 9ce30f7175 kernel: move initramfs's init script out of base-files c8a0f3aa29 target.mk: check that CPU_TYPE has known CPU_CFLAGS mapping 977db9f08a scripts/download.pl: fix error message on hash mismatch 7fb03d9610 netifd: fix fw3 warnings in dhcp script f69d73f1b2 build: allow specifying flow-control to grub on serial console 91821c8c0b kexec-tools: get kexec running on MUSL and x86 hardware affff02798 busybox: don't install NTP scripts if NTP isn't configured 7ccfa826ee ar8327: Add workarounds for AR8337 switch. 0aafbf6c00 build: fix STAMP_PREPARED with quilt 80304ace58 lantiq: remove lantiq_board_model, it is unused 8be5b12ea1 lantiq: remove lantiq_board_name, use the generic function instead 0f0d742ae3 lantiq: move lantiq_board_detect() to 03_preinit_board.sh f173464f13 base-files: add generic board_name function to functions.sh 62a8252a0f mac80211: Fix race condition leading to wifi interfaces not coming up at boot sometimes. 5f03ce1213 scripts: only generate config from feature flag if fully match f7f69130e5 lzo: Update to 2.10 6ba0cc14e9 tools/coreutils: Update to 8.27 100553d605 tools/libressl: Update to 2.5.1 25fe034861 tools/dosfstools: Update to 4.1 ed4976d884 tools/sed: Update to 4.4 7263e3cdca lldpd: bump to 0.9.6 3225fbfcbf x86: image: drop duplicated copy of bzImage into vmlinuz 37aae44a47 libnl: Fix building with uClibc 950439234e toolchain: add musl libc.so to external toolchain cfb5a550e4 iwcap: fix handling kill signal during dump 1411493569 x86: image: drop unneeded grub call 58e0c0feec x86: image: drop unused ROOTDELAY variable 05f0b8d18b ccache: update to 3.3.4 15efa09507 base-files: add submission service port 56b9f0ffc0 procd.sh: use parameterized respawn values 28c9731984 toolchain: Allow external toolchains to specify libthread-db 2dd9b62f82 rssileds: Fix build with external toolchains 2d31ec4c1b adb: Also pass TARGET_CPPFLAGS ec395eeb17 swconfig: Link with libubox c6dd059a9a px5g: Fix TARGET_LDFLAGS and add TARGET_CPPFLAGS 12b811a609 omcproxy: Update to latest HEAD 1e3ff02ea5 bsdiff: Also pass down TARGET_CPPFLAGS 051a33e7c9 thc-ipv6: Allow overriding CFLAGS a91d8dd162 tools/m4: update 1.4.18 acd481470c build: get rid of FIND_L from host.mk 11cd6077ba build: unsilence move command 903a404663 build: skip headers install and config on make target/linux/prepare a7fc27edce build: make Host/Install/Default use Host/Compile/Default with an extra argument 94f079e338 build: Pass -iremap gcc option as a single argument 3056122bf7 toolchain/gcc: parallelize make install a33b0ced78 toolchain/musl: parallelize make install 1d0f7e3136 imagebuilder: make submake invocations less verbose bdb05f5ef5 gcc: remove obsolete uclibc patch 90a43e508e toolchain/gcc: reduce source directory size by about 420 MB 82615922b0 bcm53xx: suppress osafeloader info error messages during flashing c566a9e563 toolchain: Broaden the executable loader pattern 3387158e45 build: Suffix build directory with _$(LIBC) for external toolchains 2428b6d6b6 tools/sstrip: Fix compile under standard linux. 50b478956a openssl: update to 1.0.2n 135aa3ba7e base-files: upgrade: make get_partitions() endian agnostic 207bcea1de cyassl: update to wolfssl 3.12.2 (1 CVE) 3bb881862b mdadm: fix parameter quoting 6c1b6e8221 mdadm: Fix config generation 4fc0fb3ca3 mdadm: Do not check RUN_DIR 157b892994 kernel: remove out of tree direct-io disable hack adc9f935c3 utils/mdadm: Update to 4.0 8bf67f63b9 mdadm: extend uci config support 4af145ea67 rules.mk: make PKG_CONFIG_DEPENDS properly track string values 2b664499cd kernel: bump 4.4 to 4.4.103 for 17.01 ed82c52a4a uqmi: also try newer pin verification b41a2e646e opkg: bump to version 2017-12-08 f5f5f583f9 hostapd: backport fix for wnm_sleep_mode=0 19ebc19f54 hostapd: Expose the tdls_prohibit option to UCI 3590316121 dnsmasq: backport infinite dns retries fix 060b7f1fbb curl: apply CVE 2017-8816 and 2017-8817 security patches 4b5861c47d mt76: update to the latest version f19d47f848 tools: patch various gnu tools for macOS 10.13 e5a10bc0fc samba36: backport an upstream fix for an information leak (CVE-2017-15275) d77fe9219a ramips: backport MT7628 pinmux fixes 9601e6a0e2 ramips: add missing reset button for Nexx WT1520 0946ec0f46 wireguard: bump to snapshot 20171127
2018-01-09 15:34:34 +00:00
@@ -107,9 +109,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 5b92d79332f2ea400041586b92b570d8b633218a..879f03f54b23603a360499078d7d53503875f55a 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
modules: update LEDE c3cdc53164 ag71xx: Fix rx ring buffer stall on small packets flood on qca956x and qca953x. e07ee06aad ar71xx: QCA956X: add missing register 7bc25dfa63 mvebu: fix mvneta build with Linux 4.4.110 541a1a7ff5 lantiq: activate noise margin delta for VDSL too dea8979a81 Lantiq: make possible to tweak DSL SRN from UCI 9934231670 libubox: update to latest lede-17.01 git HEAD 7f5a040359 kernel: update kernel 4.4 to version 4.4.110 ddedcb19e5 brcm47xx: relocate the stack in loader da43069f5b brcm47xx: relocate loader to higher address f19416ae9d fstools: backport fix from master branch 55c23e44f4 procd: update to latest git HEAD ffbbcc9b34 brcm47xx: image: build firmware for Asus WL-500g Deluxe 0426596453 Revert "iptables: fix nftables compile issue (FS#711)" da126d557c iptables: fix nftables compile issue (FS#711) 473e994571 rpcd: backport version 2017-12-07 from master b833944eb2 uci: update to HEAD of lede-17.01 branch dca4dfacf2 iproute2: cake: fix patch format error ee55629a30 kernel: bump 4.4 to 4.4.108 for 17.01 c4e9487cf5 iproute2: cake: support new operating modes for 17.01 4f1dca9eca kmod-sched-cake: bump to latest bake of cake for 17.01 959a49dc15 ramips: fix widora neo diag led a1908023cc base-files: fix logic when to show failsafe banner 1c9299877b base-files: set FAILSAFE in /etc/profile when /tmp/.failsafe exists 2603c85060 wireguard: bump to 20171221 f8a441e020 kernel: bump 4.4 to 4.4.107 ceea0ac25d wireguard: bump to 20171211 ebb54740c7 brcm47xx: remove target specific network preinit config b41d154f50 rules.mk: export TMPDIR e719a08cc1 usbutils: Update usb.ids file to latest 4cfcfecf76 hostapd: remove unused local var declaration 796bc21023 hostapd: don't set htmode for wpa_supplicant 50147d41b9 libnl-tiny: use fixed message size instead of using the page size 0625814426 packages: nvram: fix memory leak in _nvram_free 0f175041ad mac80211: don't pass the hostapd ctrl iface in adhoc 05f0fac189 hostapd: explicitly set beacon interval for wpa_supplicant 7f78a86254 hostapd: set mcast_rate in mesh mode c315843f88 igmpproxy: remove firewall rules when service is stopped 91e48304a9 openvpn: add support to start/stop single instances e5c284bb81 package/elfutils: add CFLAG -Wno-format-nonliteral dde29b2b01 tools/coreutils: install readlink 2f75641b1f uhttpd: fix query string handling 79024cd3be openssl: fix cryptodev config dependency bead60c2d3 uqmi: replace legacy command invoke with newer type 5872c19c63 procd: Always tell cmake whether to include seccomp support or not cd901ef1a6 libunwind: disable building with ssp 1aedf2f149 tools/squashfs: use host cflags 7fa70027d4 ppp: make the patches apply correctly again d63eb474b3 ppp: fix compile warning 9bd667fc24 dropbear: fix PKG_CONFIG_DEPENDS 9d1bfb8f4d dropbear: make ssh compression support configurable ed4f4f1a8e procd: Install seccomp-trace symlink 77e79b2dd0 openvpn: update to 2.4.4 5beb0abc83 build: remove @ as it's causing an error eff1f7e7ef usbutils: avoid duplicating the git revision 9cf371c1f4 dnsmasq: Pass TARGET_CPPFLAGS to Makefile 2f80d84638 wwan: json format in some modem definitions c61cf4a447 base-files: add /etc/profile.d to conffiles bdc998c696 base-files: order conffiles alphabetically c58e824acc procd: mdns: Support txt values with spaces aaa73fea36 ar71xx: fix switch port numbering on RB750r2 and RB750UPr2 b69ea02a00 scripts/dowload.pl: use glob to expand target dir 80a22eee4b samba36: Remove syslog and load printers lines. 71797b6eca samba36: Don't resolve interfaces. 1458bc2d9c samba36: Remove guest ok since LuCI configures it. f0065554b2 config: make CONFIG_ALL_* select other CONIFG_ALL_* options 2b88309335 nvram: add help message for nvram magic not found 118a2ea0bc nvram: improve argument check when program start c446ee4ad4 nvram: add usage() function 9e84d333b1 nvram: fix memory leak 3b6b892d67 ca-certificates: Update to 20170717 23b9dc2eca base-files: drop unused preinit_echo function ca7c9db47f tools/pkg-config: Update to 0.29.2 75d8127338 base-files: suppress uci not found output in login.sh b616aa6db7 scripts/package-metadata.pl: inhibit compile deps on missing build types 2e1a87a3e1 build: bundle-libraries.sh: do not override argv[0] in inner exec calls a37f8b0c6e samba36: Remove legacy options 89c4f47caa scripts/download.pl: Adjust URLs 338968a170 build: fix invocation of bundled ld.so in SDK and Imagebuilder 0a976262a5 kmod-sched-cake: drop maintainer 610e2afdcc zlib: use default Build/Configure rule cf11a41af6 lzo: use default Build/Configure rule c86490605c netfilter: add iptables-mod-rpfilter package ea23ba9a25 bzip2: add symlink to binary d413c75d24 dropbear: add option to set max auth tries 8693ab5152 dropbear: server support option '-T' max auth tries 0e6a6c8487 hostapd: configure NAS ID regardless of encryption ef3649d90e hostapd: add acct_interval option 3027a68093 valgrind: bump to 3.13.0 3129db331c busybox: backport 'ip rule suppress_{prefixlength, ifgroup}' 86158ad37d libunwind: update to version 1.2.1 59004433e9 imagebuilder: don't rewrite package list output 74eeb07817 imagebuilder: clean package_list 7f3f2bc03b build: remove old kernel-headers build directories c7234e3036 imagebuilder: add package_list function 9c3e4b5434 base-files: board.json's switch reset means existence, not argument 7d1f4073ce gdb: remove Build/Compile rule ; default one works 9a99039989 rb532: enable high-res timers, refresh kernel config e802cbfc25 xburst: enable high-res timers, refresh kernel config e01367e3af kernel: add CONFIG_SCHED_HRTICK=y to the generic config 6e1e2e7b96 package/grub2: update to 2.02 13a5568d6e ip17xx: correct aneg_done return value 816fb3433b mvswitch: fix autonegotiation issue 41ee45428b ppp: propagate master firewall zone to dynamic slave interface a44c44077e usbmode: remove devices with unsupported modes e8bd0a606a tar: override symlink permissions 59a1c1675d tools/sparse: Update to snapshot 2017-03-31 a6e5943a2a elfutils: Pass -Wno-unused-result to silence warnings as errors 08070221ed gcc: fix documentation entries added by 910-mbsd_multi.patch ef43c04c34 scripts/download.pl: print the command used to download files 6e09b20563 tools/libressl: update to 2.5.4 08be74f699 tools/isl: update to 0.18 26ea59cd01 lldpd: bump to 0.9.7 444b64f533 libunwind: update to 1.2 e5612d6640 lantiq: spi: double time out tolerance 28c350f2f0 base-files: fix default procd reload 108a42bcba ramips: support jumbo frame on mt7621 up to 2k 8d4c047dd1 lldpd: drop specific respawn params [use system-wide] 8ee15ed61a elfutils: bump to 0.169 9754a9c606 devel/trace-cmd: Update to 2.6.1 79def69047 comgt-3g: enable modem before to setpin 070463fb61 devel/strace: Update to 4.16 67caf6bbce network/utils/ipset: Update to 6.32 f0a493160c mac80211: gracefully handle preexisting VIF 827f108b42 scripts: Probe external toolchains for libthread-db bb9eb2c96e build: new fixes for symlinked .config handling 4607007a86 build: allow val.% targets to bypass the prepare steps 90575776b7 x86: keep /boot mounted for kexec 6b9eb0c73a hostapd: fix reload frequency change patch 040ff6fdbd build: remove absolute path to perl and replace with /usr/bin/env perl 98588273b1 kernel: allow selecting RTC drivers on targets without explicit RTC support f30114c7c4 dropbear: fix procd interface trigger install 3e7f191008 include/packages-defaults.mk: Remove LARGEFILE option a1392e08c5 netifd: return error status in reload_service 10182cb2c6 grub2: update to 2.02~rc2 38ea91ea9a base-files: use restart if no reload hook for service 9b24d99b91 iproute2: add libgenl.h and ll_map.h to InstallDev section 94597229c3 busybox: fix installation of cron and ntpd scripts in the default config 9ce30f7175 kernel: move initramfs's init script out of base-files c8a0f3aa29 target.mk: check that CPU_TYPE has known CPU_CFLAGS mapping 977db9f08a scripts/download.pl: fix error message on hash mismatch 7fb03d9610 netifd: fix fw3 warnings in dhcp script f69d73f1b2 build: allow specifying flow-control to grub on serial console 91821c8c0b kexec-tools: get kexec running on MUSL and x86 hardware affff02798 busybox: don't install NTP scripts if NTP isn't configured 7ccfa826ee ar8327: Add workarounds for AR8337 switch. 0aafbf6c00 build: fix STAMP_PREPARED with quilt 80304ace58 lantiq: remove lantiq_board_model, it is unused 8be5b12ea1 lantiq: remove lantiq_board_name, use the generic function instead 0f0d742ae3 lantiq: move lantiq_board_detect() to 03_preinit_board.sh f173464f13 base-files: add generic board_name function to functions.sh 62a8252a0f mac80211: Fix race condition leading to wifi interfaces not coming up at boot sometimes. 5f03ce1213 scripts: only generate config from feature flag if fully match f7f69130e5 lzo: Update to 2.10 6ba0cc14e9 tools/coreutils: Update to 8.27 100553d605 tools/libressl: Update to 2.5.1 25fe034861 tools/dosfstools: Update to 4.1 ed4976d884 tools/sed: Update to 4.4 7263e3cdca lldpd: bump to 0.9.6 3225fbfcbf x86: image: drop duplicated copy of bzImage into vmlinuz 37aae44a47 libnl: Fix building with uClibc 950439234e toolchain: add musl libc.so to external toolchain cfb5a550e4 iwcap: fix handling kill signal during dump 1411493569 x86: image: drop unneeded grub call 58e0c0feec x86: image: drop unused ROOTDELAY variable 05f0b8d18b ccache: update to 3.3.4 15efa09507 base-files: add submission service port 56b9f0ffc0 procd.sh: use parameterized respawn values 28c9731984 toolchain: Allow external toolchains to specify libthread-db 2dd9b62f82 rssileds: Fix build with external toolchains 2d31ec4c1b adb: Also pass TARGET_CPPFLAGS ec395eeb17 swconfig: Link with libubox c6dd059a9a px5g: Fix TARGET_LDFLAGS and add TARGET_CPPFLAGS 12b811a609 omcproxy: Update to latest HEAD 1e3ff02ea5 bsdiff: Also pass down TARGET_CPPFLAGS 051a33e7c9 thc-ipv6: Allow overriding CFLAGS a91d8dd162 tools/m4: update 1.4.18 acd481470c build: get rid of FIND_L from host.mk 11cd6077ba build: unsilence move command 903a404663 build: skip headers install and config on make target/linux/prepare a7fc27edce build: make Host/Install/Default use Host/Compile/Default with an extra argument 94f079e338 build: Pass -iremap gcc option as a single argument 3056122bf7 toolchain/gcc: parallelize make install a33b0ced78 toolchain/musl: parallelize make install 1d0f7e3136 imagebuilder: make submake invocations less verbose bdb05f5ef5 gcc: remove obsolete uclibc patch 90a43e508e toolchain/gcc: reduce source directory size by about 420 MB 82615922b0 bcm53xx: suppress osafeloader info error messages during flashing c566a9e563 toolchain: Broaden the executable loader pattern 3387158e45 build: Suffix build directory with _$(LIBC) for external toolchains 2428b6d6b6 tools/sstrip: Fix compile under standard linux. 50b478956a openssl: update to 1.0.2n 135aa3ba7e base-files: upgrade: make get_partitions() endian agnostic 207bcea1de cyassl: update to wolfssl 3.12.2 (1 CVE) 3bb881862b mdadm: fix parameter quoting 6c1b6e8221 mdadm: Fix config generation 4fc0fb3ca3 mdadm: Do not check RUN_DIR 157b892994 kernel: remove out of tree direct-io disable hack adc9f935c3 utils/mdadm: Update to 4.0 8bf67f63b9 mdadm: extend uci config support 4af145ea67 rules.mk: make PKG_CONFIG_DEPENDS properly track string values 2b664499cd kernel: bump 4.4 to 4.4.103 for 17.01 ed82c52a4a uqmi: also try newer pin verification b41a2e646e opkg: bump to version 2017-12-08 f5f5f583f9 hostapd: backport fix for wnm_sleep_mode=0 19ebc19f54 hostapd: Expose the tdls_prohibit option to UCI 3590316121 dnsmasq: backport infinite dns retries fix 060b7f1fbb curl: apply CVE 2017-8816 and 2017-8817 security patches 4b5861c47d mt76: update to the latest version f19d47f848 tools: patch various gnu tools for macOS 10.13 e5a10bc0fc samba36: backport an upstream fix for an information leak (CVE-2017-15275) d77fe9219a ramips: backport MT7628 pinmux fixes 9601e6a0e2 ramips: add missing reset button for Nexx WT1520 0946ec0f46 wireguard: bump to snapshot 20171127
2018-01-09 15:34:34 +00:00
@@ -113,7 +93,7 @@ CMAKE_OPTIONS += -DSECCOMP_SUPPORT=$(SECCOMP) -DUTRACE_SUPPORT=$(SECCOMP)
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
-}