From 877ab89dabc3819bccbb1ccf87e9b1efec6e2cb9 Mon Sep 17 00:00:00 2001 From: mirko Date: Wed, 12 Dec 2012 12:38:31 +0000 Subject: remove function find_mtd_part() from /lib/functions.sh Since all scripts using this function include /lib/functions/boot.sh - where this function is defined as well - it can be dropped from /lib/functions.sh. Also avoids further confusion about this function being declared and defined in two different places. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34641 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions.sh | 9 --------- 1 file changed, 9 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index b3a3885f2..2ed353b2a 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -220,15 +220,6 @@ include() { done } -find_mtd_part() { - local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')" - local PREFIX=/dev/mtdblock - - PART="${PART##mtd}" - [ -d /dev/mtdblock ] && PREFIX=/dev/mtdblock/ - echo "${PART:+$PREFIX$PART}" -} - strtok() { # { [] ... } local tmp local val="$1" -- cgit v1.2.3 From feb7e4aff9207e8904c067947369e2ae868ba5e9 Mon Sep 17 00:00:00 2001 From: mirko Date: Wed, 12 Dec 2012 13:41:56 +0000 Subject: Revert "remove function find_mtd_part() from /lib/functions.sh" Reverting commit 34641. Function find_mtd_part() is needed by some scripts deployed for certain targets but not including boot.sh after all. Still, all this certainly needs some love. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34642 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions.sh | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index 2ed353b2a..b3a3885f2 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -220,6 +220,15 @@ include() { done } +find_mtd_part() { + local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')" + local PREFIX=/dev/mtdblock + + PART="${PART##mtd}" + [ -d /dev/mtdblock ] && PREFIX=/dev/mtdblock/ + echo "${PART:+$PREFIX$PART}" +} + strtok() { # { [] ... } local tmp local val="$1" -- cgit v1.2.3 From ab15bfa483e78630ab657a1eaabc7564ba81e2ae Mon Sep 17 00:00:00 2001 From: juhosg Date: Wed, 12 Dec 2012 16:49:50 +0000 Subject: base-files: add mtd_find_chardev helper Signed-off-by: Gabor Juhos git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34648 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions.sh | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index b3a3885f2..b924fce28 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -220,13 +220,27 @@ include() { done } -find_mtd_part() { +find_mtd_index() { local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')" + local INDEX="${PART##mtd}" + + echo ${INDEX} +} + +find_mtd_part() { + local INDEX=$(find_mtd_index "$1") local PREFIX=/dev/mtdblock - PART="${PART##mtd}" [ -d /dev/mtdblock ] && PREFIX=/dev/mtdblock/ - echo "${PART:+$PREFIX$PART}" + echo "${INDEX:+$PREFIX$INDEX}" +} + +find_mtd_chardev() { + local INDEX=$(find_mtd_index "$1") + local PREFIX=/dev/mtd + + [ -d /dev/mtd ] && PREFIX=/dev/mtd/ + echo "${INDEX:+$PREFIX$INDEX}" } strtok() { # { [] ... } -- cgit v1.2.3 From 2e65184ccaa50b2fb24f8380631d24723499902b Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 16 Dec 2012 18:22:02 +0000 Subject: base-files: various enhancements to network.sh - support reading inactive gateways and DNS information in network_get_gateway(), network_get_dnsserver() and network_get_dnssearch() by passing "true" as optional last argument - internally cache fetched values to speed up subsequent accesses to the same data, introduce network_flush_cache() to clear them - add some inline function documentation git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34722 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/network.sh | 183 ++++++++++++++++++---- 1 file changed, 153 insertions(+), 30 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index a4652569b..9366e5937 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -1,11 +1,40 @@ . /usr/share/libubox/jshn.sh +__network_switch_inactive() +{ + local __tmp + + if [ "$1" = 0 ] || [ "$1" = false ]; then + return 1 + fi + + json_get_type __tmp "inactive" + + if [ "$__tmp" = object ]; then + json_select "inactive" + fi +} + +__network_set_cache() +{ + __NETWORK_CACHE="${__NETWORK_CACHE:+$__NETWORK_CACHE }__NETWORK_CV_$1" + eval "__NETWORK_CV_$1='\$$2'" +} + +__network_get_cache() +{ + eval "[ -n \"\${__NETWORK_CV_$1+x}\" ] && export -- \"$2=\$__NETWORK_CV_$1\"" +} + __network_ipaddr() { local __var="$1" local __iface="$2" local __family="$3" - local __prefix="${4:-0}" + local __prefix="$4" + local __key="ipaddr_${2}_${3}_${4}" + + __network_get_cache "$__key" "$__var" && return 0 local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" @@ -27,6 +56,7 @@ __network_ipaddr() eval "export -- \"$__var=\${$__var}/$__tmp\"" } + __network_set_cache "$__key" "$__var" return 0 fi fi @@ -34,10 +64,24 @@ __network_ipaddr() return 1 } +# determine IPv4 address of given logical interface +# 1: destination variable +# 2: interface network_get_ipaddr() { __network_ipaddr "$1" "$2" 4 0; } + +# determine IPv6 address of given logical interface +# 1: destination variable +# 2: interface network_get_ipaddr6() { __network_ipaddr "$1" "$2" 6 0; } +# determine IPv4 subnet of given logical interface +# 1: destination variable +# 2: interface network_get_subnet() { __network_ipaddr "$1" "$2" 4 1; } + +# determine IPv6 subnet of given logical interface +# 1: destination variable +# 2: interface network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; } @@ -46,79 +90,127 @@ __network_gateway() local __var="$1" local __iface="$2" local __family="$3" + local __key="gateway_${2}_${3}" + + __network_get_cache "$__key" "$__var" && return 0 local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" - local __idx=1 json_load "${__tmp:-{}}" - if json_get_type __tmp route && [ "$__tmp" = array ]; then + for __tmp in 0 1; do - json_select route + if json_get_type __tmp route && [ "$__tmp" = array ]; then - while json_get_type __tmp "$__idx" && [ "$__tmp" = object ]; do + json_select route - json_select "$((__idx++))" - json_get_var __tmp target + local __idx=1 + while json_get_type __tmp "$__idx" && [ "$__tmp" = object ]; do - case "${__family}/${__tmp}" in - 4/0.0.0.0|6/::) - json_get_var "$__var" nexthop - return $? - ;; - esac + json_select "$((__idx++))" + json_get_var __tmp target + + case "${__family}/${__tmp}" in + 4/0.0.0.0|6/::) + json_get_var "$__var" nexthop + __network_set_cache "$__key" "$__var" + return $? + ;; + esac + + json_select ".." + + done json_select ".." - done - fi + fi + + __network_switch_inactive "$4" || break + + done return 1 } -network_get_gateway() { __network_gateway "$1" "$2" 4; } -network_get_gateway6() { __network_gateway "$1" "$2" 6; } +# determine IPv4 gateway of given logical interface +# 1: destination variable +# 2: interface +# 3: consider inactive gateway if "true" (optional) +network_get_gateway() { __network_gateway "$1" "$2" 4 "${3:-0}"; } + +# determine IPv6 gateway of given logical interface +# 1: destination variable +# 2: interface +# 3: consider inactive gateway if "true" (optional) +network_get_gateway6() { __network_gateway "$1" "$2" 6 "${3:-0}"; } __network_dns() { local __var="$1" local __iface="$2" local __field="$3" + local __key="dns_${2}_${3}" + + __network_get_cache "$__key" "$__var" && return 0 local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" local __dns="" - local __idx=1 json_load "${__tmp:-{}}" - if json_get_type __tmp "$__field" && [ "$__tmp" = array ]; then + for __tmp in 0 1; do - json_select "$__field" + if json_get_type __tmp "$__field" && [ "$__tmp" = array ]; then - while json_get_type __tmp "$__idx" && [ "$__tmp" = string ]; do + json_select "$__field" - json_get_var __tmp "$((__idx++))" - __dns="${__dns:+$__dns }$__tmp" + local __idx=1 + while json_get_type __tmp "$__idx" && [ "$__tmp" = string ]; do - done - fi + json_get_var __tmp "$((__idx++))" + __dns="${__dns:+$__dns }$__tmp" + + done + + json_select ".." + fi + + __network_switch_inactive "$4" || break + + done - eval "export -- \"$__var=$__dns\"" - [ -n "$__dns" ] + if [ -n "$__dns" ]; then + eval "export -- \"$__var=$__dns\"" + __network_set_cache "$__key" "$__var" + fi } -network_get_dnsserver() { __network_dns "$1" "$2" dns_server; } -network_get_dnssearch() { __network_dns "$1" "$2" dns_search; } +# determine the DNS servers of the given logical interface +# 1: destination variable +# 2: interface +# 3: consider inactive servers if "true" (optional) +network_get_dnsserver() { __network_dns "$1" "$2" dns_server "${3:-0}"; } + +# determine the domains of the given logical interface +# 1: destination variable +# 2: interface +# 3: consider inactive servers if "true" (optional) +network_get_dnssearch() { __network_dns "$1" "$2" dns_search "${3:-0}"; } __network_wan() { local __var="$1" local __family="$2" + local __key="wan_${2}" local __iface + __network_get_cache "$__key" "$__var" && return 0 + for __iface in $(ubus list | sed -ne 's/^network\.interface\.//p'); do if __network_gateway "$__var" "$__iface" "$__family"; then eval "export -- \"$__var=$__iface\"" + __network_set_cache "$__key" "$__var" return 0 fi done @@ -127,7 +219,12 @@ __network_wan() { return 1 } +# find the logical interface which holds the current IPv4 default route +# 1: destination variable network_find_wan() { __network_wan "$1" 4; } + +# find the logical interface which holds the current IPv6 default route +# 1: destination variable network_find_wan6() { __network_wan "$1" 6; } @@ -136,21 +233,33 @@ __network_device() local __var="$1" local __iface="$2" local __field="$3" + local __key="device_${2}_${3}" + + __network_get_cache "$__key" "$__var" && return 0 local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" [ -n "$__tmp" ] || return 1 json_load "$__tmp" - json_get_var "$__var" "$__field" + json_get_var "$__var" "$__field" && __network_set_cache "$__key" "$__var" } +# test whether the given logical interface is running +# 1: interface network_is_up() { local __up __network_device __up "$1" up && [ $__up -eq 1 ] } +# determine the layer 3 linux network device of the given logical interface +# 1: destination variable +# 2: interface network_get_device() { __network_device "$1" "$2" l3_device; } + +# determine the layer 2 linux network device of the given logical interface +# 1: destination variable +# 2: interface network_get_physdev() { __network_device "$1" "$2" device; } @@ -166,5 +275,19 @@ __network_defer() ubus call network.device set_state "$(json_dump)" 2>/dev/null } +# defer netifd actions on the given linux network device +# 1: device name network_defer_device() { __network_defer "$1" 1; } + +# continue netifd actions on the given linux network device +# 1: device name network_ready_device() { __network_defer "$1" 0; } + +# flush the internal value cache to force re-reading values from ubus +network_flush_cache() +{ + local __tmp + for __tmp in $__NETWORK_CACHE __NETWORK_CACHE; do + unset "$__tmp" + done +} -- cgit v1.2.3 From a06be29d4e91a4c00c0bd737e5da7c888edebdcc Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 16 Dec 2012 20:17:18 +0000 Subject: base-files: rework cache handling in network.sh to keep the entire parsed ifstatus, use jshn namespaces to support using it concurrently with other jshn users git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34725 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/network.sh | 288 ++++++++++++---------- 1 file changed, 159 insertions(+), 129 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index 9366e5937..d242abbe6 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -1,67 +1,153 @@ . /usr/share/libubox/jshn.sh -__network_switch_inactive() +__network_set_cache() { - local __tmp - - if [ "$1" = 0 ] || [ "$1" = false ]; then - return 1 - fi - - json_get_type __tmp "inactive" - - if [ "$__tmp" = object ]; then - json_select "inactive" + if [ -n "$3" ]; then + eval "export -- __NETWORK_CV_$1='$3'" + __NETWORK_CACHE="${__NETWORK_CACHE:+$__NETWORK_CACHE }__NETWORK_CV_$1" + elif json_get_var "__NETWORK_CV_$1" "$2"; then + __NETWORK_CACHE="${__NETWORK_CACHE:+$__NETWORK_CACHE }__NETWORK_CV_$1" fi } -__network_set_cache() +__network_export() { - __NETWORK_CACHE="${__NETWORK_CACHE:+$__NETWORK_CACHE }__NETWORK_CV_$1" - eval "__NETWORK_CV_$1='\$$2'" + local __v="__NETWORK_CV_$2" + eval "export -- \"$1=\${$__v:+\$$__v$3}\"; [ -n \"\${$__v+x}\" ]" } -__network_get_cache() +__network_parse_ifstatus() { - eval "[ -n \"\${__NETWORK_CV_$1+x}\" ] && export -- \"$2=\$__NETWORK_CV_$1\"" -} + local __iface="$1" + local __key="${__iface}" + local __tmp + local __old_ns -__network_ipaddr() -{ - local __var="$1" - local __iface="$2" - local __family="$3" - local __prefix="$4" - local __key="ipaddr_${2}_${3}_${4}" + __network_export __tmp "${__key}__parsed" && return 0 + __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" + [ -n "$__tmp" ] || return 1 - __network_get_cache "$__key" "$__var" && return 0 + json_set_namespace "network" __old_ns + json_load "$__tmp" - local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" + __network_set_cache "${__key}__parsed" "" "1" - json_load "${__tmp:-{}}" - json_get_type __tmp "ipv${__family}_address" + for __tmp in "" "_inactive"; do - if [ "$__tmp" = array ]; then + __key="${__key}${__tmp}" - json_select "ipv${__family}_address" - json_get_type __tmp 1 + # parse addresses + local __family + for __family in 4 6; do + if json_get_type __tmp "ipv${__family}_address" && [ "$__tmp" = array ]; then - if [ "$__tmp" = object ]; then + json_select "ipv${__family}_address" - json_select 1 - json_get_var $__var address + if json_get_type __tmp 1 && [ "$__tmp" = object ]; then - [ $__prefix -gt 0 ] && { - json_get_var __tmp mask - eval "export -- \"$__var=\${$__var}/$__tmp\"" - } + json_select 1 + __network_set_cache "${__key}_address${__family}" address + __network_set_cache "${__key}_mask${__family}" mask + json_select ".." + + fi + + json_select ".." + + fi + done + + # parse routes + if json_get_type __tmp route && [ "$__tmp" = array ]; then + + json_select "route" + + local __idx=1 + while json_get_type __tmp "$__idx" && [ "$__tmp" = object ]; do + + json_select "$((__idx++))" + json_get_var __tmp target + + case "${__tmp}" in + 0.0.0.0) + __network_set_cache "${__key}_gateway4" nexthop + ;; + ::) + __network_set_cache "${__key}_gateway6" nexthop + ;; + esac + + json_select ".." + + done + + json_select ".." - __network_set_cache "$__key" "$__var" - return 0 fi + + # parse dns info + local __field + for __field in "dns_server" "dns_search"; do + if json_get_type __tmp "$__field" && [ "$__tmp" = array ]; then + + json_select "$__field" + + local __idx=1 + local __dns="" + + while json_get_type __tmp "$__idx" && [ "$__tmp" = string ]; do + + json_get_var __tmp "$((__idx++))" + __dns="${__dns:+$__dns }$__tmp" + + done + + json_select ".." + + if [ -n "$__dns" ]; then + __network_set_cache "${__key}_${__field}" "" "$__dns" + fi + fi + done + + # parse up state, device and physdev + for __field in "up" "l3_device" "device"; do + if json_get_type __tmp "$__field"; then + __network_set_cache "${__key}_${__field}" "$__field" + fi + done + + # descend into inactive table + json_get_type __tmp "inactive" && [ "$__tmp" = object ] && json_select "inactive" + + done + + json_cleanup + json_set_namespace "$__old_ns" + + return 0 +} + + +__network_ipaddr() +{ + local __var="$1" + local __iface="$2" + local __family="$3" + local __prefix="$4" + local __tmp + + __network_parse_ifstatus "$__iface" || return 1 + + if [ $__prefix -eq 1 ]; then + __network_export __tmp "${__iface}_mask${__family}" && \ + __network_export "$__var" "${__iface}_address${__family}" "/$__tmp" + return $? fi - return 1 + __network_export "$__var" "${__iface}_address${__family}" + return $? + } # determine IPv4 address of given logical interface @@ -90,47 +176,17 @@ __network_gateway() local __var="$1" local __iface="$2" local __family="$3" - local __key="gateway_${2}_${3}" - - __network_get_cache "$__key" "$__var" && return 0 - - local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" - - json_load "${__tmp:-{}}" - - for __tmp in 0 1; do - - if json_get_type __tmp route && [ "$__tmp" = array ]; then - - json_select route - - local __idx=1 - while json_get_type __tmp "$__idx" && [ "$__tmp" = object ]; do - - json_select "$((__idx++))" - json_get_var __tmp target - - case "${__family}/${__tmp}" in - 4/0.0.0.0|6/::) - json_get_var "$__var" nexthop - __network_set_cache "$__key" "$__var" - return $? - ;; - esac - - json_select ".." - - done - - json_select ".." - - fi + local __inactive="$4" - __network_switch_inactive "$4" || break + __network_parse_ifstatus "$__iface" || return 1 - done + if [ "$__inactive" = 1 -o "$__inactive" = "true" ]; then + __network_export "$__var" "${__iface}_inactive_gateway${__family}" && \ + return 0 + fi - return 1 + __network_export "$__var" "${__iface}_gateway${__family}" + return $? } # determine IPv4 gateway of given logical interface @@ -150,40 +206,17 @@ __network_dns() { local __var="$1" local __iface="$2" local __field="$3" - local __key="dns_${2}_${3}" - - __network_get_cache "$__key" "$__var" && return 0 - - local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" - local __dns="" - - json_load "${__tmp:-{}}" + local __inactive="$4" - for __tmp in 0 1; do + __network_parse_ifstatus "$__iface" || return 1 - if json_get_type __tmp "$__field" && [ "$__tmp" = array ]; then - - json_select "$__field" - - local __idx=1 - while json_get_type __tmp "$__idx" && [ "$__tmp" = string ]; do - - json_get_var __tmp "$((__idx++))" - __dns="${__dns:+$__dns }$__tmp" - - done - - json_select ".." - fi - - __network_switch_inactive "$4" || break - - done - - if [ -n "$__dns" ]; then - eval "export -- \"$__var=$__dns\"" - __network_set_cache "$__key" "$__var" + if [ "$__inactive" = 1 -o "$__inactive" = "true" ]; then + __network_export "$__var" "${__iface}_inactive_${__field}" && \ + return 0 fi + + __network_export "$__var" "${__iface}_${__field}" + return $? } # determine the DNS servers of the given logical interface @@ -195,23 +228,23 @@ network_get_dnsserver() { __network_dns "$1" "$2" dns_server "${3:-0}"; } # determine the domains of the given logical interface # 1: destination variable # 2: interface -# 3: consider inactive servers if "true" (optional) +# 3: consider inactive domains if "true" (optional) network_get_dnssearch() { __network_dns "$1" "$2" dns_search "${3:-0}"; } -__network_wan() { +__network_wan() +{ local __var="$1" local __family="$2" - local __key="wan_${2}" + local __inactive="$3" local __iface - __network_get_cache "$__key" "$__var" && return 0 - for __iface in $(ubus list | sed -ne 's/^network\.interface\.//p'); do - if __network_gateway "$__var" "$__iface" "$__family"; then - eval "export -- \"$__var=$__iface\"" - __network_set_cache "$__key" "$__var" - return 0 + if [ "$__iface" != loopback ]; then + if __network_gateway "$__var" "$__iface" "$__family" "$__inactive"; then + eval "export -- \"$__var=$__iface\"" + return 0 + fi fi done @@ -221,11 +254,13 @@ __network_wan() { # find the logical interface which holds the current IPv4 default route # 1: destination variable -network_find_wan() { __network_wan "$1" 4; } +# 2: consider inactive default routes if "true" (optional) +network_find_wan() { __network_wan "$1" 4 "${2:-0}"; } # find the logical interface which holds the current IPv6 default route # 1: destination variable -network_find_wan6() { __network_wan "$1" 6; } +# 2: consider inactive dafault routes if "true" (optional) +network_find_wan6() { __network_wan "$1" 6 "${2:-0}"; } __network_device() @@ -233,15 +268,10 @@ __network_device() local __var="$1" local __iface="$2" local __field="$3" - local __key="device_${2}_${3}" - - __network_get_cache "$__key" "$__var" && return 0 - local __tmp="$(ubus call network.interface."$__iface" status 2>/dev/null)" - [ -n "$__tmp" ] || return 1 - - json_load "$__tmp" - json_get_var "$__var" "$__field" && __network_set_cache "$__key" "$__var" + __network_parse_ifstatus "$__iface" || return 1 + __network_export "$__var" "${__iface}_${__field}" + return $? } # test whether the given logical interface is running -- cgit v1.2.3 From 0cc78c202013a13896d42e9ed3264a3fe84bd1a3 Mon Sep 17 00:00:00 2001 From: jow Date: Mon, 17 Dec 2012 13:07:42 +0000 Subject: base-files: use json_is_a() in network.sh git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34733 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/network.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index d242abbe6..424965acb 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -39,11 +39,11 @@ __network_parse_ifstatus() # parse addresses local __family for __family in 4 6; do - if json_get_type __tmp "ipv${__family}_address" && [ "$__tmp" = array ]; then + if json_is_a "ipv${__family}_address" array; then json_select "ipv${__family}_address" - if json_get_type __tmp 1 && [ "$__tmp" = object ]; then + if json_is_a 1 object; then json_select 1 __network_set_cache "${__key}_address${__family}" address @@ -58,12 +58,12 @@ __network_parse_ifstatus() done # parse routes - if json_get_type __tmp route && [ "$__tmp" = array ]; then + if json_is_a route array; then json_select "route" local __idx=1 - while json_get_type __tmp "$__idx" && [ "$__tmp" = object ]; do + while json_is_a "$__idx" object; do json_select "$((__idx++))" json_get_var __tmp target @@ -88,14 +88,14 @@ __network_parse_ifstatus() # parse dns info local __field for __field in "dns_server" "dns_search"; do - if json_get_type __tmp "$__field" && [ "$__tmp" = array ]; then + if json_is_a "$__field" array; then json_select "$__field" local __idx=1 local __dns="" - while json_get_type __tmp "$__idx" && [ "$__tmp" = string ]; do + while json_is_a "$__idx" string; do json_get_var __tmp "$((__idx++))" __dns="${__dns:+$__dns }$__tmp" @@ -118,7 +118,7 @@ __network_parse_ifstatus() done # descend into inactive table - json_get_type __tmp "inactive" && [ "$__tmp" = object ] && json_select "inactive" + json_is_a "inactive" object && json_select "inactive" done -- cgit v1.2.3 From 53edda1e3668752d18b2bbf4c3d6edc7e3ab1b6e Mon Sep 17 00:00:00 2001 From: mirko Date: Wed, 19 Dec 2012 16:07:46 +0000 Subject: Do not overload mount-call - trying to reduce confusion The behaviour of calling 'mount' differed depending on whether it called the busybox-mount, the mount of util-linux, the mount defined in /lib/functions.sh and /lib/functions/boot.sh /etc/preinit even included /lib/functions.sh and /lib/functions/boot.sh, both re-defining 'mount'. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34792 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/boot | 2 +- package/base-files/files/etc/init.d/usb | 2 +- .../files/lib/firstboot/20_no_fo_mount_jffs | 4 ++-- .../files/lib/firstboot/30_is_rootfs_mounted | 2 +- package/base-files/files/lib/functions.sh | 3 --- package/base-files/files/lib/functions/boot.sh | 26 +++++++++------------- .../base-files/files/lib/preinit/10_check_for_mtd | 2 +- .../base-files/files/lib/preinit/10_essential_fs | 6 ++--- .../files/lib/preinit/20_device_fs_mount | 8 +++---- .../base-files/files/lib/preinit/40_mount_devpts | 2 +- .../base-files/files/lib/preinit/40_mount_jffs2 | 2 +- .../files/lib/preinit/70_pivot_jffs2_root | 2 +- package/base-files/files/lib/upgrade/common.sh | 12 +++++----- package/base-files/files/sbin/firstboot | 2 +- 14 files changed, 34 insertions(+), 41 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index 43837a80f..ef97383d8 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -66,7 +66,7 @@ start() { touch /var/log/lastlog touch /tmp/resolv.conf.auto ln -sf /tmp/resolv.conf.auto /tmp/resolv.conf - grep -q debugfs /proc/filesystems && mount -t debugfs debugfs /sys/kernel/debug + grep -q debugfs /proc/filesystems && mount -o noatime -t debugfs debugfs /sys/kernel/debug [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe load_modules /etc/modules.d/* diff --git a/package/base-files/files/etc/init.d/usb b/package/base-files/files/etc/init.d/usb index 7b443b651..43cdfd9a9 100755 --- a/package/base-files/files/etc/init.d/usb +++ b/package/base-files/files/etc/init.d/usb @@ -4,6 +4,6 @@ START=39 start() { [ -d /proc/bus/usb ] && { - /bin/mount -t usbfs none /proc/bus/usb + mount -o noatime -t usbfs none /proc/bus/usb } } diff --git a/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs b/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs index 8a1d4e06d..c03714fa6 100644 --- a/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs +++ b/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs @@ -5,8 +5,8 @@ no_fo_mount_jffs() { # initialize jffs2 - mount "$mtdpart" /overlay -t jffs2 || exit - + mount -o noatime "$mtdpart" /overlay -t jffs2 || exit + # workaround to ensure that union can attach properly sync ls /overlay >/dev/null diff --git a/package/base-files/files/lib/firstboot/30_is_rootfs_mounted b/package/base-files/files/lib/firstboot/30_is_rootfs_mounted index e2ba01d50..7233fd903 100644 --- a/package/base-files/files/lib/firstboot/30_is_rootfs_mounted +++ b/package/base-files/files/lib/firstboot/30_is_rootfs_mounted @@ -4,7 +4,7 @@ # Copyright (C) 2010 Vertical Communications skip_if_rootfs_mounted() { - mount "$mtdpart" /rom/overlay -t jffs2 || exit + mount -o noatime -t jffs2 "$mtdpart" /rom/overlay || exit } boot_hook_add switch2jffs skip_if_rootfs_mounted diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index b924fce28..db59706bc 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -6,9 +6,6 @@ debug () { ${DEBUG:-:} "$@" } -mount() { - busybox mount "$@" -} # newline N=" diff --git a/package/base-files/files/lib/functions/boot.sh b/package/base-files/files/lib/functions/boot.sh index 8c3f27ba4..137c3bf47 100644 --- a/package/base-files/files/lib/functions/boot.sh +++ b/package/base-files/files/lib/functions/boot.sh @@ -2,10 +2,6 @@ # Copyright (C) 2006-2010 OpenWrt.org # Copyright (C) 2010 Vertical Communications -mount() { - /bin/busybox mount -o noatime "$@" -} - boot_hook_splice_start() { export -n PI_HOOK_SPLICE=1 } @@ -112,12 +108,12 @@ dupe() { # } pivot() { # - mount -o move /proc $1/proc && \ + mount -o noatime,move /proc $1/proc && \ pivot_root $1 $1$2 && { - mount -o move $2/dev /dev - mount -o move $2/tmp /tmp - mount -o move $2/sys /sys 2>&- - mount -o move $2/overlay /overlay 2>&- + mount -o noatime,move $2/dev /dev + mount -o noatime,move $2/tmp /tmp + mount -o noatime,move $2/sys /sys 2>&- + mount -o noatime,move $2/overlay /overlay 2>&- return 0 } } @@ -126,16 +122,16 @@ fopivot() { # root=$1 { if grep -q overlay /proc/filesystems; then - mount -t overlayfs -olowerdir=/,upperdir=$1 "overlayfs:$1" /mnt && root=/mnt + mount -o noatime,lowerdir=/,upperdir=$1 -t overlayfs "overlayfs:$1" /mnt && root=/mnt elif grep -q mini_fo /proc/filesystems; then - mount -t mini_fo -o base=/,sto=$1 "mini_fo:$1" /mnt 2>&- && root=/mnt + mount -t mini_fo -o noatime,base=/,sto=$1 "mini_fo:$1" /mnt 2>&- && root=/mnt else - mount --bind / /mnt - mount --bind -o union "$1" /mnt && root=/mnt + mount --bind -o noatime / /mnt + mount --bind -o noatime,union "$1" /mnt && root=/mnt fi } || { [ "$3" = "1" ] && { - mount | grep "on $1 type" 2>&- 1>&- || mount -o bind $1 $1 + mount | grep "on $1 type" 2>&- 1>&- || mount -o noatime,bind $1 $1 dupe $1 $rom } } @@ -144,7 +140,7 @@ fopivot() { # ramoverlay() { mkdir -p /tmp/root - mount -t tmpfs -o mode=0755 root /tmp/root + mount -t tmpfs -o noatime,mode=0755 root /tmp/root fopivot /tmp/root /rom 1 } diff --git a/package/base-files/files/lib/preinit/10_check_for_mtd b/package/base-files/files/lib/preinit/10_check_for_mtd index 66f185e1a..6a7bd307f 100644 --- a/package/base-files/files/lib/preinit/10_check_for_mtd +++ b/package/base-files/files/lib/preinit/10_check_for_mtd @@ -5,7 +5,7 @@ mount_no_mtd() { mtd unlock rootfs - mount -o remount,rw /dev/root / + mount -o noatime,remount,rw /dev/root / } check_for_mtd() { diff --git a/package/base-files/files/lib/preinit/10_essential_fs b/package/base-files/files/lib/preinit/10_essential_fs index 5d979fd49..fc04eb7ff 100644 --- a/package/base-files/files/lib/preinit/10_essential_fs +++ b/package/base-files/files/lib/preinit/10_essential_fs @@ -3,11 +3,11 @@ # Copyright (C) 2010 Vertical Communications do_mount_procfs() { - mount -t proc proc /proc + mount -o noatime -t proc proc /proc } do_mount_sysfs() { - mount -t sysfs sysfs /sys + mount -o noatime -tsysfs sysfs /sys } calc_tmpfs_size() { @@ -16,7 +16,7 @@ calc_tmpfs_size() { do_mount_tmpfs() { calc_tmpfs_size - mount -t tmpfs -o size=$pi_size,nosuid,nodev,mode=1777 tmpfs /tmp + mount -o noatime -t tmpfs -o size=$pi_size,nosuid,nodev,mode=1777 tmpfs /tmp } boot_hook_add preinit_essential do_mount_procfs diff --git a/package/base-files/files/lib/preinit/20_device_fs_mount b/package/base-files/files/lib/preinit/20_device_fs_mount index ed59b5b23..7535b3ff9 100644 --- a/package/base-files/files/lib/preinit/20_device_fs_mount +++ b/package/base-files/files/lib/preinit/20_device_fs_mount @@ -6,19 +6,19 @@ do_move_devtmpfs() { local mnt="$(grep devtmpfs /proc/mounts)" mnt="${mnt#* }"; mnt="${mnt%% *}" - [ "$mnt" = "/dev" ] || mount -o move "$mnt" /dev + [ "$mnt" = "/dev" ] || mount -o noatime,move "$mnt" /dev } do_mount_devfs() { - mount -t devfs devfs /dev + mount -o noatime -t devfs devfs /dev } do_mount_hotplug() { - mount -t tmpfs -o mode=0755,size=512K tmpfs /dev + mount -t tmpfs -o noatime,mode=0755,size=512K tmpfs /dev } do_mount_udev() { - mount -n -t tmpfs -o mode=0755 udev /dev + mount -n -t tmpfs -o noatime,mode=0755 udev /dev } choose_device_fs() { diff --git a/package/base-files/files/lib/preinit/40_mount_devpts b/package/base-files/files/lib/preinit/40_mount_devpts index b75d69287..b55a7f2e8 100644 --- a/package/base-files/files/lib/preinit/40_mount_devpts +++ b/package/base-files/files/lib/preinit/40_mount_devpts @@ -7,7 +7,7 @@ init_devpts() { } do_mount_devpts() { - mount -t devpts devpts /dev/pts + mount -o noatime -t devpts devpts /dev/pts } boot_hook_add preinit_essential init_devpts diff --git a/package/base-files/files/lib/preinit/40_mount_jffs2 b/package/base-files/files/lib/preinit/40_mount_jffs2 index 00f45a890..ded785ed5 100644 --- a/package/base-files/files/lib/preinit/40_mount_jffs2 +++ b/package/base-files/files/lib/preinit/40_mount_jffs2 @@ -4,7 +4,7 @@ find_mount_jffs2() { mkdir -p /tmp/overlay - mount "$(find_mtd_part rootfs_data)" /tmp/overlay -t jffs2 + mount -o noatime -t jffs2 "$(find_mtd_part rootfs_data)" /tmp/overlay mtd -qq unlock rootfs_data } diff --git a/package/base-files/files/lib/preinit/70_pivot_jffs2_root b/package/base-files/files/lib/preinit/70_pivot_jffs2_root index 821bfb14f..b76f111ca 100644 --- a/package/base-files/files/lib/preinit/70_pivot_jffs2_root +++ b/package/base-files/files/lib/preinit/70_pivot_jffs2_root @@ -5,7 +5,7 @@ rootfs_pivot() { check_skip || jffs2_not_mounted || { echo "switching to jffs2" - mount -o move /tmp/overlay /overlay 2>&- + mount -o noatime,move /tmp/overlay /overlay 2>&- fopivot /overlay /rom && pi_mount_skip_next=true } } diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index e6de34849..e796c7bac 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -36,16 +36,16 @@ install_bin() { # [ ... ] pivot() { # mount | grep "on $1 type" 2>&- 1>&- || mount -o bind $1 $1 mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \ - mount -o move /proc $1/proc && \ + mount -o noatime,move /proc $1/proc && \ pivot_root $1 $1$2 || { umount $1 $1 return 1 } - mount -o move $2/sys /sys - mount -o move $2/dev /dev - mount -o move $2/tmp /tmp - mount -o move $2/overlay /overlay 2>&- + mount -o noatime,move $2/sys /sys + mount -o noatime,move $2/dev /dev + mount -o noatime,move $2/tmp /tmp + mount -o noatime,move $2/overlay /overlay 2>&- return 0 } @@ -71,7 +71,7 @@ run_ramfs() { # [...] umount -l /mnt grep /overlay /proc/mounts > /dev/null && { - mount -o remount,ro /overlay + mount -o noatime,remount,ro /overlay umount -l /overlay } diff --git a/package/base-files/files/sbin/firstboot b/package/base-files/files/sbin/firstboot index 4da299189..8fbd49990 100755 --- a/package/base-files/files/sbin/firstboot +++ b/package/base-files/files/sbin/firstboot @@ -27,7 +27,7 @@ if [ "${0##*/}" = "firstboot" ]; then boot_run_hook jffs2reset else mtd erase "$partname" - mount "$mtdpart" /overlay -t jffs2 + mount -o noatime "$mtdpart" /overlay -t jffs2 fopivot /overlay /rom 1 fi fi -- cgit v1.2.3 From c8e772f18ff31566e342cd44fbd7a6b2bc11efb2 Mon Sep 17 00:00:00 2001 From: mirko Date: Wed, 19 Dec 2012 16:07:53 +0000 Subject: merge /lib/functions/boot.sh and /lib/functions.sh git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34794 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/preinit | 1 - package/base-files/files/lib/functions.sh | 137 +++++++++++++++++++++++ package/base-files/files/lib/functions/boot.sh | 146 ------------------------- package/base-files/files/sbin/firstboot | 2 +- package/base-files/files/sbin/mount_root | 2 +- 5 files changed, 139 insertions(+), 149 deletions(-) delete mode 100644 package/base-files/files/lib/functions/boot.sh (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/preinit b/package/base-files/files/etc/preinit index 0fdfa8cf8..b237c2e06 100755 --- a/package/base-files/files/etc/preinit +++ b/package/base-files/files/etc/preinit @@ -22,7 +22,6 @@ pi_init_path="/bin:/sbin:/usr/bin:/usr/sbin" pi_init_cmd="/sbin/init" . /lib/functions.sh -. /lib/functions/boot.sh boot_hook_init preinit_essential boot_hook_init preinit_main diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index db59706bc..54e69b833 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -348,4 +348,141 @@ pi_include() { return 0 } +#!/bin/sh +# Copyright (C) 2006-2010 OpenWrt.org +# Copyright (C) 2010 Vertical Communications + +boot_hook_splice_start() { + export -n PI_HOOK_SPLICE=1 +} + +boot_hook_splice_finish() { + local hook + for hook in $PI_STACK_LIST; do + local v; eval "v=\${${hook}_splice:+\$${hook}_splice }$hook" + export -n "${hook}=${v% }" + export -n "${hook}_splice=" + done + export -n PI_HOOK_SPLICE= +} + +boot_hook_init() { + local hook="${1}_hook" + export -n "PI_STACK_LIST=${PI_STACK_LIST:+$PI_STACK_LIST }$hook" + export -n "$hook=" +} + +boot_hook_add() { + local hook="${1}_hook${PI_HOOK_SPLICE:+_splice}" + local func="${2}" + + [ -n "$func" ] && { + local v; eval "v=\$$hook" + export -n "$hook=${v:+$v }$func" + } +} + +boot_hook_shift() { + local hook="${1}_hook" + local rvar="${2}" + + local v; eval "v=\$$hook" + [ -n "$v" ] && { + local first="${v%% *}" + + [ "$v" != "${v#* }" ] && \ + export -n "$hook=${v#* }" || \ + export -n "$hook=" + + export -n "$rvar=$first" + return 0 + } + + return 1 +} + +boot_run_hook() { + local hook="$1" + local func + + while boot_hook_shift "$hook" func; do + local ran; eval "ran=\$PI_RAN_$func" + [ -n "$ran" ] || { + export -n "PI_RAN_$func=1" + $func "$1" "$2" + } + done +} + +jffs2_ready () { + mtdpart="$(find_mtd_part rootfs_data)" + [ -z "$mtdpart" ] && return 1 + magic=$(hexdump $mtdpart -n 4 -e '4/1 "%02x"') + [ "$magic" != "deadc0de" ] +} + +dupe() { # + cd $1 + echo -n "creating directories... " + { + cd $2 + find . -xdev -type d + echo "./dev ./overlay ./mnt ./proc ./tmp" + # xdev skips mounted directories + cd $1 + } | xargs mkdir -p + echo "done" + + echo -n "setting up symlinks... " + for file in $(cd $2; find . -xdev -type f;); do + case "$file" in + ./rom/note) ;; #nothing + ./etc/config*|\ + ./usr/lib/opkg/info/*) cp -af $2/$file $file;; + *) ln -sf /rom/${file#./*} $file;; + esac + done + for file in $(cd $2; find . -xdev -type l;); do + cp -af $2/${file#./*} $file + done + echo "done" +} + +pivot() { # + mount -o noatime,move /proc $1/proc && \ + pivot_root $1 $1$2 && { + mount -o noatime,move $2/dev /dev + mount -o noatime,move $2/tmp /tmp + mount -o noatime,move $2/sys /sys 2>&- + mount -o noatime,move $2/overlay /overlay 2>&- + return 0 + } +} + +fopivot() { # + root=$1 + { + if grep -q overlay /proc/filesystems; then + mount -o noatime,lowerdir=/,upperdir=$1 -t overlayfs "overlayfs:$1" /mnt && root=/mnt + elif grep -q mini_fo /proc/filesystems; then + mount -t mini_fo -o noatime,base=/,sto=$1 "mini_fo:$1" /mnt 2>&- && root=/mnt + else + mount --bind -o noatime / /mnt + mount --bind -o noatime,union "$1" /mnt && root=/mnt + fi + } || { + [ "$3" = "1" ] && { + mount | grep "on $1 type" 2>&- 1>&- || mount -o noatime,bind $1 $1 + dupe $1 $rom + } + } + pivot $root $2 +} + +ramoverlay() { + mkdir -p /tmp/root + mount -t tmpfs -o noatime,mode=0755 root /tmp/root + fopivot /tmp/root /rom 1 +} + [ -z "$IPKG_INSTROOT" -a -f /lib/config/uci.sh ] && . /lib/config/uci.sh diff --git a/package/base-files/files/lib/functions/boot.sh b/package/base-files/files/lib/functions/boot.sh deleted file mode 100644 index 137c3bf47..000000000 --- a/package/base-files/files/lib/functions/boot.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -boot_hook_splice_start() { - export -n PI_HOOK_SPLICE=1 -} - -boot_hook_splice_finish() { - local hook - for hook in $PI_STACK_LIST; do - local v; eval "v=\${${hook}_splice:+\$${hook}_splice }$hook" - export -n "${hook}=${v% }" - export -n "${hook}_splice=" - done - export -n PI_HOOK_SPLICE= -} - -boot_hook_init() { - local hook="${1}_hook" - export -n "PI_STACK_LIST=${PI_STACK_LIST:+$PI_STACK_LIST }$hook" - export -n "$hook=" -} - -boot_hook_add() { - local hook="${1}_hook${PI_HOOK_SPLICE:+_splice}" - local func="${2}" - - [ -n "$func" ] && { - local v; eval "v=\$$hook" - export -n "$hook=${v:+$v }$func" - } -} - -boot_hook_shift() { - local hook="${1}_hook" - local rvar="${2}" - - local v; eval "v=\$$hook" - [ -n "$v" ] && { - local first="${v%% *}" - - [ "$v" != "${v#* }" ] && \ - export -n "$hook=${v#* }" || \ - export -n "$hook=" - - export -n "$rvar=$first" - return 0 - } - - return 1 -} - -boot_run_hook() { - local hook="$1" - local func - - while boot_hook_shift "$hook" func; do - local ran; eval "ran=\$PI_RAN_$func" - [ -n "$ran" ] || { - export -n "PI_RAN_$func=1" - $func "$1" "$2" - } - done -} - -find_mtd_part() { - local PART="$(grep "\"$1\"" /proc/mtd | awk -F: '{print $1}')" - local PREFIX=/dev/mtdblock - - PART="${PART##mtd}" - [ -d /dev/mtdblock ] && PREFIX=/dev/mtdblock/ - echo "${PART:+$PREFIX$PART}" -} - -jffs2_ready () { - mtdpart="$(find_mtd_part rootfs_data)" - [ -z "$mtdpart" ] && return 1 - magic=$(hexdump $mtdpart -n 4 -e '4/1 "%02x"') - [ "$magic" != "deadc0de" ] -} - -dupe() { # - cd $1 - echo -n "creating directories... " - { - cd $2 - find . -xdev -type d - echo "./dev ./overlay ./mnt ./proc ./tmp" - # xdev skips mounted directories - cd $1 - } | xargs mkdir -p - echo "done" - - echo -n "setting up symlinks... " - for file in $(cd $2; find . -xdev -type f;); do - case "$file" in - ./rom/note) ;; #nothing - ./etc/config*|\ - ./usr/lib/opkg/info/*) cp -af $2/$file $file;; - *) ln -sf /rom/${file#./*} $file;; - esac - done - for file in $(cd $2; find . -xdev -type l;); do - cp -af $2/${file#./*} $file - done - echo "done" -} - -pivot() { # - mount -o noatime,move /proc $1/proc && \ - pivot_root $1 $1$2 && { - mount -o noatime,move $2/dev /dev - mount -o noatime,move $2/tmp /tmp - mount -o noatime,move $2/sys /sys 2>&- - mount -o noatime,move $2/overlay /overlay 2>&- - return 0 - } -} - -fopivot() { # - root=$1 - { - if grep -q overlay /proc/filesystems; then - mount -o noatime,lowerdir=/,upperdir=$1 -t overlayfs "overlayfs:$1" /mnt && root=/mnt - elif grep -q mini_fo /proc/filesystems; then - mount -t mini_fo -o noatime,base=/,sto=$1 "mini_fo:$1" /mnt 2>&- && root=/mnt - else - mount --bind -o noatime / /mnt - mount --bind -o noatime,union "$1" /mnt && root=/mnt - fi - } || { - [ "$3" = "1" ] && { - mount | grep "on $1 type" 2>&- 1>&- || mount -o noatime,bind $1 $1 - dupe $1 $rom - } - } - pivot $root $2 -} - -ramoverlay() { - mkdir -p /tmp/root - mount -t tmpfs -o noatime,mode=0755 root /tmp/root - fopivot /tmp/root /rom 1 -} - diff --git a/package/base-files/files/sbin/firstboot b/package/base-files/files/sbin/firstboot index 8fbd49990..7e9731b00 100755 --- a/package/base-files/files/sbin/firstboot +++ b/package/base-files/files/sbin/firstboot @@ -4,7 +4,7 @@ switch2jffs_hook= jffs2reset_hook= no_fo_hook= -. /lib/functions/boot.sh +. /lib/functions.sh firstboot_skip_next=false diff --git a/package/base-files/files/sbin/mount_root b/package/base-files/files/sbin/mount_root index 2d73dac53..1c48ebab1 100755 --- a/package/base-files/files/sbin/mount_root +++ b/package/base-files/files/sbin/mount_root @@ -10,7 +10,7 @@ failsafe_hook= initramfs_hook= preinit_mount_root= -. /lib/functions/boot.sh +. /lib/functions.sh for pi_source_file in /lib/preinit/*; do . $pi_source_file -- cgit v1.2.3 From f1b689a9f44e1bc8cb3953d3abc4758fc5860447 Mon Sep 17 00:00:00 2001 From: luka Date: Thu, 20 Dec 2012 15:15:30 +0000 Subject: [package] base-files: we don't need /etc/functions.sh symlink anymore git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34802 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/functions.sh | 1 - 1 file changed, 1 deletion(-) delete mode 120000 package/base-files/files/etc/functions.sh (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/functions.sh b/package/base-files/files/etc/functions.sh deleted file mode 120000 index 13b3190e7..000000000 --- a/package/base-files/files/etc/functions.sh +++ /dev/null @@ -1 +0,0 @@ -../lib/functions.sh \ No newline at end of file -- cgit v1.2.3 From 5ca25ac981296646898bc8810dd31e01ebaf84d1 Mon Sep 17 00:00:00 2001 From: mirko Date: Fri, 21 Dec 2012 12:10:21 +0000 Subject: [package/base-files] hot-fix nameclash in sysupgrade: rename pivot() to supivot() in sysupgrade Sysupgrade defines its very own pivot() function. Prior merging boot.sh and functions.sh sysupgrade just included boot.sh, now it includes functions.sh which defines pivot() as well, however slightly different which causes sysupgrade to fail. This is a hot-fix to unbreak sysupgrade, however those two pivot() functions should actually get merged. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34815 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/upgrade/common.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index e796c7bac..2e123ab3c 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -33,7 +33,7 @@ install_bin() { # [ ... ] }; done } -pivot() { # +supivot() { # mount | grep "on $1 type" 2>&- 1>&- || mount -o bind $1 $1 mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \ mount -o noatime,move /proc $1/proc && \ @@ -62,7 +62,7 @@ run_ramfs() { # [...] done install_file /etc/resolv.conf /lib/functions.sh /lib/functions.sh /lib/upgrade/*.sh $RAMFS_COPY_DATA - pivot $RAM_ROOT /mnt || { + supivot $RAM_ROOT /mnt || { echo "Failed to switch over to ramfs. Please reboot." exit 1 } -- cgit v1.2.3 From c0a700469527138643d745c7a17ba66e86e77a52 Mon Sep 17 00:00:00 2001 From: nbd Date: Sat, 22 Dec 2012 18:56:09 +0000 Subject: base-files: add basic procd integration, let procd start (and restart) ubus instead of having an ubus init script git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34866 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/rc.common | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/rc.common b/package/base-files/files/etc/rc.common index fa2df6cd2..78e2dd494 100755 --- a/package/base-files/files/etc/rc.common +++ b/package/base-files/files/etc/rc.common @@ -75,10 +75,41 @@ $EXTRA_HELP EOF } +# for procd +start_service() { + return 0 +} + +stop_service() { + return 0 +} + ${INIT_TRACE:+set -x} . "$initscript" +[ -n "$USE_PROCD" ] && { + . $IPKG_INSTROOT/lib/functions/procd.sh + + rc_procd() { + procd_open_service "$(basename "$initscript")" "$initscript" + "$@" + procd_close_service + } + + start() { + rc_procd start_service "$@" + } + + stop() { + procd_kill "$(basename "$initscript")" "$1" + } + + reload() { + start + } +} + ALL_COMMANDS="start stop reload restart boot shutdown enable disable enabled depends ${EXTRA_COMMANDS}" list_contains ALL_COMMANDS "$action" || action=help [ "$action" = "reload" ] && action='eval reload "$@" || restart "$@" && :' -- cgit v1.2.3 From afc4535cfc5d687912501ccf7103ae6975841705 Mon Sep 17 00:00:00 2001 From: jow Date: Sun, 23 Dec 2012 22:18:43 +0000 Subject: base-files: ipcalc.sh: fix broken calculations on 64bit systems Calculate complements by using awk's xor() function with a mask of 0xffffffff instead of relying on the compl() function which appears to produce broken results on certain 64bit architectures. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34875 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/bin/ipcalc.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/bin/ipcalc.sh b/package/base-files/files/bin/ipcalc.sh index d6ef16870..7463d6bdd 100755 --- a/package/base-files/files/bin/ipcalc.sh +++ b/package/base-files/files/bin/ipcalc.sh @@ -22,6 +22,11 @@ function int2ip(ip,ret,x) { return ret } +function compl32(v) { + ret=xor(v, 0xffffffff) + return ret +} + BEGIN { slpos=index(ARGV[1],"/") if (slpos == 0) { @@ -29,27 +34,27 @@ BEGIN { netmask=ip2int(ARGV[2]) } else { ipaddr=ip2int(substr(ARGV[1],0,slpos-1)) - netmask=compl(2**(32-int(substr(ARGV[1],slpos+1)))-1) + netmask=compl32(2**(32-int(substr(ARGV[1],slpos+1)))-1) ARGV[4]=ARGV[3] ARGV[3]=ARGV[2] } network=and(ipaddr,netmask) - broadcast=or(network,compl(netmask)) + broadcast=or(network,compl32(netmask)) - start=or(network,and(ip2int(ARGV[3]),compl(netmask))) + start=or(network,and(ip2int(ARGV[3]),compl32(netmask))) limit=network+1 if (startlimit) end=limit print "IP="int2ip(ipaddr) print "NETMASK="int2ip(netmask) print "BROADCAST="int2ip(broadcast) print "NETWORK="int2ip(network) - print "PREFIX="32-bitcount(compl(netmask)) + print "PREFIX="32-bitcount(compl32(netmask)) # range calculations: # ipcalc -- cgit v1.2.3 From 593cc2f133ba84688e0bc15be79e1b2b752cf67a Mon Sep 17 00:00:00 2001 From: cyrus Date: Thu, 27 Dec 2012 14:10:01 +0000 Subject: base-files: Fix a typo in config_list_foreach git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34893 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index 54e69b833..ae0257a5c 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -197,7 +197,7 @@ config_list_foreach() { [ -z "$len" ] && return 0 while [ $c -le "$len" ]; do config_get val "${section}" "${option}_ITEM$c" - eval "$function \"\$val\" \"$@\"" + eval "$function \"\$val\" \"\$@\"" c="$(($c + 1))" done } -- cgit v1.2.3 From 771b02311e41f8580b81bfd3609127213cf7f129 Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 2 Jan 2013 16:21:26 +0000 Subject: sysupgrade: do not require an extra argument after --restore-backup Neither --create-backup nor --restore-backup need an image name (following the backup filename). Treat them in uniform way. Mostly fixes #12346. Signed-off-by: Paul Fertser git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34974 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/sbin/sysupgrade | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 802848ade..4b009ad87 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -12,6 +12,7 @@ export DELAY= export CONF_IMAGE= export CONF_BACKUP= export CONF_RESTORE= +export NEED_IMAGE= export HELP=0 export FORCE=0 @@ -24,8 +25,8 @@ while [ -n "$1" ]; do -q) export VERBOSE="$(($VERBOSE - 1))";; -n) export SAVE_CONFIG=0;; -c) export SAVE_OVERLAY=1;; - -b|--create-backup) export CONF_BACKUP="$2"; shift;; - -r|--restore-backup) export CONF_RESTORE="$2"; shift;; + -b|--create-backup) export CONF_BACKUP="$2" NEED_IMAGE=1; shift;; + -r|--restore-backup) export CONF_RESTORE="$2" NEED_IMAGE=1; shift;; -f) export CONF_IMAGE="$2"; shift;; -F|--force) export FORCE=1;; -h|--help) export HELP=1; break;; @@ -44,7 +45,7 @@ export CONF_TAR=/tmp/sysupgrade.tgz export ARGV="$*" export ARGC="$#" -[ -z "$ARGV" -a -z "$CONF_BACKUP" -o $HELP -gt 0 ] && { +[ -z "$ARGV" -a -z "$NEED_IMAGE" -o $HELP -gt 0 ] && { cat < @@ -72,10 +73,10 @@ EOF exit 1 } -[ -n "$ARGV" -a -n "$CONF_BACKUP" ] && { +[ -n "$ARGV" -a -n "$NEED_IMAGE" ] && { cat <<-EOF - -b/--create-backup does not perform a firmware upgrade. Do not - specify both -b and a firmware image. + -b/--create-backup and -r/--restore-backup do not perform a firmware upgrade. + Do not specify both -b/-r and a firmware image. EOF exit 1 } -- cgit v1.2.3 From 2078309891d6054783fa55c650fdeed964237eea Mon Sep 17 00:00:00 2001 From: jow Date: Wed, 2 Jan 2013 16:21:30 +0000 Subject: sysupgrade: clarify online help Fixes #12346. Signed-off-by: Paul Fertser git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34975 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/sbin/sysupgrade | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 4b009ad87..67019307d 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -47,27 +47,30 @@ export ARGC="$#" [ -z "$ARGV" -a -z "$NEED_IMAGE" -o $HELP -gt 0 ] && { cat < +Usage: $0 [...] + $0 [-q] [-i] -Options: +upgrade-option: -d add a delay before rebooting -f restore configuration from .tar.gz (file or url) -i interactive mode -c attempt to preserve all changed files in /etc/ - -b / --create-backup + -n do not save configuration over reflash + -F | --force + Flash image even if image checks fail, this is dangerous! + -q less verbose + -v more verbose + -h | --help display this help + +backup-command: + -b | --create-backup create .tar.gz of files specified in sysupgrade.conf then exit. Does not flash an image. If file is '-', i.e. stdout, verbosity is set to 0 (i.e. quiet). - -r / --restore-backup + -r | --restore-backup restore a .tar.gz created with sysupgrade -b then exit. Does not flash an image. If file is '-', the archive is read from stdin. - -n do not save configuration over reflash - -F / --force - Flash image even if image checks fail, this is dangerous! - -q less verbose - -v more verbose - -h / --help display this help EOF exit 1 @@ -75,8 +78,8 @@ EOF [ -n "$ARGV" -a -n "$NEED_IMAGE" ] && { cat <<-EOF - -b/--create-backup and -r/--restore-backup do not perform a firmware upgrade. - Do not specify both -b/-r and a firmware image. + -b|--create-backup and -r|--restore-backup do not perform a firmware upgrade. + Do not specify both -b|-r and a firmware image. EOF exit 1 } -- cgit v1.2.3 From 04d51e9b5ee038bd5c897964916cdaaf717a67df Mon Sep 17 00:00:00 2001 From: acinonyx Date: Fri, 11 Jan 2013 13:20:51 +0000 Subject: [package] base-files: Don't pass '--set-worker /lib/hotplug2/worker_fork.so' to hotplug2 (#12781) git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35095 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/preinit/30_device_fs_daemons | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/preinit/30_device_fs_daemons b/package/base-files/files/lib/preinit/30_device_fs_daemons index 5b3e2ad00..8379e5e74 100644 --- a/package/base-files/files/lib/preinit/30_device_fs_daemons +++ b/package/base-files/files/lib/preinit/30_device_fs_daemons @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2006 OpenWrt.org +# Copyright (C) 2006-2013 OpenWrt.org # Copyright (C) 2010 Vertical Communications init_devfs() { @@ -8,8 +8,8 @@ init_devfs() { init_hotplug2() { [ -c /dev/console ] || mknod /dev/console c 5 1 - /sbin/hotplug2 --set-worker /lib/hotplug2/worker_fork.so --set-rules-file /etc/hotplug2-init.rules --no-persistent --set-coldplug-cmd /sbin/udevtrigger - /sbin/hotplug2 --set-worker /lib/hotplug2/worker_fork.so --set-rules-file /etc/hotplug2-init.rules --persistent & + /sbin/hotplug2 --set-rules-file /etc/hotplug2-init.rules --no-persistent --set-coldplug-cmd /sbin/udevtrigger + /sbin/hotplug2 --set-rules-file /etc/hotplug2-init.rules --persistent & } init_udev() { -- cgit v1.2.3 From a9e848f1b73ec05528ca7c01603a80ff87faad97 Mon Sep 17 00:00:00 2001 From: cyrus Date: Tue, 15 Jan 2013 13:07:51 +0000 Subject: base-files: add support for ipv6-prefixes in connection with netifd git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35168 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/sysctl.conf | 2 ++ .../base-files/files/etc/uci-defaults/generate-ula | 18 +++++++++++++ package/base-files/files/lib/functions/network.sh | 30 ++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 package/base-files/files/etc/uci-defaults/generate-ula (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/sysctl.conf b/package/base-files/files/etc/sysctl.conf index ef3db4ec5..4ea01bb4c 100644 --- a/package/base-files/files/etc/sysctl.conf +++ b/package/base-files/files/etc/sysctl.conf @@ -12,6 +12,8 @@ net.ipv4.tcp_timestamps=1 net.ipv4.tcp_sack=1 net.ipv4.tcp_dsack=1 +net.ipv6.conf.all.forwarding=1 + net.netfilter.nf_conntrack_acct=1 net.netfilter.nf_conntrack_checksum=0 net.netfilter.nf_conntrack_max=16384 diff --git a/package/base-files/files/etc/uci-defaults/generate-ula b/package/base-files/files/etc/uci-defaults/generate-ula new file mode 100644 index 000000000..f3e493145 --- /dev/null +++ b/package/base-files/files/etc/uci-defaults/generate-ula @@ -0,0 +1,18 @@ +#!/bin/sh + +[ "$(uci get network.globals.ula_prefix)" != "auto" ] && exit 0 +# Sometimes results are empty, therefore try until it works... +local r1 r2 r3 +while [ -z "$r1" -o -z "$r2" -o -z "$r3" ]; do + r1=$(printf "%02x" $(($(/dev/null + set network.globals.ula_prefix=fd$r1:$r2:$r3::/48 + commit network +EOF + +exit 0 + diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index 424965acb..8f87d1d0b 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -57,6 +57,20 @@ __network_parse_ifstatus() fi done + # parse prefixes + if json_is_a "ipv6_prefix" array; then + json_select "ipv6_prefix" + + if json_is_a 1 object; then + json_select 1 + __network_set_cache "${__key}_prefix6_address" address + __network_set_cache "${__key}_prefix6_mask" mask + json_select ".." + fi + + json_select ".." + fi + # parse routes if json_is_a route array; then @@ -170,6 +184,22 @@ network_get_subnet() { __network_ipaddr "$1" "$2" 4 1; } # 2: interface network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; } +# determine IPv6 prefix +network_get_prefix6() { + local __prefix="$1" + local __iface="$2" + local __address + local __mask + + __network_parse_ifstatus "$__iface" || return 1 + __network_export __address "${__iface}_prefix6_address" + local return="$?" + [ "$return" -eq 0 ] || return $? + __network_export __mask "${__iface}_prefix6_mask" + eval "$__prefix=$__address/$__mask" + return 0 +} + __network_gateway() { -- cgit v1.2.3 From 7df46a033cb847877010edf267effc4cd05c8e2d Mon Sep 17 00:00:00 2001 From: cyrus Date: Thu, 17 Jan 2013 16:16:02 +0000 Subject: base-files: rename ULA generation script git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35204 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/uci-defaults/generate-ula | 18 ------------------ .../files/etc/uci-defaults/network-generate-ula | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 18 deletions(-) delete mode 100644 package/base-files/files/etc/uci-defaults/generate-ula create mode 100644 package/base-files/files/etc/uci-defaults/network-generate-ula (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/uci-defaults/generate-ula b/package/base-files/files/etc/uci-defaults/generate-ula deleted file mode 100644 index f3e493145..000000000 --- a/package/base-files/files/etc/uci-defaults/generate-ula +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -[ "$(uci get network.globals.ula_prefix)" != "auto" ] && exit 0 -# Sometimes results are empty, therefore try until it works... -local r1 r2 r3 -while [ -z "$r1" -o -z "$r2" -o -z "$r3" ]; do - r1=$(printf "%02x" $(($(/dev/null - set network.globals.ula_prefix=fd$r1:$r2:$r3::/48 - commit network -EOF - -exit 0 - diff --git a/package/base-files/files/etc/uci-defaults/network-generate-ula b/package/base-files/files/etc/uci-defaults/network-generate-ula new file mode 100644 index 000000000..f3e493145 --- /dev/null +++ b/package/base-files/files/etc/uci-defaults/network-generate-ula @@ -0,0 +1,18 @@ +#!/bin/sh + +[ "$(uci get network.globals.ula_prefix)" != "auto" ] && exit 0 +# Sometimes results are empty, therefore try until it works... +local r1 r2 r3 +while [ -z "$r1" -o -z "$r2" -o -z "$r3" ]; do + r1=$(printf "%02x" $(($(/dev/null + set network.globals.ula_prefix=fd$r1:$r2:$r3::/48 + commit network +EOF + +exit 0 + -- cgit v1.2.3 From 5dade080429f461b8f02a8effb835cd309c1d50b Mon Sep 17 00:00:00 2001 From: jow Date: Fri, 18 Jan 2013 12:46:43 +0000 Subject: base-files: use numerically prefixed uci-defaults names git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35218 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/etc/uci-defaults/10_migrate-shadow | 12 ++++++++++++ .../files/etc/uci-defaults/11_migrate-sysctl | 17 +++++++++++++++++ .../files/etc/uci-defaults/12_network-generate-ula | 18 ++++++++++++++++++ .../base-files/files/etc/uci-defaults/migrate-shadow | 12 ------------ .../base-files/files/etc/uci-defaults/migrate-sysctl | 17 ----------------- .../files/etc/uci-defaults/network-generate-ula | 18 ------------------ 6 files changed, 47 insertions(+), 47 deletions(-) create mode 100644 package/base-files/files/etc/uci-defaults/10_migrate-shadow create mode 100644 package/base-files/files/etc/uci-defaults/11_migrate-sysctl create mode 100644 package/base-files/files/etc/uci-defaults/12_network-generate-ula delete mode 100644 package/base-files/files/etc/uci-defaults/migrate-shadow delete mode 100644 package/base-files/files/etc/uci-defaults/migrate-sysctl delete mode 100644 package/base-files/files/etc/uci-defaults/network-generate-ula (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/uci-defaults/10_migrate-shadow b/package/base-files/files/etc/uci-defaults/10_migrate-shadow new file mode 100644 index 000000000..b7ea5718c --- /dev/null +++ b/package/base-files/files/etc/uci-defaults/10_migrate-shadow @@ -0,0 +1,12 @@ +#!/bin/sh + +local ppwd="$(sed -ne '/^root:/s/^root:\([^:]*\):.*$/\1/p' /etc/passwd)" +local spwd="$(sed -ne '/^root:/s/^root:\([^:]*\):.*$/\1/p' /etc/shadow)" + +if [ -n "${ppwd#[\!x]}" ] && [ -z "${spwd#[\!x]}" ]; then + logger -t migrate-shadow "Moving root password hash into shadow database" + sed -i -e "s:^root\:[^\:]*\::root\:x\::" /etc/passwd + sed -i -e "s:^root\:[^\:]*\::root\:$ppwd\::" /etc/shadow +fi + +exit 0 diff --git a/package/base-files/files/etc/uci-defaults/11_migrate-sysctl b/package/base-files/files/etc/uci-defaults/11_migrate-sysctl new file mode 100644 index 000000000..b3796a4d2 --- /dev/null +++ b/package/base-files/files/etc/uci-defaults/11_migrate-sysctl @@ -0,0 +1,17 @@ +#!/bin/sh + +if [ ! -f "/rom/etc/sysctl.conf" ] || cmp -s "/rom/etc/sysctl.conf" "/etc/sysctl.conf"; then + exit 0 +fi + +fingerprint="$(md5sum /etc/sysctl.conf)" +fingerprint="${fingerprint%% *}" + +if [ "$fingerprint" = "1b05ebb41f72cb84e5510573cd4aca26" ] || \ + [ "$fingerprint" = "62deb895be1a7f496040187b7c930e4e" ]; then + logger -t migrate-sysctl "Updating sysctl.conf to use current defaults" + cp "/rom/etc/sysctl.conf" "/etc/sysctl.conf" +fi + +exit 0 + diff --git a/package/base-files/files/etc/uci-defaults/12_network-generate-ula b/package/base-files/files/etc/uci-defaults/12_network-generate-ula new file mode 100644 index 000000000..f3e493145 --- /dev/null +++ b/package/base-files/files/etc/uci-defaults/12_network-generate-ula @@ -0,0 +1,18 @@ +#!/bin/sh + +[ "$(uci get network.globals.ula_prefix)" != "auto" ] && exit 0 +# Sometimes results are empty, therefore try until it works... +local r1 r2 r3 +while [ -z "$r1" -o -z "$r2" -o -z "$r3" ]; do + r1=$(printf "%02x" $(($(/dev/null + set network.globals.ula_prefix=fd$r1:$r2:$r3::/48 + commit network +EOF + +exit 0 + diff --git a/package/base-files/files/etc/uci-defaults/migrate-shadow b/package/base-files/files/etc/uci-defaults/migrate-shadow deleted file mode 100644 index b7ea5718c..000000000 --- a/package/base-files/files/etc/uci-defaults/migrate-shadow +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -local ppwd="$(sed -ne '/^root:/s/^root:\([^:]*\):.*$/\1/p' /etc/passwd)" -local spwd="$(sed -ne '/^root:/s/^root:\([^:]*\):.*$/\1/p' /etc/shadow)" - -if [ -n "${ppwd#[\!x]}" ] && [ -z "${spwd#[\!x]}" ]; then - logger -t migrate-shadow "Moving root password hash into shadow database" - sed -i -e "s:^root\:[^\:]*\::root\:x\::" /etc/passwd - sed -i -e "s:^root\:[^\:]*\::root\:$ppwd\::" /etc/shadow -fi - -exit 0 diff --git a/package/base-files/files/etc/uci-defaults/migrate-sysctl b/package/base-files/files/etc/uci-defaults/migrate-sysctl deleted file mode 100644 index b3796a4d2..000000000 --- a/package/base-files/files/etc/uci-defaults/migrate-sysctl +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -if [ ! -f "/rom/etc/sysctl.conf" ] || cmp -s "/rom/etc/sysctl.conf" "/etc/sysctl.conf"; then - exit 0 -fi - -fingerprint="$(md5sum /etc/sysctl.conf)" -fingerprint="${fingerprint%% *}" - -if [ "$fingerprint" = "1b05ebb41f72cb84e5510573cd4aca26" ] || \ - [ "$fingerprint" = "62deb895be1a7f496040187b7c930e4e" ]; then - logger -t migrate-sysctl "Updating sysctl.conf to use current defaults" - cp "/rom/etc/sysctl.conf" "/etc/sysctl.conf" -fi - -exit 0 - diff --git a/package/base-files/files/etc/uci-defaults/network-generate-ula b/package/base-files/files/etc/uci-defaults/network-generate-ula deleted file mode 100644 index f3e493145..000000000 --- a/package/base-files/files/etc/uci-defaults/network-generate-ula +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -[ "$(uci get network.globals.ula_prefix)" != "auto" ] && exit 0 -# Sometimes results are empty, therefore try until it works... -local r1 r2 r3 -while [ -z "$r1" -o -z "$r2" -o -z "$r3" ]; do - r1=$(printf "%02x" $(($(/dev/null - set network.globals.ula_prefix=fd$r1:$r2:$r3::/48 - commit network -EOF - -exit 0 - -- cgit v1.2.3 From af83088d4355ae96152c9260844d7a9a6f28d58a Mon Sep 17 00:00:00 2001 From: jow Date: Mon, 21 Jan 2013 18:54:58 +0000 Subject: base-files: network.sh: simplify network_get_prefix6() git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35286 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/network.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index 8f87d1d0b..86b6fc569 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -186,18 +186,15 @@ network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; } # determine IPv6 prefix network_get_prefix6() { - local __prefix="$1" + local __var="$1" local __iface="$2" local __address local __mask __network_parse_ifstatus "$__iface" || return 1 - __network_export __address "${__iface}_prefix6_address" - local return="$?" - [ "$return" -eq 0 ] || return $? - __network_export __mask "${__iface}_prefix6_mask" - eval "$__prefix=$__address/$__mask" - return 0 + __network_export __mask "${__iface}_prefix6_mask" || return 1 + __network_export __var "${__iface}_prefix6_address" "$__mask" + return $? } -- cgit v1.2.3 From 19cb7485b1725013ba6a1e941ac5e8b250de2faf Mon Sep 17 00:00:00 2001 From: jow Date: Mon, 21 Jan 2013 19:02:38 +0000 Subject: base-files: network.sh: fix typo in previous commit git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35287 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/network.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index 86b6fc569..ff153c6c9 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -193,7 +193,7 @@ network_get_prefix6() { __network_parse_ifstatus "$__iface" || return 1 __network_export __mask "${__iface}_prefix6_mask" || return 1 - __network_export __var "${__iface}_prefix6_address" "$__mask" + __network_export __var "${__iface}_prefix6_address" "/$__mask" return $? } -- cgit v1.2.3 From c1b55275718167eff157f49d549050952637d664 Mon Sep 17 00:00:00 2001 From: cyrus Date: Tue, 22 Jan 2013 16:47:09 +0000 Subject: base-files: Set default value for IPv6 forwarding git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35299 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/sysctl.conf | 1 + 1 file changed, 1 insertion(+) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/sysctl.conf b/package/base-files/files/etc/sysctl.conf index 4ea01bb4c..52aea5501 100644 --- a/package/base-files/files/etc/sysctl.conf +++ b/package/base-files/files/etc/sysctl.conf @@ -13,6 +13,7 @@ net.ipv4.tcp_sack=1 net.ipv4.tcp_dsack=1 net.ipv6.conf.all.forwarding=1 +net.ipv6.conf.default.forwarding=1 net.netfilter.nf_conntrack_acct=1 net.netfilter.nf_conntrack_checksum=0 -- cgit v1.2.3 From a95f83769f0d3a51bae6d2597a015cbcf76d7ae4 Mon Sep 17 00:00:00 2001 From: cyrus Date: Tue, 22 Jan 2013 16:47:16 +0000 Subject: base-files: fix network_get_prefix6 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35300 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/network.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index ff153c6c9..369fa3dbd 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -193,7 +193,7 @@ network_get_prefix6() { __network_parse_ifstatus "$__iface" || return 1 __network_export __mask "${__iface}_prefix6_mask" || return 1 - __network_export __var "${__iface}_prefix6_address" "/$__mask" + __network_export "$__var" "${__iface}_prefix6_address" "/$__mask" return $? } -- cgit v1.2.3 From a19e709ca77b68292ce8da958e64df9eab656caa Mon Sep 17 00:00:00 2001 From: cyrus Date: Mon, 28 Jan 2013 13:53:38 +0000 Subject: base-files: remove IPv6-forwarding setting for all interfaces git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35344 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/sysctl.conf | 1 - 1 file changed, 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/sysctl.conf b/package/base-files/files/etc/sysctl.conf index 52aea5501..1841dd4ca 100644 --- a/package/base-files/files/etc/sysctl.conf +++ b/package/base-files/files/etc/sysctl.conf @@ -12,7 +12,6 @@ net.ipv4.tcp_timestamps=1 net.ipv4.tcp_sack=1 net.ipv4.tcp_dsack=1 -net.ipv6.conf.all.forwarding=1 net.ipv6.conf.default.forwarding=1 net.netfilter.nf_conntrack_acct=1 -- cgit v1.2.3 From 8ddd158504f4a05bfe91645b347681ad56c8d471 Mon Sep 17 00:00:00 2001 From: cyrus Date: Tue, 29 Jan 2013 10:13:33 +0000 Subject: base-files: Fix race-conditions with IPv6 sysctls git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35368 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/boot | 3 +++ package/base-files/files/etc/sysctl.conf | 3 ++- package/base-files/files/etc/sysctl_early.conf | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 package/base-files/files/etc/sysctl_early.conf (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index ef97383d8..180034236 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -95,6 +95,9 @@ start() { rootdev=$(awk 'BEGIN { RS=" "; FS="="; } $1 == "root" { print $2 }' < /proc/cmdline) [ -n "$rootdev" ] && ln -s "$rootdev" /dev/root } + + # run early sysctl + [ -f /etc/sysctl_early.conf ] && sysctl -p /etc/sysctl_early.conf -e >&- } stop() { diff --git a/package/base-files/files/etc/sysctl.conf b/package/base-files/files/etc/sysctl.conf index 1841dd4ca..890e77af8 100644 --- a/package/base-files/files/etc/sysctl.conf +++ b/package/base-files/files/etc/sysctl.conf @@ -12,7 +12,8 @@ net.ipv4.tcp_timestamps=1 net.ipv4.tcp_sack=1 net.ipv4.tcp_dsack=1 -net.ipv6.conf.default.forwarding=1 +net.ipv6.conf.default.forwarding=2 +net.ipv6.conf.all.forwarding=2 net.netfilter.nf_conntrack_acct=1 net.netfilter.nf_conntrack_checksum=0 diff --git a/package/base-files/files/etc/sysctl_early.conf b/package/base-files/files/etc/sysctl_early.conf new file mode 100644 index 000000000..6f2eeea04 --- /dev/null +++ b/package/base-files/files/etc/sysctl_early.conf @@ -0,0 +1,3 @@ +# Avoid race-conditions with SLAAC +net.ipv6.conf.default.accept_ra=0 +net.ipv6.conf.all.accept_ra=0 -- cgit v1.2.3 From 8a0e57cc7c94f77a98f973b06e04bdfc8fb5adf6 Mon Sep 17 00:00:00 2001 From: cyrus Date: Fri, 1 Feb 2013 12:28:24 +0000 Subject: base-files: Fix IPv6 early sysctls again * Kernel IPv6 /proc interface inconsistency caused races git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35417 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/boot | 8 ++++++-- package/base-files/files/etc/sysctl_early.conf | 3 --- 2 files changed, 6 insertions(+), 5 deletions(-) delete mode 100644 package/base-files/files/etc/sysctl_early.conf (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index 180034236..005c4ad6f 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -96,8 +96,12 @@ start() { [ -n "$rootdev" ] && ln -s "$rootdev" /dev/root } - # run early sysctl - [ -f /etc/sysctl_early.conf ] && sysctl -p /etc/sysctl_early.conf -e >&- + # early sysctl to avoid networking races + if [ -d /proc/sys/net/ipv6/conf ]; then + for i in /proc/sys/net/ipv6/conf/*/accept_ra; do + echo 0 > $i + done + fi } stop() { diff --git a/package/base-files/files/etc/sysctl_early.conf b/package/base-files/files/etc/sysctl_early.conf deleted file mode 100644 index 6f2eeea04..000000000 --- a/package/base-files/files/etc/sysctl_early.conf +++ /dev/null @@ -1,3 +0,0 @@ -# Avoid race-conditions with SLAAC -net.ipv6.conf.default.accept_ra=0 -net.ipv6.conf.all.accept_ra=0 -- cgit v1.2.3 From 0139b32c8243dc5451a444cffba468c3ea149dc5 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 16 Feb 2013 11:50:19 +0000 Subject: base-files: add mtd_get_mac_{ascii,binary} helpers Signed-off-by: Gabor Juhos git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35612 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions.sh | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index ae0257a5c..2022e8a3a 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -240,6 +240,40 @@ find_mtd_chardev() { echo "${INDEX:+$PREFIX$INDEX}" } +mtd_get_mac_ascii() +{ + local mtdname="$1" + local key="$2" + local part + local mac_dirty + + . /lib/functions.sh + + part=$(find_mtd_part "$mtdname") + if [ -z "$part" ]; then + echo "mtd_get_mac_ascii: partition $mtdname not found!" >&2 + return + fi + + mac_dirty=$(strings "$part" | sed -n 's/'"$key"'=//p') + # "canonicalize" mac + printf "%02x:%02x:%02x:%02x:%02x:%02x" 0x${mac_dirty//:/ 0x} +} + +mtd_get_mac_binary() { + local mtdname="$1" + local offset="$2" + local part + + part=$(find_mtd_part "$mtdname") + if [ -z "$part" ]; then + echo "mtd_get_mac_binary: partition $mtdname not found!" >&2 + return + fi + + dd bs=1 skip=$offset count=6 if=$part 2>/dev/null | hexdump -v -n 6 -e '5/1 "%02x:" 1/1 "%02x"' +} + strtok() { # { [] ... } local tmp local val="$1" -- cgit v1.2.3 From ce72a70117e7c04466dd5ddde008d9c718c5f09c Mon Sep 17 00:00:00 2001 From: juhosg Date: Sat, 16 Feb 2013 11:50:22 +0000 Subject: base-files: add macaddr_{add,2bin,setbit_la} helpers Signed-off-by: Gabor Juhos git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35614 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index 2022e8a3a..a488f4dc0 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -274,6 +274,30 @@ mtd_get_mac_binary() { dd bs=1 skip=$offset count=6 if=$part 2>/dev/null | hexdump -v -n 6 -e '5/1 "%02x:" 1/1 "%02x"' } +macaddr_add() { + local mac=$1 + local val=$2 + local oui=${mac%:*:*:*} + local nic=${mac#*:*:*:} + + nic=$(printf "%06x" $((0x${nic//:/} + $val & 0xffffff)) | sed 's/^\(.\{2\}\)\(.\{2\}\)\(.\{2\}\)/\1:\2:\3/') + echo $oui:$nic +} + +macaddr_setbit_la() +{ + local mac=$1 + + printf "%02x:%s" $((0x${mac%%:*} | 0x02)) ${mac#*:} +} + +macaddr_2bin() +{ + local mac=$1 + + echo -ne \\x${mac//:/\\x} +} + strtok() { # { [] ... } local tmp local val="$1" -- cgit v1.2.3 From 7a5d156dbc4dea3bd1b6db8135365dda384695d8 Mon Sep 17 00:00:00 2001 From: juhosg Date: Sun, 17 Feb 2013 21:47:03 +0000 Subject: base-files: minor cosmetic corrections for functions.sh - update copyright header - remove superfluous shebang left-over from changeset 34794 - unify function declaration [juhosg: keep Vertical Communications' copyright notice] Signed-off-by: Michael Heimpold Signed-off-by: Gabor Juhos git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35646 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions.sh b/package/base-files/files/lib/functions.sh index a488f4dc0..f51bfea45 100755 --- a/package/base-files/files/lib/functions.sh +++ b/package/base-files/files/lib/functions.sh @@ -1,6 +1,7 @@ #!/bin/sh -# Copyright (C) 2006-2011 OpenWrt.org +# Copyright (C) 2006-2013 OpenWrt.org # Copyright (C) 2006 Fokus Fraunhofer +# Copyright (C) 2010 Vertical Communications debug () { @@ -406,10 +407,6 @@ pi_include() { return 0 } -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - boot_hook_splice_start() { export -n PI_HOOK_SPLICE=1 } @@ -472,7 +469,7 @@ boot_run_hook() { done } -jffs2_ready () { +jffs2_ready() { mtdpart="$(find_mtd_part rootfs_data)" [ -z "$mtdpart" ] && return 1 magic=$(hexdump $mtdpart -n 4 -e '4/1 "%02x"') -- cgit v1.2.3 From fb1862c487ba175fb3222d3cb0d233e2cf07c597 Mon Sep 17 00:00:00 2001 From: juhosg Date: Mon, 18 Feb 2013 09:56:23 +0000 Subject: base-files: introduce commonly used helper functions for setting leds Currently, most platforms define such helpers in their own diag.sh implementation with almost identical code. By factoring out the common ground it's possible to simplify maintainability and homogenize the haptics over multiple platforms (so far as is reasonably practicable, in a next step). [juhosg: - fix led_set_attr parameters in led_timer - add led_morse and status_led_set_morse helpers - add status_led_blink_{preinit,failsafe} helpers] Signed-off-by: Michael Heimpold Signed-off-by: Gabor Juhos git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35648 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/leds.sh | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 package/base-files/files/lib/functions/leds.sh (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/leds.sh b/package/base-files/files/lib/functions/leds.sh new file mode 100644 index 000000000..743c7da78 --- /dev/null +++ b/package/base-files/files/lib/functions/leds.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# Copyright (C) 2013 OpenWrt.org + +led_set_attr() { + [ -f "/sys/class/leds/$1/$2" ] && echo "$3" > "/sys/class/leds/$1/$2" +} + +led_timer() { + led_set_attr $1 "trigger" "timer" + led_set_attr $1 "delay_on" "$2" + led_set_attr $1 "delay_off" "$3" +} + +led_on() { + led_set_attr $1 "trigger" "none" + led_set_attr $1 "brightness" 255 +} + +led_off() { + led_set_attr $1 "trigger" "none" + led_set_attr $1 "brightness" 0 +} + +led_morse() { + led_set_attr $1 "trigger" "morse" + led_set_attr $1 "delay" "$2" + led_set_attr $1 "message" "$3" +} + +status_led_set_timer() { + led_timer $status_led "$1" "$2" + [ -n "$status_led2" ] && led_timer $status_led2 "$1" "$2" +} + +status_led_set_heartbeat() { + led_set_attr $status_led "trigger" "heartbeat" +} + +status_led_set_morse() { + led_morse $status_led "$1" "$2" + [ -n "$status_led2" ] && led_morse $status_led2 "$1" "$2" +} + +status_led_on() { + led_on $status_led + [ -n "$status_led2" ] && led_on $status_led2 +} + +status_led_off() { + led_off $status_led + [ -n "$status_led2" ] && led_off $status_led2 +} + +status_led_blink_slow() { + led_timer $status_led 1000 1000 +} + +status_led_blink_fast() { + led_timer $status_led 100 100 +} + +status_led_blink_preinit() { + led_timer $status_led 200 200 +} + +status_led_blink_failsafe() { + led_timer $status_led 50 50 +} -- cgit v1.2.3 From f53fd06253bb96bc4d4044dbaa8836836cd735cb Mon Sep 17 00:00:00 2001 From: jogo Date: Thu, 21 Feb 2013 11:45:14 +0000 Subject: base-files: make firstboot ask for confirmation To prevent accidential resets ask for confirmation (and default to n). Signed-off-by: Jonas Gorski git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35712 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/sbin/firstboot | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/sbin/firstboot b/package/base-files/files/sbin/firstboot index 7e9731b00..e7c0851ad 100755 --- a/package/base-files/files/sbin/firstboot +++ b/package/base-files/files/sbin/firstboot @@ -20,15 +20,23 @@ set_jffs_part if [ "${0##*/}" = "firstboot" ]; then if [ "$1" = "switch2jffs" ]; then boot_run_hook switch2jffs - elif [ -n "$jffs" ]; then - reset_has_fo=true - echo "firstboot has already been run" - echo "jffs2 partition is mounted, only resetting files" - boot_run_hook jffs2reset else - mtd erase "$partname" - mount -o noatime "$mtdpart" /overlay -t jffs2 - fopivot /overlay /rom 1 + local input + + echo -n "firstboot will erase all settings and remove any installed packages. Are you sure? [N/y]" + read input + [ "$input" = "y" ] || [ "$input" = "Y" ] || return 0 + + if [ -n "$jffs" ]; then + reset_has_fo=true + echo "firstboot has already been run" + echo "jffs2 partition is mounted, only resetting files" + boot_run_hook jffs2reset + else + mtd erase "$partname" + mount -o noatime "$mtdpart" /overlay -t jffs2 + fopivot /overlay /rom 1 + fi fi fi -- cgit v1.2.3 From 35dde6748e98a2a7725e220c5ea8f63c7d9c185c Mon Sep 17 00:00:00 2001 From: blogic Date: Wed, 13 Mar 2013 18:11:19 +0000 Subject: [base-files] make basefiles aware of procd Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36003 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/hotplug2-common.rules | 43 ---------------------- package/base-files/files/etc/hotplug2-init.rules | 5 --- package/base-files/files/etc/init.d/boot | 32 ---------------- package/base-files/files/etc/init.d/rcS | 25 ++----------- package/base-files/files/etc/init.d/watchdog | 13 ------- package/base-files/files/etc/inittab | 3 +- package/base-files/files/etc/preinit | 2 + package/base-files/files/etc/rc.button/failsafe | 2 + package/base-files/files/etc/rc.button/reset | 18 +++++++++ package/base-files/files/etc/rc.button/rfkill | 23 ++++++++++++ .../files/lib/firstboot/99_10_with_fo_cleanup | 2 +- .../base-files/files/lib/preinit/10_essential_fs | 25 ------------- .../files/lib/preinit/10_indicate_preinit | 1 - .../files/lib/preinit/20_device_fs_mount | 37 ------------------- .../files/lib/preinit/30_device_fs_daemons | 36 ------------------ .../base-files/files/lib/preinit/30_failsafe_wait | 5 +-- package/base-files/files/lib/preinit/40_init_shm | 10 ----- .../base-files/files/lib/preinit/40_mount_devpts | 15 -------- .../base-files/files/lib/preinit/50_choose_console | 31 ---------------- .../files/lib/preinit/50_indicate_regular_preinit | 1 - .../base-files/files/lib/preinit/60_init_hotplug | 10 ----- package/base-files/files/lib/preinit/80_mount_root | 3 +- .../base-files/files/lib/preinit/90_init_console | 14 ------- .../base-files/files/lib/preinit/99_10_run_init | 6 --- package/base-files/files/lib/upgrade/common.sh | 2 +- 25 files changed, 55 insertions(+), 309 deletions(-) delete mode 100644 package/base-files/files/etc/hotplug2-common.rules delete mode 100644 package/base-files/files/etc/hotplug2-init.rules delete mode 100755 package/base-files/files/etc/init.d/watchdog create mode 100755 package/base-files/files/etc/rc.button/failsafe create mode 100755 package/base-files/files/etc/rc.button/reset create mode 100755 package/base-files/files/etc/rc.button/rfkill delete mode 100644 package/base-files/files/lib/preinit/10_essential_fs delete mode 100644 package/base-files/files/lib/preinit/20_device_fs_mount delete mode 100644 package/base-files/files/lib/preinit/30_device_fs_daemons delete mode 100644 package/base-files/files/lib/preinit/40_init_shm delete mode 100644 package/base-files/files/lib/preinit/40_mount_devpts delete mode 100644 package/base-files/files/lib/preinit/50_choose_console delete mode 100644 package/base-files/files/lib/preinit/60_init_hotplug delete mode 100644 package/base-files/files/lib/preinit/90_init_console (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/hotplug2-common.rules b/package/base-files/files/etc/hotplug2-common.rules deleted file mode 100644 index c284f8f3f..000000000 --- a/package/base-files/files/etc/hotplug2-common.rules +++ /dev/null @@ -1,43 +0,0 @@ - -# uncomment me to log hotplug events -# DEVPATH is set { -# exec logger -s -t hotplug -p daemon.info "name=%DEVNAME%, path=%DEVPATH%" -# } - -$include /etc/hotplug2-platform.rules - -DEVNAME ~~ (^null$|^full$|^ptmx$|^zero$|^gpio|^hvc) { - makedev /dev/%DEVNAME% 0666 - next-event -} - -DEVNAME == mapper/control { - makedev /dev/%DEVNAME% 0600 - next-event -} - -ACTION == add, DEVPATH is set { - makedev /dev/%DEVNAME% 0644 -} - -ACTION == add, DEVPATH is set, DEVNAME ~~ ^tty { - chmod 0666 /dev/%DEVNAME% -} - -ACTION == add, DEVPATH is set, DEVNAME ~~ ^ppp { - chmod 0600 /dev/%DEVNAME% -} - -ACTION == remove, DEVPATH is set, MAJOR is set, MINOR is set { - remove /dev/%DEVNAME% -} - -FIRMWARE is set, ACTION == add { - exec /sbin/hotplug-call firmware - load-firmware /lib/firmware - next-event -} - -SUBSYSTEM == platform { - exec /sbin/hotplug-call %SUBSYSTEM% -} diff --git a/package/base-files/files/etc/hotplug2-init.rules b/package/base-files/files/etc/hotplug2-init.rules deleted file mode 100644 index f01169776..000000000 --- a/package/base-files/files/etc/hotplug2-init.rules +++ /dev/null @@ -1,5 +0,0 @@ -$include /etc/hotplug2-common.rules - -SUBSYSTEM == button { - exec kill -USR1 1 -} diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index 005c4ad6f..67db0d2a6 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -24,27 +24,6 @@ system_config() { # apply timezone to kernel date -k - - if [ -x /sbin/syslogd ]; then - local args log_ip log_size log_port log_type log_file - config_get log_ip "$cfg" log_ip - config_get log_size "$cfg" log_size 16 - config_get log_port "$cfg" log_port 514 - config_get log_type "$cfg" log_type circular - config_get log_file "$cfg" log_file "/var/log/messages" - args="${log_ip:+-L -R ${log_ip}:${log_port}} ${conloglevel:+-l $conloglevel}" - if [ "$log_type" = "file" ]; then - args="$args -s $log_size -O $log_file -S" - else - args="$args -C${log_size}" - fi - service_start /sbin/syslogd $args - fi - if [ -x /sbin/klogd ]; then - config_get klogconloglevel "$cfg" klogconloglevel - args="${klogconloglevel:+-c $klogconloglevel}" - service_start /sbin/klogd $args - fi } apply_uci_config() { @@ -84,12 +63,6 @@ start() { config_load system config_foreach system_config system - killall -q hotplug2 - [ -x /sbin/hotplug2 ] && /sbin/hotplug2 --override --persistent \ - --set-rules-file /etc/hotplug2.rules \ - --set-coldplug-cmd /sbin/udevtrigger \ - --max-children 1 >/dev/null 2>&1 & - # create /dev/root if it doesn't exist [ -e /dev/root -o -h /dev/root ] || { rootdev=$(awk 'BEGIN { RS=" "; FS="="; } $1 == "root" { print $2 }' < /proc/cmdline) @@ -103,8 +76,3 @@ start() { done fi } - -stop() { - service_stop /sbin/klogd - service_stop /sbin/syslogd -} diff --git a/package/base-files/files/etc/init.d/rcS b/package/base-files/files/etc/init.d/rcS index 3ec9bfef6..9599bbf32 100755 --- a/package/base-files/files/etc/init.d/rcS +++ b/package/base-files/files/etc/init.d/rcS @@ -1,26 +1,9 @@ #!/bin/sh # Copyright (C) 2006 OpenWrt.org -run_scripts() { - for i in /etc/rc.d/$1*; do - [ -x $i ] && $i $2 2>&1 - done | $LOGGER -} - -system_config() { - config_get_bool foreground $1 foreground 0 -} - LOGGER="cat" -[ -x /usr/bin/logger ] && LOGGER="logger -s -p 6 -t sysinit" - -. /lib/functions.sh - -config_load system -config_foreach system_config system +[ -x /usr/bin/logger ] && LOGGER="logger -p 6 -t sysinit" -if [ "$1" = "S" -a "$foreground" != "1" ]; then - run_scripts "$1" "$2" & -else - run_scripts "$1" "$2" -fi +for i in /etc/rc.d/$1*; do + [ -x $i ] && $i $2 2>&1 +done | $LOGGER diff --git a/package/base-files/files/etc/init.d/watchdog b/package/base-files/files/etc/init.d/watchdog deleted file mode 100755 index 299c89142..000000000 --- a/package/base-files/files/etc/init.d/watchdog +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh /etc/rc.common -# Copyright (C) 2008-2011 OpenWrt.org - -START=97 - -start() { - [ -c /dev/watchdog ] || return 1 - [ -x /sbin/watchdog ] || return 1 - service_start /sbin/watchdog -t 5 /dev/watchdog -} -stop() { - service_stop /sbin/watchdog -} diff --git a/package/base-files/files/etc/inittab b/package/base-files/files/etc/inittab index ca90fd8a2..781718593 100644 --- a/package/base-files/files/etc/inittab +++ b/package/base-files/files/etc/inittab @@ -1,4 +1,3 @@ ::sysinit:/etc/init.d/rcS S boot ::shutdown:/etc/init.d/rcS K shutdown -ttyS0::askfirst:/bin/ash --login -tty1::askfirst:/bin/ash --login +::askconsole:/bin/ash --login diff --git a/package/base-files/files/etc/preinit b/package/base-files/files/etc/preinit index b237c2e06..ff26f96d6 100755 --- a/package/base-files/files/etc/preinit +++ b/package/base-files/files/etc/preinit @@ -2,6 +2,8 @@ # Copyright (C) 2006 OpenWrt.org # Copyright (C) 2010 Vertical Communications +[ -z "$PREINIT" ] && exec /sbin/init + export PATH=/bin:/sbin:/usr/bin:/usr/sbin pi_ifname= diff --git a/package/base-files/files/etc/rc.button/failsafe b/package/base-files/files/etc/rc.button/failsafe new file mode 100755 index 000000000..dcdf7de80 --- /dev/null +++ b/package/base-files/files/etc/rc.button/failsafe @@ -0,0 +1,2 @@ +#!/bin/sh +touch /tmp/failsafe_button diff --git a/package/base-files/files/etc/rc.button/reset b/package/base-files/files/etc/rc.button/reset new file mode 100755 index 000000000..763994d07 --- /dev/null +++ b/package/base-files/files/etc/rc.button/reset @@ -0,0 +1,18 @@ +#!/bin/sh + +[ "${ACTION}" = "released" ] || exit 0 + +. /lib/functions.sh + +logger "$BUTTON pressed for $SEEN seconds" + +if [ "$SEEN" -lt 1 ] +then + echo "REBOOT" > /dev/console + sync + reboot +elif [ "$SEEN" -gt 5 ] +then + echo "FACTORY RESET" > /dev/console + firstboot && reboot & +fi diff --git a/package/base-files/files/etc/rc.button/rfkill b/package/base-files/files/etc/rc.button/rfkill new file mode 100755 index 000000000..7a8cfe91b --- /dev/null +++ b/package/base-files/files/etc/rc.button/rfkill @@ -0,0 +1,23 @@ +#!/bin/sh + +[ "${ACTION}" = "released" ] || exit 0 + +. /lib/functions.sh + +local rfkill_state=0 + +wifi_rfkill_set() { + uci set wireless.$1.disabled=$rfkill_state +} + +wifi_rfkill_check() { + local disabled + config_get disabled $1 disabled + [ "$disabled" = "1" ] || rfkill_state=1 +} + +config_load wireless +config_foreach wifi_rfkill_check wifi-device +config_foreach wifi_rfkill_set wifi-device +uci commit wireless +wifi up diff --git a/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup b/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup index 0181b39d4..560169901 100644 --- a/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup +++ b/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup @@ -6,7 +6,7 @@ with_fo_cleanup() { # try to get rid of /tmp/root # this will almost always fail - umount /tmp/root 2>&- + umount -l /tmp/root 2>&- grep -q overlay /proc/filesystems && { cd / ( diff --git a/package/base-files/files/lib/preinit/10_essential_fs b/package/base-files/files/lib/preinit/10_essential_fs deleted file mode 100644 index fc04eb7ff..000000000 --- a/package/base-files/files/lib/preinit/10_essential_fs +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -do_mount_procfs() { - mount -o noatime -t proc proc /proc -} - -do_mount_sysfs() { - mount -o noatime -tsysfs sysfs /sys -} - -calc_tmpfs_size() { - pi_size=$(awk '/MemTotal:/ {l=5242880;mt=($2*1024);print((s=mt/2)l)?mt-l:s}' /proc/meminfo) -} - -do_mount_tmpfs() { - calc_tmpfs_size - mount -o noatime -t tmpfs -o size=$pi_size,nosuid,nodev,mode=1777 tmpfs /tmp -} - -boot_hook_add preinit_essential do_mount_procfs -boot_hook_add preinit_essential do_mount_sysfs -boot_hook_add preinit_essential do_mount_tmpfs - diff --git a/package/base-files/files/lib/preinit/10_indicate_preinit b/package/base-files/files/lib/preinit/10_indicate_preinit index 4a0109cc1..da70b97c4 100644 --- a/package/base-files/files/lib/preinit/10_indicate_preinit +++ b/package/base-files/files/lib/preinit/10_indicate_preinit @@ -41,7 +41,6 @@ pi_indicate_led() { } pi_indicate_preinit() { - echo "- preinit -" preinit_net_echo "Doing OpenWRT Preinit\n" pi_indicate_led } diff --git a/package/base-files/files/lib/preinit/20_device_fs_mount b/package/base-files/files/lib/preinit/20_device_fs_mount deleted file mode 100644 index 7535b3ff9..000000000 --- a/package/base-files/files/lib/preinit/20_device_fs_mount +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -do_move_devtmpfs() { - local mnt="$(grep devtmpfs /proc/mounts)" - mnt="${mnt#* }"; mnt="${mnt%% *}" - - [ "$mnt" = "/dev" ] || mount -o noatime,move "$mnt" /dev -} - -do_mount_devfs() { - mount -o noatime -t devfs devfs /dev -} - -do_mount_hotplug() { - mount -t tmpfs -o noatime,mode=0755,size=512K tmpfs /dev -} - -do_mount_udev() { - mount -n -t tmpfs -o noatime,mode=0755 udev /dev -} - -choose_device_fs() { - if grep -q devtmpfs /proc/mounts; then - do_move_devtmpfs - elif grep -q devfs /proc/filesystems; then - do_mount_devfs - elif [ -x /sbin/hotplug2 ]; then - do_mount_hotplug - elif [ -x /sbin/udevd ]; then - do_mount_udev - fi -} - -boot_hook_add preinit_essential choose_device_fs - diff --git a/package/base-files/files/lib/preinit/30_device_fs_daemons b/package/base-files/files/lib/preinit/30_device_fs_daemons deleted file mode 100644 index 8379e5e74..000000000 --- a/package/base-files/files/lib/preinit/30_device_fs_daemons +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2013 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -init_devfs() { - HOTPLUG=/sbin/hotplug-call -} - -init_hotplug2() { - [ -c /dev/console ] || mknod /dev/console c 5 1 - /sbin/hotplug2 --set-rules-file /etc/hotplug2-init.rules --no-persistent --set-coldplug-cmd /sbin/udevtrigger - /sbin/hotplug2 --set-rules-file /etc/hotplug2-init.rules --persistent & -} - -init_udev() { - [ -d /lib/udev/devices ] && cp -af /lib/udev/devices/* /dev/ - [ -c /dev/console ] || mknod -m 0600 /dev/console c 5 1 - [ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3 - /sbin/udevd --daemon --resolve-names=never - /sbin/udevadm trigger - /sbin/udevadm settle -} - -init_device_fs() { - HOTPLUG= - if grep -q devfs /proc/filesystems; then - init_devfs - elif [ -x /sbin/hotplug2 ]; then - init_hotplug2 - elif [ -x /sbin/udevd ]; then - init_udev - fi -} - -boot_hook_add preinit_essential init_device_fs - diff --git a/package/base-files/files/lib/preinit/30_failsafe_wait b/package/base-files/files/lib/preinit/30_failsafe_wait index 04dc57df2..808d9731b 100644 --- a/package/base-files/files/lib/preinit/30_failsafe_wait +++ b/package/base-files/files/lib/preinit/30_failsafe_wait @@ -61,11 +61,10 @@ fs_wait_for_key () { } lock -w $keypress_wait - trap - INT - trap - USR1 - keypressed=1 [ "$(cat $keypress_true)" = "true" ] && keypressed=0 + [ -f "/tmp/failsafe_button" ] && keypressed=1 + rm -f $keypress_true rm -f $keypress_wait rm -f $keypress_sec diff --git a/package/base-files/files/lib/preinit/40_init_shm b/package/base-files/files/lib/preinit/40_init_shm deleted file mode 100644 index 8971116a4..000000000 --- a/package/base-files/files/lib/preinit/40_init_shm +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -init_shm() { - [ -d /dev/shm ] || mkdir -p /dev/shm -} - -boot_hook_add preinit_essential init_shm - diff --git a/package/base-files/files/lib/preinit/40_mount_devpts b/package/base-files/files/lib/preinit/40_mount_devpts deleted file mode 100644 index b55a7f2e8..000000000 --- a/package/base-files/files/lib/preinit/40_mount_devpts +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -init_devpts() { - [ -d /dev/pts ] || mkdir -p /dev/pts -} - -do_mount_devpts() { - mount -o noatime -t devpts devpts /dev/pts -} - -boot_hook_add preinit_essential init_devpts -boot_hook_add preinit_essential do_mount_devpts - diff --git a/package/base-files/files/lib/preinit/50_choose_console b/package/base-files/files/lib/preinit/50_choose_console deleted file mode 100644 index ecbc2eaf4..000000000 --- a/package/base-files/files/lib/preinit/50_choose_console +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -choose_console() { - # the shell really doesn't like having stdin/out closed - # that's why we use /dev/pty/m0 and m1 (or equivalent) as replacement - # for /dev/console if there's no serial console available - - if grep -q devfs /proc/filesystems; then - M0=/dev/pty/m0 - M1=/dev/pty/m1 - M2=/dev/pty/m1 - elif [ -x /sbin/hotplug2 ]; then - M0=/dev/ptmx - M1=/dev/ptmx - M2=/dev/ptmx - elif [ -x /sbin/udevd ]; then - M0=/dev/pty/ptmx - M1=/dev/pty/ptmx - M2=/dev/pty/ptmx - fi - dd if=/dev/console of=/dev/null bs=1 count=0 >/dev/null 2>/dev/null && { - M0=/dev/console - M1=/dev/console - M2=/dev/console - } -} - -boot_hook_add preinit_essential choose_console - diff --git a/package/base-files/files/lib/preinit/50_indicate_regular_preinit b/package/base-files/files/lib/preinit/50_indicate_regular_preinit index 9cc01f219..c200dad67 100644 --- a/package/base-files/files/lib/preinit/50_indicate_regular_preinit +++ b/package/base-files/files/lib/preinit/50_indicate_regular_preinit @@ -3,7 +3,6 @@ # Copyright (C) 2010 Vertical Communications indicate_regular_preinit() { - echo "- regular preinit -" preinit_net_echo "Continuing with Regular Preinit\n" pi_indicate_led } diff --git a/package/base-files/files/lib/preinit/60_init_hotplug b/package/base-files/files/lib/preinit/60_init_hotplug deleted file mode 100644 index dc05e0ed0..000000000 --- a/package/base-files/files/lib/preinit/60_init_hotplug +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -init_hotplug() { - echo "$HOTPLUG" > /proc/sys/kernel/hotplug -} - -boot_hook_add preinit_main init_hotplug - diff --git a/package/base-files/files/lib/preinit/80_mount_root b/package/base-files/files/lib/preinit/80_mount_root index ad24fb8ac..9a99ee910 100644 --- a/package/base-files/files/lib/preinit/80_mount_root +++ b/package/base-files/files/lib/preinit/80_mount_root @@ -6,5 +6,4 @@ do_mount_root() { boot_run_hook preinit_mount_root } -boot_hook_add preinit_main do_mount_root - +[ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_mount_root diff --git a/package/base-files/files/lib/preinit/90_init_console b/package/base-files/files/lib/preinit/90_init_console deleted file mode 100644 index ca05755fd..000000000 --- a/package/base-files/files/lib/preinit/90_init_console +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -init_console() { - if [ "$pi_suppress_stderr" = "y" ]; then - exec <$M0 >$M1 2>&0 - else - exec <$M0 >$M1 2>$M2 - fi -} - -boot_hook_add preinit_essential init_console - diff --git a/package/base-files/files/lib/preinit/99_10_run_init b/package/base-files/files/lib/preinit/99_10_run_init index fef3a503e..a8f330f89 100644 --- a/package/base-files/files/lib/preinit/99_10_run_init +++ b/package/base-files/files/lib/preinit/99_10_run_init @@ -3,13 +3,7 @@ # Copyright (C) 2010 Vertical Communications run_init() { - preinit_echo "- init -" preinit_ip_deconfig - if [ "$pi_init_suppress_stderr" = "y" ]; then - exec env - PATH=$pi_init_path $pi_init_env $pi_init_cmd 2>&0 - else - exec env - PATH=$pi_init_path $pi_init_env $pi_init_cmd - fi } boot_hook_add preinit_main run_init diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index 2e123ab3c..969aecb7f 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -38,7 +38,7 @@ supivot() { # mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \ mount -o noatime,move /proc $1/proc && \ pivot_root $1 $1$2 || { - umount $1 $1 + umount -l $1 $1 return 1 } -- cgit v1.2.3 From 98636ab77d7e7ce6d4f2d1d977708ad0f1d635e0 Mon Sep 17 00:00:00 2001 From: blogic Date: Thu, 14 Mar 2013 18:43:58 +0000 Subject: [base-files] sysupgrade was broken as procd was getting killed Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36031 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/upgrade/common.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index 969aecb7f..df842bf92 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -99,7 +99,7 @@ kill_remaining() { # [ ] case "$name" in # Skip essential services - *ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*hostapd*|*wpa_supplicant*) : ;; + *procd*|*ash*|*init*|*watchdog*|*ssh*|*dropbear*|*telnet*|*login*|*hostapd*|*wpa_supplicant*) : ;; # Killable process *) -- cgit v1.2.3 From fbdb365ec23e45cbb1b68bfcffaad1d220400502 Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 22 Mar 2013 10:06:06 +0000 Subject: base-files: sysupgrade fail with eglibc With eglibc, "ldd busybox" give us libcrypt.so.1 => /lib/libcrypt.so.1 (0x774be000) libm.so.6 => /lib/libm.so.6 (0x773e4000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x773c0000) libc.so.6 => /lib/libc.so.6 (0x77276000) /lib/ld.so.1 (0x774fe000) Thus /lib/ld.so.1 is not printed by the libs fonction and isn't copied to the 'new' root before pivot root libs() { ldd $* | awk '{print $3}'; } https://dev.openwrt.org/browser/trunk/package/base-files/files/lib/upgrade/common.sh With uclibc the last line of "ldd busybox" is ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x77ada000) Don't know for musl! This patch replace https://dev.openwrt.org/changeset/19167, as glibc is gone The other way around is to rework libs() Please apply the fix (mine or another) on trunk and AA Might fix https://dev.openwrt.org/ticket/12273 Signed-off-by: Etienne CHAMPETIER Signed-off-by: Florian Fainelli git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36107 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/upgrade/common.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index df842bf92..fbe54a5ee 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -21,8 +21,8 @@ install_bin() { # [ ... ] files=$1 [ -x "$src" ] && files="$src $(libs $src)" install_file $files - [ -e /lib/ld-linux.so.3 ] && { - install_file /lib/ld-linux.so.3 + [ -e /lib/ld.so.1 ] && { + install_file /lib/ld.so.1 } shift for link in "$@"; do { -- cgit v1.2.3 From 30c3e72a1e4893019786eff1d4cd9dfa9dad72e5 Mon Sep 17 00:00:00 2001 From: jow Date: Mon, 25 Mar 2013 18:43:30 +0000 Subject: package/base-files: change sysctl handling Move /etc/init.d/sysctl to index 00 and add hotplug script that applies interface specific sysctls for interfaces that only appear later - this allows to reliably configure per-interface parameters in sysctl.conf, e.g. to disable ipv6 autoconfig on a specific iface. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36129 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/hotplug.d/net/00-sysctl | 6 ++++++ package/base-files/files/etc/init.d/sysctl | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 package/base-files/files/etc/hotplug.d/net/00-sysctl (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/hotplug.d/net/00-sysctl b/package/base-files/files/etc/hotplug.d/net/00-sysctl new file mode 100644 index 000000000..5d9da8ac0 --- /dev/null +++ b/package/base-files/files/etc/hotplug.d/net/00-sysctl @@ -0,0 +1,6 @@ +#!/bin/sh + +if [ -f /etc/sysctl.conf ] && [ "$ACTION" = add ]; then + sed -ne "/^[[:space:]]*net\..*\.$DEVICENAME\./p" /etc/sysctl.conf | \ + sysctl -e -p - | logger -t sysctl +fi diff --git a/package/base-files/files/etc/init.d/sysctl b/package/base-files/files/etc/init.d/sysctl index 239779055..beeb79f7e 100755 --- a/package/base-files/files/etc/init.d/sysctl +++ b/package/base-files/files/etc/init.d/sysctl @@ -1,7 +1,7 @@ #!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org -START=99 +START=0 start() { [ -f /etc/sysctl.conf ] && sysctl -p -e >&- } -- cgit v1.2.3 From d208aa2b0bbd43ffab2d54960c8b695632f9948f Mon Sep 17 00:00:00 2001 From: jow Date: Mon, 25 Mar 2013 18:45:23 +0000 Subject: base-files: fix bad start index in previous commit git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36130 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/sysctl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/init.d/sysctl b/package/base-files/files/etc/init.d/sysctl index beeb79f7e..81b0c9ba1 100755 --- a/package/base-files/files/etc/init.d/sysctl +++ b/package/base-files/files/etc/init.d/sysctl @@ -1,7 +1,7 @@ #!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org -START=0 +START=00 start() { [ -f /etc/sysctl.conf ] && sysctl -p -e >&- } -- cgit v1.2.3 From 0b02cb7ac6a0503d174b64f16fc08f152124f7f9 Mon Sep 17 00:00:00 2001 From: jow Date: Tue, 26 Mar 2013 10:02:58 +0000 Subject: base-files: move sysctl init after boot git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36131 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/sysctl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/init.d/sysctl b/package/base-files/files/etc/init.d/sysctl index 81b0c9ba1..3480d6641 100755 --- a/package/base-files/files/etc/init.d/sysctl +++ b/package/base-files/files/etc/init.d/sysctl @@ -1,7 +1,7 @@ #!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org -START=00 +START=11 start() { [ -f /etc/sysctl.conf ] && sysctl -p -e >&- } -- cgit v1.2.3 From 7cfbb153cd8b407bb7da221569390ee41d218acf Mon Sep 17 00:00:00 2001 From: jogo Date: Wed, 27 Mar 2013 12:39:42 +0000 Subject: base-files: firstboot: only ask for confirmation on TTY Also allow '-y' to force the reset. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36133 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/sbin/firstboot | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/sbin/firstboot b/package/base-files/files/sbin/firstboot index e7c0851ad..06b64c313 100755 --- a/package/base-files/files/sbin/firstboot +++ b/package/base-files/files/sbin/firstboot @@ -21,11 +21,13 @@ if [ "${0##*/}" = "firstboot" ]; then if [ "$1" = "switch2jffs" ]; then boot_run_hook switch2jffs else - local input + if [ -t 0 ] && [ "$1" != "-y" ]; then + local input - echo -n "firstboot will erase all settings and remove any installed packages. Are you sure? [N/y]" - read input - [ "$input" = "y" ] || [ "$input" = "Y" ] || return 0 + echo -n "firstboot will erase all settings and remove any installed packages. Are you sure? [N/y]" + read input + [ "$input" = "y" ] || [ "$input" = "Y" ] || return 0 + fi if [ -n "$jffs" ]; then reset_has_fo=true -- cgit v1.2.3 From 7b026cdf8a8da5c160105cae06813c956766b65c Mon Sep 17 00:00:00 2001 From: cyrus Date: Tue, 9 Apr 2013 08:03:08 +0000 Subject: Adapt default network configuration for IPv6 git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36278 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/config/network | 8 ++++++++ package/base-files/files/lib/functions/uci-defaults.sh | 6 ++++++ 2 files changed, 14 insertions(+) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/config/network b/package/base-files/files/etc/config/network index a35fd2ef9..f2afcd970 100644 --- a/package/base-files/files/etc/config/network +++ b/package/base-files/files/etc/config/network @@ -12,3 +12,11 @@ config interface lan option proto static option ipaddr 192.168.1.1 option netmask 255.255.255.0 + option ip6assign 64 + +config interface wan6 + option ifname @wan + option proto dhcpv6 + +config globals globals + option ula_prefix auto diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh index 477c00cfd..959ae5eba 100644 --- a/package/base-files/files/lib/functions/uci-defaults.sh +++ b/package/base-files/files/lib/functions/uci-defaults.sh @@ -150,6 +150,8 @@ set network.loopback.ifname='lo' set network.loopback.proto='static' set network.loopback.ipaddr='127.0.0.1' set network.loopback.netmask='255.0.0.0' +set network.globals='globals' +set network.globals.ula_prefix='auto' EOF } @@ -174,6 +176,7 @@ set network.lan.type='bridge' set network.lan.proto='static' set network.lan.ipaddr='192.168.1.1' set network.lan.netmask='255.255.255.0' +set network.lan.ip6assign='64' EOF } @@ -184,6 +187,9 @@ ucidef_set_interface_wan() { set network.wan='interface' set network.wan.ifname='$ifname' set network.wan.proto='dhcp' +set network.wan6='interface' +set network.wan6.ifname='@wan' +set network.wan6.proto='dhcpv6' EOF } -- cgit v1.2.3 From c37a21d752af2af20e31fde9235c85161a8c5e8a Mon Sep 17 00:00:00 2001 From: cyrus Date: Mon, 22 Apr 2013 19:40:16 +0000 Subject: Change default IPv6 config to enable DHCPv6-PD git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36384 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/config/network | 2 +- package/base-files/files/lib/functions/uci-defaults.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/config/network b/package/base-files/files/etc/config/network index f2afcd970..87b124aa3 100644 --- a/package/base-files/files/etc/config/network +++ b/package/base-files/files/etc/config/network @@ -12,7 +12,7 @@ config interface lan option proto static option ipaddr 192.168.1.1 option netmask 255.255.255.0 - option ip6assign 64 + option ip6assign 60 config interface wan6 option ifname @wan diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh index 959ae5eba..bf6fe1e30 100644 --- a/package/base-files/files/lib/functions/uci-defaults.sh +++ b/package/base-files/files/lib/functions/uci-defaults.sh @@ -176,7 +176,7 @@ set network.lan.type='bridge' set network.lan.proto='static' set network.lan.ipaddr='192.168.1.1' set network.lan.netmask='255.255.255.0' -set network.lan.ip6assign='64' +set network.lan.ip6assign='60' EOF } -- cgit v1.2.3 From 533fc89abaf81ccf6965f1d1c917421238a83817 Mon Sep 17 00:00:00 2001 From: blogic Date: Thu, 25 Apr 2013 19:02:28 +0000 Subject: boot: make use of kmodloader if it is available Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36428 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/boot | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index 67db0d2a6..4f35eac7b 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -48,7 +48,11 @@ start() { grep -q debugfs /proc/filesystems && mount -o noatime -t debugfs debugfs /sys/kernel/debug [ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe - load_modules /etc/modules.d/* + if [ -f /sbin/kmodloader ]; then + /sbin/kmodloader + else + load_modules /etc/modules.d/* + fi # allow wifi modules time to settle sleep 1 -- cgit v1.2.3 From b5367474cba180d7b2555e4e30421a7340f63264 Mon Sep 17 00:00:00 2001 From: blogic Date: Thu, 25 Apr 2013 19:02:32 +0000 Subject: mount_root: prepare base-files Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36429 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/done | 2 +- package/base-files/files/etc/rc.button/reset | 2 +- .../files/lib/firstboot/05_firstboot_skip | 10 ----- .../files/lib/firstboot/10_determine_parts | 46 ---------------------- .../files/lib/firstboot/10_no_fo_clear_overlay | 17 -------- .../files/lib/firstboot/10_reset_has_mini_fo | 12 ------ .../base-files/files/lib/firstboot/20_has_mini_fo | 13 ------ .../files/lib/firstboot/20_no_fo_mount_jffs | 15 ------- .../files/lib/firstboot/20_reset_clear_jffs | 14 ------- .../files/lib/firstboot/30_is_rootfs_mounted | 10 ----- .../base-files/files/lib/firstboot/30_no_fo_pivot | 11 ------ .../files/lib/firstboot/30_reset_copy_rom | 13 ------ .../files/lib/firstboot/40_copy_ramoverlay | 15 ------- .../files/lib/firstboot/40_no_fo_copy_ramoverlay | 14 ------- package/base-files/files/lib/firstboot/50_pivot | 17 -------- .../files/lib/firstboot/99_10_no_fo_cleanup | 13 ------ .../files/lib/firstboot/99_10_with_fo_cleanup | 25 ------------ package/base-files/files/lib/preinit/05_mount_skip | 13 ------ .../base-files/files/lib/preinit/10_check_for_mtd | 20 ---------- .../files/lib/preinit/20_check_jffs2_ready | 19 --------- .../base-files/files/lib/preinit/40_mount_jffs2 | 26 ------------ .../files/lib/preinit/41_merge_overlay_hooks | 24 ----------- .../files/lib/preinit/70_pivot_jffs2_root | 14 ------- package/base-files/files/lib/preinit/80_mount_root | 11 +++++- .../base-files/files/lib/preinit/90_mount_no_jffs2 | 12 ------ .../base-files/files/lib/preinit/90_restore_config | 17 -------- .../files/lib/preinit/99_10_mount_no_mtd | 12 ------ package/base-files/files/sbin/firstboot | 43 +------------------- package/base-files/files/sbin/mount_root | 26 ------------ package/base-files/files/sbin/sysupgrade | 2 + 30 files changed, 15 insertions(+), 473 deletions(-) delete mode 100644 package/base-files/files/lib/firstboot/05_firstboot_skip delete mode 100644 package/base-files/files/lib/firstboot/10_determine_parts delete mode 100644 package/base-files/files/lib/firstboot/10_no_fo_clear_overlay delete mode 100644 package/base-files/files/lib/firstboot/10_reset_has_mini_fo delete mode 100644 package/base-files/files/lib/firstboot/20_has_mini_fo delete mode 100644 package/base-files/files/lib/firstboot/20_no_fo_mount_jffs delete mode 100644 package/base-files/files/lib/firstboot/20_reset_clear_jffs delete mode 100644 package/base-files/files/lib/firstboot/30_is_rootfs_mounted delete mode 100644 package/base-files/files/lib/firstboot/30_no_fo_pivot delete mode 100644 package/base-files/files/lib/firstboot/30_reset_copy_rom delete mode 100644 package/base-files/files/lib/firstboot/40_copy_ramoverlay delete mode 100644 package/base-files/files/lib/firstboot/40_no_fo_copy_ramoverlay delete mode 100644 package/base-files/files/lib/firstboot/50_pivot delete mode 100644 package/base-files/files/lib/firstboot/99_10_no_fo_cleanup delete mode 100644 package/base-files/files/lib/firstboot/99_10_with_fo_cleanup delete mode 100644 package/base-files/files/lib/preinit/05_mount_skip delete mode 100644 package/base-files/files/lib/preinit/10_check_for_mtd delete mode 100644 package/base-files/files/lib/preinit/20_check_jffs2_ready delete mode 100644 package/base-files/files/lib/preinit/40_mount_jffs2 delete mode 100644 package/base-files/files/lib/preinit/41_merge_overlay_hooks delete mode 100644 package/base-files/files/lib/preinit/70_pivot_jffs2_root delete mode 100644 package/base-files/files/lib/preinit/90_mount_no_jffs2 delete mode 100644 package/base-files/files/lib/preinit/90_restore_config delete mode 100644 package/base-files/files/lib/preinit/99_10_mount_no_mtd delete mode 100755 package/base-files/files/sbin/mount_root (limited to 'package/base-files/files') diff --git a/package/base-files/files/etc/init.d/done b/package/base-files/files/etc/init.d/done index 827866912..8040766dc 100755 --- a/package/base-files/files/etc/init.d/done +++ b/package/base-files/files/etc/init.d/done @@ -5,7 +5,7 @@ START=95 boot() { [ -d /tmp/root ] && { lock /tmp/.switch2jffs - firstboot switch2jffs + switch2jffs lock -u /tmp/.switch2jffs } diff --git a/package/base-files/files/etc/rc.button/reset b/package/base-files/files/etc/rc.button/reset index 763994d07..229b503a6 100755 --- a/package/base-files/files/etc/rc.button/reset +++ b/package/base-files/files/etc/rc.button/reset @@ -14,5 +14,5 @@ then elif [ "$SEEN" -gt 5 ] then echo "FACTORY RESET" > /dev/console - firstboot && reboot & + jffs2reset -y && reboot & fi diff --git a/package/base-files/files/lib/firstboot/05_firstboot_skip b/package/base-files/files/lib/firstboot/05_firstboot_skip deleted file mode 100644 index 5f44df621..000000000 --- a/package/base-files/files/lib/firstboot/05_firstboot_skip +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -check_skip() { - if [ "$firstboot_skip_next" = "true" ]; then - return 0 - else - return 1 - fi -} - diff --git a/package/base-files/files/lib/firstboot/10_determine_parts b/package/base-files/files/lib/firstboot/10_determine_parts deleted file mode 100644 index 3f56e32a8..000000000 --- a/package/base-files/files/lib/firstboot/10_determine_parts +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh - -set_mtd_part() { - partname="rootfs_data" - mtdpart="$(find_mtd_part $partname)" -} - -set_rom_part() { - rom=$(awk '/squashfs/ {print $2}' /proc/mounts) -} - -set_jffs_part() { - jffs=$(awk '/jffs2/ {print $2}' /proc/mounts) -} - -determine_mtd_part() { - set_mtd_part - if [ -z "$mtdpart" ]; then - echo "MTD partition not found." - exit 1 - fi -} - -determine_rom_part() { - check_skip || { - set_rom_part - if [ -z "$rom" ]; then - echo "You do not have a squashfs partition; aborting" - echo "(firstboot cannot be run on jffs2 based firmwares)" - exit 1 - fi - } -} - -determine_jffs2_part() { - check_skip || { - set_jffs_part - } -} - -boot_hook_add switch2jffs determine_mtd_part -boot_hook_add jffs2reset determine_mtd_part -boot_hook_add switch2jffs determine_rom_part -boot_hook_add jffs2reset determine_rom_part -boot_hook_add switch2jffs determine_jffs2_part -boot_hook_add jffs2reset determine_jffs2_part diff --git a/package/base-files/files/lib/firstboot/10_no_fo_clear_overlay b/package/base-files/files/lib/firstboot/10_no_fo_clear_overlay deleted file mode 100644 index 8a7d9b066..000000000 --- a/package/base-files/files/lib/firstboot/10_no_fo_clear_overlay +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -no_fo_clear_overlay() { - # switch back to squashfs temporarily - pivot /rom /mnt - - # get rid of the old overlay - umount -l /mnt - - # another umount to get rid of the bind from /tmp/root - umount -l /mnt -} - -boot_hook_add no_fo no_fo_clear_overlay diff --git a/package/base-files/files/lib/firstboot/10_reset_has_mini_fo b/package/base-files/files/lib/firstboot/10_reset_has_mini_fo deleted file mode 100644 index 4e285840a..000000000 --- a/package/base-files/files/lib/firstboot/10_reset_has_mini_fo +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -reset_check_for_overlay() { - if grep -qE '(mini_fo|overlay)' /proc/filesystems; then - reset_has_fo=true - fi -} - -boot_hook_add jffs2reset reset_check_for_overlay diff --git a/package/base-files/files/lib/firstboot/20_has_mini_fo b/package/base-files/files/lib/firstboot/20_has_mini_fo deleted file mode 100644 index 8ca6a4fe5..000000000 --- a/package/base-files/files/lib/firstboot/20_has_mini_fo +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -check_for_overlay() { - if ! grep -qE '(mini_fo|overlay)' /proc/filesystems; then - boot_run_hook no_fo - exit 1 - fi -} - -boot_hook_add switch2jffs check_for_overlay diff --git a/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs b/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs deleted file mode 100644 index c03714fa6..000000000 --- a/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -no_fo_mount_jffs() { - # initialize jffs2 - mount -o noatime "$mtdpart" /overlay -t jffs2 || exit - - # workaround to ensure that union can attach properly - sync - ls /overlay >/dev/null -} - -boot_hook_add no_fo no_fo_mount_jffs diff --git a/package/base-files/files/lib/firstboot/20_reset_clear_jffs b/package/base-files/files/lib/firstboot/20_reset_clear_jffs deleted file mode 100644 index a3cd24fe9..000000000 --- a/package/base-files/files/lib/firstboot/20_reset_clear_jffs +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -reset_clear_jffs() { - [ "$reset_has_fo" = "true" ] && { - rm -rf $jffs/* 2>&- - mount -o remount $jffs / 2>&- - exit 0 - } || reset_has_fo=false -} - -boot_hook_add jffs2reset reset_clear_jffs diff --git a/package/base-files/files/lib/firstboot/30_is_rootfs_mounted b/package/base-files/files/lib/firstboot/30_is_rootfs_mounted deleted file mode 100644 index 7233fd903..000000000 --- a/package/base-files/files/lib/firstboot/30_is_rootfs_mounted +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -skip_if_rootfs_mounted() { - mount -o noatime -t jffs2 "$mtdpart" /rom/overlay || exit -} - -boot_hook_add switch2jffs skip_if_rootfs_mounted diff --git a/package/base-files/files/lib/firstboot/30_no_fo_pivot b/package/base-files/files/lib/firstboot/30_no_fo_pivot deleted file mode 100644 index b5c2601ee..000000000 --- a/package/base-files/files/lib/firstboot/30_no_fo_pivot +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -no_fo_pivot() { - # switch to the new (empty) jffs2 - fopivot /overlay /rom 1 -} - -boot_hook_add no_fo no_fo_pivot diff --git a/package/base-files/files/lib/firstboot/30_reset_copy_rom b/package/base-files/files/lib/firstboot/30_reset_copy_rom deleted file mode 100644 index d91c68947..000000000 --- a/package/base-files/files/lib/firstboot/30_reset_copy_rom +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -reset_copy_rom() { - [ "$reset_has_fo" != "true" ] && { - dupe $jffs $rom - exit 0 - } -} - -boot_hook_add jffs2reset reset_copy_rom diff --git a/package/base-files/files/lib/firstboot/40_copy_ramoverlay b/package/base-files/files/lib/firstboot/40_copy_ramoverlay deleted file mode 100644 index 39c2edacb..000000000 --- a/package/base-files/files/lib/firstboot/40_copy_ramoverlay +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -copy_ramoverlay() { - # try to avoid fs changing while copying - mount -o remount,ro none / 2>&- - # copy ramoverlay to jffs2 - echo -n "copying files ... " - cp -a /tmp/root/* /rom/overlay 2>&- - echo "done" -} - -boot_hook_add switch2jffs copy_ramoverlay diff --git a/package/base-files/files/lib/firstboot/40_no_fo_copy_ramoverlay b/package/base-files/files/lib/firstboot/40_no_fo_copy_ramoverlay deleted file mode 100644 index ced7c1b66..000000000 --- a/package/base-files/files/lib/firstboot/40_no_fo_copy_ramoverlay +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -no_fo_copy_ramoverlay() { - # copy ramoverlay to jffs2, must be done after switching - # to the new rootfs to avoid creating opaque directories - echo -n "copying files ... " - cp -a /tmp/root/* / >/dev/null 2>&1 - sync -} - -boot_hook_add no_fo no_fo_ramoverlay diff --git a/package/base-files/files/lib/firstboot/50_pivot b/package/base-files/files/lib/firstboot/50_pivot deleted file mode 100644 index 53801d7a8..000000000 --- a/package/base-files/files/lib/firstboot/50_pivot +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -with_fo_pivot() { - # switch back to squashfs (temporarily) - # and park the ramdisk ontop of /tmp/root - pivot /rom /mnt - mount -o move /mnt /tmp/root - - # /overlay is the overlay - # /rom is the readonly - fopivot /overlay /rom -} - -boot_hook_add switch2jffs with_fo_pivot diff --git a/package/base-files/files/lib/firstboot/99_10_no_fo_cleanup b/package/base-files/files/lib/firstboot/99_10_no_fo_cleanup deleted file mode 100644 index 6dedcb1e8..000000000 --- a/package/base-files/files/lib/firstboot/99_10_no_fo_cleanup +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -no_fo_cleanup() { - echo "done" - umount -l /overlay - umount -l /tmp/root - exit 0 -} - -boot_hook_add no_fo no_fo_cleanup diff --git a/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup b/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup deleted file mode 100644 index 560169901..000000000 --- a/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -with_fo_cleanup() { - # try to get rid of /tmp/root - # this will almost always fail - umount -l /tmp/root 2>&- - grep -q overlay /proc/filesystems && { - cd / - ( - cd /overlay - find -type l - ) | while read FILE; do - [ -z "$FILE" ] && break - if ls -la "$FILE" 2>&- | grep -q '(overlay-whiteout)'; then - rm -f "$FILE" - fi - done - } - exit 0 -} - -boot_hook_add switch2jffs with_fo_cleanup diff --git a/package/base-files/files/lib/preinit/05_mount_skip b/package/base-files/files/lib/preinit/05_mount_skip deleted file mode 100644 index c2b7ee79d..000000000 --- a/package/base-files/files/lib/preinit/05_mount_skip +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -check_skip() { - if [ "$pi_mount_skip_next" = "true" ]; then - return 0 - else - return 1 - fi -} - diff --git a/package/base-files/files/lib/preinit/10_check_for_mtd b/package/base-files/files/lib/preinit/10_check_for_mtd deleted file mode 100644 index 6a7bd307f..000000000 --- a/package/base-files/files/lib/preinit/10_check_for_mtd +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -mount_no_mtd() { - mtd unlock rootfs - mount -o noatime,remount,rw /dev/root / -} - -check_for_mtd() { - check_skip || { - grep -qs rootfs_data /proc/mtd || { - mount_no_mtd && pi_mount_skip_next=true - } - } -} - -boot_hook_add preinit_mount_root check_for_mtd - diff --git a/package/base-files/files/lib/preinit/20_check_jffs2_ready b/package/base-files/files/lib/preinit/20_check_jffs2_ready deleted file mode 100644 index 3c5cf67e8..000000000 --- a/package/base-files/files/lib/preinit/20_check_jffs2_ready +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -mount_no_jffs2() { - echo "jffs2 not ready yet; using ramdisk" - ramoverlay -} - -check_for_jffs2() { - check_skip || { - jffs2_ready || { - mount_no_jffs2 && pi_mount_skip_next=true - } - } -} - -boot_hook_add preinit_mount_root check_for_jffs2 - diff --git a/package/base-files/files/lib/preinit/40_mount_jffs2 b/package/base-files/files/lib/preinit/40_mount_jffs2 deleted file mode 100644 index ded785ed5..000000000 --- a/package/base-files/files/lib/preinit/40_mount_jffs2 +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -find_mount_jffs2() { - mkdir -p /tmp/overlay - mount -o noatime -t jffs2 "$(find_mtd_part rootfs_data)" /tmp/overlay - mtd -qq unlock rootfs_data -} - -jffs2_not_mounted() { - if [ "$pi_jffs2_mount_success" != "true" ]; then - return 0 - else - return 1 - fi -} - -do_mount_jffs2() { - check_skip || { - find_mount_jffs2 && pi_jffs2_mount_success=true - } -} - -boot_hook_add preinit_mount_root do_mount_jffs2 - diff --git a/package/base-files/files/lib/preinit/41_merge_overlay_hooks b/package/base-files/files/lib/preinit/41_merge_overlay_hooks deleted file mode 100644 index 4ca6877be..000000000 --- a/package/base-files/files/lib/preinit/41_merge_overlay_hooks +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh -# Copyright (C) 2010 OpenWrt.org - -merge_overlay_hooks() { - jffs2_not_mounted || [ ! -d /tmp/overlay/lib/preinit ] || { - echo "- merge overlay components -" - - mkdir -p /tmp/preinit-hook-merge - ln -sf /lib/preinit/* /tmp/overlay/lib/preinit/[0-9][0-9]_* /tmp/preinit-hook-merge/ - - boot_hook_splice_start - - local pipart - for pipart in /tmp/preinit-hook-merge/*; do - . $pipart - done - - boot_hook_splice_finish - - rm -rf /tmp/preinit-hook-merge - } -} - -boot_hook_add preinit_mount_root merge_overlay_hooks diff --git a/package/base-files/files/lib/preinit/70_pivot_jffs2_root b/package/base-files/files/lib/preinit/70_pivot_jffs2_root deleted file mode 100644 index b76f111ca..000000000 --- a/package/base-files/files/lib/preinit/70_pivot_jffs2_root +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -rootfs_pivot() { - check_skip || jffs2_not_mounted || { - echo "switching to jffs2" - mount -o noatime,move /tmp/overlay /overlay 2>&- - fopivot /overlay /rom && pi_mount_skip_next=true - } -} - -boot_hook_add preinit_mount_root rootfs_pivot - diff --git a/package/base-files/files/lib/preinit/80_mount_root b/package/base-files/files/lib/preinit/80_mount_root index 9a99ee910..0292d82d4 100644 --- a/package/base-files/files/lib/preinit/80_mount_root +++ b/package/base-files/files/lib/preinit/80_mount_root @@ -3,7 +3,16 @@ # Copyright (C) 2010 Vertical Communications do_mount_root() { - boot_run_hook preinit_mount_root + mount_root + boot_run_hook preinit_mount_root + [ -f /sysupgrade.tgz ] && { + echo "- config restore -" + cd / + mv sysupgrade.tgz /tmp + tar xzf /tmp/sysupgrade.tgz + rm -f /tmp/sysupgrade.tgz + sync + } } [ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_mount_root diff --git a/package/base-files/files/lib/preinit/90_mount_no_jffs2 b/package/base-files/files/lib/preinit/90_mount_no_jffs2 deleted file mode 100644 index d8ad4ae11..000000000 --- a/package/base-files/files/lib/preinit/90_mount_no_jffs2 +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -do_mount_no_jffs2() { - check_skip || { - mount_no_jffs2 && pi_mount_skip_next=true - } -} - -boot_hook_add preinit_mount_root do_mount_no_jffs2 - diff --git a/package/base-files/files/lib/preinit/90_restore_config b/package/base-files/files/lib/preinit/90_restore_config deleted file mode 100644 index 210bf6184..000000000 --- a/package/base-files/files/lib/preinit/90_restore_config +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -restore_config() { - [ -f /sysupgrade.tgz ] && { - echo "- config restore -" - cd / - mv sysupgrade.tgz /tmp - tar xzf /tmp/sysupgrade.tgz - rm -f /tmp/sysupgrade.tgz - sync - } -} - -boot_hook_add preinit_main restore_config - diff --git a/package/base-files/files/lib/preinit/99_10_mount_no_mtd b/package/base-files/files/lib/preinit/99_10_mount_no_mtd deleted file mode 100644 index c4f38e415..000000000 --- a/package/base-files/files/lib/preinit/99_10_mount_no_mtd +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -do_mount_no_mtd() { - check_skip || { - mount_no_mtd - } -} - -boot_hook_add preinit_mount_root do_mount_no_mtd - diff --git a/package/base-files/files/sbin/firstboot b/package/base-files/files/sbin/firstboot index 06b64c313..081febb7b 100755 --- a/package/base-files/files/sbin/firstboot +++ b/package/base-files/files/sbin/firstboot @@ -1,44 +1,3 @@ #!/bin/sh -switch2jffs_hook= -jffs2reset_hook= -no_fo_hook= - -. /lib/functions.sh - -firstboot_skip_next=false - -for fb_source_file in /lib/firstboot/*; do - . $fb_source_file -done - -set_mtd_part -set_rom_part -set_jffs_part - -# invoked as an executable -if [ "${0##*/}" = "firstboot" ]; then - if [ "$1" = "switch2jffs" ]; then - boot_run_hook switch2jffs - else - if [ -t 0 ] && [ "$1" != "-y" ]; then - local input - - echo -n "firstboot will erase all settings and remove any installed packages. Are you sure? [N/y]" - read input - [ "$input" = "y" ] || [ "$input" = "Y" ] || return 0 - fi - - if [ -n "$jffs" ]; then - reset_has_fo=true - echo "firstboot has already been run" - echo "jffs2 partition is mounted, only resetting files" - boot_run_hook jffs2reset - else - mtd erase "$partname" - mount -o noatime "$mtdpart" /overlay -t jffs2 - fopivot /overlay /rom 1 - fi - fi -fi - +/sbin/jffs2reset diff --git a/package/base-files/files/sbin/mount_root b/package/base-files/files/sbin/mount_root deleted file mode 100755 index 1c48ebab1..000000000 --- a/package/base-files/files/sbin/mount_root +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -# Initialize hook variables et by pulling in from preinit - -preinit_essential_hook= -preinit_main_hook= -failsafe_hook= -initramfs_hook= -preinit_mount_root= - -. /lib/functions.sh - -for pi_source_file in /lib/preinit/*; do - . $pi_source_file -done - -# Override function that doesn't apply to use of mount_root as a command rather -# than as part of preinit - -preinit_echo() { - echo "$@" -} - -boot_run_hook preinit_mount_root diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 67019307d..1ad6ea44a 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -179,6 +179,8 @@ fi run_hooks "" $sysupgrade_pre_upgrade +ubus call system upgrade + kill_remaining TERM sleep 3 kill_remaining KILL -- cgit v1.2.3 From e8ac3affe018cbf45e8a8354631bfa600421fac0 Mon Sep 17 00:00:00 2001 From: blogic Date: Thu, 25 Apr 2013 19:02:37 +0000 Subject: preinit: move cmdline failsafe= handling ot the generic code Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36430 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/preinit/30_failsafe_wait | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/preinit/30_failsafe_wait b/package/base-files/files/lib/preinit/30_failsafe_wait index 808d9731b..bcf24f8bb 100644 --- a/package/base-files/files/lib/preinit/30_failsafe_wait +++ b/package/base-files/files/lib/preinit/30_failsafe_wait @@ -74,10 +74,13 @@ fs_wait_for_key () { failsafe_wait() { FAILSAFE= - pi_failsafe_net_message=true - preinit_net_echo "Please press button now to enter failsafe" - pi_failsafe_net_message=false - fs_wait_for_key f 'to enter failsafe mode' $fs_failsafe_wait_timeout && FAILSAFE=true && export FAILSAFE + grep -q 'failsafe=' /proc/cmdline && FAILSAFE=true && export FAILSAFE + if [ "$FAILSAFE" != "true" ]; then + pi_failsafe_net_message=true + preinit_net_echo "Please press button now to enter failsafe" + pi_failsafe_net_message=false + fs_wait_for_key f 'to enter failsafe mode' $fs_failsafe_wait_timeout && FAILSAFE=true && export FAILSAFE + fi } boot_hook_add preinit_main failsafe_wait -- cgit v1.2.3 From 6b897bcdc144439050e38d82e506fc9d8d1827d3 Mon Sep 17 00:00:00 2001 From: blogic Date: Sun, 5 May 2013 12:41:42 +0000 Subject: sysupgrade: fixes broken pipe error during sysupgade Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36548 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/upgrade/common.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/upgrade/common.sh b/package/base-files/files/lib/upgrade/common.sh index fbe54a5ee..6bb36db48 100644 --- a/package/base-files/files/lib/upgrade/common.sh +++ b/package/base-files/files/lib/upgrade/common.sh @@ -157,14 +157,14 @@ get_image() { # [ ] *) cmd="cat";; esac if [ -z "$conc" ]; then - local magic="$(eval $cmd $from | dd bs=2 count=1 2>/dev/null | hexdump -n 2 -e '1/1 "%02x"')" + local magic="$(eval $cmd $from 2>/dev/null | dd bs=2 count=1 2>/dev/null | hexdump -n 2 -e '1/1 "%02x"')" case "$magic" in 1f8b) conc="zcat";; 425a) conc="bzcat";; esac fi - eval "$cmd $from ${conc:+| $conc}" + eval "$cmd $from 2>/dev/null ${conc:+| $conc}" } get_magic_word() { -- cgit v1.2.3 From bd4ec4d567494ce433865557e7896a2072f16707 Mon Sep 17 00:00:00 2001 From: jow Date: Mon, 6 May 2013 09:33:56 +0000 Subject: base-files: change network_find_wan() procedure to ignore default gateways in different routing tables git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36553 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/lib/functions/network.sh | 24 +++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'package/base-files/files') diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index 369fa3dbd..d86a504bf 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -80,16 +80,20 @@ __network_parse_ifstatus() while json_is_a "$__idx" object; do json_select "$((__idx++))" - json_get_var __tmp target - - case "${__tmp}" in - 0.0.0.0) - __network_set_cache "${__key}_gateway4" nexthop - ;; - ::) - __network_set_cache "${__key}_gateway6" nexthop - ;; - esac + json_get_var __tmp table + + if [ -z "$__tmp" ]; then + json_get_var __tmp target + + case "${__tmp}" in + 0.0.0.0) + __network_set_cache "${__key}_gateway4" nexthop + ;; + ::) + __network_set_cache "${__key}_gateway6" nexthop + ;; + esac + fi json_select ".." -- cgit v1.2.3