aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/sbin
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files/files/sbin')
-rwxr-xr-xpackage/base-files/files/sbin/sysupgrade61
-rwxr-xr-xpackage/base-files/files/sbin/wifi254
2 files changed, 41 insertions, 274 deletions
diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade
index 7e0a00e13b8..4bac1041d96 100755
--- a/package/base-files/files/sbin/sysupgrade
+++ b/package/base-files/files/sbin/sysupgrade
@@ -19,11 +19,11 @@ export CONF_IMAGE=
export CONF_BACKUP_LIST=0
export CONF_BACKUP=
export CONF_RESTORE=
+export IGNORE_MINOR_COMPAT=0
export NEED_IMAGE=
export HELP=0
export FORCE=0
export TEST=0
-export UMOUNT_ETCBACKUP_DIR=0
# parse options
while [ -n "$1" ]; do
@@ -44,6 +44,7 @@ while [ -n "$1" ]; do
-F|--force) export FORCE=1;;
-T|--test) export TEST=1;;
-h|--help) export HELP=1; break;;
+ --ignore-minor-compat-version) export IGNORE_MINOR_COMPAT=1;;
-*)
echo "Invalid option: $1" >&2
exit 1
@@ -80,6 +81,8 @@ upgrade-option:
Verify image and config .tar.gz but do not actually flash.
-F | --force
Flash image even if image checks fail, this is dangerous!
+ --ignore-minor-compat-version
+ Flash image even if the minor compat version is incompatible.
-q less verbose
-v more verbose
-h | --help display this help
@@ -220,6 +223,8 @@ include /lib/upgrade
do_save_conffiles() {
local conf_tar="$1"
+ local tmp
+ local dir
[ "$(rootfs_type)" = "tmpfs" ] && {
echo "Cannot save config while running from ramdisk." >&2
@@ -230,17 +235,21 @@ do_save_conffiles() {
run_hooks "$CONFFILES" $sysupgrade_init_conffiles
ask_bool 0 "Edit config file list" && vi "$CONFFILES"
+ # Mount root directory with temporary overlay on top of it.
+ # This allows including extra (temporary) files in backup archive
+ # without messing actual rootfs.
+ tmp="$(mktemp -d -t overlay.XXXXXX)"
+ mkdir -p "$tmp/upper" "$tmp/work" "$tmp/backup"
+ dir="$tmp/backup"
+ if ! mount -t overlay overlay -o lowerdir=/,upperdir="$tmp/upper",workdir="$tmp/work" "$dir"; then
+ echo "Cannot mount backup overlay to $dir." >&2
+ ask_bool 0 "Abort" && exit
+ dir=""
+ fi
+
if [ "$SAVE_INSTALLED_PKGS" -eq 1 ]; then
echo "${INSTALLED_PACKAGES}" >> "$CONFFILES"
- mkdir -p "$ETCBACKUP_DIR"
- # Avoid touching filesystem on each backup
- RAMFS="$(mktemp -d -t sysupgrade.XXXXXX)"
- mkdir -p "$RAMFS/upper" "$RAMFS/work"
- mount -t overlay overlay -o lowerdir=$ETCBACKUP_DIR,upperdir=$RAMFS/upper,workdir=$RAMFS/work $ETCBACKUP_DIR &&
- UMOUNT_ETCBACKUP_DIR=1 || {
- echo "Cannot mount '$ETCBACKUP_DIR' as tmpfs to avoid touching disk while saving the list of installed packages." >&2
- ask_bool 0 "Abort" && exit
- }
+ mkdir -p "$dir/$ETCBACKUP_DIR"
# Format: pkg-name<TAB>{rom,overlay,unkown}
# rom is used for pkgs in /rom, even if updated later
@@ -248,23 +257,35 @@ do_save_conffiles() {
\( -exec test -f /rom/{} \; -exec echo {} rom \; \) -o \
\( -exec test -f /overlay/upper/{} \; -exec echo {} overlay \; \) -o \
\( -exec echo {} unknown \; \) \
- \) | sed -e 's,.*/,,;s/\.control /\t/' > ${INSTALLED_PACKAGES}
+ \) | sed -e 's,.*/,,;s/\.control /\t/' > "$dir/${INSTALLED_PACKAGES}"
fi
+ mkdir -p $dir/etc/uci-defaults/
+ touch $dir/etc/uci-defaults/10_disable_services
+ for service in /etc/init.d/*; do
+ if ! $service enabled; then
+ echo "$service disable" >> $dir/etc/uci-defaults/10_disable_services
+ fi
+ done
+ echo "exit 0" >> $dir/etc/uci-defaults/10_disable_services
+ echo "/etc/uci-defaults/10_disable_services" >> "$CONFFILES"
+
v "Saving config files..."
[ "$VERBOSE" -gt 1 ] && TAR_V="v" || TAR_V=""
- tar c${TAR_V}zf "$conf_tar" -T "$CONFFILES" 2>/dev/null
- if [ "$?" -ne 0 ]; then
+ sed -i -e 's,^/,,' "$CONFFILES"
+ tar c${TAR_V}zf "$conf_tar" -C "${dir:-/}" -T "$CONFFILES"
+ local err=$?
+ if [ "$err" -ne 0 ]; then
echo "Failed to create the configuration backup."
rm -f "$conf_tar"
- exit 1
fi
- [ "$UMOUNT_ETCBACKUP_DIR" -eq 1 ] && {
- umount "$ETCBACKUP_DIR"
- rm -rf "$RAMFS"
- }
+ umount "$dir"
+ rm -rf "$tmp"
+
rm -f "$CONFFILES"
+
+ return "$err"
}
if [ $CONF_BACKUP_LIST -eq 1 ]; then
@@ -277,7 +298,7 @@ fi
if [ -n "$CONF_BACKUP" ]; then
do_save_conffiles "$CONF_BACKUP"
- exit $?
+ exit
fi
if [ -n "$CONF_RESTORE" ]; then
@@ -346,7 +367,7 @@ if [ -n "$CONF_IMAGE" ]; then
get_image "$CONF_IMAGE" "cat" > "$CONF_TAR"
export SAVE_CONFIG=1
elif ask_bool $SAVE_CONFIG "Keep config files over reflash"; then
- [ $TEST -eq 1 ] || do_save_conffiles "$CONF_TAR"
+ [ $TEST -eq 1 ] || do_save_conffiles "$CONF_TAR" || exit
export SAVE_CONFIG=1
else
[ $TEST -eq 1 ] || rm -f "$CONF_TAR"
diff --git a/package/base-files/files/sbin/wifi b/package/base-files/files/sbin/wifi
deleted file mode 100755
index 6b9662fe930..00000000000
--- a/package/base-files/files/sbin/wifi
+++ /dev/null
@@ -1,254 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2006 OpenWrt.org
-
-. /lib/functions.sh
-. /usr/share/libubox/jshn.sh
-
-usage() {
- cat <<EOF
-Usage: $0 [config|up|down|reconf|reload|status]
-enables (default), disables or configures devices not yet configured.
-EOF
- exit 1
-}
-
-ubus_wifi_cmd() {
- local cmd="$1"
- local dev="$2"
-
- json_init
- [ -n "$2" ] && json_add_string device "$2"
- ubus call network.wireless "$1" "$(json_dump)"
-}
-
-find_net_config() {(
- local vif="$1"
- local cfg
- local ifname
-
- config_get cfg "$vif" network
-
- [ -z "$cfg" ] && {
- include /lib/network
- scan_interfaces
-
- config_get ifname "$vif" ifname
-
- cfg="$(find_config "$ifname")"
- }
- [ -z "$cfg" ] && return 0
- echo "$cfg"
-)}
-
-
-bridge_interface() {(
- local cfg="$1"
- [ -z "$cfg" ] && return 0
-
- include /lib/network
- scan_interfaces
-
- for cfg in $cfg; do
- config_get iftype "$cfg" type
- [ "$iftype" = bridge ] && config_get "$cfg" ifname
- prepare_interface_bridge "$cfg"
- return $?
- done
-)}
-
-prepare_key_wep() {
- local key="$1"
- local hex=1
-
- echo -n "$key" | grep -qE "[^a-fA-F0-9]" && hex=0
- [ "${#key}" -eq 10 -a $hex -eq 1 ] || \
- [ "${#key}" -eq 26 -a $hex -eq 1 ] || {
- [ "${key:0:2}" = "s:" ] && key="${key#s:}"
- key="$(echo -n "$key" | hexdump -ve '1/1 "%02x" ""')"
- }
- echo "$key"
-}
-
-wifi_fixup_hwmode() {
- local device="$1"
- local default="$2"
- local hwmode hwmode_11n
-
- config_get channel "$device" channel
- config_get hwmode "$device" hwmode
- case "$hwmode" in
- 11bg) hwmode=bg;;
- 11a) hwmode=a;;
- 11ad) hwmode=ad;;
- 11b) hwmode=b;;
- 11g) hwmode=g;;
- 11n*)
- hwmode_11n="${hwmode##11n}"
- case "$hwmode_11n" in
- a|g) ;;
- default) hwmode_11n="$default"
- esac
- config_set "$device" hwmode_11n "$hwmode_11n"
- ;;
- *)
- hwmode=
- if [ "${channel:-0}" -gt 0 ]; then
- if [ "${channel:-0}" -gt 14 ]; then
- hwmode=a
- else
- hwmode=g
- fi
- else
- hwmode="$default"
- fi
- ;;
- esac
- config_set "$device" hwmode "$hwmode"
-}
-
-_wifi_updown() {
- for device in ${2:-$DEVICES}; do (
- config_get disabled "$device" disabled
- [ "$disabled" = "1" ] && {
- echo "'$device' is disabled"
- set disable
- }
- config_get iftype "$device" type
- if eval "type ${1}_$iftype" 2>/dev/null >/dev/null; then
- eval "scan_$iftype '$device'"
- eval "${1}_$iftype '$device'" || echo "$device($iftype): ${1} failed"
- elif [ ! -f /lib/netifd/wireless/$iftype.sh ]; then
- echo "$device($iftype): Interface type not supported"
- fi
- ); done
-}
-
-wifi_updown() {
- cmd=down
- [ enable = "$1" ] && {
- _wifi_updown disable "$2"
- ubus_wifi_cmd "$cmd" "$2"
- scan_wifi
- cmd=up
- ubus call network reload
- }
- [ reconf = "$1" ] && {
- scan_wifi
- cmd=reconf
- ubus call network reload
- }
- ubus_wifi_cmd "$cmd" "$2"
- _wifi_updown "$@"
-}
-
-wifi_reload_legacy() {
- _wifi_updown "disable" "$1"
- scan_wifi
- _wifi_updown "enable" "$1"
-}
-
-wifi_reload() {
- ubus call network reload
- wifi_reload_legacy
-}
-
-wifi_detect_notice() {
- >&2 echo "WARNING: Wifi detect is deprecated. Use wifi config instead"
- >&2 echo "For more information, see commit 5f8f8a366136a07df661e31decce2458357c167a"
- exit 1
-}
-
-wifi_config() {
- [ ! -f /etc/config/wireless ] && touch /etc/config/wireless
-
- for driver in $DRIVERS; do (
- if eval "type detect_$driver" 2>/dev/null >/dev/null; then
- eval "detect_$driver" || echo "$driver: Detect failed" >&2
- else
- echo "$driver: Hardware detection not supported" >&2
- fi
- ); done
-}
-
-start_net() {(
- local iface="$1"
- local config="$2"
- local vifmac="$3"
-
- [ -f "/var/run/$iface.pid" ] && kill "$(cat /var/run/${iface}.pid)" 2>/dev/null
- [ -z "$config" ] || {
- include /lib/network
- scan_interfaces
- for config in $config; do
- setup_interface "$iface" "$config" "" "$vifmac"
- done
- }
-)}
-
-set_wifi_up() {
- local cfg="$1"
- local ifname="$2"
- uci_set_state wireless "$cfg" up 1
- uci_set_state wireless "$cfg" ifname "$ifname"
-}
-
-set_wifi_down() {
- local cfg="$1"
- local vifs vif vifstr
-
- [ -f "/var/run/wifi-${cfg}.pid" ] &&
- kill "$(cat "/var/run/wifi-${cfg}.pid")" 2>/dev/null
- uci_revert_state wireless "$cfg"
- config_get vifs "$cfg" vifs
- for vif in $vifs; do
- uci_revert_state wireless "$vif"
- done
-}
-
-scan_wifi() {
- local cfgfile="$1"
- DEVICES=
- config_cb() {
- local type="$1"
- local section="$2"
-
- # section start
- case "$type" in
- wifi-device)
- append DEVICES "$section"
- config_set "$section" vifs ""
- config_set "$section" ht_capab ""
- ;;
- esac
-
- # section end
- config_get TYPE "$CONFIG_SECTION" TYPE
- case "$TYPE" in
- wifi-iface)
- config_get device "$CONFIG_SECTION" device
- config_get vifs "$device" vifs
- append vifs "$CONFIG_SECTION"
- config_set "$device" vifs "$vifs"
- ;;
- esac
- }
- config_load "${cfgfile:-wireless}"
-}
-
-DEVICES=
-DRIVERS=
-include /lib/wifi
-scan_wifi
-
-case "$1" in
- down) wifi_updown "disable" "$2";;
- detect) wifi_detect_notice ;;
- config) wifi_config ;;
- status) ubus_wifi_cmd "status" "$2";;
- reload) wifi_reload "$2";;
- reload_legacy) wifi_reload_legacy "$2";;
- --help|help) usage;;
- reconf) wifi_updown "reconf" "$2";;
- ''|up) wifi_updown "enable" "$2";;
- *) usage; exit 1;;
-esac