The flash layout on the Storlink reference design for Gemini
is using 2 MB flash for the kernel, and it also insists on
overwriting the partition table with default values on every
boot. The same is true for the SQ201. This poses a problem
on recent OpenWrt firmware as the base zImage is bigger
than 2 MB.
At the same time there is a ramdisk partition of 6 MB that we
don't really need. The partition table looks like this:
Creating 7 MTD partitions on "30000000.flash":
0x000000000000-0x000000016000 : "BOOT"
0x000000120000-0x000000320000 : "Kern"
0x000000320000-0x000000920000 : "Ramdisk"
0x000000920000-0x000000f20000 : "Application"
0x000000f20000-0x000000f40000 : "VCTL"
0x000000f40000-0x000000fe0000 : "CurConf"
0x000000fe0000-0x000001000000 : "FIS directory"
On boot the "Kern" partition is copied to RAM @0x01600000
and the "Ramdisk" partition is copied to RAM @0x00800000.
Then the kernel is executed.
The idea with this patch is to extend the "Kern" partition
with the "Ramdisk" partition to get a full 8 MB to use
for the kernel. Then we put the OpenWrt JFFS2 rootfs
inside the "Application" partition.
We create a small assembly loop that we prepend to the
"Kern" image that will copy the "Kern" from 0x0160000
and the "Ramdisk" from 0x00800000 and put them in
consecutive space at 0x00400000 and execute it from
there, using "Application" as rootfs.
We generate 3 main files:
- zImage - contains the assembly bootstrap loop and
the first part of the generated kernel image
- rd.gz - contains the second part of the generated
kernel image
- hddapp.tgz - contains the root filesystem
On the SQ201 I flash these manually using the native boot
loader PLATO, "Y" alternative for the zImage, "R" for
the rd.gz image and "A" for hddapp.tgz.
This works fine and I can now boot to prompt on the SQ201
with nothing but flash.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This package just contains a small Gemini-only assembler
bootstrap loop to copy the kernel from the two fragments
(previously zImage at 0x01600000 and initramdisk at 0x00800000)
into one big zImage of up to 8 MB at 0x00400000.
It will be built on demand from the Gemini image Makefile.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
The SL93512r and the NAS4220B have Redboot partition
tables (rely on these) and need to boot from mtdblock3.
Add two patches from upstream to fix this.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This changes the offsets for the MAC address location in
mtd_get_mac_binary* and mtd_get_mac_text to hexadecimal notation.
This will be much clearer for the reader when numbers are big, and
will also match the style used for mtd-mac-address in DTS files.
(e.g. 0x1006 and 0x5006 are much more useful than 4102 and 20486)
Acked-by: Alexander Couzens <lynxis@fe80.eu>
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
The command line enforced by the kernel is harmful, we want to
use the command line passed from the device tree. This is
especially important for the SQ201, Teltonika RUT and WBD111
which has a console set to 115200n8 and not 19200n8 like all
the others, so their consoles will be confusingly changing
baudrate between boot loader and kernel. The setting in the
device tree corresponds to what the boot loader is using.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Somehow I missed to add the magical image cooking file
for the SL93512r. Fix it.
Fixes: 18e2053bec ("gemini: Add StorLink SL93512r images")
Reported-by: Christian Lamparter <chunkeey@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [added Fixes,
changed subject]
This has been reported by Chen Minqiang (@ptpt52).
Reported-by: Chen Minqiang <ptpt52@gmail.com>
Fixes: 18e2053bec ("gemini: Add StorLink SL93512r images")
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [Added tags]
This adds image generation for the StorLink reference design
SL93512r. This board is now supported upstream in kernel
v4.19.
As this image structure is identical to SQ201 and Raidsonic,
we simply refer to this as "storlink-reference" from now on.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
The DIR-685 needs this module compiled in for safety
(it is facing the LAN ports) and it is now (as of
kernel v4.19) using the DSA switch architecture so
swconfig is not needed.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
It's a simple typo in the DNS file, which was pretty serious.
No scripts were working properly. Fix it up.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[integrate upstream patch into openwrt target]
Lets bump kernel to 4.19 on targets which were run tested or got ACKed
so we've enough time to make it ready for next release:
armvirt/32 (runtested in qemu)
armvirt/64 (runtested in qemu)
ath79/generic (runtested on Carambola2)
gemini/generic (runtested on DIR-685, DNS-313, SQ201, SL93512R)
imx6/generic (runtested on Apalis)
ipq40xx/generic (runtested on nbg6617)
malta/be64 (runtested in qemu)
malta/be (runtested in qemu)
malta/le (runtested in qemu)
malta/le64 (runtested in qemu)
mpc85xx/generic (runtested on TL-WDR4900)
mpc85xx/p2020 (runtested on P2020RDB)
mvebu/cortexa53
mvebu/cortexa72
mvebu/cortexa10
octeon/generic (runtested on EdgeRouter Lite)
sunxi/cortexa53 (build tested only)
sunxi/cortexa7 (runtested on Lime2-K)
sunxi/cortexa8 (build tested only)
tegra/generic
x86/64 (runtested in qemu)
Acked-by: Zoltan HERPAI <wigyori@uid0.hu> [sunxi]
Tested-by: Linus Walleij <linus.walleij@linaro.org> [gemini]
Tested-by: Tomasz Maciej Nowak <tomek_n@o2.pl> [mvebu, tegra]
Tested-by: Daniel Engberg <daniel.engberg.lists@pyret.net> [octeon]
Tested-by: Pawel Dembicki <paweldembicki@gmail.com> [mpc85xx/generic mpc85xx/p2020]
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
The squashfs+jffs2 root filesystem only came up as read-only
and the config would not take:
[ 25.600237] mount_root: Could not open mtd device: /dev/mtd4
[ 25.634674] mount_root: reading rootfs_data failed
[ 25.665346] mount_root: Could not open mtd device: /dev/mtd3
[ 25.699802] mount_root: reading rootfs failed
[ 25.726426] mount_root: mounting /dev/root
Well that is not very strange since the whole firmware partition
is made read-only in the device tree. Let's fix that by augmenting
the OpenWrt patch.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
The DIR-685 has the MAC addresses in the RedBoot code just like
DNS-313. Check some magic numbers to determine that the MAC
address is where we want it and extract it from RedBoot.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[replaced ifconfig with ip, ! -z = -n, added string quotes]
The DNS-313 isn't the only special board so let's bite the
bullet and create a case ladder in preparation for DIR-685.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [refreshed]
This simplifies the ethernet address extraction script
by using standard library functions to locate the MTD
partitions and extract ethernet address from a binary
offset location in the flash. Furthermore, the aging
ifconfig is replaced by the ip tool, which will now
assign the MAC addresses.
Suggested-by: Christian Lamparter <chunkeey@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[ifconfig replacement, use -n instead of ! -z,
-n requires string to be quoted within the test brackets,
drop prepended "x" in check, add quotes, make local
variables local, kill whitespaces]
CONFIG_PACKET is a important feature to have.
The Packet protocol is used by applications which
communicate directly with network devices without
an intermediate network protocol implemented in
the kernel, e.g. tcpdump and ip.
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This makes sysupgrade work on the D-Link DIR-685 after
initial factory install.
We create the platform.sh script to support sysupgrade
on more targets as we move on with sysupgrade support.
Cc: Petr Štetiar <ynezz@true.cz>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
[cleanup in platform.sh, removed superfluous SUPPORTED_DEVICES]
Using the same method as the D-Link DAP-2695 A1 we use
the "mtd" tool to augment the firmware checkum in flash
on first boot of a new firmware on the D-Link DIR-685.
We need to augment the Makefile for "mtd" to build in
the special WRGG fixup support for Gemini as well.
This works around the problem of the machine not booting
after factory install unless the sysupgrade is applied
immediately.
Based on commit e3875350f3
"ar71xx: add support for D-Link DAP-2695 rev. A1"
Cc: Stijn Tintel <stijn@linux-ipv6.be>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This moves some new configuration options to the generic kernel
configuration instead of configuring them for each target on our own.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
CONFIG_BINFMT_MISC allows it to add support for new executable formats
to the kernel from user space, the kernel will then detect for example a
java binary and call the java execution program automatically. I am not
aware that this feature is used in OpenWrt and this could be used to
exploit something. Deactivate it for all targets for now.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Some targets deactivated CONFIG_SYN_COOKIES, for unknown reasons, use
the default setting from the generic configuration which activates
CONFIG_SYN_COOKIES.
This should prevent SYN flooding.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
If the target supports a newer kernel version that is not used by default
yet, it can be enabled with this option
Signed-off-by: Felix Fietkau <nbd@nbd.name>
We currently generate a kernel that boots from the harddrive
in the DIR-685. That's not how we usually do things, so
let's augment it to boot from flash and mount the rootfs
using squashfs and JFFS2 like everyone else.
Partition splitting only work when the partitions are
inside of a "partitions" node which is why we have a patch
like this (submitted upstream).
Another patch drops the rootfs arguments and renames the
firmware partition while adding the compatible "wrg"
to it so the WRGG parser will kick in.
Factory image was tested by bravely reflashing the DIR-685
from stock firmware using the web UI and the serial console
boot loader.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This makes OpenWrt build an Ext2+Ext4 partitioned image
for the D-Link DNS-313 with two blank partitions, a boot
partition on /dev/sda3 and a rootfs partition on
/dev/sda4.
This uses the methods already used in apm821xx including
the tricks to convert the generated Ext2 filesystem
partition to version 1 so that the firmware bootloader
will properly recognize it.
We patch a bit around the build files to make sure we
get the rootfs size set and that genext2fs is properly
built.
Tested on the D-Link DNS-313.
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[Fixing and tricksing]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This factory binary i supposed to actually be unzipped and
untarred by the user as part of the installation process
(this NAS boots from harddisk), so name it "bootpart.tar.gz"
and not "factory.bin" so it is helpful for users.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This is the remainder of kernel patches for the v4.19
kernel. A whole slew of the previous patch stack is now
upstream, so this mainly contains the stuff that was
added upstream between v4.19 and v5.0-rc1, and then
the USB FOTG201 patches from Hans.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
With 6409b159e8 ("gemini: switch to 4.14") the EOF marker were dropped
from the rootfs images. Without the marker the rootfs_data partition
can't be created and it isn't possible to permanently store any
configuration changes.
Signed-off-by: Mathias Kresin <dev@kresin.me>
Replace the data placerholder in ImageInfo-itian_sq201 in a reproducible
way.
The code for the replace was accidentality dropped in 5bac623895
("gemini: unify and fix ib-nas4220b and sq201 image creation")
Signed-off-by: Mathias Kresin <dev@kresin.me>
Support for the Teltonika RUT1xx was added with the switch to kernel
4.4. Hidding such changes in a kernel switch commit is the wrong way and
the support for the Teltonika RUT1xx is pretty much incomplete.
Signed-off-by: Mathias Kresin <dev@kresin.me>
They were dropped with 6409b159e8 ("gemini: switch to 4.14") without
any explaination.
The image generation is disabled for now as it would break the build for
the target. The mkfwimage2 call need to be adjusted to reflect the real
size of kernel and rootfs. Nevertheless, add the required code to give
interested parties a chance to fix the remaining issues.
The dts would need to use the ecoscentric,redboot-fis-partitions
partition parser to get the correct partition offsets and size. It's
expected that the OEM firmware adjusts the on flash partition table with
the values defined in the image header.
Signed-off-by: Mathias Kresin <dev@kresin.me>
Use an output image filename based on the compatible string from the dts
files. This way it is way easier to get for which board an image is
intended.
Signed-off-by: Mathias Kresin <dev@kresin.me>
The root filesystem is already part of the factory image and most likely
not required at all.
The same applies to the kernel images.
Signed-off-by: Mathias Kresin <dev@kresin.me>