1
0
mirror of https://git.openwrt.org/openwrt/openwrt.git synced 2024-10-19 05:58:53 +02:00
OpenWrt Source Repository https://openwrt.org/
Go to file
Thibaut VARÈNE 7557e7f267 package/base-files: caldata: work around dd's limitation
tl;dr: dd will silently truncate the output if reading from special
files (e.g. sysfs attributes) with a too large bs parameter.

This problem was exposed on some RouterBOARD ipq40xx devices which use a
caldata payload which is larger than PAGE_SIZE, contrary to all other
currently supported RouterBOARD devices: the caldata would fail to
properly load with the current scripts.

Background: dd doesn't seem to correctly handle read() results that
return less than requested data. sysfs attributes have a kernel exchange
buffer which is at most PAGE_SIZE big, so only 1 page can be read() at a
time. In this case, if bs is larger than PAGE_SIZE, dd will silently
truncate blocks to PAGE_SIZE. With the current scripts using bs=<size>
count=1, the data is truncated to PAGE_SIZE as soon as the requested
<size> exceeds this value.

This commit works around this problem by using `cat` in the caldata
routines that can read from a file (routines that read from mtd devices
are untouched). cat correctly handles partial read requests. The output
is then piped to dd with the same parameters as before, to ensure that
the resulting file remains exactly the same.

This is a simple workaround, the downside is that it uses a pipe and one
more executable, and therefore has a larger memory footprint and is
slower. This is deemed acceptable considering these routines are only
used at boot time.

Tested-by: Robert Marko <robimarko@gmail.com>
Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
2020-05-28 11:22:22 +02:00
.github build: Update README & github help 2018-07-08 09:41:53 +01:00
config build: refactor JSON info files to profiles.json 2020-04-03 12:17:45 +02:00
include build: add option to treat recursive deps as error 2020-05-20 17:03:45 +02:00
package package/base-files: caldata: work around dd's limitation 2020-05-28 11:22:22 +02:00
scripts scripts/flashing/flash.sh: remove trailing whitespaces 2020-05-24 14:44:00 +02:00
target packages/boot: remove rbcfg 2020-05-28 11:09:10 +02:00
toolchain musl: restore lock skipping for mostly-singlethreaded programs, and related patches 2020-05-26 23:45:17 +02:00
tools squashfs: Fix compile with GCC 10 2020-05-24 14:38:40 +02:00
.gitattributes
.gitignore Revert ".gitignore: ignore more scripts/config output" 2020-04-11 19:53:28 +01:00
BSDmakefile
Config.in
feeds.conf.default feeds: switch git.lede-project.org URLs to git.openwrt.org 2018-01-16 16:59:22 +01:00
LICENSE
Makefile build: refactor JSON info files to profiles.json 2020-04-03 12:17:45 +02:00
README build: switch to Python 3 2019-07-26 08:09:16 +02:00
rules.mk rules.mk: remove "$(STAGING_DIR)/include" 2019-11-02 20:51:56 +01:00

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------

This is the buildsystem for the OpenWrt Linux distribution.

To build your own firmware you need a Linux, BSD or MacOSX system (case
sensitive filesystem required). Cygwin is unsupported because of the lack
of a case sensitive file system.

You need gcc, binutils, bzip2, flex, python3.5+, perl, make, find, grep, diff,
unzip, gawk, getopt, subversion, libz-dev and libc headers installed.

1. Run "./scripts/feeds update -a" to obtain all the latest package definitions
defined in feeds.conf / feeds.conf.default

2. Run "./scripts/feeds install -a" to install symlinks for all obtained
packages into package/feeds/

3. Run "make menuconfig" to select your preferred configuration for the
toolchain, target system & firmware packages.

4. Run "make" to build your firmware. This will download all sources, build
the cross-compile toolchain and then cross-compile the Linux kernel & all
chosen applications for your target system.

Sunshine!
	Your OpenWrt Community
	http://www.openwrt.org