Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
83f57c8889
120
Makefile
120
Makefile
@ -20,10 +20,6 @@ TOPDIR:=$(GLUON_ORIGOPENWRTDIR)
|
||||
export TOPDIR
|
||||
|
||||
|
||||
GLUON_TARGET ?= ar71xx-generic
|
||||
export GLUON_TARGET
|
||||
|
||||
|
||||
update: FORCE
|
||||
$(GLUONDIR)/scripts/update.sh
|
||||
$(GLUONDIR)/scripts/patch.sh
|
||||
@ -52,25 +48,12 @@ export OPENWRT_BUILD GLUON_TOOLS GREP_OPTIONS
|
||||
-include $(TOPDIR)/include/depends.mk
|
||||
include $(GLUONDIR)/include/toplevel.mk
|
||||
|
||||
define GluonProfile
|
||||
image/$(1): FORCE
|
||||
+@$$(GLUONMAKE) $$@
|
||||
endef
|
||||
|
||||
define GluonProfileFactorySuffix
|
||||
endef
|
||||
|
||||
define GluonProfileSysupgradeSuffix
|
||||
endef
|
||||
|
||||
define GluonProfileExtraSuffix
|
||||
endef
|
||||
|
||||
define GluonModel
|
||||
endef
|
||||
|
||||
include $(GLUONDIR)/targets/targets.mk
|
||||
include $(GLUONDIR)/targets/$(GLUON_TARGET)/profiles.mk
|
||||
|
||||
|
||||
CheckTarget := [ -n '$(GLUON_TARGET)' -a -n '$(GLUON_TARGET_$(GLUON_TARGET)_BOARD)' -a -n '$(GLUON_TARGET_$(GLUON_TARGET)_SUBTARGET)' ] \
|
||||
|| (echo -e 'Please set GLUON_TARGET to a valid target. Gluon supports the following targets:$(subst $(space),\n * ,$(GLUON_TARGETS))'; false)
|
||||
|
||||
|
||||
CheckExternal := test -d $(GLUON_ORIGOPENWRTDIR) || (echo 'You don'"'"'t seem to have obtained the external repositories needed by Gluon; please call `make update` first!'; false)
|
||||
@ -78,6 +61,7 @@ CheckExternal := test -d $(GLUON_ORIGOPENWRTDIR) || (echo 'You don'"'"'t seem to
|
||||
|
||||
prepare-target: FORCE
|
||||
@$(CheckExternal)
|
||||
@$(CheckTarget)
|
||||
+@$(GLUONMAKE_EARLY) prepare-target
|
||||
|
||||
|
||||
@ -88,22 +72,41 @@ all: prepare-target
|
||||
prepare: prepare-target
|
||||
+@$(GLUONMAKE) $@
|
||||
|
||||
clean dirclean download images: FORCE
|
||||
clean download images: FORCE
|
||||
@$(CheckExternal)
|
||||
@$(CheckTarget)
|
||||
+@$(GLUONMAKE_EARLY) maybe-prepare-target
|
||||
+@$(GLUONMAKE) $@
|
||||
|
||||
toolchain/% package/% target/%: FORCE
|
||||
toolchain/% package/% target/% image/%: FORCE
|
||||
@$(CheckExternal)
|
||||
@$(CheckTarget)
|
||||
+@$(GLUONMAKE_EARLY) maybe-prepare-target
|
||||
+@$(GLUONMAKE) $@
|
||||
|
||||
manifest: FORCE
|
||||
[ -n '$(GLUON_BRANCH)' ] || (echo 'Please set GLUON_BRANCH to create a manifest.'; false)
|
||||
echo '$(GLUON_PRIORITY)' | grep -qE '^([0-9]*\.)?[0-9]+$$' || (echo 'Please specify a numeric value for GLUON_PRIORITY to create a manifest.'; false)
|
||||
@[ -n '$(GLUON_BRANCH)' ] || (echo 'Please set GLUON_BRANCH to create a manifest.'; false)
|
||||
@echo '$(GLUON_PRIORITY)' | grep -qE '^([0-9]*\.)?[0-9]+$$' || (echo 'Please specify a numeric value for GLUON_PRIORITY to create a manifest.'; false)
|
||||
@$(CheckExternal)
|
||||
+@$(GLUONMAKE_EARLY) maybe-prepare-target
|
||||
+@$(GLUONMAKE) $@
|
||||
|
||||
mkdir -p $(GLUON_IMAGEDIR)/sysupgrade
|
||||
|
||||
( \
|
||||
echo 'BRANCH=$(GLUON_BRANCH)' && \
|
||||
echo 'DATE=$(shell $(GLUON_ORIGOPENWRTDIR)/staging_dir/host/bin/lua $(GLUONDIR)/scripts/rfc3339date.lua)' && \
|
||||
echo 'PRIORITY=$(GLUON_PRIORITY)' && \
|
||||
echo \
|
||||
) > $(GLUON_IMAGEDIR)/sysupgrade/$(GLUON_BRANCH).manifest
|
||||
|
||||
+($(foreach GLUON_TARGET,$(GLUON_TARGETS), \
|
||||
( [ ! -e $(BOARD_BUILDDIR)/prepared ] || ( $(GLUONMAKE) manifest GLUON_TARGET='$(GLUON_TARGET)' V=s$(OPENWRT_VERBOSE) ) ) && \
|
||||
) :)
|
||||
|
||||
dirclean : FORCE
|
||||
for dir in build_dir dl staging_dir tmp; do \
|
||||
rm -rf $(GLUON_ORIGOPENWRTDIR)/$$dir; \
|
||||
done
|
||||
rm -rf $(GLUON_BUILDDIR) $(GLUON_IMAGEDIR)
|
||||
|
||||
else
|
||||
|
||||
@ -136,22 +139,21 @@ define GluonProfile
|
||||
PROFILES += $(1)
|
||||
PROFILE_PACKAGES += $(filter-out -%,$(2) $(GLUON_$(1)_SITE_PACKAGES))
|
||||
GLUON_$(1)_DEFAULT_PACKAGES := $(2)
|
||||
GLUON_$(1)_FACTORY_SUFFIX := .bin
|
||||
GLUON_$(1)_SYSUPGRADE_SUFFIX := .bin
|
||||
GLUON_$(1)_EXTRA_SUFFIX :=
|
||||
GLUON_$(1)_FACTORY_SUFFIX := -squashfs-factory
|
||||
GLUON_$(1)_SYSUPGRADE_SUFFIX := -squashfs-sysupgrade
|
||||
GLUON_$(1)_FACTORY_EXT := .bin
|
||||
GLUON_$(1)_SYSUPGRADE_EXT := .bin
|
||||
GLUON_$(1)_MODELS :=
|
||||
endef
|
||||
|
||||
define GluonProfileFactorySuffix
|
||||
GLUON_$(1)_FACTORY_SUFFIX := $(2)
|
||||
GLUON_$(1)_FACTORY_EXT := $(3)
|
||||
endef
|
||||
|
||||
define GluonProfileSysupgradeSuffix
|
||||
GLUON_$(1)_SYSUPGRADE_SUFFIX := $(2)
|
||||
endef
|
||||
|
||||
define GluonProfileExtraSuffix
|
||||
GLUON_$(1)_EXTRA_SUFFIX := $(2)
|
||||
GLUON_$(1)_SYSUPGRADE_EXT := $(3)
|
||||
endef
|
||||
|
||||
define GluonModel
|
||||
@ -240,12 +242,6 @@ clean: FORCE
|
||||
+$(SUBMAKE) clean
|
||||
rm -f $(gluon_prepared_stamp)
|
||||
|
||||
dirclean: FORCE
|
||||
for dir in build_dir dl staging_dir tmp; do \
|
||||
rm -rf $(GLUON_ORIGOPENWRTDIR)/$$dir; \
|
||||
done
|
||||
rm -rf $(GLUON_BUILDDIR)
|
||||
|
||||
|
||||
export MD5SUM := $(GLUONDIR)/scripts/md5sum.sh
|
||||
export SHA512SUM := $(GLUONDIR)/scripts/sha512sum.sh
|
||||
@ -304,7 +300,8 @@ BIN_DIR = $(PROFILE_BUILDDIR)/images
|
||||
TMP_DIR = $(PROFILE_BUILDDIR)/tmp
|
||||
TARGET_DIR = $(PROFILE_BUILDDIR)/root
|
||||
|
||||
IMAGE_PREFIX = gluon-$(GLUON_SITE_CODE)-$$(cat $(gluon_prepared_stamp))
|
||||
PREPARED_RELEASE = $$(cat $(gluon_prepared_stamp))
|
||||
IMAGE_PREFIX = gluon-$(GLUON_SITE_CODE)-$(PREPARED_RELEASE)
|
||||
|
||||
OPKG:= \
|
||||
IPKG_TMP="$(TMP_DIR)/ipkgtmp" \
|
||||
@ -369,17 +366,13 @@ image: FORCE
|
||||
PROFILE="$(PROFILE)" KDIR="$(PROFILE_KDIR)" TARGET_DIR="$(TARGET_DIR)" BIN_DIR="$(BIN_DIR)" TMP_DIR="$(TMP_DIR)"
|
||||
|
||||
$(foreach model,$(GLUON_$(PROFILE)_MODELS), \
|
||||
$(if $(GLUON_$(PROFILE)_SYSUPGRADE_SUFFIX), \
|
||||
rm -f $(GLUON_IMAGEDIR)/sysupgrade/gluon-*-$(model)-sysupgrade$(GLUON_$(PROFILE)_SYSUPGRADE_SUFFIX) && \
|
||||
cp $(BIN_DIR)/gluon-$(GLUON_$(PROFILE)_MODEL_$(model))-sysupgrade$(GLUON_$(PROFILE)_SYSUPGRADE_SUFFIX) $(GLUON_IMAGEDIR)/sysupgrade/$(IMAGE_PREFIX)-$(model)-sysupgrade$(GLUON_$(PROFILE)_SYSUPGRADE_SUFFIX) && \
|
||||
$(if $(GLUON_$(PROFILE)_SYSUPGRADE_EXT), \
|
||||
rm -f $(GLUON_IMAGEDIR)/sysupgrade/gluon-*-$(model)-sysupgrade$(GLUON_$(PROFILE)_SYSUPGRADE_EXT) && \
|
||||
cp $(BIN_DIR)/gluon-$(GLUON_$(PROFILE)_MODEL_$(model))$(GLUON_$(PROFILE)_SYSUPGRADE_SUFFIX)$(GLUON_$(PROFILE)_SYSUPGRADE_EXT) $(GLUON_IMAGEDIR)/sysupgrade/$(IMAGE_PREFIX)-$(model)-sysupgrade$(GLUON_$(PROFILE)_SYSUPGRADE_EXT) && \
|
||||
) \
|
||||
$(if $(GLUON_$(PROFILE)_FACTORY_SUFFIX), \
|
||||
rm -f $(GLUON_IMAGEDIR)/factory/gluon-*-$(model)$(GLUON_$(PROFILE)_FACTORY_SUFFIX) && \
|
||||
cp $(BIN_DIR)/gluon-$(GLUON_$(PROFILE)_MODEL_$(model))-factory$(GLUON_$(PROFILE)_FACTORY_SUFFIX) $(GLUON_IMAGEDIR)/factory/$(IMAGE_PREFIX)-$(model)$(GLUON_$(PROFILE)_FACTORY_SUFFIX) && \
|
||||
) \
|
||||
$(if $(GLUON_$(PROFILE)_EXTRA_SUFFIX), \
|
||||
rm -f $(GLUON_IMAGEDIR)/factory/gluon-*-$(model)$(GLUON_$(PROFILE)_EXTRA_SUFFIX) && \
|
||||
cp $(BIN_DIR)/gluon-$(GLUON_$(PROFILE)_MODEL_$(model))$(GLUON_$(PROFILE)_EXTRA_SUFFIX) $(GLUON_IMAGEDIR)/factory/$(IMAGE_PREFIX)-$(model)$(GLUON_$(PROFILE)_EXTRA_SUFFIX) && \
|
||||
$(if $(GLUON_$(PROFILE)_FACTORY_EXT), \
|
||||
rm -f $(GLUON_IMAGEDIR)/factory/gluon-*-$(model)$(GLUON_$(PROFILE)_FACTORY_EXT) && \
|
||||
cp $(BIN_DIR)/gluon-$(GLUON_$(PROFILE)_MODEL_$(model))$(GLUON_$(PROFILE)_FACTORY_SUFFIX)$(GLUON_$(PROFILE)_FACTORY_EXT) $(GLUON_IMAGEDIR)/factory/$(IMAGE_PREFIX)-$(model)$(GLUON_$(PROFILE)_FACTORY_EXT) && \
|
||||
) \
|
||||
) :
|
||||
|
||||
@ -392,26 +385,17 @@ call_image/%: FORCE
|
||||
images: $(patsubst %,call_image/%,$(PROFILES)) ;
|
||||
|
||||
manifest: FORCE
|
||||
mkdir -p $(GLUON_IMAGEDIR)/sysupgrade
|
||||
(cd $(GLUON_IMAGEDIR)/sysupgrade && \
|
||||
echo 'BRANCH=$(GLUON_BRANCH)' && \
|
||||
echo 'DATE=$(shell $(STAGING_DIR_HOST)/bin/lua $(GLUONDIR)/scripts/rfc3339date.lua)' && \
|
||||
echo 'PRIORITY=$(GLUON_PRIORITY)' && \
|
||||
echo && \
|
||||
($(foreach profile,$(PROFILES), \
|
||||
( \
|
||||
cd $(GLUON_IMAGEDIR)/sysupgrade; \
|
||||
$(foreach profile,$(PROFILES), \
|
||||
$(foreach model,$(GLUON_$(profile)_MODELS), \
|
||||
for file in gluon-*-'$(model)-sysupgrade.bin'; do \
|
||||
[ -e "$$file" ] && echo \
|
||||
'$(model)' \
|
||||
"$$(echo "$$file" | sed -n -r -e 's/^gluon-$(call regex-escape,$(GLUON_SITE_CODE))-(.*)-$(call regex-escape,$(model))-sysupgrade\.bin$$/\1/p')" \
|
||||
"$$($(SHA512SUM) "$$file")" \
|
||||
"$$file" && break; \
|
||||
done; \
|
||||
file="$(IMAGE_PREFIX)-$(model)-sysupgrade$(GLUON_$(profile)_SYSUPGRADE_EXT)"; \
|
||||
[ -e "$$file" ] && echo '$(model)' "$(PREPARED_RELEASE)" "$$($(SHA512SUM) "$$file")" "$$file"; \
|
||||
) \
|
||||
) :) \
|
||||
) > $(GLUON_IMAGEDIR)/sysupgrade/$(GLUON_BRANCH).manifest
|
||||
) : \
|
||||
) >> $(GLUON_IMAGEDIR)/sysupgrade/$(GLUON_BRANCH).manifest
|
||||
|
||||
|
||||
.PHONY: all images prepare clean gluon-tools
|
||||
.PHONY: all images prepare clean gluon-tools manifest
|
||||
|
||||
endif
|
||||
|
@ -73,30 +73,23 @@ won't run correctly without some adjustments, so better double check that everyt
|
||||
Add support to the build system
|
||||
'''''''''''''''''''''''''''''''
|
||||
A directory for the new target must be created under ``targets``, and it must be added
|
||||
to ``targets/targets.mk``. In the new target directory, four files must be created:
|
||||
to ``targets/targets.mk``. In the new target directory, three files must be created:
|
||||
|
||||
* config
|
||||
* kernel-config
|
||||
* kernel-vermagic
|
||||
* profiles.mk
|
||||
* vermagic
|
||||
|
||||
The file ``config`` can be used to add additional, target-specific options to the OpenWrt config. If such options
|
||||
aren't necessary, it can be left empty. For ``profiles.mk``, see :ref:`hardware-adding-profiles`.
|
||||
The file ``config`` can be used to add additional, target-specific options to the OpenWrt config. It
|
||||
must at least select the correct target and subtarget. For ``profiles.mk``, see :ref:`hardware-adding-profiles`.
|
||||
|
||||
The files ``kernel-config`` and ``kernel-vermagic`` must have the correct content so kernel modules from the upstream repositories
|
||||
can be easily installed. The OpenWrt version a Gluon release is based on is defined by the upstream package repo URL in ``include/gluon.mk``
|
||||
(in the variable ``CONFIG_VERSION_REPO``); at the time this documentation was written, this was ``barrier_breaker/14.07-rc3``; whenever
|
||||
the package repo is updated, all ``kernel-config`` and ``kernel-vermagic`` files must be updated as well.
|
||||
The files ``vermagic`` must have the correct content so kernel modules from the upstream repositories
|
||||
can be installed without dependency issues. The OpenWrt version a Gluon release is based on is defined by the upstream package repo URL in ``include/gluon.mk``
|
||||
(in the variable ``CONFIG_VERSION_REPO``); at the time this documentation was written, this was ``barrier_breaker/14.07``; whenever
|
||||
the package repo is updated, all ``vermagic`` files must be updated as well.
|
||||
|
||||
The file ``kernel-vermagic`` just contains a hash which is part of the version number of the kernel package. So in the case of ``ar71xx-generic`` on
|
||||
``barrier_breaker/14.07-rc3``, we look in the directory ``https://downloads.openwrt.org/barrier_breaker/14.07-rc3/ar71xx/generic/packages/`` and
|
||||
find that the kernel package is called ``kernel_3.10.49-1-94831e5bcf361d1c03e87a15e152b0e8_ar71xx.ipk``. This makes the ``kernel-vermagic`` the
|
||||
string ``94831e5bcf361d1c03e87a15e152b0e8``.
|
||||
|
||||
For ``kernel-config``, the OpenWrt image builder must be downloaded. Again, for ``ar71xx-generic`` on
|
||||
``barrier_breaker/14.07-rc3``, we download ``OpenWrt-SDK-ar71xx-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2``
|
||||
from ``https://downloads.openwrt.org/barrier_breaker/14.07-rc3/ar71xx/generic/``. After unpacking it, we use the file
|
||||
``OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.49/.config``
|
||||
as our ``kernel-config``.
|
||||
The content is a hash which is part of the version number of the kernel package. So in the case of ``ar71xx-generic`` on
|
||||
``barrier_breaker``, we look for the kernel package in the directory ``https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/base/``.
|
||||
As the kernel package is called ``kernel_3.10.49-1-0114c71ed85677c9c1e4911437af4743_ar71xx.ipk``, the correct ``vermagic`` string
|
||||
is ``0114c71ed85677c9c1e4911437af4743``.
|
||||
|
||||
After this, is should be sufficient to call ``make GLUON_TARGET=<target>-<subtarget>`` to build the images for the new target.
|
||||
|
@ -28,13 +28,12 @@ A fully automated nightly build could use the following commands:
|
||||
(cd site && git pull)
|
||||
make update
|
||||
make clean
|
||||
make -j5 GLUON_BRANCH=experimental
|
||||
make -j5 GLUON_TARGET=ar71xx-generic GLUON_BRANCH=experimental
|
||||
make manifest GLUON_BRANCH=experimental
|
||||
contrib/sign.sh $SECRETKEY images/sysupgrade/experimental.manifest
|
||||
|
||||
rm -rf /where/to/put/this/experimental
|
||||
cp -r images /where/to/put/this/experimental
|
||||
ln -s experimental.manifest /where/to/put/this/experimental/sysupgrade/manifest
|
||||
|
||||
|
||||
Infrastructure
|
||||
@ -55,10 +54,6 @@ We suggest to have following directory tree accessible via http:
|
||||
sysupgrade/
|
||||
factory/
|
||||
|
||||
The last level is generated by the Gluon build process. Do not forget
|
||||
to create symlinks from ``manifest`` to ``<branch>.manifest`` in the
|
||||
sysupgrade directories to allow upgrades from Gluon versions before 2014.3.
|
||||
|
||||
The server should be available via IPv6.
|
||||
|
||||
Command Line
|
||||
|
@ -64,15 +64,13 @@ directory and build Gluon:
|
||||
|
||||
cd ..
|
||||
make update # Get other repositories used by Gluon
|
||||
make # Build Gluon
|
||||
make GLUON_TARGET=ar71xx-generic # Build Gluon
|
||||
|
||||
When calling make, the OpenWRT build environment is prepared/updated.
|
||||
When calling make, the OpenWrt build environment is prepared/updated.
|
||||
In case of errors read the messages carefully and try to fix the stated issues (e.g. install tools not available yet).
|
||||
To rebuild the images only, just use:
|
||||
|
||||
::
|
||||
|
||||
make images
|
||||
``ar71xx-generic`` is the most common target and will generated images for most of the supported hardware.
|
||||
To see a complete list of supported targets, call ``make`` without setting ``GLUON_TARGET``.
|
||||
|
||||
The built images can be found in the directory `images`. Of these, the factory
|
||||
images are to be used when flashing from the original firmware a device came with,
|
||||
@ -88,9 +86,9 @@ There are two levels of `make clean`:
|
||||
|
||||
::
|
||||
|
||||
make clean
|
||||
make clean GLUON_TARGET=ar71xx-generic
|
||||
|
||||
will ensure all packages are rebuilt; this is what you normally want to do after an update.
|
||||
will ensure all packages are rebuilt for a single target; this is what you normally want to do after an update.
|
||||
|
||||
::
|
||||
|
||||
@ -115,12 +113,13 @@ GLUON_BUILDDIR
|
||||
Working directory during build. Defaults to ``build/``.
|
||||
|
||||
|
||||
So all in all, to update and rebuild a Gluon build tree, the following commands should be used:
|
||||
So all in all, to update and rebuild a Gluon build tree, the following commands should be used (repeat the
|
||||
``make clean`` and ``make`` for all targets you want to build):
|
||||
|
||||
::
|
||||
|
||||
git pull
|
||||
(cd site && git pull)
|
||||
make update
|
||||
make clean
|
||||
make
|
||||
make clean GLUON_TARGET=ar71xx-generic
|
||||
make GLUON_TARGET=ar71xx-generic
|
||||
|
@ -1,10 +1,6 @@
|
||||
override define Kernel/Configure
|
||||
cp $(GLUONDIR)/targets/$(GLUON_TARGET)/kernel-config $(LINUX_DIR)/.config
|
||||
+$(MAKE) $(KERNEL_MAKEOPTS) oldnoconfig
|
||||
$(call Kernel/SetInitramfs)
|
||||
rm -rf $(KERNEL_BUILD_DIR)/modules
|
||||
+[ -d $(LINUX_DIR)/user_headers ] || $(MAKE) $(KERNEL_MAKEOPTS) INSTALL_HDR_PATH=$(LINUX_DIR)/user_headers headers_install
|
||||
cp $(GLUONDIR)/targets/$(GLUON_TARGET)/kernel-vermagic $(LINUX_DIR)/.vermagic
|
||||
$(call Kernel/Configure/Default)
|
||||
cp $(GLUONDIR)/targets/$(GLUON_TARGET)/vermagic $(LINUX_DIR)/.vermagic
|
||||
endef
|
||||
|
||||
# The Makefile included here is $(TOPDIR)/target/linux/$(BOARD)/Makefile
|
||||
|
@ -1,3 +1,5 @@
|
||||
CONFIG_ALL_KMODS=y
|
||||
|
||||
CONFIG_IMAGEOPT=y
|
||||
# CONFIG_PER_FEED_REPO is not set
|
||||
|
||||
|
@ -8,12 +8,14 @@ GLUON_BUILDDIR ?= $(GLUONDIR)/build
|
||||
GLUON_ORIGOPENWRTDIR := $(GLUONDIR)/openwrt
|
||||
GLUON_SITE_CONFIG := $(GLUON_SITEDIR)/site.conf
|
||||
|
||||
GLUON_OPENWRTDIR = $(GLUON_BUILDDIR)/$(GLUON_TARGET)/openwrt
|
||||
export GLUONDIR GLUON_SITEDIR GLUON_SITE_CONFIG GLUON_IMAGEDIR GLUON_BUILDDIR
|
||||
|
||||
BOARD_BUILDDIR = $(GLUON_BUILDDIR)/$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))
|
||||
|
||||
BOARD_BUILDDIR = $(GLUON_BUILDDIR)/$(GLUON_TARGET)
|
||||
BOARD_KDIR = $(BOARD_BUILDDIR)/kernel
|
||||
|
||||
export GLUONDIR GLUON_SITEDIR GLUON_SITE_CONFIG GLUON_IMAGEDIR GLUON_OPENWRTDIR GLUON_BUILDDIR
|
||||
GLUON_OPENWRTDIR = $(BOARD_BUILDDIR)/openwrt
|
||||
|
||||
|
||||
$(GLUON_SITEDIR)/site.mk:
|
||||
$(error There was no site configuration found. Please check out a site configuration to $(GLUON_SITEDIR))
|
||||
@ -58,8 +60,6 @@ GLUON_TARGET_$$(gluon_target)_BOARD := $(1)
|
||||
GLUON_TARGET_$$(gluon_target)_SUBTARGET := $(2)
|
||||
endef
|
||||
|
||||
regex-escape = $(shell echo '$(1)' | sed -e 's/[]\/()$*.^|[]/\\&/g')
|
||||
|
||||
GLUON_DEFAULT_PACKAGES := gluon-core kmod-ipv6 firewall ip6tables -uboot-envtools
|
||||
|
||||
override DEFAULT_PACKAGES.router :=
|
||||
|
2
modules
2
modules
@ -8,7 +8,7 @@ PACKAGES_OPENWRT_COMMIT=01fcd1f29174a56d6ddb59901ed8c67ea42c3a8f
|
||||
PACKAGES_OPENWRT_BRANCH=for-14.07
|
||||
|
||||
PACKAGES_GLUON_REPO=git://github.com/freifunk-gluon/packages.git
|
||||
PACKAGES_GLUON_COMMIT=8ee69212a3b27a9fc5ef6d25016d82ea80ec1a7d
|
||||
PACKAGES_GLUON_COMMIT=2d0f8b38dbf6b01f77c780c7c80a995116e3eca8
|
||||
|
||||
PACKAGES_ROUTING_REPO=git://github.com/openwrt-routing/packages.git
|
||||
PACKAGES_ROUTING_COMMIT=5d4ad63897b435d5df0f39a49bd58962c22c33b8
|
||||
|
@ -481,10 +481,10 @@ index 0000000..d0c1bbd
|
||||
++#endif /* SPECTRAL_COMMON_H */
|
||||
diff --git a/package/kernel/mac80211/patches/919-update-ath10k.patch b/package/kernel/mac80211/patches/919-update-ath10k.patch
|
||||
new file mode 100644
|
||||
index 0000000..0f5d87a
|
||||
index 0000000..45fccb8
|
||||
--- /dev/null
|
||||
+++ b/package/kernel/mac80211/patches/919-update-ath10k.patch
|
||||
@@ -0,0 +1,32869 @@
|
||||
@@ -0,0 +1,33023 @@
|
||||
+--- a/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
++++ b/drivers/net/wireless/ath/ath10k/Kconfig
|
||||
+@@ -26,13 +26,15 @@ config ATH10K_DEBUG
|
||||
@ -27862,7 +27862,7 @@ index 0000000..0f5d87a
|
||||
++
|
||||
++ /* Avoid linking error on devm_hwmon_device_register_with_groups, I
|
||||
++ * guess linux/hwmon.h is missing proper stubs. */
|
||||
++ if (!config_enabled(CONFIG_HWMON))
|
||||
++ if (!config_enabled(CPTCFG_HWMON))
|
||||
++ return 0;
|
||||
++
|
||||
++ hwmon_dev = devm_hwmon_device_register_with_groups(ar->dev,
|
||||
@ -33354,6 +33354,160 @@ index 0000000..0f5d87a
|
||||
++} __packed;
|
||||
++
|
||||
+ #endif /* SPECTRAL_COMMON_H */
|
||||
+--- a/compat/backport-3.13.c
|
||||
++++ b/compat/backport-3.13.c
|
||||
+@@ -12,6 +12,10 @@
|
||||
+ #include <linux/version.h>
|
||||
+ #include <linux/kernel.h>
|
||||
+ #include <net/genetlink.h>
|
||||
++#include <linux/delay.h>
|
||||
++#include <linux/pci.h>
|
||||
++#include <linux/device.h>
|
||||
++#include <linux/hwmon.h>
|
||||
+
|
||||
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
|
||||
+ #ifdef CPTCFG_REGULATOR
|
||||
+@@ -200,3 +204,103 @@ bool __net_get_random_once(void *buf, in
|
||||
+ }
|
||||
+ EXPORT_SYMBOL_GPL(__net_get_random_once);
|
||||
+ #endif /* __BACKPORT_NET_GET_RANDOM_ONCE */
|
||||
++
|
||||
++#ifdef CPTCFG_PCI
|
||||
++#define pci_bus_read_dev_vendor_id LINUX_BACKPORT(pci_bus_read_dev_vendor_id)
|
||||
++static bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
|
||||
++ int crs_timeout)
|
||||
++{
|
||||
++ int delay = 1;
|
||||
++
|
||||
++ if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
|
||||
++ return false;
|
||||
++
|
||||
++ /* some broken boards return 0 or ~0 if a slot is empty: */
|
||||
++ if (*l == 0xffffffff || *l == 0x00000000 ||
|
||||
++ *l == 0x0000ffff || *l == 0xffff0000)
|
||||
++ return false;
|
||||
++
|
||||
++ /*
|
||||
++ * Configuration Request Retry Status. Some root ports return the
|
||||
++ * actual device ID instead of the synthetic ID (0xFFFF) required
|
||||
++ * by the PCIe spec. Ignore the device ID and only check for
|
||||
++ * (vendor id == 1).
|
||||
++ */
|
||||
++ while ((*l & 0xffff) == 0x0001) {
|
||||
++ if (!crs_timeout)
|
||||
++ return false;
|
||||
++
|
||||
++ msleep(delay);
|
||||
++ delay *= 2;
|
||||
++ if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, l))
|
||||
++ return false;
|
||||
++ /* Card hasn't responded in 60 seconds? Must be stuck. */
|
||||
++ if (delay > crs_timeout) {
|
||||
++ printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not responding\n",
|
||||
++ pci_domain_nr(bus), bus->number, PCI_SLOT(devfn),
|
||||
++ PCI_FUNC(devfn));
|
||||
++ return false;
|
||||
++ }
|
||||
++ }
|
||||
++
|
||||
++ return true;
|
||||
++}
|
||||
++
|
||||
++bool pci_device_is_present(struct pci_dev *pdev)
|
||||
++{
|
||||
++ u32 v;
|
||||
++
|
||||
++ return pci_bus_read_dev_vendor_id(pdev->bus, pdev->devfn, &v, 0);
|
||||
++}
|
||||
++EXPORT_SYMBOL_GPL(pci_device_is_present);
|
||||
++#endif /* CPTCFG_PCI */
|
||||
++
|
||||
++#ifdef CPTCFG_HWMON
|
||||
++struct device*
|
||||
++hwmon_device_register_with_groups(struct device *dev, const char *name,
|
||||
++ void *drvdata,
|
||||
++ const struct attribute_group **groups)
|
||||
++{
|
||||
++ struct device *hwdev;
|
||||
++
|
||||
++ hwdev = hwmon_device_register(dev);
|
||||
++ hwdev->groups = groups;
|
||||
++ dev_set_drvdata(hwdev, drvdata);
|
||||
++ return hwdev;
|
||||
++}
|
||||
++
|
||||
++static void devm_hwmon_release(struct device *dev, void *res)
|
||||
++{
|
||||
++ struct device *hwdev = *(struct device **)res;
|
||||
++
|
||||
++ hwmon_device_unregister(hwdev);
|
||||
++}
|
||||
++
|
||||
++struct device *
|
||||
++devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
|
||||
++ void *drvdata,
|
||||
++ const struct attribute_group **groups)
|
||||
++{
|
||||
++ struct device **ptr, *hwdev;
|
||||
++
|
||||
++ if (!dev)
|
||||
++ return ERR_PTR(-EINVAL);
|
||||
++
|
||||
++ ptr = devres_alloc(devm_hwmon_release, sizeof(*ptr), GFP_KERNEL);
|
||||
++ if (!ptr)
|
||||
++ return ERR_PTR(-ENOMEM);
|
||||
++
|
||||
++ hwdev = hwmon_device_register_with_groups(dev, name, drvdata, groups);
|
||||
++ if (IS_ERR(hwdev))
|
||||
++ goto error;
|
||||
++
|
||||
++ *ptr = hwdev;
|
||||
++ devres_add(dev, ptr);
|
||||
++ return hwdev;
|
||||
++
|
||||
++error:
|
||||
++ devres_free(ptr);
|
||||
++ return hwdev;
|
||||
++}
|
||||
++EXPORT_SYMBOL_GPL(devm_hwmon_device_register_with_groups);
|
||||
++#endif
|
||||
+--- /dev/null
|
||||
++++ b/backport-include/linux/hwmon.h
|
||||
+@@ -0,0 +1,34 @@
|
||||
++#ifndef __BACKPORT_LINUX_HWMON_H
|
||||
++#define __BACKPORT_LINUX_HWMON_H
|
||||
++#include_next <linux/hwmon.h>
|
||||
++#include <linux/version.h>
|
||||
++
|
||||
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)
|
||||
++/*
|
||||
++ * Backports
|
||||
++ *
|
||||
++ * commit bab2243ce1897865e31ea6d59b0478391f51812b
|
||||
++ * Author: Guenter Roeck <linux@roeck-us.net>
|
||||
++ * Date: Sat Jul 6 13:57:23 2013 -0700
|
||||
++ *
|
||||
++ * hwmon: Introduce hwmon_device_register_with_groups
|
||||
++ *
|
||||
++ * hwmon_device_register_with_groups() lets callers register a hwmon device
|
||||
++ * together with all sysfs attributes in a single call.
|
||||
++ *
|
||||
++ * When using hwmon_device_register_with_groups(), hwmon attributes are attached
|
||||
++ * to the hwmon device directly and no longer with its parent device.
|
||||
++ *
|
||||
++ * Signed-off-by: Guenter Roeck <linux@roeck-us.net>
|
||||
++ */
|
||||
++struct device *
|
||||
++hwmon_device_register_with_groups(struct device *dev, const char *name,
|
||||
++ void *drvdata,
|
||||
++ const struct attribute_group **groups);
|
||||
++struct device *
|
||||
++devm_hwmon_device_register_with_groups(struct device *dev, const char *name,
|
||||
++ void *drvdata,
|
||||
++ const struct attribute_group **groups);
|
||||
++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0) */
|
||||
++
|
||||
++#endif /* __BACKPORT_LINUX_HWMON_H */
|
||||
diff --git a/package/kernel/mac80211/patches/920-ath10k_allow_fallback_to_board_bin_on_empty_otp_stream.patch b/package/kernel/mac80211/patches/920-ath10k_allow_fallback_to_board_bin_on_empty_otp_stream.patch
|
||||
index 6a5c766..6a3d2a4 100644
|
||||
--- a/package/kernel/mac80211/patches/920-ath10k_allow_fallback_to_board_bin_on_empty_otp_stream.patch
|
||||
|
@ -0,0 +1,24 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Wed, 11 Mar 2015 18:30:54 +0100
|
||||
Subject: uClibc: fix syscall() for syscalls with 6 arguments on PowerPC
|
||||
|
||||
Patch from the uClibc master.
|
||||
|
||||
Fixes the package fastd on PowerPC.
|
||||
|
||||
diff --git a/toolchain/uClibc/patches-0.9.33.2/470-powerpc_syscall6.patch b/toolchain/uClibc/patches-0.9.33.2/470-powerpc_syscall6.patch
|
||||
new file mode 100644
|
||||
index 0000000..9511dcc
|
||||
--- /dev/null
|
||||
+++ b/toolchain/uClibc/patches-0.9.33.2/470-powerpc_syscall6.patch
|
||||
@@ -0,0 +1,10 @@
|
||||
+--- a/libc/sysdeps/linux/powerpc/syscall.S
|
||||
++++ b/libc/sysdeps/linux/powerpc/syscall.S
|
||||
+@@ -30,6 +30,7 @@ syscall:
|
||||
+ mr 5,6
|
||||
+ mr 6,7
|
||||
+ mr 7,8
|
||||
++ mr 8,9
|
||||
+ sc
|
||||
+ bnslr;
|
||||
+
|
@ -0,0 +1,35 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Thu, 12 Mar 2015 16:57:32 +0100
|
||||
Subject: ar71xx: Add build profile for the gl-inet 6416A and 6408A
|
||||
|
||||
Patch to add the buildprofile for the GL-Init-6408A-v1 and the GL-Inet-6416A-v1
|
||||
Both devices are identical, only difference is one comes with 8MB flash and
|
||||
the other with 16MB flash
|
||||
|
||||
Official website: http://www.gl-inet.com/w/?page_id=241&lang=en
|
||||
Comprehensive list of specs: https://revspace.nl/GL-Inet
|
||||
|
||||
Signed-off-by: Martijn Zilverschoon <martijn@friedzombie.com>
|
||||
|
||||
diff --git a/target/linux/ar71xx/image/Makefile b/target/linux/ar71xx/image/Makefile
|
||||
index 8505ac4..fc59c33 100644
|
||||
--- a/target/linux/ar71xx/image/Makefile
|
||||
+++ b/target/linux/ar71xx/image/Makefile
|
||||
@@ -1216,7 +1216,8 @@ $(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ARCHERC7V1,archer-c7-v1,ARCHER-C7
|
||||
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ARCHERC7V2,archer-c7-v2,ARCHER-C7,ttyS0,115200,0xc7000002,1,16Mlzma))
|
||||
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ELM150,el-m150,EL-M150,ttyATH0,115200,0x01500101,1,8Mlzma))
|
||||
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,ELMINI,el-mini,EL-MINI,ttyATH0,115200,0x01530001,1,8Mlzma))
|
||||
-$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET,gl-inet-v1,GL-INET,ttyATH0,115200,0x08000001,1,8Mlzma))
|
||||
+$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET6408A,gl-inet-6408A-v1,GL-INET,ttyATH0,115200,0x08000001,1,8Mlzma))
|
||||
+$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,GLINET6416A,gl-inet-6416A-v1,GL-INET,ttyATH0,115200,0x08000001,1,16Mlzma))
|
||||
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR10U,tl-mr10u-v1,TL-MR10U,ttyATH0,115200,0x00100101,1,4Mlzma))
|
||||
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV1,tl-mr11u-v1,TL-MR11U,ttyATH0,115200,0x00110101,1,4Mlzma))
|
||||
$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLMR11UV2,tl-mr11u-v2,TL-MR11U,ttyATH0,115200,0x00110102,1,4Mlzma))
|
||||
@@ -1304,6 +1305,7 @@ $(eval $(call MultiProfile,AP136,AP136_010 AP136_020))
|
||||
$(eval $(call MultiProfile,ARCHERC7, ARCHERC5 ARCHERC7V1 ARCHERC7V2))
|
||||
$(eval $(call MultiProfile,EWDORIN, EWDORINAP EWDORINRT EWDORIN16M))
|
||||
$(eval $(call MultiProfile,OPENMESH,OM2P OM5P MR600))
|
||||
+$(eval $(call MultiProfile,GLINET,GLINET6408A GLINET6416A))
|
||||
$(eval $(call MultiProfile,TEW652BRP,TEW652BRP_FW TEW652BRP_RECOVERY))
|
||||
$(eval $(call MultiProfile,TLMR11U,TLMR11UV1 TLMR11UV2))
|
||||
$(eval $(call MultiProfile,TLMR3040,TLMR3040V1 TLMR3040V2))
|
39
patches/openwrt/0024-ar71xx-detect-GL.iNet-model.patch
Normal file
39
patches/openwrt/0024-ar71xx-detect-GL.iNet-model.patch
Normal file
@ -0,0 +1,39 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Fri, 13 Mar 2015 11:59:58 +0100
|
||||
Subject: ar71xx: detect GL.iNet model
|
||||
|
||||
There are two versions of the GL.iNet, the 6408A and the 6416A. The only
|
||||
difference is the flash size.
|
||||
|
||||
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
|
||||
index 9e70397..ac7f787 100755
|
||||
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
|
||||
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
|
||||
@@ -262,6 +262,19 @@ tplink_pharos_board_detect() {
|
||||
[ -n "$model" ] && AR71XX_MODEL="$model v$2"
|
||||
}
|
||||
|
||||
+gl_inet_board_detect() {
|
||||
+ local size="$(mtd_get_part_size 'firmware')"
|
||||
+
|
||||
+ case "$size" in
|
||||
+ 8192000)
|
||||
+ AR71XX_MODEL='GL-iNet 6408A v1'
|
||||
+ ;;
|
||||
+ 16580608)
|
||||
+ AR71XX_MODEL='GL-iNet 6416A v1'
|
||||
+ ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
ar71xx_board_detect() {
|
||||
local machine
|
||||
local name
|
||||
@@ -380,6 +393,7 @@ ar71xx_board_detect() {
|
||||
;;
|
||||
*"GL-CONNECT INET v1")
|
||||
name="gl-inet"
|
||||
+ gl_inet_board_detect
|
||||
;;
|
||||
*"EnGenius ESR1750")
|
||||
name="esr1750"
|
@ -0,0 +1,70 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Sun, 15 Mar 2015 18:06:49 +0100
|
||||
Subject: firmware-utils: allow passing a specific MBR signature to ptgen
|
||||
|
||||
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
|
||||
|
||||
diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c
|
||||
index 0247fd0..6379ed7 100644
|
||||
--- a/tools/firmware-utils/src/ptgen.c
|
||||
+++ b/tools/firmware-utils/src/ptgen.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
+#include <stdint.h>
|
||||
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
#define cpu_to_le16(x) bswap_16(x)
|
||||
@@ -124,7 +125,7 @@ static inline unsigned long round_to_kb(long sect) {
|
||||
}
|
||||
|
||||
/* check the partition sizes and write the partition table */
|
||||
-static int gen_ptable(int nr)
|
||||
+static int gen_ptable(uint32_t signature, int nr)
|
||||
{
|
||||
struct pte pte[4];
|
||||
unsigned long sect = 0;
|
||||
@@ -159,6 +160,12 @@ static int gen_ptable(int nr)
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ lseek(fd, 440, SEEK_SET);
|
||||
+ if (write(fd, &signature, sizeof(signature)) != sizeof(signature)) {
|
||||
+ fprintf(stderr, "write failed.\n");
|
||||
+ goto fail;
|
||||
+ }
|
||||
+
|
||||
lseek(fd, 446, SEEK_SET);
|
||||
if (write(fd, pte, sizeof(struct pte) * 4) != sizeof(struct pte) * 4) {
|
||||
fprintf(stderr, "write failed.\n");
|
||||
@@ -187,8 +194,9 @@ int main (int argc, char **argv)
|
||||
char type = 0x83;
|
||||
int ch;
|
||||
int part = 0;
|
||||
+ uint32_t signature = 0x5452574F; /* 'OWRT' */
|
||||
|
||||
- while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vl:")) != -1) {
|
||||
+ while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vl:S:")) != -1) {
|
||||
switch (ch) {
|
||||
case 'o':
|
||||
filename = optarg;
|
||||
@@ -221,6 +229,9 @@ int main (int argc, char **argv)
|
||||
case 'l':
|
||||
kb_align = (int) strtoul(optarg, NULL, 0) * 2;
|
||||
break;
|
||||
+ case 'S':
|
||||
+ signature = strtoul(optarg, NULL, 0);
|
||||
+ break;
|
||||
case '?':
|
||||
default:
|
||||
usage(argv[0]);
|
||||
@@ -229,6 +240,6 @@ int main (int argc, char **argv)
|
||||
argc -= optind;
|
||||
if (argc || (heads <= 0) || (sectors <= 0) || !filename)
|
||||
usage(argv[0]);
|
||||
-
|
||||
- return gen_ptable(part);
|
||||
+
|
||||
+ return gen_ptable(signature, part);
|
||||
}
|
@ -0,0 +1,180 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Sun, 15 Mar 2015 17:01:32 +0100
|
||||
Subject: x86: use PARTUUID instead explicitly specifying the device by default
|
||||
|
||||
This changes the x86 image generation to match x86_64, using the PARTUUID for
|
||||
the rootfs instead of explicitly configuring the device.
|
||||
|
||||
It unbreaks KVM with VirtIO, which uses /dev/vda2 instead of /dev/sda2.
|
||||
|
||||
Tested in QEMU/KVM with VirtIO, VirtualBox and VMware.
|
||||
|
||||
diff --git a/config/Config-images.in b/config/Config-images.in
|
||||
index 39e51e4..f44ec73 100644
|
||||
--- a/config/Config-images.in
|
||||
+++ b/config/Config-images.in
|
||||
@@ -267,8 +267,6 @@ menu "Target Images"
|
||||
config TARGET_ROOTFS_PARTNAME
|
||||
string "Root partition on target device"
|
||||
depends on OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES
|
||||
- default "/dev/xvda2" if TARGET_x86_xen_domu
|
||||
- default "/dev/sda2" if ! TARGET_x86_xen_domu
|
||||
help
|
||||
The root partition on the final device. If you don't know,
|
||||
you probably want the default (/dev/sda2).
|
||||
diff --git a/target/linux/x86/base-files/lib/preinit/79_move_config b/target/linux/x86/base-files/lib/preinit/79_move_config
|
||||
index 0bffbab..1d4873d 100644
|
||||
--- a/target/linux/x86/base-files/lib/preinit/79_move_config
|
||||
+++ b/target/linux/x86/base-files/lib/preinit/79_move_config
|
||||
@@ -1,21 +1,14 @@
|
||||
#!/bin/sh
|
||||
-# Copyright (C) 2012 OpenWrt.org
|
||||
+# Copyright (C) 2012-2015 OpenWrt.org
|
||||
|
||||
move_config() {
|
||||
- local rootfsdev
|
||||
- local rootfstype
|
||||
-
|
||||
- rootfstype="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "rootfstype") { print $2 }' < /proc/cmdline)"
|
||||
- case "$rootfstype" in
|
||||
- squashfs|jffs2)
|
||||
- rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "block2mtd.block2mtd") { print substr($2,1,index($2, ",")-1) }' < /proc/cmdline)";;
|
||||
- ext4)
|
||||
- rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "root") { print $2 }' < /proc/cmdline)";;
|
||||
- esac
|
||||
+ . /lib/upgrade/platform.sh
|
||||
|
||||
- mount -t ext4 -o rw,noatime "${rootfsdev%[0-9]}1" /mnt
|
||||
- mv -f /mnt/sysupgrade.tgz /
|
||||
- umount /mnt
|
||||
+ if platform_export_bootpart; then
|
||||
+ mount -t ext4 -o rw,noatime "$BOOTPART" /mnt
|
||||
+ mv -f /mnt/sysupgrade.tgz /
|
||||
+ umount /mnt
|
||||
+ fi
|
||||
}
|
||||
|
||||
boot_hook_add preinit_mount_root move_config
|
||||
diff --git a/target/linux/x86/base-files/lib/upgrade/platform.sh b/target/linux/x86/base-files/lib/upgrade/platform.sh
|
||||
index a2dd20a..73ab5ef 100644
|
||||
--- a/target/linux/x86/base-files/lib/upgrade/platform.sh
|
||||
+++ b/target/linux/x86/base-files/lib/upgrade/platform.sh
|
||||
@@ -1,16 +1,38 @@
|
||||
-x86_get_rootfs() {
|
||||
- local rootfsdev
|
||||
- local rootfstype
|
||||
-
|
||||
- rootfstype="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "rootfstype") { print $2 }' < /proc/cmdline)"
|
||||
- case "$rootfstype" in
|
||||
- squashfs|jffs2)
|
||||
- rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "block2mtd.block2mtd") { print substr($2,1,index($2, ",")-1) }' < /proc/cmdline)";;
|
||||
- ext4)
|
||||
- rootfsdev="$(awk 'BEGIN { RS=" "; FS="="; } ($1 == "root") { print $2 }' < /proc/cmdline)";;
|
||||
- esac
|
||||
-
|
||||
- echo "$rootfstype:$rootfsdev"
|
||||
+platform_export_bootpart() {
|
||||
+ local cmdline uuid disk
|
||||
+
|
||||
+ if read cmdline < /proc/cmdline; then
|
||||
+ case "$cmdline" in
|
||||
+ *block2mtd=*)
|
||||
+ disk="${cmdline##*block2mtd=}"
|
||||
+ disk="${disk%%,*}"
|
||||
+ ;;
|
||||
+ *root=*)
|
||||
+ disk="${cmdline##*root=}"
|
||||
+ disk="${disk%% *}"
|
||||
+ ;;
|
||||
+ esac
|
||||
+
|
||||
+ case "$disk" 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]-02)
|
||||
+ uuid="${disk#PARTUUID=}"
|
||||
+ uuid="${uuid%-02}"
|
||||
+ for disk in /dev/[hsv]d[a-z]; do
|
||||
+ set -- $(dd if=$disk bs=1 skip=440 count=4 2>/dev/null | hexdump -v -e '4/1 "%02x "')
|
||||
+ if [ "$4$3$2$1" = "$uuid" ]; then
|
||||
+ export BOOTPART="${disk}1"
|
||||
+ return 0
|
||||
+ fi
|
||||
+ done
|
||||
+ ;;
|
||||
+ /dev/*)
|
||||
+ export BOOTPART="${disk%[0-9]}1"
|
||||
+ return 0
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+
|
||||
+ return 1
|
||||
}
|
||||
|
||||
platform_check_image() {
|
||||
@@ -26,19 +48,19 @@ platform_check_image() {
|
||||
}
|
||||
|
||||
platform_copy_config() {
|
||||
- local rootfs="$(x86_get_rootfs)"
|
||||
- local rootfsdev="${rootfs##*:}"
|
||||
-
|
||||
- mount -t ext4 -o rw,noatime "${rootfsdev%[0-9]}1" /mnt
|
||||
- cp -af "$CONF_TAR" /mnt/
|
||||
- umount /mnt
|
||||
+ if [ -b "$BOOTPART" ]; then
|
||||
+ mount -t ext4 -o rw,noatime "$BOOTPART" /mnt
|
||||
+ cp -af "$CONF_TAR" /mnt/
|
||||
+ umount /mnt
|
||||
+ fi
|
||||
}
|
||||
|
||||
platform_do_upgrade() {
|
||||
- local rootfs="$(x86_get_rootfs)"
|
||||
- local rootfsdev="${rootfs##*:}"
|
||||
+ platform_export_bootpart
|
||||
|
||||
- sync
|
||||
- [ -b ${rootfsdev%[0-9]} ] && get_image "$@" | dd of=${rootfsdev%[0-9]} bs=4096 conv=fsync
|
||||
- sleep 1
|
||||
+ if [ -b "${BOOTPART%[0-9]}" ]; then
|
||||
+ sync
|
||||
+ get_image "$@" | dd of="${BOOTPART%[0-9]}" bs=4096 conv=fsync
|
||||
+ sleep 1
|
||||
+ fi
|
||||
}
|
||||
diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile
|
||||
index 5983718..a0045a7 100644
|
||||
--- a/target/linux/x86/image/Makefile
|
||||
+++ b/target/linux/x86/image/Makefile
|
||||
@@ -40,7 +40,9 @@ ifneq ($(GRUB_TERMINALS),)
|
||||
GRUB_TERMINAL_CONFIG := terminal_input $(GRUB_TERMINALS); terminal_output $(GRUB_TERMINALS)
|
||||
endif
|
||||
|
||||
+SIGNATURE:=$(shell dd if=/dev/urandom bs=4 count=1 2>/dev/null | hexdump -v -e '"%02x"')
|
||||
ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME))
|
||||
+ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(SIGNATURE)-02)
|
||||
|
||||
GRUB_TIMEOUT:=$(call qstrip,$(CONFIG_GRUB_TIMEOUT))
|
||||
|
||||
@@ -82,7 +84,7 @@ ifneq ($(CONFIG_GRUB_IMAGES),)
|
||||
-e 's#@CMDLINE@#$(strip $(call Image/cmdline/$(1)) $(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE))#g' \
|
||||
-e 's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \
|
||||
./grub.cfg > $(KDIR)/root.grub/boot/grub/grub.cfg
|
||||
- PADDING="$(CONFIG_TARGET_IMAGES_PAD)" PATH="$(TARGET_PATH)" ./gen_image_generic.sh \
|
||||
+ PADDING="$(CONFIG_TARGET_IMAGES_PAD)" SIGNATURE="$(SIGNATURE)" PATH="$(TARGET_PATH)" ./gen_image_generic.sh \
|
||||
$(BIN_DIR)/$(IMG_PREFIX)-combined-$(1).img \
|
||||
$(CONFIG_TARGET_KERNEL_PARTSIZE) $(KDIR)/root.grub \
|
||||
$(CONFIG_TARGET_ROOTFS_PARTSIZE) $(KDIR)/root.$(1) \
|
||||
diff --git a/target/linux/x86/image/gen_image_generic.sh b/target/linux/x86/image/gen_image_generic.sh
|
||||
index 9d11efb..3fb31f6 100755
|
||||
--- a/target/linux/x86/image/gen_image_generic.sh
|
||||
+++ b/target/linux/x86/image/gen_image_generic.sh
|
||||
@@ -20,7 +20,7 @@ sect=63
|
||||
cyl=$(( ($KERNELSIZE + $ROOTFSSIZE) * 1024 * 1024 / ($head * $sect * 512)))
|
||||
|
||||
# create partition table
|
||||
-set `ptgen -o "$OUTPUT" -h $head -s $sect -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m ${ALIGN:+-l $ALIGN}`
|
||||
+set `ptgen -o "$OUTPUT" -h $head -s $sect -p ${KERNELSIZE}m -p ${ROOTFSSIZE}m ${ALIGN:+-l $ALIGN} ${SIGNATURE:+-S 0x$SIGNATURE}`
|
||||
|
||||
KERNELOFFSET="$(($1 / 512))"
|
||||
KERNELSIZE="$(($2 / 512))"
|
@ -0,0 +1,52 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Sun, 15 Mar 2015 19:51:15 +0100
|
||||
Subject: ar71xx: fix model string detection on NETGEAR WNDR3700/3800/WNDRMAC
|
||||
|
||||
There were a few issues with the existing code to detect the model string:
|
||||
* Always using the string starting with byte 56 would cut off the W of WNDR when
|
||||
the ID starts with 29763654+16+128 instead of 29763654+16+64
|
||||
* The string contained garbage after the zero byte instead of cutting it off
|
||||
after the zero (which wasn't always visible using busybox tools, but could
|
||||
confuse other scripts)
|
||||
|
||||
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
|
||||
index ac7f787..f50a236 100755
|
||||
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
|
||||
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
|
||||
@@ -37,16 +37,28 @@ wndr3700_board_detect() {
|
||||
machine="NETGEAR WNDR3700"
|
||||
;;
|
||||
"33373031")
|
||||
- local model
|
||||
- model=$(ar71xx_get_mtd_offset_size_format art 56 10 %c)
|
||||
- if [ -z "$model" ] || [ "$model" = $'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff' ]; then
|
||||
+ case "$(ar71xx_get_mtd_offset_size_format art 56 10 %c)" in
|
||||
+ $'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff')
|
||||
machine="NETGEAR WNDR3700v2"
|
||||
- elif [ -z "$model" ] || [ "$model" = $'\xff\xff\xff\xff\xff\xff\xff\xff\xffN' ]; then
|
||||
+ ;;
|
||||
+ $'\xff\xff\xff\xff\xff\xff\xff\xff\xffN')
|
||||
machine="NETGEAR WNDRMAC"
|
||||
- else
|
||||
- machine="NETGEAR $model"
|
||||
- fi
|
||||
- ;;
|
||||
+ ;;
|
||||
+ *)
|
||||
+ # Use awk to remove everything after the first zero byte
|
||||
+ model="$(ar71xx_get_mtd_offset_size_format art 41 32 %c | awk 'BEGIN{FS="[[:cntrl:]]"} {print $1; exit}')"
|
||||
+ case $model in
|
||||
+ '29763654+16+64'*)
|
||||
+ machine="NETGEAR ${model:14}"
|
||||
+ ;;
|
||||
+ '29763654+16+128'*)
|
||||
+ machine="NETGEAR ${model:15}"
|
||||
+ ;;
|
||||
+ *)
|
||||
+ # Unknown ID
|
||||
+ machine="NETGEAR $model"
|
||||
+ esac
|
||||
+ esac
|
||||
esac
|
||||
|
||||
AR71XX_BOARD_NAME="$name"
|
@ -0,0 +1,22 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Sun, 15 Mar 2015 21:03:25 +0100
|
||||
Subject: ar71xx: fix TP-LINK TL-WDR3600/4300 RFKILL switch positions
|
||||
|
||||
While the switch positions aren't explicitly labeled as on and off, we've heard
|
||||
complaints about them being wrong. This patch changes the handling to match the
|
||||
stock firmware.
|
||||
|
||||
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
|
||||
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr4300.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr4300.c
|
||||
index 99ae80d..3afc714 100644
|
||||
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr4300.c
|
||||
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wdr4300.c
|
||||
@@ -103,6 +103,7 @@ static struct gpio_keys_button wdr4300_gpio_keys[] __initdata = {
|
||||
.code = KEY_RFKILL,
|
||||
.debounce_interval = WDR4300_KEYS_DEBOUNCE_INTERVAL,
|
||||
.gpio = WDR4300_GPIO_BTN_RFKILL,
|
||||
+ .active_low = 1,
|
||||
},
|
||||
};
|
||||
|
@ -0,0 +1,57 @@
|
||||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Mon, 16 Mar 2015 13:23:34 +0100
|
||||
Subject: buildroot: make it easier to build all kmods
|
||||
|
||||
Split out kmods from ALL to make it easier to create local builds that
|
||||
are compatible kmod-wise with releases.
|
||||
|
||||
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
|
||||
diff --git a/config/Config-build.in b/config/Config-build.in
|
||||
index 371ae76..8b0ebbf 100644
|
||||
--- a/config/Config-build.in
|
||||
+++ b/config/Config-build.in
|
||||
@@ -6,8 +6,12 @@
|
||||
|
||||
menu "Global build settings"
|
||||
|
||||
+ config ALL_KMODS
|
||||
+ bool "Select all kernel module packages by default"
|
||||
+ default ALL
|
||||
+
|
||||
config ALL
|
||||
- bool "Select all packages by default"
|
||||
+ bool "Select all userspace packages by default"
|
||||
default n
|
||||
|
||||
comment "General build options"
|
||||
diff --git a/include/version.mk b/include/version.mk
|
||||
index 2fd605f..f6c0fe2 100644
|
||||
--- a/include/version.mk
|
||||
+++ b/include/version.mk
|
||||
@@ -50,7 +50,7 @@ $(lastword $(subst :, ,$(1)))
|
||||
endef
|
||||
|
||||
VERSION_TAINT_SPECS := \
|
||||
- -ALL:no-all \
|
||||
+ -ALL_KMODS:no-all \
|
||||
-IPV6:no-ipv6 \
|
||||
+USE_EGLIBC:eglibc \
|
||||
+USE_MKLIBS:mklibs \
|
||||
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
|
||||
index 79f930c..4eecb0c 100755
|
||||
--- a/scripts/metadata.pl
|
||||
+++ b/scripts/metadata.pl
|
||||
@@ -574,7 +574,11 @@ sub print_package_config_category($) {
|
||||
print "\t\t".($pkg->{tristate} ? 'tristate' : 'bool')." $title\n";
|
||||
print "\t\tdefault y if DEFAULT_".$pkg->{name}."\n";
|
||||
unless ($pkg->{hidden}) {
|
||||
- $pkg->{default} ||= "m if ALL";
|
||||
+ if ($pkg->{name} =~ /^kmod-/) {
|
||||
+ $pkg->{default} ||= "m if ALL_KMODS";
|
||||
+ } else {
|
||||
+ $pkg->{default} ||= "m if ALL";
|
||||
+ }
|
||||
}
|
||||
if ($pkg->{default}) {
|
||||
foreach my $default (split /\s*,\s*/, $pkg->{default}) {
|
File diff suppressed because it is too large
Load Diff
@ -4,145 +4,145 @@
|
||||
|
||||
# CPE210/220/510/520
|
||||
$(eval $(call GluonProfile,CPE510,rssileds))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520-squashfs,tp-link-cpe210-v1.0))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520-squashfs,tp-link-cpe220-v1.0))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520-squashfs,tp-link-cpe510-v1.0))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520-squashfs,tp-link-cpe520-v1.0))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520,tp-link-cpe210-v1.0))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520,tp-link-cpe220-v1.0))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520,tp-link-cpe510-v1.0))
|
||||
$(eval $(call GluonModel,CPE510,cpe210-220-510-520,tp-link-cpe520-v1.0))
|
||||
|
||||
# TL-WA701N/ND v1, v2
|
||||
$(eval $(call GluonProfile,TLWA701))
|
||||
$(eval $(call GluonModel,TLWA701,tl-wa701n-v1-squashfs,tp-link-tl-wa701n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWA701,tl-wa701n-v1,tp-link-tl-wa701n-nd-v1))
|
||||
ifeq ($(BROKEN),1)
|
||||
$(eval $(call GluonModel,TLWA701,tl-wa701nd-v2-squashfs,tp-link-tl-wa701n-nd-v2)) # BROKEN: untested
|
||||
$(eval $(call GluonModel,TLWA701,tl-wa701nd-v2,tp-link-tl-wa701n-nd-v2)) # BROKEN: untested
|
||||
endif
|
||||
|
||||
# TL-WR703N v1
|
||||
$(eval $(call GluonProfile,TLWR703))
|
||||
$(eval $(call GluonModel,TLWR703,tl-wr703n-v1-squashfs,tp-link-tl-wr703n-v1))
|
||||
$(eval $(call GluonModel,TLWR703,tl-wr703n-v1,tp-link-tl-wr703n-v1))
|
||||
|
||||
# TL-WR710N v1
|
||||
$(eval $(call GluonProfile,TLWR710))
|
||||
$(eval $(call GluonModel,TLWR710,tl-wr710n-v1-squashfs,tp-link-tl-wr710n-v1))
|
||||
$(eval $(call GluonModel,TLWR710,tl-wr710n-v1,tp-link-tl-wr710n-v1))
|
||||
|
||||
# TL-WR740N v1, v3, v4
|
||||
$(eval $(call GluonProfile,TLWR740))
|
||||
$(eval $(call GluonModel,TLWR740,tl-wr740n-v1-squashfs,tp-link-tl-wr740n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR740,tl-wr740n-v3-squashfs,tp-link-tl-wr740n-nd-v3))
|
||||
$(eval $(call GluonModel,TLWR740,tl-wr740n-v4-squashfs,tp-link-tl-wr740n-nd-v4))
|
||||
$(eval $(call GluonModel,TLWR740,tl-wr740n-v1,tp-link-tl-wr740n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR740,tl-wr740n-v3,tp-link-tl-wr740n-nd-v3))
|
||||
$(eval $(call GluonModel,TLWR740,tl-wr740n-v4,tp-link-tl-wr740n-nd-v4))
|
||||
|
||||
# TL-WR741N/ND v1, v2, v4
|
||||
$(eval $(call GluonProfile,TLWR741))
|
||||
$(eval $(call GluonModel,TLWR741,tl-wr741nd-v1-squashfs,tp-link-tl-wr741n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR741,tl-wr741nd-v2-squashfs,tp-link-tl-wr741n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWR741,tl-wr741nd-v4-squashfs,tp-link-tl-wr741n-nd-v4))
|
||||
$(eval $(call GluonModel,TLWR741,tl-wr741nd-v1,tp-link-tl-wr741n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR741,tl-wr741nd-v2,tp-link-tl-wr741n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWR741,tl-wr741nd-v4,tp-link-tl-wr741n-nd-v4))
|
||||
|
||||
# TL-WR743N/ND v1, v1.1, v2
|
||||
$(eval $(call GluonProfile,TLWR743))
|
||||
$(eval $(call GluonModel,TLWR743,tl-wr743nd-v1-squashfs,tp-link-tl-wr743n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR743,tl-wr743nd-v2-squashfs,tp-link-tl-wr743n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWR743,tl-wr743nd-v1,tp-link-tl-wr743n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR743,tl-wr743nd-v2,tp-link-tl-wr743n-nd-v2))
|
||||
|
||||
# TL-WR801N/ND v2
|
||||
$(eval $(call GluonProfile,TLWA801))
|
||||
$(eval $(call GluonModel,TLWA801,tl-wa801nd-v2-squashfs,tp-link-tl-wa801n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWA801,tl-wa801nd-v2,tp-link-tl-wa801n-nd-v2))
|
||||
|
||||
# TL-WR841N/ND v3, v5, v7, v8, v9
|
||||
$(eval $(call GluonProfile,TLWR841))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841nd-v3-squashfs,tp-link-tl-wr841n-nd-v3))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841nd-v5-squashfs,tp-link-tl-wr841n-nd-v5))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841nd-v7-squashfs,tp-link-tl-wr841n-nd-v7))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841n-v8-squashfs,tp-link-tl-wr841n-nd-v8))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841n-v9-squashfs,tp-link-tl-wr841n-nd-v9))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841nd-v3,tp-link-tl-wr841n-nd-v3))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841nd-v5,tp-link-tl-wr841n-nd-v5))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841nd-v7,tp-link-tl-wr841n-nd-v7))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841n-v8,tp-link-tl-wr841n-nd-v8))
|
||||
$(eval $(call GluonModel,TLWR841,tl-wr841n-v9,tp-link-tl-wr841n-nd-v9))
|
||||
|
||||
# TL-WR842N/ND v1, v2
|
||||
$(eval $(call GluonProfile,TLWR842))
|
||||
$(eval $(call GluonModel,TLWR842,tl-wr842n-v1-squashfs,tp-link-tl-wr842n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR842,tl-wr842n-v2-squashfs,tp-link-tl-wr842n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWR842,tl-wr842n-v1,tp-link-tl-wr842n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR842,tl-wr842n-v2,tp-link-tl-wr842n-nd-v2))
|
||||
|
||||
# TL-WR941N/ND v2, v3, v4, v5, v6
|
||||
$(eval $(call GluonProfile,TLWR941))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v2-squashfs,tp-link-tl-wr941n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v3-squashfs,tp-link-tl-wr941n-nd-v3))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v4-squashfs,tp-link-tl-wr941n-nd-v4))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v5-squashfs,tp-link-tl-wr941n-nd-v5))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v2,tp-link-tl-wr941n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v3,tp-link-tl-wr941n-nd-v3))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v4,tp-link-tl-wr941n-nd-v4))
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v5,tp-link-tl-wr941n-nd-v5))
|
||||
ifeq ($(BROKEN),1)
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v6-squashfs,tp-link-tl-wr941n-nd-v6)) # BROKEN: untested
|
||||
$(eval $(call GluonModel,TLWR941,tl-wr941nd-v6,tp-link-tl-wr941n-nd-v6)) # BROKEN: untested
|
||||
endif
|
||||
|
||||
# TL-WR1043N/ND v1, v2
|
||||
$(eval $(call GluonProfile,TLWR1043))
|
||||
$(eval $(call GluonModel,TLWR1043,tl-wr1043nd-v1-squashfs,tp-link-tl-wr1043n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR1043,tl-wr1043nd-v2-squashfs,tp-link-tl-wr1043n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWR1043,tl-wr1043nd-v1,tp-link-tl-wr1043n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR1043,tl-wr1043nd-v2,tp-link-tl-wr1043n-nd-v2))
|
||||
|
||||
# TL-WDR3500/3600/4300 v1
|
||||
$(eval $(call GluonProfile,TLWDR4300))
|
||||
$(eval $(call GluonModel,TLWDR4300,tl-wdr3500-v1-squashfs,tp-link-tl-wdr3500-v1))
|
||||
$(eval $(call GluonModel,TLWDR4300,tl-wdr3600-v1-squashfs,tp-link-tl-wdr3600-v1))
|
||||
$(eval $(call GluonModel,TLWDR4300,tl-wdr4300-v1-squashfs,tp-link-tl-wdr4300-v1))
|
||||
$(eval $(call GluonModel,TLWDR4300,tl-wdr3500-v1,tp-link-tl-wdr3500-v1))
|
||||
$(eval $(call GluonModel,TLWDR4300,tl-wdr3600-v1,tp-link-tl-wdr3600-v1))
|
||||
$(eval $(call GluonModel,TLWDR4300,tl-wdr4300-v1,tp-link-tl-wdr4300-v1))
|
||||
|
||||
# TL-WA750RE v1
|
||||
$(eval $(call GluonProfile,TLWA750))
|
||||
$(eval $(call GluonModel,TLWA750,tl-wa750re-v1-squashfs,tp-link-tl-wa750re-v1))
|
||||
$(eval $(call GluonModel,TLWA750,tl-wa750re-v1,tp-link-tl-wa750re-v1))
|
||||
|
||||
ifeq ($(BROKEN),1)
|
||||
# TL-WA830RE v2
|
||||
$(eval $(call GluonProfile,TLWA830))
|
||||
$(eval $(call GluonModel,TLWA830,tl-wa830re-v2-squashfs,tp-link-tl-wa830re-v2))
|
||||
$(eval $(call GluonModel,TLWA830,tl-wa830re-v2,tp-link-tl-wa830re-v2))
|
||||
endif
|
||||
|
||||
# TL-WA850RE v1
|
||||
$(eval $(call GluonProfile,TLWA850))
|
||||
$(eval $(call GluonModel,TLWA850,tl-wa850re-v1-squashfs,tp-link-tl-wa850re-v1))
|
||||
$(eval $(call GluonModel,TLWA850,tl-wa850re-v1,tp-link-tl-wa850re-v1))
|
||||
|
||||
# TL-WA860RE v1
|
||||
$(eval $(call GluonProfile,TLWA860))
|
||||
$(eval $(call GluonModel,TLWA860,tl-wa860re-v1-squashfs,tp-link-tl-wa860re-v1))
|
||||
$(eval $(call GluonModel,TLWA860,tl-wa860re-v1,tp-link-tl-wa860re-v1))
|
||||
|
||||
# TL-WA901N/ND v2
|
||||
$(eval $(call GluonProfile,TLWA901))
|
||||
$(eval $(call GluonModel,TLWA901,tl-wa901nd-v2-squashfs,tp-link-tl-wa901n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWA901,tl-wa901nd-v3-squashfs,tp-link-tl-wa901n-nd-v3))
|
||||
$(eval $(call GluonModel,TLWA901,tl-wa901nd-v2,tp-link-tl-wa901n-nd-v2))
|
||||
$(eval $(call GluonModel,TLWA901,tl-wa901nd-v3,tp-link-tl-wa901n-nd-v3))
|
||||
|
||||
# TL-MR3020 v1
|
||||
$(eval $(call GluonProfile,TLMR3020))
|
||||
$(eval $(call GluonModel,TLMR3020,tl-mr3020-v1-squashfs,tp-link-tl-mr3020-v1))
|
||||
$(eval $(call GluonModel,TLMR3020,tl-mr3020-v1,tp-link-tl-mr3020-v1))
|
||||
|
||||
# TL-MR3040 v1, v2
|
||||
$(eval $(call GluonProfile,TLMR3040))
|
||||
$(eval $(call GluonModel,TLMR3040,tl-mr3040-v1-squashfs,tp-link-tl-mr3040-v1))
|
||||
$(eval $(call GluonModel,TLMR3040,tl-mr3040-v2-squashfs,tp-link-tl-mr3040-v2))
|
||||
$(eval $(call GluonModel,TLMR3040,tl-mr3040-v1,tp-link-tl-mr3040-v1))
|
||||
$(eval $(call GluonModel,TLMR3040,tl-mr3040-v2,tp-link-tl-mr3040-v2))
|
||||
|
||||
# TL-MR3220 v1
|
||||
$(eval $(call GluonProfile,TLMR3220))
|
||||
$(eval $(call GluonModel,TLMR3220,tl-mr3220-v1-squashfs,tp-link-tl-mr3220-v1))
|
||||
$(eval $(call GluonModel,TLMR3220,tl-mr3220-v1,tp-link-tl-mr3220-v1))
|
||||
|
||||
# TL-MR3420 v1, v2
|
||||
$(eval $(call GluonProfile,TLMR3420))
|
||||
$(eval $(call GluonModel,TLMR3420,tl-mr3420-v1-squashfs,tp-link-tl-mr3420-v1))
|
||||
$(eval $(call GluonModel,TLMR3420,tl-mr3420-v2-squashfs,tp-link-tl-mr3420-v2))
|
||||
$(eval $(call GluonModel,TLMR3420,tl-mr3420-v1,tp-link-tl-mr3420-v1))
|
||||
$(eval $(call GluonModel,TLMR3420,tl-mr3420-v2,tp-link-tl-mr3420-v2))
|
||||
|
||||
# TL-WR2543N/ND v1
|
||||
$(eval $(call GluonProfile,TLWR2543))
|
||||
$(eval $(call GluonModel,TLWR2543,tl-wr2543-v1-squashfs,tp-link-tl-wr2543n-nd-v1))
|
||||
$(eval $(call GluonModel,TLWR2543,tl-wr2543-v1,tp-link-tl-wr2543n-nd-v1))
|
||||
|
||||
ifeq ($(BROKEN),1)
|
||||
# Archer C5 v1, C7 v2
|
||||
$(eval $(call GluonProfile,ARCHERC7,kmod-ath10k))
|
||||
$(eval $(call GluonModel,ARCHERC7,archer-c5-squashfs,tp-link-archer-c5-v1)) # BROKEN: ath10k
|
||||
$(eval $(call GluonModel,ARCHERC7,archer-c7-v2-squashfs,tp-link-archer-c7-v2)) # BROKEN: ath10k
|
||||
$(eval $(call GluonModel,ARCHERC7,archer-c5,tp-link-archer-c5-v1)) # BROKEN: ath10k
|
||||
$(eval $(call GluonModel,ARCHERC7,archer-c7-v2,tp-link-archer-c7-v2)) # BROKEN: ath10k
|
||||
endif
|
||||
|
||||
## Ubiquiti (everything)
|
||||
$(eval $(call GluonProfile,UBNT))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-bullet-m-squashfs,ubiquiti-bullet-m))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-loco-m-xw-squashfs,ubiquiti-loco-m-xw))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-nano-m-squashfs,ubiquiti-nanostation-m))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-nano-m-xw-squashfs,ubiquiti-nanostation-m-xw))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-unifi-squashfs,ubiquiti-unifi))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-unifi-outdoor-squashfs,ubiquiti-unifiap-outdoor))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-bullet-m,ubiquiti-bullet-m))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-loco-m-xw,ubiquiti-loco-m-xw))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-nano-m,ubiquiti-nanostation-m))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-nano-m-xw,ubiquiti-nanostation-m-xw))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-unifi,ubiquiti-unifi))
|
||||
$(eval $(call GluonModel,UBNT,ubnt-unifi-outdoor,ubiquiti-unifiap-outdoor))
|
||||
ifeq ($(BROKEN),1)
|
||||
$(eval $(call GluonModel,UBNT,ubnt-ls-sr71-squashfs,ubiquiti-ls-sr71)) # BROKEN: Untested
|
||||
$(eval $(call GluonModel,UBNT,ubnt-uap-pro-squashfs,ubiquiti-unifi-ap-pro)) # BROKEN: not properly tested; probably issues with WLAN adapter detection
|
||||
$(eval $(call GluonModel,UBNT,ubnt-unifi-outdoor-plus-squashfs,ubiquiti-unifiap-outdoor+)) # BROKEN: WLAN doesn't work correctly (high packet loss)
|
||||
$(eval $(call GluonModel,UBNT,ubnt-ls-sr71,ubiquiti-ls-sr71)) # BROKEN: Untested
|
||||
$(eval $(call GluonModel,UBNT,ubnt-uap-pro,ubiquiti-unifi-ap-pro)) # BROKEN: not properly tested; probably issues with WLAN adapter detection
|
||||
$(eval $(call GluonModel,UBNT,ubnt-unifi-outdoor-plus,ubiquiti-unifiap-outdoor+)) # BROKEN: WLAN doesn't work correctly (high packet loss)
|
||||
endif
|
||||
|
||||
|
||||
@ -150,45 +150,52 @@ endif
|
||||
|
||||
# D-Link DIR-615 rev. C1
|
||||
$(eval $(call GluonProfile,DIR615C1))
|
||||
$(eval $(call GluonModel,DIR615C1,dir-615-c1-squashfs,d-link-dir-615-rev-c1))
|
||||
$(eval $(call GluonModel,DIR615C1,dir-615-c1,d-link-dir-615-rev-c1))
|
||||
|
||||
# D-Link DIR-825 rev. B1
|
||||
$(eval $(call GluonProfile,DIR825B1))
|
||||
$(eval $(call GluonModel,DIR825B1,dir-825-b1-squashfs,d-link-dir-825-rev-b1))
|
||||
$(eval $(call GluonModel,DIR825B1,dir-825-b1,d-link-dir-825-rev-b1))
|
||||
|
||||
|
||||
## Linksys by Cisco
|
||||
|
||||
# WRT160NL
|
||||
$(eval $(call GluonProfile,WRT160NL))
|
||||
$(eval $(call GluonModel,WRT160NL,wrt160nl-squashfs,linksys-wrt160nl))
|
||||
$(eval $(call GluonModel,WRT160NL,wrt160nl,linksys-wrt160nl))
|
||||
|
||||
## Buffalo
|
||||
|
||||
# WZR-HP-G450H
|
||||
$(eval $(call GluonProfile,WZRHPG450H))
|
||||
$(eval $(call GluonModel,WZRHPG450H,wzr-hp-g450h-squashfs,buffalo-wzr-hp-g450h))
|
||||
$(eval $(call GluonModel,WZRHPG450H,wzr-hp-g450h,buffalo-wzr-hp-g450h))
|
||||
|
||||
# WZR-HP-AG300H/WZR-600DHP
|
||||
$(eval $(call GluonProfile,WZRHPAG300H))
|
||||
$(eval $(call GluonModel,WZRHPAG300H,wzr-hp-ag300h-squashfs,buffalo-wzr-hp-ag300h-wzr-600dhp))
|
||||
$(eval $(call GluonModel,WZRHPAG300H,wzr-hp-ag300h,buffalo-wzr-hp-ag300h-wzr-600dhp))
|
||||
|
||||
## Netgear
|
||||
|
||||
# WNDR3700 (v1, v2) / WNDR3800 / WNDRMAC (v1, v2)
|
||||
$(eval $(call GluonProfile,WNDR3700))
|
||||
$(eval $(call GluonProfileFactorySuffix,WNDR3700,.img))
|
||||
$(eval $(call GluonModel,WNDR3700,wndr3700-squashfs,netgear-wndr3700))
|
||||
$(eval $(call GluonModel,WNDR3700,wndr3700v2-squashfs,netgear-wndr3700v2))
|
||||
$(eval $(call GluonModel,WNDR3700,wndr3800-squashfs,netgear-wndr3800))
|
||||
$(eval $(call GluonProfileFactorySuffix,WNDR3700,-squashfs-factory,.img))
|
||||
$(eval $(call GluonModel,WNDR3700,wndr3700,netgear-wndr3700))
|
||||
$(eval $(call GluonModel,WNDR3700,wndr3700v2,netgear-wndr3700v2))
|
||||
$(eval $(call GluonModel,WNDR3700,wndr3800,netgear-wndr3800))
|
||||
ifeq ($(BROKEN),1)
|
||||
$(eval $(call GluonModel,WNDR3700,wndrmac-squashfs,netgear-wndrmac)) # BROKEN: untested
|
||||
$(eval $(call GluonModel,WNDR3700,wndrmacv2-squashfs,netgear-wndrmacv2)) # BROKEN: untested
|
||||
$(eval $(call GluonModel,WNDR3700,wndrmac,netgear-wndrmac)) # BROKEN: untested
|
||||
$(eval $(call GluonModel,WNDR3700,wndrmacv2,netgear-wndrmacv2)) # BROKEN: untested
|
||||
endif
|
||||
|
||||
## Allnet
|
||||
|
||||
# ALL0315N
|
||||
$(eval $(call GluonProfile,ALL0315N,uboot-envtools rssileds))
|
||||
$(eval $(call GluonProfileFactorySuffix,ALL0315N,))
|
||||
$(eval $(call GluonModel,ALL0315N,all0315n-squashfs,allnet-all0315n))
|
||||
$(eval $(call GluonProfileFactorySuffix,ALL0315N))
|
||||
$(eval $(call GluonModel,ALL0315N,all0315n,allnet-all0315n))
|
||||
|
||||
## GL-iNet
|
||||
|
||||
# GL-iNet 1.0
|
||||
$(eval $(call GluonProfile,GLINET))
|
||||
$(eval $(call GluonModel,GLINET,gl-inet-6408A-v1,gl-inet-6408a-v1))
|
||||
$(eval $(call GluonModel,GLINET,gl-inet-6416A-v1,gl-inet-6416a-v1))
|
||||
|
2
targets/ar71xx-nand/config
Normal file
2
targets/ar71xx-nand/config
Normal file
@ -0,0 +1,2 @@
|
||||
CONFIG_TARGET_ar71xx=y
|
||||
CONFIG_TARGET_ar71xx_nand=y
|
10
targets/ar71xx-nand/profiles.mk
Normal file
10
targets/ar71xx-nand/profiles.mk
Normal file
@ -0,0 +1,10 @@
|
||||
# List of hardware profiles
|
||||
|
||||
## NETGEAR
|
||||
|
||||
# WNDR3700 v4, WNDR4300 v1
|
||||
$(eval $(call GluonProfile,WNDR4300))
|
||||
$(eval $(call GluonProfileFactorySuffix,WNDR4300,-ubi-factory,.img))
|
||||
$(eval $(call GluonProfileSysupgradeSuffix,WNDR4300,-squashfs-sysupgrade,.tar))
|
||||
$(eval $(call GluonModel,WNDR4300,wndr3700v4,netgear-wndr3700v4))
|
||||
$(eval $(call GluonModel,WNDR4300,wndr4300,netgear-wndr4300))
|
1
targets/ar71xx-nand/vermagic
Normal file
1
targets/ar71xx-nand/vermagic
Normal file
@ -0,0 +1 @@
|
||||
41123e63bc43f61af09d064504300966
|
File diff suppressed because it is too large
Load Diff
@ -4,4 +4,4 @@
|
||||
|
||||
# TL-WDR4900 v1
|
||||
$(eval $(call GluonProfile,TLWDR4900))
|
||||
$(eval $(call GluonModel,TLWDR4900,tl-wdr4900-v1-squashfs,tp-link-tl-wdr4900-v1))
|
||||
$(eval $(call GluonModel,TLWDR4900,tl-wdr4900-v1,tp-link-tl-wdr4900-v1))
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,5 +2,5 @@
|
||||
|
||||
# VoCore
|
||||
$(eval $(call GluonProfile,VOCORE))
|
||||
$(eval $(call GluonProfileFactorySuffix,VOCORE,))
|
||||
$(eval $(call GluonModel,VOCORE,vocore-squashfs,vocore))
|
||||
$(eval $(call GluonProfileFactorySuffix,VOCORE))
|
||||
$(eval $(call GluonModel,VOCORE,vocore,vocore))
|
||||
|
@ -1,4 +1,5 @@
|
||||
$(eval $(call GluonTarget,ar71xx,generic))
|
||||
$(eval $(call GluonTarget,ar71xx,nand))
|
||||
$(eval $(call GluonTarget,mpc85xx,generic))
|
||||
$(eval $(call GluonTarget,x86,generic))
|
||||
$(eval $(call GluonTarget,x86,kvm_guest))
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,17 @@
|
||||
$(eval $(call GluonProfile,GENERIC,kmod-3c59x kmod-e100 kmod-e1000 kmod-natsemi kmod-ne2k-pci kmod-pcnet32 kmod-8139too kmod-r8169 kmod-sis900 kmod-tg3 kmod-via-rhine kmod-via-velocity))
|
||||
$(eval $(call GluonProfileFactorySuffix,GENERIC))
|
||||
$(eval $(call GluonProfileSysupgradeSuffix,GENERIC))
|
||||
$(eval $(call GluonProfileExtraSuffix,GENERIC,.img.gz))
|
||||
$(eval $(call GluonModel,GENERIC,combined-ext4,x86-generic))
|
||||
X86_GENERIC_NETWORK_MODULES := kmod-3c59x kmod-e100 kmod-e1000 kmod-natsemi kmod-ne2k-pci kmod-pcnet32 kmod-8139too kmod-r8169 kmod-sis900 kmod-tg3 kmod-via-rhine kmod-via-velocity
|
||||
|
||||
$(eval $(call GluonProfile,VDI,kmod-pcnet32 kmod-e1000))
|
||||
$(eval $(call GluonProfileFactorySuffix,VDI))
|
||||
|
||||
$(eval $(call GluonProfile,GENERIC,$(X86_GENERIC_NETWORK_MODULES)))
|
||||
$(eval $(call GluonProfileFactorySuffix,GENERIC,-ext4,.img.gz))
|
||||
$(eval $(call GluonProfileSysupgradeSuffix,GENERIC,-ext4,.img.gz))
|
||||
$(eval $(call GluonModel,GENERIC,combined,x86-generic))
|
||||
|
||||
$(eval $(call GluonProfile,VDI,$(X86_GENERIC_NETWORK_MODULES)))
|
||||
$(eval $(call GluonProfileFactorySuffix,VDI,-ext4,.vdi))
|
||||
$(eval $(call GluonProfileSysupgradeSuffix,VDI))
|
||||
$(eval $(call GluonProfileExtraSuffix,VDI,.vdi))
|
||||
$(eval $(call GluonModel,VDI,combined-ext4,x86-virtualbox))
|
||||
$(eval $(call GluonModel,VDI,combined,x86-virtualbox))
|
||||
|
||||
$(eval $(call GluonProfile,VMDK,kmod-pcnet32))
|
||||
$(eval $(call GluonProfileFactorySuffix,VMDK))
|
||||
$(eval $(call GluonProfile,VMDK,$(X86_GENERIC_NETWORK_MODULES)))
|
||||
$(eval $(call GluonProfileFactorySuffix,VMDK,-ext4,.vmdk))
|
||||
$(eval $(call GluonProfileSysupgradeSuffix,VMDK))
|
||||
$(eval $(call GluonProfileExtraSuffix,VMDK,.vmdk))
|
||||
$(eval $(call GluonModel,VMDK,combined-ext4,x86-vmware))
|
||||
$(eval $(call GluonModel,VMDK,combined,x86-vmware))
|
||||
|
@ -1,3 +1,2 @@
|
||||
CONFIG_TARGET_x86=y
|
||||
CONFIG_TARGET_x86_kvm_guest=y
|
||||
CONFIG_TARGET_ROOTFS_PARTNAME="/dev/vda2"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,4 @@
|
||||
$(eval $(call GluonProfile,KVM,kmod-virtio-balloon kmod-virtio-net kmod-virtio-random))
|
||||
$(eval $(call GluonProfileFactorySuffix,KVM))
|
||||
$(eval $(call GluonProfileSysupgradeSuffix,KVM))
|
||||
$(eval $(call GluonProfileExtraSuffix,KVM,.img.gz))
|
||||
$(eval $(call GluonModel,KVM,combined-ext4,x86-kvm))
|
||||
$(eval $(call GluonProfileFactorySuffix,KVM,-ext4,.img.gz))
|
||||
$(eval $(call GluonProfileSysupgradeSuffix,KVM,-ext4,.img.gz))
|
||||
$(eval $(call GluonModel,KVM,combined,x86-kvm))
|
||||
|
Loading…
Reference in New Issue
Block a user