Skip to content
Snippets Groups Projects
Select Git revision
  • 90c5bd37969377c776203861128a1ea94fef48ac
  • v2018.2.x default
  • experimental
  • master
  • v2021.1.2-ffs
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • v2020.2.3-ffs
  • nrbffs/fastd-remove-delay
  • v2020.2.2-ffs
  • v2020.2.1-ffs
  • v2020.2-ffs
  • v2020.2.x
  • v2020.1.3-ffs
  • v2020.1.1-ffs
  • v2020.1-ffs
  • v2019.1.2-ffs
  • v2019.1.1-ffs
  • nrb/test-radv-filter
  • v2019.1-ffs
  • nrbffs/netgear-ex6120
  • v2021.1.2-ffs0.2
  • v2021.1.2-ffs0.1
  • v2021.1.1-ffs0.4
  • v2021.1.1-ffs0.3
  • v2021.1.1-ffs0.2
  • v2021.1.1-ffs0.1
  • v2021.1-ffs0.1
  • v2020.2.3-ffs0.3
  • v2020.2.3-ffs0.2
  • v2020.2.3-ffs0.1
  • v2020.2.2-ffs0.1
  • v2020.2.1-ffs0.1
  • v2020.2-ffs0.1
  • v2020.2
  • v2020.2.x-ffs0.1
  • v2020.1.3-ffs0.1
  • v2020.1.1-ffs0.1
  • v2020.1-ffs0.1
  • v2019.1.2-ffs0.1
  • v2019.1.1-ffs0.1
42 results

0020-base-files-sysupgrade-cleanup.patch

