sysupgrade immediately reboots after flashing an image and doesn't
allow to unmount filesystems. At least in case the image used for
sysupgrade is stored on a FAT formatted usb flash drive, the following
warning is printed during the next mount of the flash drive:
FAT-fs (sda1): Volume was not properly unmounted. Some data may be
corrupt. Please run fsck.
Although a data corruption during read operations is unlikely, there is
no need to scare the users.
Signed-off-by: Mathias Kresin <dev@kresin.me>
Treat 'relayd' as an essential service to avoid connection interruptions during sysupgrade on devices configured as a pseudobridge.
Signed-off-by: Conn O'Griofa <connogriofa@gmail.com>
This commit:
1) seed /dev/urandom with the saved seeds as early as possible
(see /lib/preinit/81_urandom_seed)
2) save a seed at /etc/urandom.seed if it doesn't exists
3) save a new seed each boot at "system.@system[0].urandom_seed"
(see /etc/init.d/urandom_seed)
We use getrandom() so we are sure /dev/urandom pool is initialized
Seed size is 512 bytes (ie /proc/sys/kernel/random/poolsize / 8)
it's the same size as in ubuntu 14.04 and all systemd systems
Seeding /dev/urandom doesn't change entropy estimation, so we still have
"random: ubus urandom read with 4 bits of entropy available"
messages in the logs, but we can now ignore them if
after "urandom-seed: Seeding with ..." message
Saving a new seed on each boot is disabled by default to avoid too much
writes without user consent
v2: log preinit messages to /dev/kmsg
v3: use non generic function name for logging, as /lib/preinit/ files
are all sourced together in /etc/preinit
v4: after a lot of discussion on the ML, use a uci config param
v5: config param is now the path of the seed
Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
Acked-by: Jo-Philipp Wich <jo@mein.io>
Some package postinstall operations, e.g. those emitted by the LuCI build
system, source and delete the uci-defaults themselves upon package insteall,
causing the generic defaults apply code to trigger shell errors like:
.../luci-app-ddns.postinst: .: line 130: can't open './40_luci-ddns'
Rework the generic apply code to check the existence of the uci-defaults
script before trying to source it, use sed to prefilter the list of entries
from the control file and perform the directory change in a subshell,
avoiding the need for cd $OLDPWD.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Generalize the partition discovery in sysupgrade in order to fix sysupgrade
and config backup/recovery on MMC block devices which use a different naming
scheme compared to mtdblock or sd* devices.
The change also adds the find applet to the ramdisk utilities so that upgrade
code can rely on it.
The commit is based on the initial submission by Russell Senior at
http://patchwork.ozlabs.org/patch/625440/ .
Signed-off-by: Russell Senior <russell@personaltelco.net>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Packages may install scripts into /etc/uci-defaults to be executed once
after installation, usually at the first boot of the target. This works
fine if the package was installed to the rootfs during build or using
the ImageBuilder.
If the package is installed using opkg during run-time uci-defaults
were applied only after a reboot of the device. Avoid the need to
reboot by evaluting the package's uci-defaults in default-postinst.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This patch adds extra parameter to switch LED trigger initialization
functions. New functionality maintains backward compatibility, so
calling functions without setting new speed_mask parameter works
as expected.
Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
SVN-Revision: 48776
oneshot and timer have the same configuration options, just a different
trigger name.
Signed-off-by: Karl Palsson <karlp@etactica.com>
SVN-Revision: 48770
With this patch sysupgrade will write directly to the partitions
instead of to the main disk. The UUID is copied from the image
to the MBR as well. This prevents the mbr from being completely
overwritten and losing the partition table. The -p option has
been added to maintain the original behavior and overwite the
entire disk with the new image. Tests have been added to ensure
that the image partitions match up with the active partitions.
Signed-off-by: Rob Mosher <nyt-openwrt@countercultured.net>
SVN-Revision: 48682
change 48451 tried to add support for uclient-fetch by moving
/usr/bin/wget to /bin/wget, but this change kept the symbolic
link to /bin/busybox as install_bin creates links to param 1
the desired fix is to link to uclient-fetch to wget:
install_bin /bin/uclient-fetch /bin/wget
Signed-off-by: John Clark <inindev@gmail.com>
SVN-Revision: 48483
with r48379 and r48386 the path of wget changed.
respect that and adjust the dirname.
this fixes#21680
Signed-off-by: Bastian Bittorf <bittorf@bluebottle.com>
SVN-Revision: 48451
The MR18 stores the ath9k eeprom values on the NAND.
This patch makes it possible to retrieve the images
from there.
Signed-off-by: Chris R Blake <chrisrblake93@gmail.com>
SVN-Revision: 47948
Replace former uci-defaults.sh implementation with the uci-defaults-new.sh one
and update all users accordingly.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47867
This adds support for specifying the dsl modem, atm bridge configs and setting
the pppoe protocol for wan.
These additions are required to port the Lantiq target to board.d.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47750
Some boards, e.g. the Sheeva Plug, require the lan interface to be set
to DHCP instead of a static address, therfore support that.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47732
This changes uci-defaults-new.sh, config_generate and all relevant board.d
files in order combine ucidef_add_switch() and ucidef_add_switch_ports() into
a single function.
Also removes now superfluous enable and reset arguments.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47721
Out of 69 switch definitions, only 3 pass something different than "1" as
values for reset and enable, with one of those three being invalid.
This change ...
* removes the reset and enable arguments from ucidef_add_switch()
* unconditionally writes reset:1 and enable:1 to JSON
* converts the three users of nonstandard values to ucidef_add_switch_attr()
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47720
Remove support for now unused ucidef_add_switch_vlan(), move port->vlan and
vlan->interfaces conversion to uci-defaults-new.sh and massively simplify
config_generate.
This change prepares the following upcoming steps:
* Eliminate use of ucidef_set_interface_lan_wan() for switch only devices
* Merge ucidef_add_switch() with ucidef_add_switch_ports()
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47719
Properly quote variables in ucidef_set_interface_lan() and
ucidef_set_interface_lan(), otherwise interfaces with multiple devices
are not properly written into the configuration.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47673
Add ucidef_set_board_id() and ucidef_set_model_name() procedures to store
model information in the board.json file.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47671
The only user was the hg255d board and config_generate did not even emit
proper uci for it.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47658
Remove extra nesting of rssi leds in the led object and move rssi monitor
declaration to its own object.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47655
Add further helper functions to uci-defaults-new.sh for easier declarations
of complex switch layouts.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47638
Even though there are not many users left within the OpenWrt tree it seems
this function broke during the kernel 3.18 transition.
Fix it by providing a workdir as required by overlayfs.
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
SVN-Revision: 47015
- Simplify user spec parsing code
- Alias IPKG_INSTROOT to shorten code
- Quote variables where appropriate
- Remove a useless-use-of-cat instance
- Suppress errors in case control or list files are missing
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 46975
This enables passworldless login for root via SSH whenever no root
password is set (e.g. after reset, flashing without keeping config
or in failsafe) and removes telnet support alltogether.
Signed-off-by: Steven Barth <steven@midlink.org>
SVN-Revision: 46809
Using the postinst script for sanity checks and expecting opkg to fail
if the postinst didn't return 0 was possible in Barrier Breaker, propagate
the real postinst return code through default_postinst to restore this
behaviour.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
SVN-Revision: 46653
Internal GPIO pins are used for PoE passthrough setups in multi-port
routers. This patch implemnets control over this hardware feature for
Ubiquiti Nanostations and TP-Link CPE510.
Signed-off-by: Lars Kruse <lists@sumpfralle.de>
SVN-Revision: 46271
get_image allows passing 2nd argument that is used in a pipe for
extracting firmware from a non-native format. By accepting such command
in default_do_upgrade we allow platforms to use this helper for vendor
specific images.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 45900
Instead of stripping everything after the first dot, strip everything
after the last dot.
This fixes pre-/postrm actions for packages with a dot in their name,
like libusb-1.0.
Fixes#19668.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 45702
The name variable contains at first the package name,
and after the last group name.
This patch fixes /etc/rc.d symlink creation (at least).
Change name in pkgname, change the other name in ugname
(user group name), and id in ugid (user group id)
Signed-off-by: Etienne CHAMPETIER <champetier.etienne@gmail.com>
SVN-Revision: 44253
This restores normal pre-r43715 200ms blink-period for the System LED we're all accustomed to see while our OpenWrt routers are booting.
Failsafe possibility will now be signalled with a new 100ms blinking, which is easily recognizable from the normal 200ms booting.
So no existing user will be scared by a new 500ms LED pattern, since such a slow pattern could easily be mistaken for something wrong... I was like "ok why my router is collapsing now, is this a bad flash, a kernel panic, or what else" when I've seen it for the first time ;)
Sorry for not having explained myself better in v1 of this patch.
Original:
Preinit, failsafe is possible: 200ms
Preinit, failsafe not possible anymore, booting normally: 200ms
Failsafe entered: 50ms
Now (after preinit_regular has been introduced):
Preinit, failsafe is possible: 200ms
Preinit, failsafe not possible anymore, booting normally: 500ms *here is the "offending" change*
Failsafe entered: 50ms
With my proposed patch:
Preinit, failsafe is possible: 100ms *indicate this condition with a new timing, that prompts the user to press the key if they want to start failsafe*
Preinit, failsafe not possible anymore, booting normally: 200ms *keep this as before*
Failsafe entered: 50ms
Signed-off-by: Vittorio Gambaletta <openwrt@vittgam.net>
SVN-Revision: 44056
The enable and reset settings need to be added even when they're false. This is true at least for 'enable', that seems to default to true otherwise.
Signed-off-by: Vittorio Gambaletta <openwrt@vittgam.net>
SVN-Revision: 43887
This new argument is used right after starting regular preinit (which
happens if failsafe wasn't triggered). The main purpose of "preinit"
argument is to indicate that failsafe can be triggered, however we were
missing a way to inform user that we don't wait for a trigger anymore.
With this change it's clear when failsafe mode can be triggered.
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
SVN-Revision: 43715
create user:group before running postinst-pkg. the postinst hook might require
the user:group to already exist.
Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
SVN-Revision: 43472
ldd might be called for shell scrips during sysupgrade, causing it to
complain that they are not a dynamic executables.
This is a harmless error, so supress it to avoid confusing about them
being serious ones.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 43315
r36107 ("base-files: sysupgrade fail with eglibc") tried to fix
sysupgrade by changing the ld-soname to what is expected, but only
fixed MIPS while breaking ARM.
The underlying issue is that the ld.so name varies widely across
different architectures for eglibc:
eglibc-2.19-r25243$ grep -r "ld-soname :=" . | awk '{ print $3 }' | sort -u
ld64.so.1
ld64.so.2
ld-linux-aarch64_be.so.1
ld-linux-aarch64.so.1
ld-linux-armhf.so.3
ld-linux-mipsn8.so.1
ld-linux.so.2
ld-linux.so.3
ld-linux-x32.so.2
ld-linux-x86-64.so.2
ld.so.1
Instead of adding each different soname to check for and copy it,
replace the awk script with a sed script to extract it properly and
drop the hardcoded so-name.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 43295
Based on bug #18206 sysupgrade can lead to loss of password information in
certain situations. Most likely all users who will upgrade from versions
r43017-43040, will lose their current passwords. :-(
https://dev.openwrt.org/ticket/18206
Currently /etc/shadow is defined as a conffile in base-files:
https://dev.openwrt.org/browser/trunk/package/base-files/Makefile#L37
But it is not defined in the default list of essential files to keep in
sysupgrade:
https://dev.openwrt.org/browser/trunk/package/base-files/files/lib/upgrade/keep.d/base-files-essential
If exporting conffiles info fails, /etc/shadow can get lost.
Shadow passwords are now the default, so saying that preserving /etc/passwd
is essential while /etc/shadow is not, makes no sense.
The attached patch adds /etc/shadow to the list of essential files.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
SVN-Revision: 43061
Inside every LuCI package you need to clear luci-indexcache and
sometimes when installing non LuCI pacakges it's also needed to clear
it. Easier put it into default_postinst().
Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
SVN-Revision: 42923
[base-files] shell-scripting: fix wrong usage of '==' operator
normally the '==' is used for invoking a regex parser and is a bashism.
all of the fixes just want to compare a string. the used busybox-ash
will silently "ignore" this mistake, but make it portable/clean at least.
this patch does not change the behavior/logic of the scripts.
Signed-off-by: Bastian Bittorf <bittorf@bluebottle.com>
SVN-Revision: 42911
This allows IPv6 to set up without IPv4 being up thus
IPv6-only or IPv6+DS-Lite working with the default config.
Signed-off-by: Steven Barth <steven@midlink.org>
SVN-Revision: 42848
it is now possible to inlie the uid and gid in the syntax
USERID:=username=uid:group=gid:group2=gid2:...
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 42838
Add a third argument to ucidef_set_interface_raw, which is specifying
the protocol.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 42665
the postinst script enables/starts the init.d scripts upon package installation
and installs the users required by the package.
the prerm script stops and disables the init.d scripts.
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 42470
this allows targets to use the new uci-default helper which will generate
a file called /etc/board.json. a tool called /bin/config_generate can then
be used to generate the default uci settings.
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 42185
When looking for the first ipaddr also consider the current prefix just
like network_get_ipaddrs6 does. If ipv6-address was empty the function
did not return the first ipaddr even if the list was non-empty.
fixes commit 83e9122f88a002871d5cdf421cf6aa6052b7e006
Signed-off-by: Henning Schild <henning@hennsch.de>
SVN-Revision: 42139
If the sysupgrade scripts is called under upgraded, it will not kill all
other processes as it should to avoid interference by locked filesystem.
This patch checks the parent and if it is upgraded, it kills all.
Signed-off-by: André Valentin <avalentin@marcant.net>
SVN-Revision: 41563
ubox validate_data defines yes/no as valid boolean options, do the same in
config_get_bool too.
Signed-off-by: Luka Perkov <luka@openwrt.org>
SVN-Revision: 41405
Switches /lib/functions/network.sh from jshn based json parsing to
jsonfilter expression while keeping the existing api.
Expensive methods like "network_find_wan" are up to 20x faster now.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 41281
Also add some more busybox symlinks which are useful for sysupgrade
on UBI-enabled devices.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
SVN-Revision: 41125
This allows services to bind to it at boot time instead of waiting for a
cable to be plugged in
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 40773
The current implementation of mtd will not append the backup
file created by sysupgrade to the correct partition, as mtd will append
the data to first jffs2 partition it finds. As the kernel is also
stored on a jffs2 partition (which resides before the overlay
partition), the data will be appended to this partition.
To fix this problem, a new option
-s <number> skip the first n bytes when appending data to the jffs2 partiton, defaults to "0"
is added to mtd.
Signed-off-by: Peter Wagner <tripolar@gmx.at>
SVN-Revision: 38807
In commit r38690, the MAC address canonicalization
has been converted to use 'tr' instead of 'printf'.
This only works if with MAC addresses which uses
the 'xx:xx:xx:xx:xx:xx' format.
However on some boards, the MAC addresses are stored
in different format in the mtd partition. Some vendors
are using hyphens or dots as separators instead of
colons. Also the leading zeroes may be missing from the
individual octets or those are replaced with spaces.
Add a new function which can be used to convert these
into the 'xx:xx:xx:xx:xx:xx' format. Also update the
'mtd_get_mac_ascii' function to use the new helper.
The helper function is based on this code:
http://isquared.nl/blog/2010/08/11/Bash-function-to-canonicalize-MAC-addresses/
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 38803
The mtd_get_mac_ascii utility function was broken. This fixes it.
- Remove the superfluous include of /lib/functions.sh. The
function is already in that file so it is pointless,
- only use a variable if the whole key word matches,
- don't try to process the MAC address if it is empty,
- use 'tr' to canonicalize the MAC address,
Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
[juhosg: add more fixes, update commit message]
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 38690
With eglibc, "ldd busybox" give us
libcrypt.so.1 => /lib/libcrypt.so.1 (0x774be000)
libm.so.6 => /lib/libm.so.6 (0x773e4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x773c0000)
libc.so.6 => /lib/libc.so.6 (0x77276000)
/lib/ld.so.1 (0x774fe000)
Thus /lib/ld.so.1 is not printed by the libs fonction and isn't copied to the 'new' root before pivot root
libs() { ldd $* | awk '{print $3}'; }
https://dev.openwrt.org/browser/trunk/package/base-files/files/lib/upgrade/common.sh
With uclibc the last line of "ldd busybox" is
ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x77ada000)
Don't know for musl!
This patch replace https://dev.openwrt.org/changeset/19167, as glibc is gone
The other way around is to rework libs()
Please apply the fix (mine or another) on trunk and AA
Might fix https://dev.openwrt.org/ticket/12273
Signed-off-by: Etienne CHAMPETIER <etienne.champetier@free.fr>
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 36107
Currently, most platforms define such helpers in their own diag.sh
implementation with almost identical code. By factoring out the
common ground it's possible to simplify maintainability and
homogenize the haptics over multiple platforms (so far as is
reasonably practicable, in a next step).
[juhosg:
- fix led_set_attr parameters in led_timer
- add led_morse and status_led_set_morse helpers
- add status_led_blink_{preinit,failsafe} helpers]
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 35648
Sysupgrade defines its very own pivot() function.
Prior merging boot.sh and functions.sh sysupgrade just included boot.sh,
now it includes functions.sh which defines pivot() as well, however
slightly different which causes sysupgrade to fail.
This is a hot-fix to unbreak sysupgrade, however those two pivot()
functions should actually get merged.
SVN-Revision: 34815
The behaviour of calling 'mount' differed depending on whether it called
the busybox-mount, the mount of util-linux, the mount defined in
/lib/functions.sh and /lib/functions/boot.sh
/etc/preinit even included /lib/functions.sh and /lib/functions/boot.sh,
both re-defining 'mount'.
SVN-Revision: 34792
- support reading inactive gateways and DNS information in
network_get_gateway(), network_get_dnsserver() and network_get_dnssearch()
by passing "true" as optional last argument
- internally cache fetched values to speed up subsequent accesses to the same
data, introduce network_flush_cache() to clear them
- add some inline function documentation
SVN-Revision: 34722
Reverting commit 34641.
Function find_mtd_part() is needed by some scripts deployed
for certain targets but not including boot.sh after all.
Still, all this certainly needs some love.
SVN-Revision: 34642
Since all scripts using this function include /lib/functions/boot.sh -
where this function is defined as well - it can be dropped
from /lib/functions.sh. Also avoids further confusion about this
function being declared and defined in two different places.
SVN-Revision: 34641
Busybox built against musl-libc will choke on these otherwise, besides that
it is more natural to use the filesystem type, then options, then name, then
mountpoint.
Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 34308
* allow matching process by name (useful for processes changing it)
* check if first argument is executable
* fix function name used in error messages
SVN-Revision: 28991
* add service_check function for checking if a process is alive
* add service_signal for sending arbitrary signals to a process
* change service_stop to send a TERM signal first, wait for the process to die and send a KILL signal if it doen't
* have service_kill print a warning on STDERR stating it has been deprecated
SVN-Revision: 28865
Adds symlinks for printf and wc to make life happier in the sysupgrade ramdisk.
Also make code more readable by escaping that overly long line.
Signed-off-by: Daniel Golle <dgolle@allnet.de>
SVN-Revision: 28616
So far, we are setting the bridge interface up before having added any
bridge interface ports. This results in the bridge assigning a random
mac address to its bridge interface and therefore IPv6 assigning a
matching link local address to the bridge interface as soon as the
bridge interface is up. After adding the first bridge port interface,
the bridge's mac address is reset correctly, however the IPv6 link
local address stays the same.
This commit ensures that we are at least having the IPv6 link local
address of the first interface added to the bridge instead of a random
one.
Signed-off-by: Linus Lüssing <linus.luessing@web.de>
SVN-Revision: 26426
During the first OpenWrt boot after a clean flash (when the jffs2
partition is not yet initialized) tmpfs is used instead of the usual
jffs2 overlay filesystem. If this tmpfs is mounted with default
options, all directories created there (/etc, /etc/config, other
subdirectories in /etc) get permissions 1777 by default, and these
permissions then persist in the created jffs2 at least until
subsequent sysupgrade. Mounting tmpfs with mode=0755 fixes the
permission problem.
Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
SVN-Revision: 23906
The following error is displayed during network configuration on any device that has DEVICE_TYPE set to something else then router, or has brctl functionality disabled through some other method:
"brctl: SIOCGIFBR: Package not installed"
This is due to the unbridge function being called, which uses "brctl show" to determine if the interface is bridged.
Signed-off-by: Ithamar R. Adema <ithamar.adema@team-embedded.nl>
SVN-Revision: 20218
* Localize a lot more variables than before.
* Do stuff or localize variables at later points or inner blocks
so less commands are executed in some cases.
* Use the default option of config_get where it makes sense.
Signed-off-by: Malte S. Stretz <mss@apache.org>
SVN-Revision: 17160