Add base files
This commit is contained in:
16
opkg-feed/installer/openwrt-sdxlemur-skel/control/base-files.conffiles
Executable file
16
opkg-feed/installer/openwrt-sdxlemur-skel/control/base-files.conffiles
Executable file
@@ -0,0 +1,16 @@
|
||||
/etc/ethers
|
||||
/etc/group
|
||||
/etc/hosts
|
||||
/etc/inittab
|
||||
/etc/iproute2/rt_protos
|
||||
/etc/iproute2/rt_tables
|
||||
/etc/passwd
|
||||
/etc/profile
|
||||
/etc/protocols
|
||||
/etc/rc.local
|
||||
/etc/services
|
||||
/etc/shadow
|
||||
/etc/shells
|
||||
/etc/shinit
|
||||
/etc/sysctl.conf
|
||||
/etc/sysupgrade.conf
|
||||
11
opkg-feed/installer/openwrt-sdxlemur-skel/control/base-files.control
Executable file
11
opkg-feed/installer/openwrt-sdxlemur-skel/control/base-files.control
Executable file
@@ -0,0 +1,11 @@
|
||||
Package: base-files
|
||||
Version: 11-r20134-5f15225c1e
|
||||
Depends: libc, netifd, jsonfilter, usign, openwrt-keyring, ubi-utils, fstools, fwtool
|
||||
Source: package/base-files
|
||||
SourceName: base-files
|
||||
License: GPL-2.0
|
||||
Section: base
|
||||
SourceDateEpoch: 1723531680
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 46117
|
||||
Description: This package contains a base filesystem and system scripts for OpenWrt.
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/base-files.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/base-files.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
14
opkg-feed/installer/openwrt-sdxlemur-skel/control/curl.control
Executable file
14
opkg-feed/installer/openwrt-sdxlemur-skel/control/curl.control
Executable file
@@ -0,0 +1,14 @@
|
||||
Package: curl
|
||||
Version: 8.10.0-1
|
||||
Depends: libc, libcurl4
|
||||
Source: owrt-feeds/packages/net/curl
|
||||
SourceName: curl
|
||||
License: MIT
|
||||
LicenseFiles: COPYING
|
||||
Section: net
|
||||
SourceDateEpoch: 1733820553
|
||||
CPE-ID: cpe:/a:haxx:libcurl
|
||||
Maintainer: Stan Grishin <stangri@melmac.ca>
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 63662
|
||||
Description: A client-side URL transfer utility
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/curl.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/curl.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
3
opkg-feed/installer/openwrt-sdxlemur-skel/control/dropbear.conffiles
Executable file
3
opkg-feed/installer/openwrt-sdxlemur-skel/control/dropbear.conffiles
Executable file
@@ -0,0 +1,3 @@
|
||||
/etc/config/dropbear
|
||||
/etc/dropbear/dropbear_ed25519_host_key
|
||||
/etc/dropbear/dropbear_rsa_host_key
|
||||
14
opkg-feed/installer/openwrt-sdxlemur-skel/control/dropbear.control
Executable file
14
opkg-feed/installer/openwrt-sdxlemur-skel/control/dropbear.control
Executable file
@@ -0,0 +1,14 @@
|
||||
Package: dropbear
|
||||
Version: 2022.82-3
|
||||
Depends: libc
|
||||
Alternatives: 100:/usr/bin/scp:/usr/sbin/dropbear, 100:/usr/bin/ssh:/usr/sbin/dropbear
|
||||
Source: package/network/services/dropbear
|
||||
SourceName: dropbear
|
||||
License: MIT
|
||||
LicenseFiles: LICENSE libtomcrypt/LICENSE libtommath/LICENSE
|
||||
Section: net
|
||||
SourceDateEpoch: 1693376937
|
||||
CPE-ID: cpe:/a:matt_johnston:dropbear_ssh_server
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 94020
|
||||
Description: A small SSH2 server/client designed for small memory environments.
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/dropbear.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/dropbear.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
16
opkg-feed/installer/openwrt-sdxlemur-skel/control/libcurl4.control
Executable file
16
opkg-feed/installer/openwrt-sdxlemur-skel/control/libcurl4.control
Executable file
@@ -0,0 +1,16 @@
|
||||
Package: libcurl4
|
||||
Version: 8.10.0-1
|
||||
Depends: libc, libopenssl1.1, libnghttp2-14, ca-bundle
|
||||
Provides: libcurl
|
||||
Source: owrt-feeds/packages/net/curl
|
||||
SourceName: libcurl
|
||||
License: MIT
|
||||
LicenseFiles: COPYING
|
||||
Section: libs
|
||||
SourceDateEpoch: 1733820553
|
||||
ABIVersion: 4
|
||||
CPE-ID: cpe:/a:haxx:libcurl
|
||||
Maintainer: Stan Grishin <stangri@melmac.ca>
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 198113
|
||||
Description: A client-side URL transfer library
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/libcurl4.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/libcurl4.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
15
opkg-feed/installer/openwrt-sdxlemur-skel/control/libnghttp2-14.control
Executable file
15
opkg-feed/installer/openwrt-sdxlemur-skel/control/libnghttp2-14.control
Executable file
@@ -0,0 +1,15 @@
|
||||
Package: libnghttp2-14
|
||||
Version: 1.44.0-1
|
||||
Depends: libc
|
||||
Provides: libnghttp2
|
||||
Source: owrt-feeds/packages/libs/nghttp2
|
||||
SourceName: libnghttp2
|
||||
License: MIT
|
||||
LicenseFiles: COPYING
|
||||
Section: libs
|
||||
SourceDateEpoch: 1628451615
|
||||
ABIVersion: -14
|
||||
Maintainer: Hans Dedecker <dedeckeh@gmail.com>
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 54175
|
||||
Description: C library implementing the framing layer of the HTTP/2 protocol. It can be used to build a HTTP/2-capable HTTP client or server
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/libnghttp2-14.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/libnghttp2-14.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
14
opkg-feed/installer/openwrt-sdxlemur-skel/control/libuci20130104.control
Executable file
14
opkg-feed/installer/openwrt-sdxlemur-skel/control/libuci20130104.control
Executable file
@@ -0,0 +1,14 @@
|
||||
Package: libuci20130104
|
||||
Version: 2021-10-22-f84f49f0-6
|
||||
Depends: libc, libubox20220515
|
||||
Provides: libuci
|
||||
Source: package/system/uci
|
||||
SourceName: libuci
|
||||
License: LGPL-2.1
|
||||
Section: libs
|
||||
SourceDateEpoch: 1690286952
|
||||
ABIVersion: 20130104
|
||||
Maintainer: Felix Fietkau <nbd@nbd.name>
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 14700
|
||||
Description: C library for the Unified Configuration Interface (UCI)
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/libuci20130104.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/libuci20130104.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
13
opkg-feed/installer/openwrt-sdxlemur-skel/control/openwrt-keyring.control
Executable file
13
opkg-feed/installer/openwrt-sdxlemur-skel/control/openwrt-keyring.control
Executable file
@@ -0,0 +1,13 @@
|
||||
Package: openwrt-keyring
|
||||
Version: 2022-03-25-62471e69-3
|
||||
Depends: libc
|
||||
Provides: lede-keyring
|
||||
Source: package/system/openwrt-keyring
|
||||
SourceName: openwrt-keyring
|
||||
License: GPL-2.0
|
||||
Section: base
|
||||
SourceDateEpoch: 1690286952
|
||||
Maintainer: John Crispin <john@phrozen.org>
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 309
|
||||
Description: The keyring of with the developer using and gpg public keys.
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/openwrt-keyring.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/openwrt-keyring.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
12
opkg-feed/installer/openwrt-sdxlemur-skel/control/uci.control
Executable file
12
opkg-feed/installer/openwrt-sdxlemur-skel/control/uci.control
Executable file
@@ -0,0 +1,12 @@
|
||||
Package: uci
|
||||
Version: 2021-10-22-f84f49f0-6
|
||||
Depends: libc, libuci20130104
|
||||
Source: package/system/uci
|
||||
SourceName: uci
|
||||
License: LGPL-2.1
|
||||
Section: base
|
||||
SourceDateEpoch: 1690286952
|
||||
Maintainer: Felix Fietkau <nbd@nbd.name>
|
||||
Architecture: arm_cortex-a7_neon-vfpv4
|
||||
Installed-Size: 7045
|
||||
Description: Utility for the Unified Configuration Interface (UCI)
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/uci.prerm
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/control/uci.prerm
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
[ -s ${IPKG_INSTROOT}/lib/functions.sh ] || exit 0
|
||||
. ${IPKG_INSTROOT}/lib/functions.sh
|
||||
default_prerm $0 $@
|
||||
8
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/banner
Executable file
8
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/banner
Executable file
@@ -0,0 +1,8 @@
|
||||
_______ ________ __
|
||||
| |.-----.-----.-----.| | | |.----.| |_
|
||||
| - || _ | -__| || | | || _|| _|
|
||||
|_______|| __|_____|__|__||________||__| |____|
|
||||
|__| W I R E L E S S F R E E D O M
|
||||
-----------------------------------------------------
|
||||
OpenWrt 22.03.5, r20134-5f15225c1e
|
||||
-----------------------------------------------------
|
||||
15
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/banner.failsafe
Executable file
15
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/banner.failsafe
Executable file
@@ -0,0 +1,15 @@
|
||||
================= FAILSAFE MODE active ================
|
||||
special commands:
|
||||
* firstboot reset settings to factory defaults
|
||||
* mount_root mount root-partition with config files
|
||||
|
||||
after mount_root:
|
||||
* passwd change root's password
|
||||
* /etc/config directory with config files
|
||||
|
||||
for more help see:
|
||||
https://openwrt.org/docs/guide-user/troubleshooting/
|
||||
- failsafe_and_factory_reset
|
||||
- root_password_reset
|
||||
=======================================================
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
config dropbear
|
||||
option PasswordAuth 'on'
|
||||
option RootPasswordAuth 'on'
|
||||
option Port '22'
|
||||
# option BannerFile '/etc/banner'
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/device_info
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/device_info
Executable file
@@ -0,0 +1,4 @@
|
||||
DEVICE_MANUFACTURER='Quectel'
|
||||
DEVICE_MANUFACTURER_URL='https://quectel.com/'
|
||||
DEVICE_PRODUCT='RM520N-GL'
|
||||
DEVICE_REVISION='v0'
|
||||
52
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/diag.sh
Executable file
52
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/diag.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2006-2019 OpenWrt.org
|
||||
|
||||
. /lib/functions/leds.sh
|
||||
|
||||
boot="$(get_dt_led boot)"
|
||||
failsafe="$(get_dt_led failsafe)"
|
||||
running="$(get_dt_led running)"
|
||||
upgrade="$(get_dt_led upgrade)"
|
||||
|
||||
set_led_state() {
|
||||
status_led="$boot"
|
||||
|
||||
case "$1" in
|
||||
preinit)
|
||||
status_led_blink_preinit
|
||||
;;
|
||||
failsafe)
|
||||
status_led_off
|
||||
[ -n "$running" ] && {
|
||||
status_led="$running"
|
||||
status_led_off
|
||||
}
|
||||
status_led="$failsafe"
|
||||
status_led_blink_failsafe
|
||||
;;
|
||||
preinit_regular)
|
||||
status_led_blink_preinit_regular
|
||||
;;
|
||||
upgrade)
|
||||
[ -n "$running" ] && {
|
||||
status_led="$running"
|
||||
status_led_off
|
||||
}
|
||||
status_led="$upgrade"
|
||||
status_led_blink_preinit_regular
|
||||
;;
|
||||
done)
|
||||
status_led_off
|
||||
[ "$status_led" != "$running" ] && \
|
||||
status_led_restore_trigger "boot"
|
||||
[ -n "$running" ] && {
|
||||
status_led="$running"
|
||||
status_led_on
|
||||
}
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
set_state() {
|
||||
[ -n "$boot" -o -n "$failsafe" -o -n "$running" -o -n "$upgrade" ] && set_led_state "$1"
|
||||
}
|
||||
6
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/ethers
Executable file
6
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/ethers
Executable file
@@ -0,0 +1,6 @@
|
||||
#
|
||||
# Lookup man 5 ethers for syntax documentation
|
||||
#
|
||||
# Examples :
|
||||
# 02:00:11:22:33:44 OpenWrt.lan
|
||||
# 02:00:11:22:33:44 192.168.1.1
|
||||
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/fstab
Executable file
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/fstab
Executable file
@@ -0,0 +1 @@
|
||||
# <file system> <mount point> <type> <options> <dump> <pass>
|
||||
45
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/group
Executable file
45
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/group
Executable file
@@ -0,0 +1,45 @@
|
||||
root:x:0:
|
||||
daemon:x:1:
|
||||
bin:x:2:
|
||||
sys:x:3:
|
||||
adm:x:4:
|
||||
tty:x:5:
|
||||
disk:x:6:
|
||||
lp:x:7:
|
||||
mail:x:8:
|
||||
dialout:x:20:
|
||||
audio:x:29:
|
||||
www-data:x:33:
|
||||
ftp:x:55:
|
||||
users:x:100:
|
||||
network:x:101:
|
||||
nogroup:x:65534:
|
||||
radio:x:1001:radio,system
|
||||
diag:x:2901:radio,diag
|
||||
inet:x:3003:radio
|
||||
net_admin:x:3005:radio
|
||||
system:x:1000:radio,system
|
||||
wifi:x:1010:radio,wifi,0
|
||||
netdev:x:996:radio
|
||||
net_raw:x:3004:radio
|
||||
kmsg:x:2902:radio
|
||||
locclient:x:4021:radio,locclient
|
||||
adb:x:2000:radio,adb
|
||||
qbt:x:2888:qbt
|
||||
ntp:x:123:ntp
|
||||
dnsmasq:x:453:dnsmasq
|
||||
ubi:x:3015:ubi
|
||||
gps:x:1021:gps
|
||||
logd:x:514:logd
|
||||
wakelock:x:3010:radio
|
||||
ubus:x:81:ubus
|
||||
media:x:2807:media
|
||||
input:x:1004:input
|
||||
qrtr:x:2906:qrtr
|
||||
rebooters:x:1301:diag
|
||||
leprop:x:5002:leprop
|
||||
readproc:x:3009:
|
||||
qwes:x:3013:
|
||||
sdcard:x:1015:
|
||||
disk:x:6:
|
||||
plugdev:x:272:system
|
||||
9
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/hosts
Executable file
9
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/hosts
Executable file
@@ -0,0 +1,9 @@
|
||||
127.0.0.1 localhost OpenWrt
|
||||
|
||||
# The following lines are desirable for IPv6 capable hosts
|
||||
::1 localhost ip6-localhost ip6-loopback
|
||||
fe00::0 ip6-localnet
|
||||
ff00::0 ip6-mcastprefix
|
||||
ff02::1 ip6-allnodes
|
||||
ff02::2 ip6-allrouters
|
||||
127.0.1.1 sdxlemur
|
||||
5
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/inittab
Executable file
5
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/inittab
Executable file
@@ -0,0 +1,5 @@
|
||||
::sysinit:/etc/init.d/rcS S boot
|
||||
::shutdown:/etc/init.d/rcS K shutdown
|
||||
# avoid auto reboot by twice type ctrl+c
|
||||
#::askconsole:/usr/libexec/login.sh
|
||||
console::respawn:/usr/libexec/login.sh
|
||||
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/mtab
Symbolic link
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/mtab
Symbolic link
@@ -0,0 +1 @@
|
||||
/proc/mounts
|
||||
7
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/openwrt_release
Executable file
7
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/openwrt_release
Executable file
@@ -0,0 +1,7 @@
|
||||
DISTRIB_ID='OpenWrt'
|
||||
DISTRIB_RELEASE='22.03.5'
|
||||
DISTRIB_REVISION='r20134-5f15225c1e'
|
||||
DISTRIB_TARGET='sdxlemur/generic'
|
||||
DISTRIB_ARCH='arm_cortex-a7_neon-vfpv4'
|
||||
DISTRIB_DESCRIPTION='OpenWrt 22.03.5 r20134-5f15225c1e'
|
||||
DISTRIB_TAINTS='no-all busybox override'
|
||||
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/openwrt_version
Executable file
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/openwrt_version
Executable file
@@ -0,0 +1 @@
|
||||
r20134-5f15225c1e
|
||||
@@ -0,0 +1,45 @@
|
||||
src/gz openwrt_core https://downloads.openwrt.org/releases/22.03.5/targets/sdx35/generic/packages
|
||||
src/gz openwrt_base https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/base
|
||||
src/gz openwrt_luci https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/luci
|
||||
src/gz openwrt_packages https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/packages
|
||||
src/gz openwrt_qtiagm https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiagm
|
||||
src/gz openwrt_qtiargs https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiargs
|
||||
src/gz openwrt_qtiaudio https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiaudio
|
||||
src/gz openwrt_qtiaudioprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiaudioprop
|
||||
src/gz openwrt_qtibsp https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtibsp
|
||||
src/gz openwrt_qtibspprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtibspprop
|
||||
src/gz openwrt_qtibt https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtibt
|
||||
src/gz openwrt_qtibtprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtibtprop
|
||||
src/gz openwrt_qticore https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qticore
|
||||
src/gz openwrt_qticoreinternal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qticoreinternal
|
||||
src/gz openwrt_qticoreprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qticoreprop
|
||||
src/gz openwrt_qtictainternal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtictainternal
|
||||
src/gz openwrt_qtidata https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtidata
|
||||
src/gz openwrt_qtidatainternal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtidatainternal
|
||||
src/gz openwrt_qtidataprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtidataprop
|
||||
src/gz openwrt_qtigplv2 https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtigplv2
|
||||
src/gz openwrt_qtiipq https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiipq
|
||||
src/gz openwrt_qtiipqezmesh https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiipqezmesh
|
||||
src/gz openwrt_qtiipqprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiipqprop
|
||||
src/gz openwrt_qtilocation https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtilocation
|
||||
src/gz openwrt_qtilocationinternal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtilocationinternal
|
||||
src/gz openwrt_qtilocationprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtilocationprop
|
||||
src/gz openwrt_qtimsdcprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtimsdcprop
|
||||
src/gz openwrt_qtinternal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtinternal
|
||||
src/gz openwrt_qtipal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtipal
|
||||
src/gz openwrt_qtiperfprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiperfprop
|
||||
src/gz openwrt_qtippatprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtippatprop
|
||||
src/gz openwrt_qtiquectel https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiquectel
|
||||
src/gz openwrt_qtiquectelprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiquectelprop
|
||||
src/gz openwrt_qtirilprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtirilprop
|
||||
src/gz openwrt_qtisecurity https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtisecurity
|
||||
src/gz openwrt_qtisecurityinternal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtisecurityinternal
|
||||
src/gz openwrt_qtisecurityprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtisecurityprop
|
||||
src/gz openwrt_qtisensorsinternal https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtisensorsinternal
|
||||
src/gz openwrt_qtisensorsprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtisensorsprop
|
||||
src/gz openwrt_qtissdk https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtissdk
|
||||
src/gz openwrt_qtissmgr https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtissmgr
|
||||
src/gz openwrt_qtissmgrprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtissmgrprop
|
||||
src/gz openwrt_qtiwlan https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiwlan
|
||||
src/gz openwrt_qtiwlanprop https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/qtiwlanprop
|
||||
src/gz openwrt_routing https://downloads.openwrt.org/releases/22.03.5/packages/arm_cortex-a7_neon-vfpv4/routing
|
||||
@@ -0,0 +1,2 @@
|
||||
untrusted comment: Local build key
|
||||
RWQODEasR6tsH514leJOAtQhEuP8a5EB2t0vTChH+OJPP7Stc6Q7gDOg
|
||||
@@ -0,0 +1,2 @@
|
||||
untrusted comment: Public usign key for 22.03 release builds
|
||||
RWRNAX5vHtXWFmt+n5di7XX8rTu0w+c8X7Ihv4oCyD6tzsUwmH0A6kO0
|
||||
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/os-release
Symbolic link
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/os-release
Symbolic link
@@ -0,0 +1 @@
|
||||
../usr/lib/os-release
|
||||
23
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/passwd
Executable file
23
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/passwd
Executable file
@@ -0,0 +1,23 @@
|
||||
root:x:0:0:root:/root:/bin/ash
|
||||
daemon:*:1:1:daemon:/var:/bin/false
|
||||
ftp:*:55:55:ftp:/home/ftp:/bin/false
|
||||
network:*:101:101:network:/var:/bin/false
|
||||
nobody:*:65534:65534:nobody:/var:/bin/false
|
||||
radio:x:1001:1001:radio:/var/run/radio:/bin/false
|
||||
qbt:x:2888:2888:qbt:/var/run/qbt:/bin/false
|
||||
ntp:x:123:123:ntp:/var/run/ntp:/bin/false
|
||||
system:x:1000:1000:system:/var/run/system:/bin/false
|
||||
dnsmasq:x:453:453:dnsmasq:/var/run/dnsmasq:/bin/false
|
||||
ubi:x:3015:3015:ubi:/var/run/ubi:/bin/false
|
||||
wifi:x:1010:1010:wifi:/var/run/wifi:/bin/false
|
||||
0:x:65536:1010:0:/var/run/0:/bin/false
|
||||
gps:x:1021:1021:gps:/var/run/gps:/bin/false
|
||||
locclient:x:4021:4021:locclient:/var/run/locclient:/bin/false
|
||||
logd:x:514:514:logd:/var/run/logd:/bin/false
|
||||
|
||||
adb:x:2000:2000:adb:/var/run/adb:/bin/false
|
||||
media:x:2807:2807:media:/var/run/media:/bin/false
|
||||
input:x:1004:1004:input:/var/run/input:/bin/false
|
||||
qrtr:x:2906:2906:qrtr:/var/run/qrtr:/bin/false
|
||||
diag:x:2901:2901:diag:/var/run/diag:/bin/false
|
||||
leprop:x:5002:5002:leprop:/var/run/leprop:/bin/false
|
||||
29
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/preinit
Executable file
29
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/preinit
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2006-2016 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
[ -z "$PREINIT" ] && exec /sbin/init
|
||||
|
||||
export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/preinit.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
boot_hook_init preinit_essential
|
||||
boot_hook_init preinit_main
|
||||
boot_hook_init failsafe
|
||||
boot_hook_init initramfs
|
||||
boot_hook_init preinit_mount_root
|
||||
|
||||
for pi_source_file in /lib/preinit/*; do
|
||||
. $pi_source_file
|
||||
done
|
||||
|
||||
boot_run_hook preinit_essential
|
||||
|
||||
pi_mount_skip_next=false
|
||||
pi_jffs2_mount_success=false
|
||||
pi_failsafe_net_message=false
|
||||
|
||||
boot_run_hook preinit_main
|
||||
24
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/profile
Executable file
24
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/profile
Executable file
@@ -0,0 +1,24 @@
|
||||
[ -e /tmp/.failsafe ] && export FAILSAFE=1
|
||||
|
||||
[ -f /etc/banner ] && cat /etc/banner
|
||||
[ -n "$FAILSAFE" ] && cat /etc/banner.failsafe
|
||||
|
||||
|
||||
export PATH="/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
export HOME=$(grep -e "^${USER:-root}:" /etc/passwd | cut -d ":" -f 6)
|
||||
export HOME=${HOME:-/root}
|
||||
export PS1='\u@\h:\w\$ '
|
||||
export ENV=/etc/shinit
|
||||
|
||||
case "$TERM" in
|
||||
xterm*|rxvt*)
|
||||
export PS1='\[\e]0;\u@\h: \w\a\]'$PS1
|
||||
;;
|
||||
esac
|
||||
|
||||
[ -n "$FAILSAFE" ] || {
|
||||
for FILE in /etc/profile.d/*.sh; do
|
||||
[ -e "$FILE" ] && . "$FILE"
|
||||
done
|
||||
unset FILE
|
||||
}
|
||||
57
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/protocols
Executable file
57
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/protocols
Executable file
@@ -0,0 +1,57 @@
|
||||
# Internet (IP) protocols
|
||||
#
|
||||
# Updated from http://www.iana.org/assignments/protocol-numbers and other
|
||||
# sources.
|
||||
# New protocols will be added on request if they have been officially
|
||||
# assigned by IANA and are not historical.
|
||||
# If you need a huge list of used numbers please install the nmap package.
|
||||
|
||||
ip 0 IP # internet protocol, pseudo protocol number
|
||||
#hopopt 0 HOPOPT # IPv6 Hop-by-Hop Option [RFC1883]
|
||||
icmp 1 ICMP # internet control message protocol
|
||||
igmp 2 IGMP # Internet Group Management
|
||||
ggp 3 GGP # gateway-gateway protocol
|
||||
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
|
||||
st 5 ST # ST datagram mode
|
||||
tcp 6 TCP # transmission control protocol
|
||||
egp 8 EGP # exterior gateway protocol
|
||||
igp 9 IGP # any private interior gateway (Cisco)
|
||||
pup 12 PUP # PARC universal packet protocol
|
||||
udp 17 UDP # user datagram protocol
|
||||
hmp 20 HMP # host monitoring protocol
|
||||
xns-idp 22 XNS-IDP # Xerox NS IDP
|
||||
rdp 27 RDP # "reliable datagram" protocol
|
||||
iso-tp4 29 ISO-TP4 # ISO Transport Protocol class 4 [RFC905]
|
||||
dccp 33 DCCP # Datagram Congestion Control Protocol [RFC4340]
|
||||
xtp 36 XTP # Xpress Transfer Protocol
|
||||
ddp 37 DDP # Datagram Delivery Protocol
|
||||
idpr-cmtp 38 IDPR-CMTP # IDPR Control Message Transport
|
||||
ipv6 41 IPv6 # Internet Protocol, version 6
|
||||
ipv6-route 43 IPv6-Route # Routing Header for IPv6
|
||||
ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6
|
||||
idrp 45 IDRP # Inter-Domain Routing Protocol
|
||||
rsvp 46 RSVP # Reservation Protocol
|
||||
gre 47 GRE # General Routing Encapsulation
|
||||
esp 50 IPSEC-ESP # Encap Security Payload [RFC2046]
|
||||
ah 51 IPSEC-AH # Authentication Header [RFC2402]
|
||||
skip 57 SKIP # SKIP
|
||||
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6
|
||||
ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6
|
||||
ipv6-opts 60 IPv6-Opts # Destination Options for IPv6
|
||||
rspf 73 RSPF CPHB # Radio Shortest Path First (officially CPHB)
|
||||
vmtp 81 VMTP # Versatile Message Transport
|
||||
eigrp 88 EIGRP # Enhanced Interior Routing Protocol (Cisco)
|
||||
ospf 89 OSPFIGP # Open Shortest Path First IGP
|
||||
ax.25 93 AX.25 # AX.25 frames
|
||||
ipip 94 IPIP # IP-within-IP Encapsulation Protocol
|
||||
etherip 97 ETHERIP # Ethernet-within-IP Encapsulation [RFC3378]
|
||||
encap 98 ENCAP # Yet Another IP encapsulation [RFC1241]
|
||||
# 99 # any private encryption scheme
|
||||
pim 103 PIM # Protocol Independent Multicast
|
||||
ipcomp 108 IPCOMP # IP Payload Compression Protocol
|
||||
vrrp 112 VRRP # Virtual Router Redundancy Protocol
|
||||
l2tp 115 L2TP # Layer Two Tunneling Protocol [RFC2661]
|
||||
isis 124 ISIS # IS-IS over IPv4
|
||||
sctp 132 SCTP # Stream Control Transmission Protocol
|
||||
fc 133 FC # Fibre Channel
|
||||
|
||||
4
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/rc.local
Executable file
4
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/rc.local
Executable file
@@ -0,0 +1,4 @@
|
||||
# Put your custom commands here that should be executed once
|
||||
# the system init finished. By default this file does nothing.
|
||||
|
||||
exit 0
|
||||
173
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/services
Executable file
173
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/services
Executable file
@@ -0,0 +1,173 @@
|
||||
echo 7/tcp
|
||||
echo 7/udp
|
||||
discard 9/tcp
|
||||
discard 9/udp
|
||||
daytime 13/tcp
|
||||
daytime 13/udp
|
||||
netstat 15/tcp
|
||||
chargen 19/tcp
|
||||
chargen 19/udp
|
||||
ftp-data 20/tcp
|
||||
ftp 21/tcp
|
||||
ssh 22/tcp
|
||||
ssh 22/udp
|
||||
telnet 23/tcp
|
||||
smtp 25/tcp
|
||||
time 37/tcp
|
||||
time 37/udp
|
||||
whois 43/tcp
|
||||
domain 53/tcp
|
||||
domain 53/udp
|
||||
bootps 67/tcp
|
||||
bootps 67/udp
|
||||
bootpc 68/tcp
|
||||
bootpc 68/udp
|
||||
tftp 69/udp
|
||||
finger 79/tcp
|
||||
www 80/tcp http
|
||||
kerberos 88/tcp kerberos5 krb5 kerberos-sec
|
||||
kerberos 88/udp kerberos5 krb5 kerberos-sec
|
||||
pop3 110/tcp
|
||||
pop3 110/udp
|
||||
sunrpc 111/tcp rpcbind
|
||||
sunrpc 111/udp rpcbind
|
||||
auth 113/tcp ident
|
||||
sftp 115/tcp
|
||||
nntp 119/tcp
|
||||
ntp 123/tcp
|
||||
ntp 123/udp
|
||||
netbios-ns 137/tcp
|
||||
netbios-ns 137/udp
|
||||
netbios-dgm 138/tcp
|
||||
netbios-dgm 138/udp
|
||||
netbios-ssn 139/tcp
|
||||
netbios-ssn 139/udp
|
||||
imap2 143/tcp imap
|
||||
imap2 143/udp imap
|
||||
snmp 161/tcp
|
||||
snmp 161/udp
|
||||
snmp-trap 162/tcp snmptrap
|
||||
snmp-trap 162/udp snmptrap
|
||||
xdmcp 177/tcp
|
||||
xdmcp 177/udp
|
||||
bgp 179/tcp
|
||||
bgp 179/udp
|
||||
imap3 220/tcp
|
||||
imap3 220/udp
|
||||
ldap 389/tcp
|
||||
ldap 389/udp
|
||||
https 443/tcp
|
||||
https 443/udp
|
||||
microsoft-ds 445/tcp
|
||||
microsoft-ds 445/udp
|
||||
isakmp 500/tcp
|
||||
isakmp 500/udp
|
||||
rtsp 554/tcp
|
||||
rtsp 554/udp
|
||||
ipp 631/tcp
|
||||
ipp 631/udp
|
||||
syslog 514/udp
|
||||
printer 515/tcp spooler
|
||||
dhcpv6-client 546/tcp
|
||||
dhcpv6-client 546/udp
|
||||
dhcpv6-server 547/tcp
|
||||
dhcpv6-server 547/udp
|
||||
afpovertcp 548/tcp
|
||||
afpovertcp 548/udp
|
||||
nntps 563/tcp snntp
|
||||
nntps 563/udp snntp
|
||||
submission 587/tcp
|
||||
submission 587/udp
|
||||
ldaps 636/tcp
|
||||
ldaps 636/udp
|
||||
tinc 655/tcp
|
||||
tinc 655/udp
|
||||
rsync 873/tcp
|
||||
rsync 873/udp
|
||||
ftps-data 989/tcp
|
||||
ftps 990/tcp
|
||||
imaps 993/tcp
|
||||
imaps 993/udp
|
||||
ircs 994/tcp
|
||||
ircs 994/udp
|
||||
pop3s 995/tcp
|
||||
pop3s 995/udp
|
||||
socks 1080/tcp
|
||||
socks 1080/udp
|
||||
openvpn 1194/tcp
|
||||
openvpn 1194/udp
|
||||
l2f 1701/tcp l2tp
|
||||
l2f 1701/udp l2tp
|
||||
radius 1812/tcp
|
||||
radius 1812/udp
|
||||
radius-acct 1813/tcp radacct
|
||||
radius-acct 1813/udp radacct
|
||||
nfs 2049/tcp
|
||||
nfs 2049/udp
|
||||
dict 2628/tcp
|
||||
dict 2628/udp
|
||||
gpsd 2947/tcp
|
||||
gpsd 2947/udp
|
||||
icpv2 3130/tcp icp
|
||||
icpv2 3130/udp icp
|
||||
mysql 3306/tcp
|
||||
mysql 3306/udp
|
||||
nut 3493/tcp
|
||||
nut 3493/udp
|
||||
distcc 3632/tcp
|
||||
distcc 3632/udp
|
||||
daap 3689/tcp
|
||||
daap 3689/udp
|
||||
svn 3690/tcp subversion
|
||||
svn 3690/udp subversion
|
||||
epmd 4369/tcp
|
||||
epmd 4369/udp
|
||||
iax 4569/tcp
|
||||
iax 4569/udp
|
||||
mtn 4691/tcp
|
||||
mtn 4691/udp
|
||||
munin 4949/tcp
|
||||
sip 5060/tcp
|
||||
sip 5060/udp
|
||||
sip-tls 5061/tcp
|
||||
sip-tls 5061/udp
|
||||
xmpp-client 5222/tcp jabber-client
|
||||
xmpp-client 5222/udp jabber-client
|
||||
xmpp-server 5269/tcp jabber-server
|
||||
xmpp-server 5269/udp jabber-server
|
||||
mdns 5353/tcp
|
||||
mdns 5353/udp
|
||||
postgresql 5432/tcp postgres
|
||||
postgresql 5432/udp postgres
|
||||
x11 6000/tcp
|
||||
x11 6000/udp
|
||||
mysql-proxy 6446/tcp
|
||||
mysql-proxy 6446/udp
|
||||
bacula-dir 9101/tcp
|
||||
bacula-dir 9101/udp
|
||||
bacula-fd 9102/tcp
|
||||
bacula-fd 9102/udp
|
||||
bacula-sd 9103/tcp
|
||||
bacula-sd 9103/udp
|
||||
nbd 10809/tcp
|
||||
zabbix-agent 10050/tcp
|
||||
zabbix-agent 10050/udp
|
||||
zabbix-trapper 10051/tcp
|
||||
zabbix-trapper 10051/udp
|
||||
hkp 11371/tcp
|
||||
hkp 11371/udp
|
||||
ssmtp 465/tcp smtps
|
||||
spamd 783/tcp
|
||||
zebrasrv 2600/tcp
|
||||
zebra 2601/tcp
|
||||
ripd 2602/tcp
|
||||
ripngd 2603/tcp
|
||||
ospfd 2604/tcp
|
||||
bgpd 2605/tcp
|
||||
ospf6d 2606/tcp
|
||||
ospfapi 2607/tcp
|
||||
isisd 2608/tcp
|
||||
sane-port 6566/tcp sane saned
|
||||
ircd 6667/tcp
|
||||
git 9418/tcp
|
||||
|
||||
23
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/shadow
Normal file
23
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/shadow
Normal file
@@ -0,0 +1,23 @@
|
||||
root:::0:99999:7:::
|
||||
daemon:*:0:0:99999:7:::
|
||||
ftp:*:0:0:99999:7:::
|
||||
network:*:0:0:99999:7:::
|
||||
nobody:*:0:0:99999:7:::
|
||||
radio:x:0:0:99999:7:::
|
||||
qbt:x:0:0:99999:7:::
|
||||
ntp:x:0:0:99999:7:::
|
||||
system:x:0:0:99999:7:::
|
||||
dnsmasq:x:0:0:99999:7:::
|
||||
ubi:x:0:0:99999:7:::
|
||||
wifi:x:0:0:99999:7:::
|
||||
0:x:0:0:99999:7:::
|
||||
gps:x:0:0:99999:7:::
|
||||
locclient:x:0:0:99999:7:::
|
||||
logd:x:0:0:99999:7:::
|
||||
ubus:x:0:0:99999:7:::
|
||||
adb:x:0:0:99999:7:::
|
||||
media:x:0:0:99999:7:::
|
||||
input:x:0:0:99999:7:::
|
||||
qrtr:x:0:0:99999:7:::
|
||||
diag:x:0:0:99999:7:::
|
||||
leprop:x:0:0:99999:7:::
|
||||
3
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/shells
Executable file
3
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/shells
Executable file
@@ -0,0 +1,3 @@
|
||||
/bin/ash
|
||||
/bin/sh
|
||||
/bin/bash
|
||||
12
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/shinit
Executable file
12
opkg-feed/installer/openwrt-sdxlemur-skel/data/etc/shinit
Executable file
@@ -0,0 +1,12 @@
|
||||
[ -x /bin/more ] || [ -x /usr/bin/more ] || alias more=less
|
||||
[ -x /usr/bin/vim ] && alias vi=vim || alias vim=vi
|
||||
|
||||
alias ll='ls -alF --color=auto'
|
||||
|
||||
[ -z "$KSH_VERSION" -o \! -s /etc/mkshrc ] || . /etc/mkshrc
|
||||
|
||||
[ -x /usr/bin/arp -o -x /sbin/arp ] || arp() { cat /proc/net/arp; }
|
||||
[ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
|
||||
|
||||
[ -n "$KSH_VERSION" -o \! -s "$HOME/.shinit" ] || . "$HOME/.shinit"
|
||||
[ -z "$KSH_VERSION" -o \! -s "$HOME/.mkshrc" ] || . "$HOME/.mkshrc"
|
||||
@@ -0,0 +1,10 @@
|
||||
ppwd="$(sed -ne '/^root:/s/^root:\([^:]*\):.*$/\1/p' /etc/passwd)"
|
||||
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
|
||||
@@ -0,0 +1,13 @@
|
||||
[ "$(uci -q get network.globals.ula_prefix)" != "auto" ] && exit 0
|
||||
|
||||
r1=$(dd if=/dev/urandom bs=1 count=1 |hexdump -e '1/1 "%02x"')
|
||||
r2=$(dd if=/dev/urandom bs=2 count=1 |hexdump -e '2/1 "%02x"')
|
||||
r3=$(dd if=/dev/urandom bs=2 count=1 |hexdump -e '2/1 "%02x"')
|
||||
|
||||
uci -q batch <<-EOF >/dev/null
|
||||
set network.globals.ula_prefix=fd$r1:$r2:$r3::/48
|
||||
commit network
|
||||
EOF
|
||||
|
||||
exit 0
|
||||
|
||||
163
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/config/uci.sh
Executable file
163
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/config/uci.sh
Executable file
@@ -0,0 +1,163 @@
|
||||
# Shell script compatibility wrappers for /sbin/uci
|
||||
#
|
||||
# Copyright (C) 2008-2010 OpenWrt.org
|
||||
# Copyright (C) 2008 Felix Fietkau <nbd@nbd.name>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
CONFIG_APPEND=
|
||||
uci_load() {
|
||||
local PACKAGE="$1"
|
||||
local DATA
|
||||
local RET
|
||||
local VAR
|
||||
|
||||
_C=0
|
||||
if [ -z "$CONFIG_APPEND" ]; then
|
||||
for VAR in $CONFIG_LIST_STATE; do
|
||||
export ${NO_EXPORT:+-n} CONFIG_${VAR}=
|
||||
export ${NO_EXPORT:+-n} CONFIG_${VAR}_LENGTH=
|
||||
done
|
||||
export ${NO_EXPORT:+-n} CONFIG_LIST_STATE=
|
||||
export ${NO_EXPORT:+-n} CONFIG_SECTIONS=
|
||||
export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=0
|
||||
export ${NO_EXPORT:+-n} CONFIG_SECTION=
|
||||
fi
|
||||
|
||||
DATA="$(/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} ${LOAD_STATE:+-P /var/state} -S -n export "$PACKAGE" 2>/dev/null)"
|
||||
RET="$?"
|
||||
[ "$RET" != 0 -o -z "$DATA" ] || eval "$DATA"
|
||||
unset DATA
|
||||
|
||||
${CONFIG_SECTION:+config_cb}
|
||||
return "$RET"
|
||||
}
|
||||
|
||||
uci_set_default() {
|
||||
local PACKAGE="$1"
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -q show "$PACKAGE" > /dev/null && return 0
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} import "$PACKAGE"
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} commit "$PACKAGE"
|
||||
}
|
||||
|
||||
uci_revert_state() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -P /var/state revert "$PACKAGE${CONFIG:+.$CONFIG}${OPTION:+.$OPTION}"
|
||||
}
|
||||
|
||||
uci_set_state() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
local VALUE="$4"
|
||||
|
||||
[ "$#" = 4 ] || return 0
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} -P /var/state set "$PACKAGE.$CONFIG${OPTION:+.$OPTION}=$VALUE"
|
||||
}
|
||||
|
||||
uci_toggle_state() {
|
||||
uci_revert_state "$1" "$2" "$3"
|
||||
uci_set_state "$1" "$2" "$3" "$4"
|
||||
}
|
||||
|
||||
uci_set() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
local VALUE="$4"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} set "$PACKAGE.$CONFIG.$OPTION=$VALUE"
|
||||
}
|
||||
|
||||
uci_add_list() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
local VALUE="$4"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} add_list "$PACKAGE.$CONFIG.$OPTION=$VALUE"
|
||||
}
|
||||
|
||||
uci_get_state() {
|
||||
uci_get "$1" "$2" "$3" "$4" "/var/state"
|
||||
}
|
||||
|
||||
uci_get() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
local DEFAULT="$4"
|
||||
local STATE="$5"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} ${STATE:+-P $STATE} -q get "$PACKAGE${CONFIG:+.$CONFIG}${OPTION:+.$OPTION}"
|
||||
RET="$?"
|
||||
[ "$RET" -ne 0 ] && [ -n "$DEFAULT" ] && echo "$DEFAULT"
|
||||
return "$RET"
|
||||
}
|
||||
|
||||
uci_add() {
|
||||
local PACKAGE="$1"
|
||||
local TYPE="$2"
|
||||
local CONFIG="$3"
|
||||
|
||||
if [ -z "$CONFIG" ]; then
|
||||
export ${NO_EXPORT:+-n} CONFIG_SECTION="$(/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} add "$PACKAGE" "$TYPE")"
|
||||
else
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} set "$PACKAGE.$CONFIG=$TYPE"
|
||||
export ${NO_EXPORT:+-n} CONFIG_SECTION="$CONFIG"
|
||||
fi
|
||||
}
|
||||
|
||||
uci_rename() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
local VALUE="$4"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} rename "$PACKAGE.$CONFIG${VALUE:+.$OPTION}=${VALUE:-$OPTION}"
|
||||
}
|
||||
|
||||
uci_remove() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} del "$PACKAGE.$CONFIG${OPTION:+.$OPTION}"
|
||||
}
|
||||
|
||||
uci_remove_list() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
local VALUE="$4"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} del_list "$PACKAGE.$CONFIG.$OPTION=$VALUE"
|
||||
}
|
||||
|
||||
uci_revert() {
|
||||
local PACKAGE="$1"
|
||||
local CONFIG="$2"
|
||||
local OPTION="$3"
|
||||
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} revert "$PACKAGE${CONFIG:+.$CONFIG}${OPTION:+.$OPTION}"
|
||||
}
|
||||
|
||||
uci_commit() {
|
||||
local PACKAGE="$1"
|
||||
/sbin/uci ${UCI_CONFIG_DIR:+-c $UCI_CONFIG_DIR} commit $PACKAGE
|
||||
}
|
||||
436
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/functions.sh
Executable file
436
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/functions.sh
Executable file
@@ -0,0 +1,436 @@
|
||||
# Copyright (C) 2006-2014 OpenWrt.org
|
||||
# Copyright (C) 2006 Fokus Fraunhofer <carsten.tittel@fokus.fraunhofer.de>
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
|
||||
debug () {
|
||||
${DEBUG:-:} "$@"
|
||||
}
|
||||
|
||||
# newline
|
||||
N="
|
||||
"
|
||||
|
||||
_C=0
|
||||
NO_EXPORT=1
|
||||
LOAD_STATE=1
|
||||
LIST_SEP=" "
|
||||
|
||||
# xor multiple hex values of the same length
|
||||
xor() {
|
||||
local val
|
||||
local ret="0x$1"
|
||||
local retlen=${#1}
|
||||
|
||||
shift
|
||||
while [ -n "$1" ]; do
|
||||
val="0x$1"
|
||||
ret=$((ret ^ val))
|
||||
shift
|
||||
done
|
||||
|
||||
printf "%0${retlen}x" "$ret"
|
||||
}
|
||||
|
||||
append() {
|
||||
local var="$1"
|
||||
local value="$2"
|
||||
local sep="${3:- }"
|
||||
|
||||
eval "export ${NO_EXPORT:+-n} -- \"$var=\${$var:+\${$var}\${value:+\$sep}}\$value\""
|
||||
}
|
||||
|
||||
list_contains() {
|
||||
local var="$1"
|
||||
local str="$2"
|
||||
local val
|
||||
|
||||
eval "val=\" \${$var} \""
|
||||
[ "${val%% $str *}" != "$val" ]
|
||||
}
|
||||
|
||||
config_load() {
|
||||
[ -n "$IPKG_INSTROOT" ] && return 0
|
||||
uci_load "$@"
|
||||
}
|
||||
|
||||
reset_cb() {
|
||||
config_cb() { return 0; }
|
||||
option_cb() { return 0; }
|
||||
list_cb() { return 0; }
|
||||
}
|
||||
reset_cb
|
||||
|
||||
package() {
|
||||
return 0
|
||||
}
|
||||
|
||||
config () {
|
||||
local cfgtype="$1"
|
||||
local name="$2"
|
||||
|
||||
export ${NO_EXPORT:+-n} CONFIG_NUM_SECTIONS=$((CONFIG_NUM_SECTIONS + 1))
|
||||
name="${name:-cfg$CONFIG_NUM_SECTIONS}"
|
||||
append CONFIG_SECTIONS "$name"
|
||||
export ${NO_EXPORT:+-n} CONFIG_SECTION="$name"
|
||||
config_set "$CONFIG_SECTION" "TYPE" "${cfgtype}"
|
||||
[ -n "$NO_CALLBACK" ] || config_cb "$cfgtype" "$name"
|
||||
}
|
||||
|
||||
option () {
|
||||
local varname="$1"; shift
|
||||
local value="$*"
|
||||
|
||||
config_set "$CONFIG_SECTION" "${varname}" "${value}"
|
||||
[ -n "$NO_CALLBACK" ] || option_cb "$varname" "$*"
|
||||
}
|
||||
|
||||
list() {
|
||||
local varname="$1"; shift
|
||||
local value="$*"
|
||||
local len
|
||||
|
||||
config_get len "$CONFIG_SECTION" "${varname}_LENGTH" 0
|
||||
[ $len = 0 ] && append CONFIG_LIST_STATE "${CONFIG_SECTION}_${varname}"
|
||||
len=$((len + 1))
|
||||
config_set "$CONFIG_SECTION" "${varname}_ITEM$len" "$value"
|
||||
config_set "$CONFIG_SECTION" "${varname}_LENGTH" "$len"
|
||||
append "CONFIG_${CONFIG_SECTION}_${varname}" "$value" "$LIST_SEP"
|
||||
[ -n "$NO_CALLBACK" ] || list_cb "$varname" "$*"
|
||||
}
|
||||
|
||||
config_unset() {
|
||||
config_set "$1" "$2" ""
|
||||
}
|
||||
|
||||
# config_get <variable> <section> <option> [<default>]
|
||||
# config_get <section> <option>
|
||||
config_get() {
|
||||
case "$2${3:-$1}" in
|
||||
*[!A-Za-z0-9_]*) : ;;
|
||||
*)
|
||||
case "$3" in
|
||||
"") eval echo "\"\${CONFIG_${1}_${2}:-\${4}}\"";;
|
||||
*) eval export ${NO_EXPORT:+-n} -- "${1}=\${CONFIG_${2}_${3}:-\${4}}";;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# get_bool <value> [<default>]
|
||||
get_bool() {
|
||||
local _tmp="$1"
|
||||
case "$_tmp" in
|
||||
1|on|true|yes|enabled) _tmp=1;;
|
||||
0|off|false|no|disabled) _tmp=0;;
|
||||
*) _tmp="$2";;
|
||||
esac
|
||||
echo -n "$_tmp"
|
||||
}
|
||||
|
||||
# config_get_bool <variable> <section> <option> [<default>]
|
||||
config_get_bool() {
|
||||
local _tmp
|
||||
config_get _tmp "$2" "$3" "$4"
|
||||
_tmp="$(get_bool "$_tmp" "$4")"
|
||||
export ${NO_EXPORT:+-n} "$1=$_tmp"
|
||||
}
|
||||
|
||||
config_set() {
|
||||
local section="$1"
|
||||
local option="$2"
|
||||
local value="$3"
|
||||
|
||||
export ${NO_EXPORT:+-n} "CONFIG_${section}_${option}=${value}"
|
||||
}
|
||||
|
||||
config_foreach() {
|
||||
local ___function="$1"
|
||||
[ "$#" -ge 1 ] && shift
|
||||
local ___type="$1"
|
||||
[ "$#" -ge 1 ] && shift
|
||||
local section cfgtype
|
||||
|
||||
[ -z "$CONFIG_SECTIONS" ] && return 0
|
||||
for section in ${CONFIG_SECTIONS}; do
|
||||
config_get cfgtype "$section" TYPE
|
||||
[ -n "$___type" ] && [ "x$cfgtype" != "x$___type" ] && continue
|
||||
eval "$___function \"\$section\" \"\$@\""
|
||||
done
|
||||
}
|
||||
|
||||
config_list_foreach() {
|
||||
[ "$#" -ge 3 ] || return 0
|
||||
local section="$1"; shift
|
||||
local option="$1"; shift
|
||||
local function="$1"; shift
|
||||
local val
|
||||
local len
|
||||
local c=1
|
||||
|
||||
config_get len "${section}" "${option}_LENGTH"
|
||||
[ -z "$len" ] && return 0
|
||||
while [ $c -le "$len" ]; do
|
||||
config_get val "${section}" "${option}_ITEM$c"
|
||||
eval "$function \"\$val\" \"\$@\""
|
||||
c="$((c + 1))"
|
||||
done
|
||||
}
|
||||
|
||||
default_prerm() {
|
||||
local root="${IPKG_INSTROOT}"
|
||||
local pkgname="$(basename ${1%.*})"
|
||||
local ret=0
|
||||
|
||||
if [ -f "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" ]; then
|
||||
( . "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" )
|
||||
ret=$?
|
||||
fi
|
||||
|
||||
local shell="$(command -v bash)"
|
||||
for i in $(grep -s "^/etc/init.d/" "$root/usr/lib/opkg/info/${pkgname}.list"); do
|
||||
if [ -n "$root" ]; then
|
||||
${shell:-/bin/sh} "$root/etc/rc.common" "$root$i" disable
|
||||
else
|
||||
if [ "$PKG_UPGRADE" != "1" ]; then
|
||||
"$i" disable
|
||||
fi
|
||||
"$i" stop
|
||||
fi
|
||||
done
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
||||
add_group_and_user() {
|
||||
local pkgname="$1"
|
||||
local rusers="$(sed -ne 's/^Require-User: *//p' $root/usr/lib/opkg/info/${pkgname}.control 2>/dev/null)"
|
||||
|
||||
if [ -n "$rusers" ]; then
|
||||
local tuple oIFS="$IFS"
|
||||
for tuple in $rusers; do
|
||||
local uid gid uname gname addngroups addngroup addngname addngid
|
||||
|
||||
IFS=":"
|
||||
set -- $tuple; uname="$1"; gname="$2"; addngroups="$3"
|
||||
IFS="="
|
||||
set -- $uname; uname="$1"; uid="$2"
|
||||
set -- $gname; gname="$1"; gid="$2"
|
||||
IFS="$oIFS"
|
||||
|
||||
if [ -n "$gname" ] && [ -n "$gid" ]; then
|
||||
group_exists "$gname" || group_add "$gname" "$gid"
|
||||
elif [ -n "$gname" ]; then
|
||||
gid="$(group_add_next "$gname")"
|
||||
fi
|
||||
|
||||
if [ -n "$uname" ]; then
|
||||
user_exists "$uname" || user_add "$uname" "$uid" "$gid"
|
||||
fi
|
||||
|
||||
if [ -n "$uname" ] && [ -n "$gname" ]; then
|
||||
group_add_user "$gname" "$uname"
|
||||
fi
|
||||
|
||||
if [ -n "$uname" ] && [ -n "$addngroups" ]; then
|
||||
oIFS="$IFS"
|
||||
IFS=","
|
||||
for addngroup in $addngroups ; do
|
||||
IFS="="
|
||||
set -- $addngroup; addngname="$1"; addngid="$2"
|
||||
if [ -n "$addngid" ]; then
|
||||
group_exists "$addngname" || group_add "$addngname" "$addngid"
|
||||
else
|
||||
group_add_next "$addngname"
|
||||
fi
|
||||
|
||||
group_add_user "$addngname" "$uname"
|
||||
done
|
||||
IFS="$oIFS"
|
||||
fi
|
||||
|
||||
unset uid gid uname gname addngroups addngroup addngname addngid
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
default_postinst() {
|
||||
local root="${IPKG_INSTROOT}"
|
||||
local pkgname="$(basename ${1%.*})"
|
||||
local filelist="/usr/lib/opkg/info/${pkgname}.list"
|
||||
local ret=0
|
||||
|
||||
add_group_and_user "${pkgname}"
|
||||
|
||||
if [ -f "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" ]; then
|
||||
( . "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" )
|
||||
ret=$?
|
||||
fi
|
||||
|
||||
if [ -d "$root/rootfs-overlay" ]; then
|
||||
cp -R $root/rootfs-overlay/. $root/
|
||||
rm -fR $root/rootfs-overlay/
|
||||
fi
|
||||
|
||||
if [ -z "$root" ]; then
|
||||
if grep -m1 -q -s "^/etc/modules.d/" "$filelist"; then
|
||||
kmodloader
|
||||
fi
|
||||
|
||||
if grep -m1 -q -s "^/etc/sysctl.d/" "$filelist"; then
|
||||
/etc/init.d/sysctl restart
|
||||
fi
|
||||
|
||||
if grep -m1 -q -s "^/etc/uci-defaults/" "$filelist"; then
|
||||
[ -d /tmp/.uci ] || mkdir -p /tmp/.uci
|
||||
for i in $(grep -s "^/etc/uci-defaults/" "$filelist"); do
|
||||
( [ -f "$i" ] && cd "$(dirname $i)" && . "$i" ) && rm -f "$i"
|
||||
done
|
||||
uci commit
|
||||
fi
|
||||
|
||||
rm -f /tmp/luci-indexcache
|
||||
fi
|
||||
|
||||
local shell="$(command -v bash)"
|
||||
for i in $(grep -s "^/etc/init.d/" "$root$filelist"); do
|
||||
if [ -n "$root" ]; then
|
||||
${shell:-/bin/sh} "$root/etc/rc.common" "$root$i" enable
|
||||
else
|
||||
if [ "$PKG_UPGRADE" != "1" ]; then
|
||||
"$i" enable
|
||||
fi
|
||||
"$i" start
|
||||
fi
|
||||
done
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
||||
include() {
|
||||
local file
|
||||
|
||||
for file in $(ls $1/*.sh 2>/dev/null); do
|
||||
. $file
|
||||
done
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
[ -d /dev/mtdblock ] && PREFIX=/dev/mtdblock/
|
||||
echo "${INDEX:+$PREFIX$INDEX}"
|
||||
}
|
||||
|
||||
find_mmc_part() {
|
||||
local DEVNAME PARTNAME ROOTDEV
|
||||
|
||||
if grep -q "$1" /proc/mtd; then
|
||||
echo "" && return 0
|
||||
fi
|
||||
|
||||
if [ -n "$2" ]; then
|
||||
ROOTDEV="$2"
|
||||
else
|
||||
ROOTDEV="mmcblk*"
|
||||
fi
|
||||
|
||||
for DEVNAME in /sys/block/$ROOTDEV/mmcblk*p*; do
|
||||
PARTNAME="$(grep PARTNAME ${DEVNAME}/uevent | cut -f2 -d'=')"
|
||||
[ "$PARTNAME" = "$1" ] && echo "/dev/$(basename $DEVNAME)" && return 0
|
||||
done
|
||||
}
|
||||
|
||||
group_add() {
|
||||
local name="$1"
|
||||
local gid="$2"
|
||||
local rc
|
||||
[ -f "${IPKG_INSTROOT}/etc/group" ] || return 1
|
||||
[ -n "$IPKG_INSTROOT" ] || lock /var/lock/group
|
||||
echo "${name}:x:${gid}:" >> ${IPKG_INSTROOT}/etc/group
|
||||
[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/group
|
||||
}
|
||||
|
||||
group_exists() {
|
||||
grep -qs "^${1}:" ${IPKG_INSTROOT}/etc/group
|
||||
}
|
||||
|
||||
group_add_next() {
|
||||
local gid gids
|
||||
gid=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group | cut -d: -f3)
|
||||
if [ -n "$gid" ]; then
|
||||
echo $gid
|
||||
return
|
||||
fi
|
||||
gids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/group)
|
||||
gid=65536
|
||||
while echo "$gids" | grep -q "^$gid$"; do
|
||||
gid=$((gid + 1))
|
||||
done
|
||||
group_add $1 $gid
|
||||
echo $gid
|
||||
}
|
||||
|
||||
group_add_user() {
|
||||
local grp delim=","
|
||||
grp=$(grep -s "^${1}:" ${IPKG_INSTROOT}/etc/group)
|
||||
echo "$grp" | cut -d: -f4 | grep -q $2 && return
|
||||
echo "$grp" | grep -q ":$" && delim=""
|
||||
[ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd
|
||||
sed -i "s/$grp/$grp$delim$2/g" ${IPKG_INSTROOT}/etc/group
|
||||
if [ -z "$IPKG_INSTROOT" ] && [ -x /usr/sbin/selinuxenabled ] && selinuxenabled; then
|
||||
restorecon /etc/group
|
||||
fi
|
||||
[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd
|
||||
}
|
||||
|
||||
user_add() {
|
||||
local name="${1}"
|
||||
local uid="${2}"
|
||||
local gid="${3}"
|
||||
local desc="${4:-$1}"
|
||||
local home="${5:-/var/run/$1}"
|
||||
local shell="${6:-/bin/false}"
|
||||
local rc
|
||||
[ -z "$uid" ] && {
|
||||
uids=$(cut -d: -f3 ${IPKG_INSTROOT}/etc/passwd)
|
||||
uid=65536
|
||||
while echo "$uids" | grep -q "^$uid$"; do
|
||||
uid=$((uid + 1))
|
||||
done
|
||||
}
|
||||
[ -z "$gid" ] && gid=$uid
|
||||
[ -f "${IPKG_INSTROOT}/etc/passwd" ] || return 1
|
||||
[ -n "$IPKG_INSTROOT" ] || lock /var/lock/passwd
|
||||
echo "${name}:x:${uid}:${gid}:${desc}:${home}:${shell}" >> ${IPKG_INSTROOT}/etc/passwd
|
||||
echo "${name}:x:0:0:99999:7:::" >> ${IPKG_INSTROOT}/etc/shadow
|
||||
[ -n "$IPKG_INSTROOT" ] || lock -u /var/lock/passwd
|
||||
}
|
||||
|
||||
user_exists() {
|
||||
grep -qs "^${1}:" ${IPKG_INSTROOT}/etc/passwd
|
||||
}
|
||||
|
||||
board_name() {
|
||||
[ -e /tmp/sysinfo/board_name ] && cat /tmp/sysinfo/board_name || echo "generic"
|
||||
}
|
||||
|
||||
cmdline_get_var() {
|
||||
local var=$1
|
||||
local cmdlinevar tmp
|
||||
|
||||
for cmdlinevar in $(cat /proc/cmdline); do
|
||||
tmp=${cmdlinevar##${var}}
|
||||
[ "=" = "${tmp:0:1}" ] && echo ${tmp:1}
|
||||
done
|
||||
}
|
||||
|
||||
[ -z "$IPKG_INSTROOT" ] && [ -f /lib/config/uci.sh ] && . /lib/config/uci.sh
|
||||
103
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/functions/service.sh
Executable file
103
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/functions/service.sh
Executable file
@@ -0,0 +1,103 @@
|
||||
#
|
||||
# service: simple wrapper around start-stop-daemon
|
||||
#
|
||||
# Usage: service ACTION EXEC ARGS...
|
||||
#
|
||||
# Action:
|
||||
# -C check if EXEC is alive
|
||||
# -S start EXEC, passing it ARGS as its arguments
|
||||
# -K kill EXEC, sending it a TERM signal if not specified otherwise
|
||||
#
|
||||
# Environment variables exposed:
|
||||
# SERVICE_DAEMONIZE run EXEC in background
|
||||
# SERVICE_WRITE_PID create a pid-file and use it for matching
|
||||
# SERVICE_MATCH_EXEC use EXEC command-line for matching (default)
|
||||
# SERVICE_MATCH_NAME use EXEC process name for matching
|
||||
# SERVICE_USE_PID assume EXEC create its own pid-file and use it for matching
|
||||
# SERVICE_NAME process name to use (default to EXEC file part)
|
||||
# SERVICE_PID_FILE pid file to use (default to /var/run/$SERVICE_NAME.pid)
|
||||
# SERVICE_SIG signal to send when using -K
|
||||
# SERVICE_SIG_RELOAD default signal used when reloading
|
||||
# SERVICE_SIG_STOP default signal used when stopping
|
||||
# SERVICE_STOP_TIME time to wait for a process to stop gracefully before killing it
|
||||
# SERVICE_UID user EXEC should be run as
|
||||
# SERVICE_GID group EXEC should be run as
|
||||
#
|
||||
# SERVICE_DEBUG don't do anything, but show what would be done
|
||||
# SERVICE_QUIET don't print anything
|
||||
#
|
||||
|
||||
SERVICE_QUIET=1
|
||||
SERVICE_SIG_RELOAD="HUP"
|
||||
SERVICE_SIG_STOP="TERM"
|
||||
SERVICE_STOP_TIME=5
|
||||
SERVICE_MATCH_EXEC=1
|
||||
|
||||
service() {
|
||||
local ssd
|
||||
local exec
|
||||
local name
|
||||
local start
|
||||
ssd="${SERVICE_DEBUG:+echo }start-stop-daemon${SERVICE_QUIET:+ -q}"
|
||||
case "$1" in
|
||||
-C)
|
||||
ssd="$ssd -K -t"
|
||||
;;
|
||||
-S)
|
||||
ssd="$ssd -S${SERVICE_DAEMONIZE:+ -b}${SERVICE_WRITE_PID:+ -m}"
|
||||
start=1
|
||||
;;
|
||||
-K)
|
||||
ssd="$ssd -K${SERVICE_SIG:+ -s $SERVICE_SIG}"
|
||||
;;
|
||||
*)
|
||||
echo "service: unknown ACTION '$1'" 1>&2
|
||||
return 1
|
||||
esac
|
||||
shift
|
||||
exec="$1"
|
||||
[ -n "$exec" ] || {
|
||||
echo "service: missing argument" 1>&2
|
||||
return 1
|
||||
}
|
||||
[ -x "$exec" ] || {
|
||||
echo "service: file '$exec' is not executable" 1>&2
|
||||
return 1
|
||||
}
|
||||
name="${SERVICE_NAME:-${exec##*/}}"
|
||||
[ -z "$SERVICE_USE_PID$SERVICE_WRITE_PID$SERVICE_PID_FILE" ] \
|
||||
|| ssd="$ssd -p ${SERVICE_PID_FILE:-/var/run/$name.pid}"
|
||||
[ -z "$SERVICE_MATCH_NAME" ] || ssd="$ssd -n $name"
|
||||
ssd="$ssd${SERVICE_UID:+ -c $SERVICE_UID${SERVICE_GID:+:$SERVICE_GID}}"
|
||||
[ -z "$SERVICE_MATCH_EXEC$start" ] || ssd="$ssd -x $exec"
|
||||
shift
|
||||
$ssd${1:+ -- "$@"}
|
||||
}
|
||||
|
||||
service_check() {
|
||||
service -C "$@"
|
||||
}
|
||||
|
||||
service_signal() {
|
||||
SERVICE_SIG="${SERVICE_SIG:-USR1}" service -K "$@"
|
||||
}
|
||||
|
||||
service_start() {
|
||||
service -S "$@"
|
||||
}
|
||||
|
||||
service_stop() {
|
||||
local try
|
||||
SERVICE_SIG="${SERVICE_SIG:-$SERVICE_SIG_STOP}" service -K "$@" || return 1
|
||||
while [ $((try++)) -lt $SERVICE_STOP_TIME ]; do
|
||||
service -C "$@" || return 0
|
||||
sleep 1
|
||||
done
|
||||
SERVICE_SIG="KILL" service -K "$@"
|
||||
sleep 1
|
||||
! service -C "$@"
|
||||
}
|
||||
|
||||
service_reload() {
|
||||
SERVICE_SIG="${SERVICE_SIG:-$SERVICE_SIG_RELOAD}" service -K "$@"
|
||||
}
|
||||
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/libuci.so
Executable file
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/libuci.so
Executable file
Binary file not shown.
@@ -0,0 +1,13 @@
|
||||
pi_suppress_stderr="y"
|
||||
fs_failsafe_wait_timeout=2
|
||||
pi_init_path="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
pi_init_env=""
|
||||
pi_init_cmd="/sbin/init"
|
||||
pi_init_suppress_stderr="y"
|
||||
pi_ifname=""
|
||||
pi_ip="192.168.1.1"
|
||||
pi_netmask="255.255.255.0"
|
||||
pi_broadcast="192.168.1.255"
|
||||
pi_preinit_net_messages=""
|
||||
pi_preinit_no_failsafe_netmsg=""
|
||||
pi_preinit_no_failsafe=""
|
||||
@@ -0,0 +1,5 @@
|
||||
define_default_set_state() {
|
||||
. /etc/diag.sh
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main define_default_set_state
|
||||
10
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/02_sysinfo
Executable file
10
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/02_sysinfo
Executable file
@@ -0,0 +1,10 @@
|
||||
do_sysinfo_generic() {
|
||||
[ -d /proc/device-tree ] || return
|
||||
mkdir -p /tmp/sysinfo
|
||||
[ -e /tmp/sysinfo/board_name ] || \
|
||||
echo "$(strings /proc/device-tree/compatible | head -1)" > /tmp/sysinfo/board_name
|
||||
[ ! -e /tmp/sysinfo/model -a -e /proc/device-tree/model ] && \
|
||||
echo "$(cat /proc/device-tree/model)" > /tmp/sysinfo/model
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main do_sysinfo_generic
|
||||
@@ -0,0 +1,17 @@
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
# commands for emitting messages to network in failsafe mode
|
||||
|
||||
indicate_failsafe_led () {
|
||||
set_state failsafe
|
||||
}
|
||||
|
||||
indicate_failsafe() {
|
||||
[ "$pi_preinit_no_failsafe" = "y" ] && return
|
||||
echo "- failsafe -"
|
||||
preinit_net_echo "Entering Failsafe!\n"
|
||||
indicate_failsafe_led
|
||||
}
|
||||
|
||||
boot_hook_add failsafe indicate_failsafe
|
||||
166
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/10_indicate_preinit
Executable file
166
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/10_indicate_preinit
Executable file
@@ -0,0 +1,166 @@
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
preinit_ip_config() {
|
||||
local netdev vid
|
||||
|
||||
netdev=${1%\.*}
|
||||
vid=${1#*\.}
|
||||
|
||||
if [ "$vid" = "$netdev" ]; then
|
||||
vid=
|
||||
fi
|
||||
|
||||
grep -q "$netdev" /proc/net/dev || return
|
||||
|
||||
if [ -n "$vid" ]; then
|
||||
ip link add link $netdev name $1 type vlan id $vid
|
||||
fi
|
||||
|
||||
ip link set dev $netdev up
|
||||
if [ -n "$vid" ]; then
|
||||
ip link set dev $1 up
|
||||
fi
|
||||
ip -4 address add $pi_ip/$pi_netmask broadcast $pi_broadcast dev $1
|
||||
}
|
||||
|
||||
preinit_config_switch() {
|
||||
local role roles ports device enable reset
|
||||
|
||||
local name=$1
|
||||
local lan_if=$2
|
||||
|
||||
json_select switch
|
||||
json_select $name
|
||||
|
||||
json_get_vars enable reset
|
||||
|
||||
if [ "$reset" -eq "1" ]; then
|
||||
swconfig dev $name set reset
|
||||
fi
|
||||
swconfig dev $name set enable_vlan $enable
|
||||
|
||||
if json_is_a roles array; then
|
||||
json_get_keys roles roles
|
||||
json_select roles
|
||||
|
||||
for role in $roles; do
|
||||
json_select "$role"
|
||||
json_get_vars ports device
|
||||
json_select ..
|
||||
|
||||
if [ "$device" = "$lan_if" ]; then
|
||||
swconfig dev $name vlan $role set ports "$ports"
|
||||
fi
|
||||
done
|
||||
|
||||
json_select ..
|
||||
fi
|
||||
|
||||
swconfig dev $name set apply
|
||||
|
||||
json_select ..
|
||||
json_select ..
|
||||
}
|
||||
|
||||
preinit_config_board() {
|
||||
/bin/board_detect /tmp/board.json
|
||||
|
||||
[ -f "/tmp/board.json" ] || return
|
||||
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
json_init
|
||||
json_load "$(cat /tmp/board.json)"
|
||||
|
||||
json_select network
|
||||
json_select "lan"
|
||||
json_get_vars device
|
||||
json_get_values ports ports
|
||||
json_select ..
|
||||
json_select ..
|
||||
|
||||
[ -n "$device" -o -n "$ports" ] || return
|
||||
|
||||
# swconfig uses $device and DSA uses ports
|
||||
[ -z "$ports" ] && {
|
||||
ports="$device"
|
||||
}
|
||||
|
||||
# only use the first one
|
||||
ifname=${ports%% *}
|
||||
|
||||
if [ -x /sbin/swconfig ]; then
|
||||
# configure the switch, if present
|
||||
|
||||
json_get_keys keys switch
|
||||
for key in $keys; do
|
||||
preinit_config_switch $key $ifname
|
||||
done
|
||||
else
|
||||
# trim any vlan ids
|
||||
ifname=${ifname%\.*}
|
||||
# trim any vlan modifiers like :t
|
||||
ifname=${ifname%\:*}
|
||||
fi
|
||||
|
||||
pi_ifname=$ifname
|
||||
|
||||
preinit_ip_config $pi_ifname
|
||||
}
|
||||
|
||||
preinit_ip() {
|
||||
[ "$pi_preinit_no_failsafe" = "y" ] && return
|
||||
|
||||
# if the preinit interface isn't specified and ifname is set in
|
||||
# preinit.arch use that interface
|
||||
if [ -z "$pi_ifname" ]; then
|
||||
pi_ifname=$ifname
|
||||
fi
|
||||
|
||||
if [ -n "$pi_ifname" ]; then
|
||||
preinit_ip_config $pi_ifname
|
||||
elif [ -d "/etc/board.d/" ]; then
|
||||
preinit_config_board
|
||||
fi
|
||||
|
||||
preinit_net_echo "Doing OpenWrt Preinit\n"
|
||||
}
|
||||
|
||||
preinit_ip_deconfig() {
|
||||
[ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
|
||||
local netdev vid
|
||||
|
||||
netdev=${pi_ifname%\.*}
|
||||
vid=${pi_ifname#*\.}
|
||||
|
||||
if [ "$vid" = "$netdev" ]; then
|
||||
vid=
|
||||
fi
|
||||
|
||||
ip -4 address flush dev $pi_ifname
|
||||
ip link set dev $netdev down
|
||||
|
||||
if [ -n "$vid" ]; then
|
||||
ip link delete $pi_ifname
|
||||
fi
|
||||
}
|
||||
}
|
||||
|
||||
preinit_net_echo() {
|
||||
[ -n "$pi_ifname" ] && grep -q "$pi_ifname" /proc/net/dev && {
|
||||
{
|
||||
[ "$pi_preinit_net_messages" = "y" ] || {
|
||||
[ "$pi_failsafe_net_message" = "true" ] &&
|
||||
[ "$pi_preinit_no_failsafe_netmsg" != "y" ]
|
||||
}
|
||||
} && netmsg $pi_broadcast "$1"
|
||||
}
|
||||
}
|
||||
|
||||
pi_indicate_preinit() {
|
||||
set_state preinit
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main preinit_ip
|
||||
boot_hook_add preinit_main pi_indicate_preinit
|
||||
98
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/30_failsafe_wait
Executable file
98
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/30_failsafe_wait
Executable file
@@ -0,0 +1,98 @@
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
fs_wait_for_key () {
|
||||
local timeout=$3
|
||||
local timer
|
||||
local do_keypress
|
||||
local keypress_true="$(mktemp)"
|
||||
local keypress_wait="$(mktemp)"
|
||||
local keypress_sec="$(mktemp)"
|
||||
if [ -z "$keypress_wait" ]; then
|
||||
keypress_wait=/tmp/.keypress_wait
|
||||
touch $keypress_wait
|
||||
fi
|
||||
if [ -z "$keypress_true" ]; then
|
||||
keypress_true=/tmp/.keypress_true
|
||||
touch $keypress_true
|
||||
fi
|
||||
if [ -z "$keypress_sec" ]; then
|
||||
keypress_sec=/tmp/.keypress_sec
|
||||
touch $keypress_sec
|
||||
fi
|
||||
|
||||
trap "echo 'true' >$keypress_true; lock -u $keypress_wait ; rm -f $keypress_wait" INT
|
||||
trap "echo 'true' >$keypress_true; lock -u $keypress_wait ; rm -f $keypress_wait" USR1
|
||||
|
||||
[ -n "$timeout" ] || timeout=1
|
||||
[ $timeout -ge 1 ] || timeout=1
|
||||
timer=$timeout
|
||||
lock $keypress_wait
|
||||
{
|
||||
while [ $timer -gt 0 ]; do
|
||||
pi_failsafe_net_message=true \
|
||||
preinit_net_echo "Please press button now to enter failsafe"
|
||||
echo "$timer" >$keypress_sec
|
||||
timer=$(($timer - 1))
|
||||
sleep 1
|
||||
done
|
||||
lock -u $keypress_wait
|
||||
rm -f $keypress_wait
|
||||
} &
|
||||
|
||||
[ "$pi_preinit_no_failsafe" != "y" ] && echo "Press the [$1] key and hit [enter] $2"
|
||||
echo "Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level"
|
||||
# if we're on the console we wait for input
|
||||
{
|
||||
while [ -r $keypress_wait ]; do
|
||||
timer="$(cat $keypress_sec)"
|
||||
|
||||
[ -n "$timer" ] || timer=1
|
||||
timer="${timer%%\ *}"
|
||||
[ $timer -ge 1 ] || timer=1
|
||||
do_keypress=""
|
||||
{
|
||||
read -t "$timer" do_keypress
|
||||
case "$do_keypress" in
|
||||
$1)
|
||||
echo "true" >$keypress_true
|
||||
;;
|
||||
1 | 2 | 3 | 4)
|
||||
echo "$do_keypress" >/tmp/debug_level
|
||||
;;
|
||||
*)
|
||||
continue;
|
||||
;;
|
||||
esac
|
||||
lock -u $keypress_wait
|
||||
rm -f $keypress_wait
|
||||
}
|
||||
done
|
||||
}
|
||||
lock -w $keypress_wait
|
||||
|
||||
keypressed=1
|
||||
[ "$(cat $keypress_true)" = "true" ] && keypressed=0
|
||||
|
||||
rm -f $keypress_true
|
||||
rm -f $keypress_wait
|
||||
rm -f $keypress_sec
|
||||
|
||||
return $keypressed
|
||||
}
|
||||
|
||||
failsafe_wait() {
|
||||
FAILSAFE=
|
||||
[ "$pi_preinit_no_failsafe" = "y" ] && {
|
||||
fs_wait_for_key "" "" $fs_failsafe_wait_timeout
|
||||
return
|
||||
}
|
||||
grep -q 'failsafe=' /proc/cmdline && FAILSAFE=true && export FAILSAFE
|
||||
if [ "$FAILSAFE" != "true" ]; then
|
||||
fs_wait_for_key f 'to enter failsafe mode' $fs_failsafe_wait_timeout && FAILSAFE=true
|
||||
[ -f "/tmp/failsafe_button" ] && FAILSAFE=true && echo "- failsafe button "$(cat /tmp/failsafe_button)" was pressed -"
|
||||
[ "$FAILSAFE" = "true" ] && export FAILSAFE && touch /tmp/failsafe
|
||||
fi
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main failsafe_wait
|
||||
@@ -0,0 +1,16 @@
|
||||
# Copyright (C) 2006-2010 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
run_failsafe_hook() {
|
||||
[ "$pi_preinit_no_failsafe" = "y" ] && return
|
||||
if [ "$FAILSAFE" = "true" ]; then
|
||||
lock /tmp/.failsafe
|
||||
boot_run_hook failsafe
|
||||
while [ ! -e /tmp/sysupgrade ]; do
|
||||
lock -w /tmp/.failsafe
|
||||
done
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main run_failsafe_hook
|
||||
@@ -0,0 +1,9 @@
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
indicate_regular_preinit() {
|
||||
preinit_net_echo "Continuing with Regular Preinit\n"
|
||||
set_state preinit_regular
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main indicate_regular_preinit
|
||||
12
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/70_initramfs_test
Executable file
12
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/70_initramfs_test
Executable file
@@ -0,0 +1,12 @@
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
initramfs_test() {
|
||||
if [ -n "$INITRAMFS" ]; then
|
||||
boot_run_hook initramfs
|
||||
preinit_ip_deconfig
|
||||
break
|
||||
fi
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main initramfs_test
|
||||
35
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/80_mount_root
Executable file
35
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/preinit/80_mount_root
Executable file
@@ -0,0 +1,35 @@
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
missing_lines() {
|
||||
local file1 file2 line
|
||||
file1="$1"
|
||||
file2="$2"
|
||||
oIFS="$IFS"
|
||||
IFS=":"
|
||||
while read line; do
|
||||
set -- $line
|
||||
grep -q "^$1:" "$file2" || echo "$*"
|
||||
done < "$file1"
|
||||
IFS="$oIFS"
|
||||
}
|
||||
|
||||
do_mount_root() {
|
||||
mount_root
|
||||
boot_run_hook preinit_mount_root
|
||||
[ -f /sysupgrade.tgz -o -f /tmp/sysupgrade.tar ] && {
|
||||
echo "- config restore -"
|
||||
cp /etc/passwd /etc/group /etc/shadow /tmp
|
||||
cd /
|
||||
[ -f /sysupgrade.tgz ] && tar xzf /sysupgrade.tgz
|
||||
[ -f /tmp/sysupgrade.tar ] && tar xf /tmp/sysupgrade.tar
|
||||
missing_lines /tmp/passwd /etc/passwd >> /etc/passwd
|
||||
missing_lines /tmp/group /etc/group >> /etc/group
|
||||
missing_lines /tmp/shadow /etc/shadow >> /etc/shadow
|
||||
rm /tmp/passwd /tmp/group /tmp/shadow
|
||||
# Prevent configuration corruption on a power loss
|
||||
sync
|
||||
}
|
||||
}
|
||||
|
||||
[ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_mount_root
|
||||
@@ -0,0 +1,8 @@
|
||||
#!/bin/sh
|
||||
|
||||
failsafe_dropbear () {
|
||||
dropbearkey -t rsa -s 1024 -f /tmp/dropbear_failsafe_host_key
|
||||
dropbear -r /tmp/dropbear_failsafe_host_key <> /dev/null 2>&1
|
||||
}
|
||||
|
||||
boot_hook_add failsafe failsafe_dropbear
|
||||
@@ -0,0 +1,14 @@
|
||||
# Copyright (C) 2006-2015 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
failsafe_shell() {
|
||||
local console="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | head -1 | sed -e 's/^console=//' -e 's/,.*//')"
|
||||
[ -n "$console" ] || console=console
|
||||
[ -c "/dev/$console" ] || return 0
|
||||
while true; do
|
||||
ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console"
|
||||
sleep 1
|
||||
done &
|
||||
}
|
||||
|
||||
boot_hook_add failsafe failsafe_shell
|
||||
@@ -0,0 +1,8 @@
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
run_init() {
|
||||
preinit_ip_deconfig
|
||||
}
|
||||
|
||||
boot_hook_add preinit_main run_init
|
||||
288
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/common.sh
Executable file
288
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/common.sh
Executable file
@@ -0,0 +1,288 @@
|
||||
RAM_ROOT=/tmp/root
|
||||
|
||||
export BACKUP_FILE=sysupgrade.tgz # file extracted by preinit
|
||||
|
||||
[ -x /usr/bin/ldd ] || ldd() { LD_TRACE_LOADED_OBJECTS=1 $*; }
|
||||
libs() { ldd $* 2>/dev/null | sed -E 's/(.* => )?(.*) .*/\2/'; }
|
||||
|
||||
install_file() { # <file> [ <file> ... ]
|
||||
local target dest dir
|
||||
for file in "$@"; do
|
||||
if [ -L "$file" ]; then
|
||||
target="$(readlink -f "$file")"
|
||||
dest="$RAM_ROOT/$file"
|
||||
[ ! -f "$dest" ] && {
|
||||
dir="$(dirname "$dest")"
|
||||
mkdir -p "$dir"
|
||||
ln -s "$target" "$dest"
|
||||
}
|
||||
file="$target"
|
||||
fi
|
||||
dest="$RAM_ROOT/$file"
|
||||
[ -f "$file" -a ! -f "$dest" ] && {
|
||||
dir="$(dirname "$dest")"
|
||||
mkdir -p "$dir"
|
||||
cp "$file" "$dest"
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
install_bin() {
|
||||
local src files
|
||||
src=$1
|
||||
files=$1
|
||||
[ -x "$src" ] && files="$src $(libs $src)"
|
||||
install_file $files
|
||||
}
|
||||
|
||||
run_hooks() {
|
||||
local arg="$1"; shift
|
||||
for func in "$@"; do
|
||||
eval "$func $arg"
|
||||
done
|
||||
}
|
||||
|
||||
ask_bool() {
|
||||
local default="$1"; shift;
|
||||
local answer="$default"
|
||||
|
||||
[ "$INTERACTIVE" -eq 1 ] && {
|
||||
case "$default" in
|
||||
0) echo -n "$* (y/N): ";;
|
||||
*) echo -n "$* (Y/n): ";;
|
||||
esac
|
||||
read answer
|
||||
case "$answer" in
|
||||
y*) answer=1;;
|
||||
n*) answer=0;;
|
||||
*) answer="$default";;
|
||||
esac
|
||||
}
|
||||
[ "$answer" -gt 0 ]
|
||||
}
|
||||
|
||||
_v() {
|
||||
[ -n "$VERBOSE" ] && [ "$VERBOSE" -ge 1 ] && echo "$*" >&2
|
||||
}
|
||||
|
||||
v() {
|
||||
_v "$(date) upgrade: $@"
|
||||
logger -p info -t upgrade "$@"
|
||||
}
|
||||
|
||||
json_string() {
|
||||
local v="$1"
|
||||
v="${v//\\/\\\\}"
|
||||
v="${v//\"/\\\"}"
|
||||
echo "\"$v\""
|
||||
}
|
||||
|
||||
rootfs_type() {
|
||||
/bin/mount | awk '($3 ~ /^\/$/) && ($5 !~ /rootfs/) { print $5 }'
|
||||
}
|
||||
|
||||
get_image() { # <source> [ <command> ]
|
||||
local from="$1"
|
||||
local cmd="$2"
|
||||
|
||||
if [ -z "$cmd" ]; then
|
||||
local magic="$(dd if="$from" bs=2 count=1 2>/dev/null | hexdump -n 2 -e '1/1 "%02x"')"
|
||||
case "$magic" in
|
||||
1f8b) cmd="busybox zcat";;
|
||||
*) cmd="cat";;
|
||||
esac
|
||||
fi
|
||||
|
||||
$cmd <"$from"
|
||||
}
|
||||
|
||||
get_image_dd() {
|
||||
local from="$1"; shift
|
||||
|
||||
(
|
||||
exec 3>&2
|
||||
( exec 3>&2; get_image "$from" 2>&1 1>&3 | grep -v -F ' Broken pipe' ) 2>&1 1>&3 \
|
||||
| ( exec 3>&2; dd "$@" 2>&1 1>&3 | grep -v -E ' records (in|out)') 2>&1 1>&3
|
||||
exec 3>&-
|
||||
)
|
||||
}
|
||||
|
||||
get_magic_word() {
|
||||
(get_image "$@" | dd bs=2 count=1 | hexdump -v -n 2 -e '1/1 "%02x"') 2>/dev/null
|
||||
}
|
||||
|
||||
get_magic_long() {
|
||||
(get_image "$@" | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2>/dev/null
|
||||
}
|
||||
|
||||
get_magic_gpt() {
|
||||
(get_image "$@" | dd bs=8 count=1 skip=64) 2>/dev/null
|
||||
}
|
||||
|
||||
get_magic_vfat() {
|
||||
(get_image "$@" | dd bs=3 count=1 skip=18) 2>/dev/null
|
||||
}
|
||||
|
||||
get_magic_fat32() {
|
||||
(get_image "$@" | dd bs=1 count=5 skip=82) 2>/dev/null
|
||||
}
|
||||
|
||||
part_magic_efi() {
|
||||
local magic=$(get_magic_gpt "$@")
|
||||
[ "$magic" = "EFI PART" ]
|
||||
}
|
||||
|
||||
part_magic_fat() {
|
||||
local magic=$(get_magic_vfat "$@")
|
||||
local magic_fat32=$(get_magic_fat32 "$@")
|
||||
[ "$magic" = "FAT" ] || [ "$magic_fat32" = "FAT32" ]
|
||||
}
|
||||
|
||||
export_bootdevice() {
|
||||
local cmdline uuid blockdev uevent line class
|
||||
local MAJOR MINOR DEVNAME DEVTYPE
|
||||
local rootpart="$(cmdline_get_var root)"
|
||||
|
||||
case "$rootpart" in
|
||||
PARTUUID=[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9])
|
||||
uuid="${rootpart#PARTUUID=}"
|
||||
uuid="${uuid%-[a-f0-9][a-f0-9]}"
|
||||
for blockdev in $(find /dev -type b); do
|
||||
set -- $(dd if=$blockdev bs=1 skip=440 count=4 2>/dev/null | hexdump -v -e '4/1 "%02x "')
|
||||
if [ "$4$3$2$1" = "$uuid" ]; then
|
||||
uevent="/sys/class/block/${blockdev##*/}/uevent"
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
PARTUUID=????????-????-????-????-??????????02)
|
||||
uuid="${rootpart#PARTUUID=}"
|
||||
uuid="${uuid%02}00"
|
||||
for disk in $(find /dev -type b); do
|
||||
set -- $(dd if=$disk bs=1 skip=568 count=16 2>/dev/null | hexdump -v -e '8/1 "%02x "" "2/1 "%02x""-"6/1 "%02x"')
|
||||
if [ "$4$3$2$1-$6$5-$8$7-$9" = "$uuid" ]; then
|
||||
uevent="/sys/class/block/${disk##*/}/uevent"
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
/dev/*)
|
||||
uevent="/sys/class/block/${rootpart##*/}/../uevent"
|
||||
;;
|
||||
0x[a-f0-9][a-f0-9][a-f0-9] | 0x[a-f0-9][a-f0-9][a-f0-9][a-f0-9] | \
|
||||
[a-f0-9][a-f0-9][a-f0-9] | [a-f0-9][a-f0-9][a-f0-9][a-f0-9])
|
||||
rootpart=0x${rootpart#0x}
|
||||
for class in /sys/class/block/*; do
|
||||
while read line; do
|
||||
export -n "$line"
|
||||
done < "$class/uevent"
|
||||
if [ $((rootpart/256)) = $MAJOR -a $((rootpart%256)) = $MINOR ]; then
|
||||
uevent="$class/../uevent"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -e "$uevent" ]; then
|
||||
while read line; do
|
||||
export -n "$line"
|
||||
done < "$uevent"
|
||||
export BOOTDEV_MAJOR=$MAJOR
|
||||
export BOOTDEV_MINOR=$MINOR
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
export_partdevice() {
|
||||
local var="$1" offset="$2"
|
||||
local uevent line MAJOR MINOR DEVNAME DEVTYPE
|
||||
|
||||
for uevent in /sys/class/block/*/uevent; do
|
||||
while read line; do
|
||||
export -n "$line"
|
||||
done < "$uevent"
|
||||
if [ $BOOTDEV_MAJOR = $MAJOR -a $(($BOOTDEV_MINOR + $offset)) = $MINOR -a -b "/dev/$DEVNAME" ]; then
|
||||
export "$var=$DEVNAME"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
hex_le32_to_cpu() {
|
||||
[ "$(echo 01 | hexdump -v -n 2 -e '/2 "%x"')" = "3031" ] && {
|
||||
echo "${1:0:2}${1:8:2}${1:6:2}${1:4:2}${1:2:2}"
|
||||
return
|
||||
}
|
||||
echo "$@"
|
||||
}
|
||||
|
||||
get_partitions() { # <device> <filename>
|
||||
local disk="$1"
|
||||
local filename="$2"
|
||||
|
||||
if [ -b "$disk" -o -f "$disk" ]; then
|
||||
v "Reading partition table from $filename..."
|
||||
|
||||
local magic=$(dd if="$disk" bs=2 count=1 skip=255 2>/dev/null)
|
||||
if [ "$magic" != $'\x55\xAA' ]; then
|
||||
v "Invalid partition table on $disk"
|
||||
exit
|
||||
fi
|
||||
|
||||
rm -f "/tmp/partmap.$filename"
|
||||
|
||||
local part
|
||||
part_magic_efi "$disk" && {
|
||||
#export_partdevice will fail when partition number is greater than 15, as
|
||||
#the partition major device number is not equal to the disk major device number
|
||||
for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
|
||||
set -- $(hexdump -v -n 48 -s "$((0x380 + $part * 0x80))" -e '4/4 "%08x"" "4/4 "%08x"" "4/4 "0x%08X "' "$disk")
|
||||
|
||||
local type="$1"
|
||||
local lba="$(( $(hex_le32_to_cpu $4) * 0x100000000 + $(hex_le32_to_cpu $3) ))"
|
||||
local end="$(( $(hex_le32_to_cpu $6) * 0x100000000 + $(hex_le32_to_cpu $5) ))"
|
||||
local num="$(( $end - $lba + 1 ))"
|
||||
|
||||
[ "$type" = "00000000000000000000000000000000" ] && continue
|
||||
|
||||
printf "%2d %5d %7d\n" $part $lba $num >> "/tmp/partmap.$filename"
|
||||
done
|
||||
} || {
|
||||
for part in 1 2 3 4; do
|
||||
set -- $(hexdump -v -n 12 -s "$((0x1B2 + $part * 16))" -e '3/4 "0x%08X "' "$disk")
|
||||
|
||||
local type="$(( $(hex_le32_to_cpu $1) % 256))"
|
||||
local lba="$(( $(hex_le32_to_cpu $2) ))"
|
||||
local num="$(( $(hex_le32_to_cpu $3) ))"
|
||||
|
||||
[ $type -gt 0 ] || continue
|
||||
|
||||
printf "%2d %5d %7d\n" $part $lba $num >> "/tmp/partmap.$filename"
|
||||
done
|
||||
}
|
||||
fi
|
||||
}
|
||||
|
||||
indicate_upgrade() {
|
||||
. /etc/diag.sh
|
||||
set_state upgrade
|
||||
}
|
||||
|
||||
# Flash firmware to MTD partition
|
||||
#
|
||||
# $(1): path to image
|
||||
# $(2): (optional) pipe command to extract firmware, e.g. dd bs=n skip=m
|
||||
default_do_upgrade() {
|
||||
sync
|
||||
echo 3 > /proc/sys/vm/drop_caches
|
||||
if [ -n "$UPGRADE_BACKUP" ]; then
|
||||
get_image "$1" "$2" | mtd $MTD_ARGS $MTD_CONFIG_ARGS -j "$UPGRADE_BACKUP" write - "${PART_NAME:-image}"
|
||||
else
|
||||
get_image "$1" "$2" | mtd $MTD_ARGS write - "${PART_NAME:-image}"
|
||||
fi
|
||||
[ $? -ne 0 ] && exit 1
|
||||
}
|
||||
25
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/do_stage2
Executable file
25
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/do_stage2
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
|
||||
include /lib/upgrade
|
||||
|
||||
v "Performing system upgrade..."
|
||||
if type 'platform_do_upgrade' >/dev/null 2>/dev/null; then
|
||||
platform_do_upgrade "$IMAGE"
|
||||
else
|
||||
default_do_upgrade "$IMAGE"
|
||||
fi
|
||||
|
||||
if [ -n "$UPGRADE_BACKUP" ] && type 'platform_copy_config' >/dev/null 2>/dev/null; then
|
||||
platform_copy_config
|
||||
fi
|
||||
|
||||
v "Upgrade completed"
|
||||
sleep 1
|
||||
|
||||
v "Rebooting system..."
|
||||
umount -a
|
||||
reboot -f
|
||||
sleep 5
|
||||
echo b 2>/dev/null >/proc/sysrq-trigger
|
||||
93
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/fwtool.sh
Executable file
93
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/fwtool.sh
Executable file
@@ -0,0 +1,93 @@
|
||||
fwtool_check_signature() {
|
||||
[ $# -gt 1 ] && return 1
|
||||
|
||||
[ ! -x /usr/bin/ucert ] && {
|
||||
if [ "$REQUIRE_IMAGE_SIGNATURE" = 1 ]; then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
if ! fwtool -q -s /tmp/sysupgrade.ucert "$1"; then
|
||||
v "Image signature not present"
|
||||
[ "$REQUIRE_IMAGE_SIGNATURE" = 1 -a "$FORCE" != 1 ] && {
|
||||
v "Use sysupgrade -F to override this check when downgrading or flashing to vendor firmware"
|
||||
}
|
||||
[ "$REQUIRE_IMAGE_SIGNATURE" = 1 ] && return 1
|
||||
return 0
|
||||
fi
|
||||
|
||||
fwtool -q -T -s /dev/null "$1" | \
|
||||
ucert -V -m - -c "/tmp/sysupgrade.ucert" -P /etc/opkg/keys
|
||||
|
||||
return $?
|
||||
}
|
||||
|
||||
fwtool_check_image() {
|
||||
[ $# -gt 1 ] && return 1
|
||||
|
||||
. /usr/share/libubox/jshn.sh
|
||||
|
||||
if ! fwtool -q -i /tmp/sysupgrade.meta "$1"; then
|
||||
v "Image metadata not present"
|
||||
[ "$REQUIRE_IMAGE_METADATA" = 1 -a "$FORCE" != 1 ] && {
|
||||
v "Use sysupgrade -F to override this check when downgrading or flashing to vendor firmware"
|
||||
}
|
||||
[ "$REQUIRE_IMAGE_METADATA" = 1 ] && return 1
|
||||
return 0
|
||||
fi
|
||||
|
||||
json_load "$(cat /tmp/sysupgrade.meta)" || {
|
||||
v "Invalid image metadata"
|
||||
return 1
|
||||
}
|
||||
|
||||
device="$(cat /tmp/sysinfo/board_name)"
|
||||
devicecompat="$(uci -q get system.@system[0].compat_version)"
|
||||
[ -n "$devicecompat" ] || devicecompat="1.0"
|
||||
|
||||
json_get_var imagecompat compat_version
|
||||
json_get_var compatmessage compat_message
|
||||
[ -n "$imagecompat" ] || imagecompat="1.0"
|
||||
|
||||
# select correct supported list based on compat_version
|
||||
# (using this ensures that compatibility check works for devices
|
||||
# not knowing about compat-version)
|
||||
local supported=supported_devices
|
||||
[ "$imagecompat" != "1.0" ] && supported=new_supported_devices
|
||||
json_select $supported || return 1
|
||||
|
||||
json_get_keys dev_keys
|
||||
for k in $dev_keys; do
|
||||
json_get_var dev "$k"
|
||||
if [ "$dev" = "$device" ]; then
|
||||
# major compat version -> no sysupgrade
|
||||
if [ "${devicecompat%.*}" != "${imagecompat%.*}" ]; then
|
||||
v "The device is supported, but this image is incompatible for sysupgrade based on the image version ($devicecompat->$imagecompat)."
|
||||
[ -n "$compatmessage" ] && v "$compatmessage"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# minor compat version -> sysupgrade with -n required
|
||||
if [ "${devicecompat#.*}" != "${imagecompat#.*}" ] && [ "$SAVE_CONFIG" = "1" ]; then
|
||||
[ "$IGNORE_MINOR_COMPAT" = 1 ] && return 0
|
||||
v "The device is supported, but the config is incompatible to the new image ($devicecompat->$imagecompat). Please upgrade without keeping config (sysupgrade -n)."
|
||||
[ -n "$compatmessage" ] && v "$compatmessage"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
v "Device $device not supported by this image"
|
||||
local devices="Supported devices:"
|
||||
for k in $dev_keys; do
|
||||
json_get_var dev "$k"
|
||||
devices="$devices $dev"
|
||||
done
|
||||
v "$devices"
|
||||
|
||||
return 1
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
/etc/config/
|
||||
/etc/config/network
|
||||
/etc/config/system
|
||||
/etc/dropbear/
|
||||
/etc/profile.d
|
||||
@@ -0,0 +1,11 @@
|
||||
# Essential files that will be always kept
|
||||
/etc/hosts
|
||||
/etc/inittab
|
||||
/etc/group
|
||||
/etc/passwd
|
||||
/etc/profile
|
||||
/etc/shadow
|
||||
/etc/shells
|
||||
/etc/shinit
|
||||
/etc/sysctl.conf
|
||||
/etc/rc.local
|
||||
360
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/nand.sh
Executable file
360
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/nand.sh
Executable file
@@ -0,0 +1,360 @@
|
||||
# Copyright (C) 2014 OpenWrt.org
|
||||
#
|
||||
|
||||
. /lib/functions.sh
|
||||
|
||||
# 'kernel' partition or UBI volume on NAND contains the kernel
|
||||
CI_KERNPART="${CI_KERNPART:-kernel}"
|
||||
|
||||
# 'ubi' partition on NAND contains UBI
|
||||
CI_UBIPART="${CI_UBIPART:-ubi}"
|
||||
|
||||
# 'rootfs' UBI volume on NAND contains the rootfs
|
||||
CI_ROOTPART="${CI_ROOTPART:-rootfs}"
|
||||
|
||||
ubi_mknod() {
|
||||
local dir="$1"
|
||||
local dev="/dev/$(basename $dir)"
|
||||
|
||||
[ -e "$dev" ] && return 0
|
||||
|
||||
local devid="$(cat $dir/dev)"
|
||||
local major="${devid%%:*}"
|
||||
local minor="${devid##*:}"
|
||||
mknod "$dev" c $major $minor
|
||||
}
|
||||
|
||||
nand_find_volume() {
|
||||
local ubidevdir ubivoldir
|
||||
ubidevdir="/sys/devices/virtual/ubi/$1"
|
||||
[ ! -d "$ubidevdir" ] && return 1
|
||||
for ubivoldir in $ubidevdir/${1}_*; do
|
||||
[ ! -d "$ubivoldir" ] && continue
|
||||
if [ "$( cat $ubivoldir/name )" = "$2" ]; then
|
||||
basename $ubivoldir
|
||||
ubi_mknod "$ubivoldir"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
nand_find_ubi() {
|
||||
local ubidevdir ubidev mtdnum
|
||||
mtdnum="$( find_mtd_index $1 )"
|
||||
[ ! "$mtdnum" ] && return 1
|
||||
for ubidevdir in /sys/devices/virtual/ubi/ubi*; do
|
||||
[ ! -d "$ubidevdir" ] && continue
|
||||
cmtdnum="$( cat $ubidevdir/mtd_num )"
|
||||
[ ! "$mtdnum" ] && continue
|
||||
if [ "$mtdnum" = "$cmtdnum" ]; then
|
||||
ubidev=$( basename $ubidevdir )
|
||||
ubi_mknod "$ubidevdir"
|
||||
echo $ubidev
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
nand_get_magic_long() {
|
||||
dd if="$1" skip=$2 bs=4 count=1 2>/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'
|
||||
}
|
||||
|
||||
get_magic_long_tar() {
|
||||
( tar xf $1 $2 -O | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null
|
||||
}
|
||||
|
||||
identify_magic() {
|
||||
local magic=$1
|
||||
case "$magic" in
|
||||
"55424923")
|
||||
echo "ubi"
|
||||
;;
|
||||
"31181006")
|
||||
echo "ubifs"
|
||||
;;
|
||||
"68737173")
|
||||
echo "squashfs"
|
||||
;;
|
||||
"d00dfeed")
|
||||
echo "fit"
|
||||
;;
|
||||
"4349"*)
|
||||
echo "combined"
|
||||
;;
|
||||
*)
|
||||
echo "unknown $magic"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
identify() {
|
||||
identify_magic $(nand_get_magic_long "$1" "${2:-0}")
|
||||
}
|
||||
|
||||
identify_tar() {
|
||||
identify_magic $(get_magic_long_tar "$1" "$2")
|
||||
}
|
||||
|
||||
nand_restore_config() {
|
||||
sync
|
||||
local ubidev=$( nand_find_ubi $CI_UBIPART )
|
||||
local ubivol="$( nand_find_volume $ubidev rootfs_data )"
|
||||
[ ! "$ubivol" ] &&
|
||||
ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )"
|
||||
mkdir /tmp/new_root
|
||||
if ! mount -t ubifs /dev/$ubivol /tmp/new_root; then
|
||||
echo "mounting ubifs $ubivol failed"
|
||||
rmdir /tmp/new_root
|
||||
return 1
|
||||
fi
|
||||
mv "$1" "/tmp/new_root/$BACKUP_FILE"
|
||||
umount /tmp/new_root
|
||||
sync
|
||||
rmdir /tmp/new_root
|
||||
}
|
||||
|
||||
nand_upgrade_prepare_ubi() {
|
||||
local rootfs_length="$1"
|
||||
local rootfs_type="$2"
|
||||
local rootfs_data_max="$(fw_printenv -n rootfs_data_max 2>/dev/null)"
|
||||
[ -n "$rootfs_data_max" ] && rootfs_data_max=$((rootfs_data_max))
|
||||
|
||||
local kernel_length="$3"
|
||||
local has_env="${4:-0}"
|
||||
|
||||
[ -n "$rootfs_length" -o -n "$kernel_length" ] || return 1
|
||||
|
||||
local mtdnum="$( find_mtd_index "$CI_UBIPART" )"
|
||||
if [ ! "$mtdnum" ]; then
|
||||
echo "cannot find ubi mtd partition $CI_UBIPART"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||
if [ ! "$ubidev" ]; then
|
||||
ubiattach -m "$mtdnum"
|
||||
sync
|
||||
ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||
fi
|
||||
|
||||
if [ ! "$ubidev" ]; then
|
||||
ubiformat /dev/mtd$mtdnum -y
|
||||
ubiattach -m "$mtdnum"
|
||||
sync
|
||||
ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||
[ ! "$ubidev" ] && return 1
|
||||
[ "$has_env" -gt 0 ] && {
|
||||
ubimkvol /dev/$ubidev -n 0 -N ubootenv -s 1MiB
|
||||
ubimkvol /dev/$ubidev -n 1 -N ubootenv2 -s 1MiB
|
||||
}
|
||||
fi
|
||||
|
||||
local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )"
|
||||
local root_ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )"
|
||||
local data_ubivol="$( nand_find_volume $ubidev rootfs_data )"
|
||||
|
||||
local ubiblk ubiblkvol
|
||||
for ubiblk in /dev/ubiblock${ubidev:3}_* ; do
|
||||
[ -e "$ubiblk" ] || continue
|
||||
case "$ubiblk" in
|
||||
/dev/ubiblock*_*p*)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
echo "removing ubiblock${ubiblk:13}"
|
||||
ubiblkvol=ubi${ubiblk:13}
|
||||
if ! ubiblock -r /dev/$ubiblkvol; then
|
||||
echo "cannot remove $ubiblk"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
|
||||
# kill volumes
|
||||
[ "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_KERNPART || :
|
||||
[ "$root_ubivol" -a "$root_ubivol" != "$kern_ubivol" ] && ubirmvol /dev/$ubidev -N $CI_ROOTPART || :
|
||||
[ "$data_ubivol" ] && ubirmvol /dev/$ubidev -N rootfs_data || :
|
||||
|
||||
# update kernel
|
||||
if [ -n "$kernel_length" ]; then
|
||||
if ! ubimkvol /dev/$ubidev -N $CI_KERNPART -s $kernel_length; then
|
||||
echo "cannot create kernel volume"
|
||||
return 1;
|
||||
fi
|
||||
fi
|
||||
|
||||
# update rootfs
|
||||
if [ -n "$rootfs_length" ]; then
|
||||
local rootfs_size_param
|
||||
if [ "$rootfs_type" = "ubifs" ]; then
|
||||
rootfs_size_param="-m"
|
||||
else
|
||||
rootfs_size_param="-s $rootfs_length"
|
||||
fi
|
||||
if ! ubimkvol /dev/$ubidev -N $CI_ROOTPART $rootfs_size_param; then
|
||||
echo "cannot create rootfs volume"
|
||||
return 1;
|
||||
fi
|
||||
fi
|
||||
|
||||
# create rootfs_data for non-ubifs rootfs
|
||||
if [ "$rootfs_type" != "ubifs" ]; then
|
||||
local rootfs_data_size_param="-m"
|
||||
if [ -n "$rootfs_data_max" ]; then
|
||||
rootfs_data_size_param="-s $rootfs_data_max"
|
||||
fi
|
||||
if ! ubimkvol /dev/$ubidev -N rootfs_data $rootfs_data_size_param; then
|
||||
if ! ubimkvol /dev/$ubidev -N rootfs_data -m; then
|
||||
echo "cannot initialize rootfs_data volume"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
sync
|
||||
return 0
|
||||
}
|
||||
|
||||
nand_do_upgrade_success() {
|
||||
local conf_tar="/tmp/sysupgrade.tgz"
|
||||
|
||||
sync
|
||||
[ -f "$conf_tar" ] && nand_restore_config "$conf_tar"
|
||||
echo "sysupgrade successful"
|
||||
umount -a
|
||||
reboot -f
|
||||
}
|
||||
|
||||
# Flash the UBI image to MTD partition
|
||||
nand_upgrade_ubinized() {
|
||||
local ubi_file="$1"
|
||||
local mtdnum="$(find_mtd_index "$CI_UBIPART")"
|
||||
|
||||
[ ! "$mtdnum" ] && {
|
||||
CI_UBIPART="rootfs"
|
||||
mtdnum="$(find_mtd_index "$CI_UBIPART")"
|
||||
}
|
||||
|
||||
if [ ! "$mtdnum" ]; then
|
||||
echo "cannot find mtd device $CI_UBIPART"
|
||||
umount -a
|
||||
reboot -f
|
||||
fi
|
||||
|
||||
local mtddev="/dev/mtd${mtdnum}"
|
||||
ubidetach -p "${mtddev}" || true
|
||||
sync
|
||||
ubiformat "${mtddev}" -y -f "${ubi_file}"
|
||||
ubiattach -p "${mtddev}"
|
||||
nand_do_upgrade_success
|
||||
}
|
||||
|
||||
# Write the UBIFS image to UBI volume
|
||||
nand_upgrade_ubifs() {
|
||||
local rootfs_length=$( (cat $1 | wc -c) 2> /dev/null)
|
||||
|
||||
nand_upgrade_prepare_ubi "$rootfs_length" "ubifs" "" ""
|
||||
|
||||
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||
local root_ubivol="$(nand_find_volume $ubidev $CI_ROOTPART)"
|
||||
ubiupdatevol /dev/$root_ubivol -s $rootfs_length $1
|
||||
|
||||
nand_do_upgrade_success
|
||||
}
|
||||
|
||||
nand_upgrade_fit() {
|
||||
local fit_file="$1"
|
||||
local fit_length="$(wc -c < "$fit_file")"
|
||||
|
||||
nand_upgrade_prepare_ubi "" "" "$fit_length" "1"
|
||||
|
||||
local fit_ubidev="$(nand_find_ubi "$CI_UBIPART")"
|
||||
local fit_ubivol="$(nand_find_volume $fit_ubidev "$CI_KERNPART")"
|
||||
ubiupdatevol /dev/$fit_ubivol -s $fit_length $fit_file
|
||||
|
||||
nand_do_upgrade_success
|
||||
}
|
||||
|
||||
nand_upgrade_tar() {
|
||||
local tar_file="$1"
|
||||
local kernel_mtd="$(find_mtd_index $CI_KERNPART)"
|
||||
|
||||
local board_dir=$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$')
|
||||
board_dir=${board_dir%/}
|
||||
|
||||
kernel_length=$( (tar xf "$tar_file" ${board_dir}/kernel -O | wc -c) 2> /dev/null)
|
||||
local has_rootfs=0
|
||||
local rootfs_length
|
||||
local rootfs_type
|
||||
|
||||
tar tf "$tar_file" ${board_dir}/root 1>/dev/null 2>/dev/null && has_rootfs=1
|
||||
[ "$has_rootfs" = "1" ] && {
|
||||
rootfs_length=$( (tar xf "$tar_file" ${board_dir}/root -O | wc -c) 2> /dev/null)
|
||||
rootfs_type="$(identify_tar "$tar_file" ${board_dir}/root)"
|
||||
}
|
||||
|
||||
local has_kernel=1
|
||||
local has_env=0
|
||||
|
||||
[ "$kernel_length" != 0 -a -n "$kernel_mtd" ] && {
|
||||
tar xf "$tar_file" ${board_dir}/kernel -O | mtd write - $CI_KERNPART
|
||||
}
|
||||
[ "$kernel_length" = 0 -o ! -z "$kernel_mtd" ] && has_kernel=
|
||||
[ "$CI_KERNPART" = "none" ] && has_kernel=
|
||||
|
||||
nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "${has_kernel:+$kernel_length}" "$has_env"
|
||||
|
||||
local ubidev="$( nand_find_ubi "$CI_UBIPART" )"
|
||||
[ "$has_kernel" = "1" ] && {
|
||||
local kern_ubivol="$( nand_find_volume $ubidev $CI_KERNPART )"
|
||||
tar xf "$tar_file" ${board_dir}/kernel -O | \
|
||||
ubiupdatevol /dev/$kern_ubivol -s $kernel_length -
|
||||
}
|
||||
|
||||
[ "$has_rootfs" = "1" ] && {
|
||||
local root_ubivol="$( nand_find_volume $ubidev $CI_ROOTPART )"
|
||||
tar xf "$tar_file" ${board_dir}/root -O | \
|
||||
ubiupdatevol /dev/$root_ubivol -s $rootfs_length -
|
||||
}
|
||||
nand_do_upgrade_success
|
||||
}
|
||||
|
||||
# Recognize type of passed file and start the upgrade process
|
||||
nand_do_upgrade() {
|
||||
local file_type=$(identify $1)
|
||||
|
||||
[ ! "$(find_mtd_index "$CI_UBIPART")" ] && CI_UBIPART="rootfs"
|
||||
|
||||
case "$file_type" in
|
||||
"fit") nand_upgrade_fit $1;;
|
||||
"ubi") nand_upgrade_ubinized $1;;
|
||||
"ubifs") nand_upgrade_ubifs $1;;
|
||||
*) nand_upgrade_tar $1;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Check if passed file is a valid one for NAND sysupgrade. Currently it accepts
|
||||
# 3 types of files:
|
||||
# 1) UBI - should contain an ubinized image, header is checked for the proper
|
||||
# MAGIC
|
||||
# 2) UBIFS - should contain UBIFS partition that will replace "rootfs" volume,
|
||||
# header is checked for the proper MAGIC
|
||||
# 3) TAR - archive has to include "sysupgrade-BOARD" directory with a non-empty
|
||||
# "CONTROL" file (at this point its content isn't verified)
|
||||
#
|
||||
# You usually want to call this function in platform_check_image.
|
||||
#
|
||||
# $(1): board name, used in case of passing TAR file
|
||||
# $(2): file to be checked
|
||||
nand_do_platform_check() {
|
||||
local board_name="$1"
|
||||
local tar_file="$2"
|
||||
local control_length=$( (tar xf $tar_file sysupgrade-$board_name/CONTROL -O | wc -c) 2> /dev/null)
|
||||
local file_type="$(identify $2)"
|
||||
|
||||
[ "$control_length" = 0 -a "$file_type" != "ubi" -a "$file_type" != "ubifs" -a "$file_type" != "fit" ] && {
|
||||
echo "Invalid sysupgrade file."
|
||||
return 1
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
175
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/stage2
Executable file
175
opkg-feed/installer/openwrt-sdxlemur-skel/data/lib/upgrade/stage2
Executable file
@@ -0,0 +1,175 @@
|
||||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
export IMAGE="$1"
|
||||
COMMAND="$2"
|
||||
|
||||
export INTERACTIVE=0
|
||||
export VERBOSE=1
|
||||
export CONFFILES=/tmp/sysupgrade.conffiles
|
||||
|
||||
RAMFS_COPY_BIN= # extra programs for temporary ramfs root
|
||||
RAMFS_COPY_DATA= # extra data files
|
||||
|
||||
include /lib/upgrade
|
||||
|
||||
|
||||
supivot() { # <new_root> <old_root>
|
||||
/bin/mount | grep "on $1 type" 2>&- 1>&- || /bin/mount -o bind $1 $1
|
||||
mkdir -p $1$2 $1/proc $1/sys $1/dev $1/tmp $1/overlay && \
|
||||
/bin/mount -o noatime,move /proc $1/proc && \
|
||||
pivot_root $1 $1$2 || {
|
||||
/bin/umount -l $1 $1
|
||||
return 1
|
||||
}
|
||||
|
||||
/bin/mount -o noatime,move $2/sys /sys
|
||||
/bin/mount -o noatime,move $2/dev /dev
|
||||
/bin/mount -o noatime,move $2/tmp /tmp
|
||||
/bin/mount -o noatime,move $2/overlay /overlay 2>&-
|
||||
return 0
|
||||
}
|
||||
|
||||
switch_to_ramfs() {
|
||||
RAMFS_COPY_LOSETUP="$(command -v /usr/sbin/losetup)"
|
||||
RAMFS_COPY_LVM="$(command -v lvm)"
|
||||
|
||||
for binary in \
|
||||
/bin/busybox /bin/ash /bin/sh /bin/mount /bin/umount \
|
||||
pivot_root mount_root reboot sync kill sleep \
|
||||
md5sum hexdump cat zcat dd tar \
|
||||
ls basename find cp mv rm mkdir rmdir mknod touch chmod \
|
||||
'[' printf wc grep awk sed cut tail \
|
||||
mtd partx losetup mkfs.ext4 nandwrite flash_erase \
|
||||
ubiupdatevol ubiattach ubiblock ubiformat \
|
||||
ubidetach ubirsvol ubirmvol ubimkvol \
|
||||
snapshot snapshot_tool date logger \
|
||||
/usr/sbin/fw_printenv /usr/bin/fwtool \
|
||||
$RAMFS_COPY_LOSETUP $RAMFS_COPY_LVM \
|
||||
$RAMFS_COPY_BIN
|
||||
do
|
||||
local file="$(command -v "$binary" 2>/dev/null)"
|
||||
[ -n "$file" ] && install_bin "$file"
|
||||
done
|
||||
install_file /etc/resolv.conf /lib/*.sh /lib/functions/*.sh \
|
||||
/lib/upgrade/*.sh /lib/upgrade/do_stage2 \
|
||||
/usr/share/libubox/jshn.sh /usr/sbin/fw_setenv \
|
||||
/etc/fw_env.config $RAMFS_COPY_DATA
|
||||
|
||||
mkdir -p $RAM_ROOT/var/lock
|
||||
|
||||
[ -L "/lib64" ] && ln -s /lib $RAM_ROOT/lib64
|
||||
|
||||
supivot $RAM_ROOT /mnt || {
|
||||
v "Failed to switch over to ramfs. Please reboot."
|
||||
exit 1
|
||||
}
|
||||
|
||||
/bin/mount -o remount,ro /mnt
|
||||
/bin/umount -l /mnt
|
||||
|
||||
grep -e "^/dev/dm-.*" -e "^/dev/loop.*" /proc/mounts | while read bdev mp _r; do
|
||||
umount $mp
|
||||
done
|
||||
|
||||
[ "$RAMFS_COPY_LOSETUP" ] && losetup -D
|
||||
[ "$RAMFS_COPY_LVM" ] && {
|
||||
mkdir -p /tmp/lvm/cache
|
||||
$RAMFS_COPY_LVM vgchange -aln --ignorelockingfailure
|
||||
}
|
||||
|
||||
grep /overlay /proc/mounts > /dev/null && {
|
||||
/bin/mount -o noatime,remount,ro /overlay
|
||||
/bin/umount -l /overlay
|
||||
}
|
||||
}
|
||||
|
||||
kill_remaining() { # [ <signal> [ <loop> ] ]
|
||||
local loop_limit=10
|
||||
|
||||
local sig="${1:-TERM}"
|
||||
local loop="${2:-0}"
|
||||
local run=true
|
||||
local stat
|
||||
local proc_ppid=$(cut -d' ' -f4 /proc/$$/stat)
|
||||
|
||||
v "Sending $sig to remaining processes ..."
|
||||
|
||||
while $run; do
|
||||
run=false
|
||||
for stat in /proc/[0-9]*/stat; do
|
||||
[ -f "$stat" ] || continue
|
||||
|
||||
local pid name state ppid rest
|
||||
read pid rest < $stat
|
||||
name="${rest#\(}" ; rest="${name##*\) }" ; name="${name%\)*}"
|
||||
set -- $rest ; state="$1" ; ppid="$2"
|
||||
|
||||
# Skip PID1, our parent, ourself and our children
|
||||
[ $pid -ne 1 -a $pid -ne $proc_ppid -a $pid -ne $$ -a $ppid -ne $$ ] || continue
|
||||
|
||||
[ -f "/proc/$pid/cmdline" ] || continue
|
||||
|
||||
local cmdline
|
||||
read cmdline < /proc/$pid/cmdline
|
||||
|
||||
# Skip kernel threads
|
||||
[ -n "$cmdline" ] || continue
|
||||
|
||||
v "Sending signal $sig to $name ($pid)"
|
||||
kill -$sig $pid 2>/dev/null
|
||||
|
||||
[ $loop -eq 1 ] && run=true
|
||||
done
|
||||
|
||||
let loop_limit--
|
||||
[ $loop_limit -eq 0 ] && {
|
||||
v "Failed to kill all processes."
|
||||
exit 1
|
||||
}
|
||||
done
|
||||
}
|
||||
|
||||
indicate_upgrade
|
||||
|
||||
while read -r a b c; do
|
||||
case "$a" in
|
||||
MemT*) mem="$b" ;; esac
|
||||
done < /proc/meminfo
|
||||
|
||||
[ "$mem" -gt 32768 ] && \
|
||||
skip_services="dnsmasq log network"
|
||||
for service in /etc/init.d/*; do
|
||||
service=${service##*/}
|
||||
|
||||
case " $skip_services " in
|
||||
*" $service "*) continue ;; esac
|
||||
|
||||
ubus call service delete '{ "name": "'"$service"'" }' 2>/dev/null
|
||||
done
|
||||
|
||||
killall -9 telnetd 2>/dev/null
|
||||
killall -9 dropbear 2>/dev/null
|
||||
killall -9 ash 2>/dev/null
|
||||
|
||||
kill_remaining TERM
|
||||
sleep 4
|
||||
kill_remaining KILL 1
|
||||
|
||||
sleep 6
|
||||
|
||||
echo 3 > /proc/sys/vm/drop_caches
|
||||
|
||||
if [ -n "$IMAGE" ] && type 'platform_pre_upgrade' >/dev/null 2>/dev/null; then
|
||||
platform_pre_upgrade "$IMAGE"
|
||||
fi
|
||||
|
||||
if [ -n "$(rootfs_type)" ]; then
|
||||
v "Switching to ramdisk..."
|
||||
switch_to_ramfs
|
||||
fi
|
||||
|
||||
# Exec new shell from ramfs
|
||||
exec /bin/busybox ash -c "$COMMAND"
|
||||
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/sbin/uci
Executable file
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/sbin/uci
Executable file
Binary file not shown.
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/bin/curl
Executable file
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/bin/curl
Executable file
Binary file not shown.
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/bin/dbclient
Symbolic link
1
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/bin/dbclient
Symbolic link
@@ -0,0 +1 @@
|
||||
../sbin/dropbear
|
||||
@@ -0,0 +1 @@
|
||||
../sbin/dropbear
|
||||
@@ -0,0 +1 @@
|
||||
libcurl.so.4.8.0
|
||||
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/lib/libcurl.so.4.8.0
Executable file
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/lib/libcurl.so.4.8.0
Executable file
Binary file not shown.
@@ -0,0 +1 @@
|
||||
libnghttp2.so.14.20.2
|
||||
Binary file not shown.
18
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/lib/os-release
Executable file
18
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/lib/os-release
Executable file
@@ -0,0 +1,18 @@
|
||||
NAME="OpenWrt"
|
||||
VERSION="22.03.5"
|
||||
ID="openwrt"
|
||||
ID_LIKE="lede openwrt"
|
||||
PRETTY_NAME="OpenWrt 22.03.5"
|
||||
VERSION_ID="22.03.5"
|
||||
HOME_URL="https://openwrt.org/"
|
||||
BUG_URL="https://bugs.openwrt.org/"
|
||||
SUPPORT_URL="https://forum.openwrt.org/"
|
||||
BUILD_ID="r20134-5f15225c1e"
|
||||
OPENWRT_BOARD="sdxlemur/generic"
|
||||
OPENWRT_ARCH="arm_cortex-a7_neon-vfpv4"
|
||||
OPENWRT_TAINTS="no-all busybox override"
|
||||
OPENWRT_DEVICE_MANUFACTURER="Quectel"
|
||||
OPENWRT_DEVICE_MANUFACTURER_URL="https://quectel.com/"
|
||||
OPENWRT_DEVICE_PRODUCT="RM520N-GL"
|
||||
OPENWRT_DEVICE_REVISION="v0"
|
||||
OPENWRT_RELEASE="OpenWrt 22.03.5 r20134-5f15225c1e"
|
||||
3
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/libexec/login.sh
Executable file
3
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/libexec/login.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ "$(uci -q get system.@system[0].ttylogin)" = 1 ] || exec env LOGIN_TIMEOUT=300 /bin/login
|
||||
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/sbin/dropbear
Executable file
BIN
opkg-feed/installer/openwrt-sdxlemur-skel/data/usr/sbin/dropbear
Executable file
Binary file not shown.
Reference in New Issue
Block a user