Blame
  • Forked from firmware / FFS Gluon
    3267 commits behind the upstream repository.
    user avatar
    Matthias Schiffer authored
    90c5bd37
    History
    0020-base-files-sysupgrade-cleanup.patch 7.55 KiB
    From: Matthias Schiffer <mschiffer@universe-factory.net>
    Date: Sun, 23 Apr 2017 23:33:14 +0200
    Subject: base-files: sysupgrade cleanup
    
    Some functions only used by stage2 are moved there from common.sh.
    
    One piece that could still use more cleanup is platform_pre_upgrade: many
    targets reference files from there are aren't available in the ramfs, so
    we need to evaluate it before the switch; conversely, flash writes happen
    in that function on some targets. Targets that do the latter should be
    fixed eventually to use platform_do_upgrade for that purpose.
    
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    
    diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh
    index 17248c2b1decd6f92558fb89601238b55fd0f0d6..fc59bf2323498d332159b00eb7ab443bfe6b147e 100644
    --- a/package/base-files/files/lib/upgrade/common.sh
    +++ b/package/base-files/files/lib/upgrade/common.sh
    @@ -30,106 +30,6 @@ install_bin() { # <file> [ <symlink> ... ]
     	}; done
     }
     
    -supivot() { # <new_root> <old_root>
    -	/bin/mount | grep "on $1 type" 2>&- 1>&- || /bin/mount -o bind $1 $1
    -	mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \
    -	/bin/mount -o noatime,move /proc $1/proc && \
    -	pivot_root $1 $1$2 || {
    -		/bin/umount -l $1 $1
    -		return 1
    -	}
    -
    -	/bin/mount -o noatime,move $2/sys /sys
    -	/bin/mount -o noatime,move $2/dev /dev
    -	/bin/mount -o noatime,move $2/tmp /tmp
    -	/bin/mount -o noatime,move $2/overlay /overlay 2>&-
    -	return 0
    -}
    -
    -run_ramfs() { # <command> [...]
    -	install_bin /bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount	\
    -		/sbin/pivot_root /sbin/reboot /bin/sync /bin/dd	/bin/grep       \
    -		/bin/cp /bin/mv /bin/tar /usr/bin/md5sum "/usr/bin/[" /bin/dd	\
    -		/bin/vi /bin/ls /bin/cat /usr/bin/awk /usr/bin/hexdump		\
    -		/bin/sleep /bin/zcat /usr/bin/bzcat /usr/bin/printf /usr/bin/wc \
    -		/bin/cut /usr/bin/printf /bin/sync /bin/mkdir /bin/rmdir	\
    -		/bin/rm /usr/bin/basename /bin/kill /bin/chmod /usr/bin/find \
    -		/bin/mknod
    -
    -	install_bin /sbin/mtd
    -	install_bin /sbin/mount_root
    -	install_bin /sbin/snapshot
    -	install_bin /sbin/snapshot_tool
    -	install_bin /usr/sbin/ubiupdatevol
    -	install_bin /usr/sbin/ubiattach
    -	install_bin /usr/sbin/ubiblock
    -	install_bin /usr/sbin/ubiformat
    -	install_bin /usr/sbin/ubidetach
    -	install_bin /usr/sbin/ubirsvol
    -	install_bin /usr/sbin/ubirmvol
    -	install_bin /usr/sbin/ubimkvol
    -	install_bin /usr/sbin/partx
    -	install_bin /usr/sbin/losetup
    -	install_bin /usr/sbin/mkfs.ext4
    -	for file in $RAMFS_COPY_BIN; do
    -		install_bin ${file//:/ }
    -	done
    -	install_file /etc/resolv.conf /lib/*.sh /lib/functions/*.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA
    -
    -	[ -L "/lib64" ] && ln -s /lib $RAM_ROOT/lib64
    -
    -	supivot $RAM_ROOT /mnt || {
    -		echo "Failed to switch over to ramfs. Please reboot."
    -		exit 1
    -	}
    -
    -	/bin/mount -o remount,ro /mnt
    -	/bin/umount -l /mnt
    -
    -	grep /overlay /proc/mounts > /dev/null && {
    -		/bin/mount -o noatime,remount,ro /overlay
    -		/bin/umount -l /overlay
    -	}
    -
    -	# spawn a new shell from ramdisk to reduce the probability of cache issues
    -	exec /bin/busybox ash -c "$*"
    -}
    -
    -kill_remaining() { # [ <signal> [ <loop> ] ]
    -	local sig="${1:-TERM}"
    -	local loop="${2:-0}"
    -	local run=true
    -	local stat
    -
    -	echo -n "Sending $sig to remaining processes ... "
    -
    -	while $run; do
    -		run=false
    -		for stat in /proc/[0-9]*/stat; do
    -			[ -f "$stat" ] || continue
    -
    -			local pid name state ppid rest
    -			read pid name state ppid rest < $stat
    -			name="${name#(}"; name="${name%)}"
    -
    -			# Skip PID1, ourself and our children
    -			[ $pid -ne 1 -a $pid -ne $$ -a $ppid -ne $$ ] || continue
    -
    -			local cmdline
    -			read cmdline < /proc/$pid/cmdline
    -
    -			# Skip kernel threads
    -			[ -n "$cmdline" ] || continue
    -
    -			echo -n "$name "
    -			kill -$sig $pid 2>/dev/null
    -
    -			[ $loop -eq 1 ] && run=true
    -		done
    -	done
    -	echo ""
    -}
    -
     run_hooks() {
     	local arg="$1"; shift
     	for func in "$@"; do
    diff --git a/package/base-files/files/lib/upgrade/stage2 b/package/base-files/files/lib/upgrade/stage2
    index 4e2aa3a23c3bab07a795762a30a4d4f701081934..cc8047d988e39ca9ba27d2588744aad469d1d978 100755
    --- a/package/base-files/files/lib/upgrade/stage2
    +++ b/package/base-files/files/lib/upgrade/stage2
    @@ -24,6 +24,104 @@ export CONF_TAR=/tmp/sysupgrade.tgz
     include /lib/upgrade
     
     
    +supivot() { # <new_root> <old_root>
    +	/bin/mount | grep "on $1 type" 2>&- 1>&- || /bin/mount -o bind $1 $1
    +	mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \
    +	/bin/mount -o noatime,move /proc $1/proc && \
    +	pivot_root $1 $1$2 || {
    +		/bin/umount -l $1 $1
    +		return 1
    +	}
    +
    +	/bin/mount -o noatime,move $2/sys /sys
    +	/bin/mount -o noatime,move $2/dev /dev
    +	/bin/mount -o noatime,move $2/tmp /tmp
    +	/bin/mount -o noatime,move $2/overlay /overlay 2>&-
    +	return 0
    +}
    +
    +switch_to_ramfs() {
    +	install_bin /bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount	\
    +		/sbin/pivot_root /sbin/reboot /bin/sync /bin/dd	/bin/grep       \
    +		/bin/cp /bin/mv /bin/tar /usr/bin/md5sum "/usr/bin/[" /bin/dd	\
    +		/bin/vi /bin/ls /bin/cat /usr/bin/awk /usr/bin/hexdump		\
    +		/bin/sleep /bin/zcat /usr/bin/bzcat /usr/bin/printf /usr/bin/wc \
    +		/bin/cut /usr/bin/printf /bin/sync /bin/mkdir /bin/rmdir	\
    +		/bin/rm /usr/bin/basename /bin/kill /bin/chmod /usr/bin/find \
    +		/bin/mknod
    +
    +	install_bin /sbin/mtd
    +	install_bin /sbin/mount_root
    +	install_bin /sbin/snapshot
    +	install_bin /sbin/snapshot_tool
    +	install_bin /usr/sbin/ubiupdatevol
    +	install_bin /usr/sbin/ubiattach
    +	install_bin /usr/sbin/ubiblock
    +	install_bin /usr/sbin/ubiformat
    +	install_bin /usr/sbin/ubidetach
    +	install_bin /usr/sbin/ubirsvol
    +	install_bin /usr/sbin/ubirmvol
    +	install_bin /usr/sbin/ubimkvol
    +	install_bin /usr/sbin/partx
    +	install_bin /usr/sbin/losetup
    +	install_bin /usr/sbin/mkfs.ext4
    +	for file in $RAMFS_COPY_BIN; do
    +		install_bin ${file//:/ }
    +	done
    +	install_file /etc/resolv.conf /lib/*.sh /lib/functions/*.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA
    +
    +	[ -L "/lib64" ] && ln -s /lib $RAM_ROOT/lib64
    +
    +	supivot $RAM_ROOT /mnt || {
    +		echo "Failed to switch over to ramfs. Please reboot."
    +		exit 1
    +	}
    +
    +	/bin/mount -o remount,ro /mnt
    +	/bin/umount -l /mnt
    +
    +	grep /overlay /proc/mounts > /dev/null && {
    +		/bin/mount -o noatime,remount,ro /overlay
    +		/bin/umount -l /overlay
    +	}
    +}
    +
    +kill_remaining() { # [ <signal> [ <loop> ] ]
    +	local sig="${1:-TERM}"
    +	local loop="${2:-0}"
    +	local run=true
    +	local stat
    +
    +	echo -n "Sending $sig to remaining processes ... "
    +
    +	while $run; do
    +		run=false
    +		for stat in /proc/[0-9]*/stat; do
    +			[ -f "$stat" ] || continue
    +
    +			local pid name state ppid rest
    +			read pid name state ppid rest < $stat
    +			name="${name#(}"; name="${name%)}"
    +
    +			# Skip PID1, ourself and our children
    +			[ $pid -ne 1 -a $pid -ne $$ -a $ppid -ne $$ ] || continue
    +
    +			local cmdline
    +			read cmdline < /proc/$pid/cmdline
    +
    +			# Skip kernel threads
    +			[ -n "$cmdline" ] || continue
    +
    +			echo -n "$name "
    +			kill -$sig $pid 2>/dev/null
    +
    +			[ $loop -eq 1 ] && run=true
    +		done
    +	done
    +	echo ""
    +}
    +
    +
     killall -9 telnetd
     killall -9 dropbear
     killall -9 ash
    @@ -44,7 +142,8 @@ fi
     
     if [ -n "$(rootfs_type)" ]; then
     	echo "Switching to ramdisk..."
    -	run_ramfs "$COMMAND"
    -else
    -	exec /bin/busybox ash -c "$COMMAND"
    +	switch_to_ramfs
     fi
    +
    +# Exec new shell from ramfs
    +exec /bin/busybox ash -c "$COMMAND"
    diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
    index 2d67371ef74b4b970076a069e97f4fd6a1e0bc95..200a0e520b5df8bcc208f4d8fd731756e94294fb 100755
    --- a/package/base-files/files/sbin/sysupgrade
    +++ b/package/base-files/files/sbin/sysupgrade
    @@ -1,7 +1,5 @@
     #!/bin/sh
     
    -[ "$1" = "nand" ] && exec /lib/upgrade/stage2 "$2" "$3"
    -
     . /lib/functions.sh
     . /lib/functions/system.sh