From: RISCi_ATOM Date: Sun, 10 Feb 2019 19:00:10 +0000 (-0500) Subject: Rough backport of ccsdisk support X-Git-Tag: v1.4.7~14 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=d42955b2d0a57646746e1d487efa2690fb136ea7;p=librecmc%2Flibrecmc.git Rough backport of ccsdisk support --- diff --git a/Config.in b/Config.in index 47391703b5..d8efc18921 100644 --- a/Config.in +++ b/Config.in @@ -31,4 +31,6 @@ source "target/sdk/Config.in" source "target/toolchain/Config.in" +source "target/ccsdisk/Config.in" + source "tmp/.config-package.in" diff --git a/Makefile b/Makefile index b220dfd3c5..5549023166 100644 --- a/Makefile +++ b/Makefile @@ -87,6 +87,8 @@ prereq: $(target/stamp-prereq) tmp/.prereq_packages checksum: FORCE $(call sha256sums,$(BIN_DIR)) +ccsdisk: $(target/ccsdisk/install) + diffconfig: FORCE mkdir -p $(BIN_DIR) $(SCRIPT_DIR)/diffconfig.sh > $(BIN_DIR)/config.seed diff --git a/docs/ccs.md b/docs/ccs.md new file mode 100644 index 0000000000..bad9d906d2 --- /dev/null +++ b/docs/ccs.md @@ -0,0 +1,23 @@ +# CCS (Complete Corresponding Source) Requirements + +As a Free Software project, libreCMC works to go above and +beyond its license obligations to be a good neighbor and to +promote the ideals of Free Software. The project was founded +on the idea that everyone should have the *freedom* to control +the hardware they own, which means being able to fully control +what it does and what runs on it. To ensure that everyone continues +to have this freedom, a mechanism was added to the build system [1] +to generate a CCS disk which OEMs and others would be able to +distribute with devices for compliance and to push the idea that +sources should be provided with a device at the time of sale. + +## `make ccsdisk` + +A new target was created to build a CCS disk based upon the option of upstream +sources or to use a local checkout. As it stands, this includes everything except +for u-boot sources for a given target. In the near future, the libreCMC project +will start including versions of u-boot for all offically supported targets and +going forward a requirement for offical hardware support will be u-boot in libreCMC. + + +[1] libreCMC is a fork of OpenWrt, which both use a fork of [Buildroot](https://buildroot.org). diff --git a/target/Makefile b/target/Makefile index db87c78aae..c8ee54e3d7 100644 --- a/target/Makefile +++ b/target/Makefile @@ -6,12 +6,13 @@ # curdir:=target -$(curdir)/builddirs:=linux sdk imagebuilder toolchain +$(curdir)/builddirs:=linux sdk imagebuilder toolchain ccsdisk $(curdir)/builddirs-default:=linux -$(curdir)/builddirs-install:=linux $(if $(CONFIG_SDK),sdk) $(if $(CONFIG_IB),imagebuilder) $(if $(CONFIG_MAKE_TOOLCHAIN),toolchain) +$(curdir)/builddirs-install:=linux $(if $(CONFIG_SDK),sdk) $(if $(CONFIG_IB),imagebuilder) $(if $(CONFIG_MAKE_TOOLCHAIN),toolchain) $(if $(CONFIG_CCS),ccsdisk) $(curdir)/sdk/install:=$(curdir)/linux/install $(curdir)/imagebuilder/install:=$(curdir)/linux/install +$(curdir)/ccsdisk/install:=$(curdir)/ccsdisk/install $(eval $(call stampfile,$(curdir),target,prereq,.config)) $(eval $(call stampfile,$(curdir),target,compile,$(TMP_DIR)/.build)) diff --git a/target/ccsdisk/Config.in b/target/ccsdisk/Config.in new file mode 100644 index 0000000000..31f4a4a104 --- /dev/null +++ b/target/ccsdisk/Config.in @@ -0,0 +1,21 @@ +menuconfig CCS + bool "Build the libreCMC CCS (Complete Corresponding Source) Disk" + depends on !EXTERNAL_TOOLCHAIN + default BUILDBOT + help + This generates a CCS disk for distribution with devices that ship + with libreCMC. Note that this may omit some components, ex. u-boot + for a given target, which should be part of the CCS. Please see /docs/ccs.md + + config CCS_GIT_UPSTREAM + string "Enter git repository to clone" if CCS + default "https://gogs.librecmc.org/librecmc" if !CCS_GIT_TOPDIR + + config CCS_GIT_TOPDIR + bool "Use local checkout for sources" if CCS + help + If using this option, make sure that all changes have been + properly checked in. + + + diff --git a/target/ccsdisk/Makefile b/target/ccsdisk/Makefile new file mode 100644 index 0000000000..b8e5c8590d --- /dev/null +++ b/target/ccsdisk/Makefile @@ -0,0 +1,41 @@ +# +# Copyright (C) 2019 Robert Call +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk +include $(INCLUDE_DIR)/version.mk + +override MAKEFLAGS= + +CCS_NAME:=$(VERSION_DIST_SANITIZED)-$(VERSION_NUMBER)-src +CCS_BUILD_DIR:=$(BUILD_DIR)/$(CCS_NAME) +ISO_BUILD_DIR:=$(CCS_BUILD_DIR)/iso + +all: install + +$(BIN_DIR)/$(CCS_NAME).tar.gz: + mkdir -p $(BIN_DIR) + mkdir -p $(CCS_BUILD_DIR) + $(if $(CONFIG_CCS_GIT_TOPDIR),(cd $(CCS_BUILD_DIR); git clone $(TOPDIR) librecmc),(cd $(CCS_BUILD_DIR); git clone $(CONFIG_CCS_GIT_UPSTREAM) librecmc)) + $(CP) $(TOPDIR)/.config $(CCS_BUILD_DIR)/librecmc + $(CP) -r $(TOPDIR)/dl $(CCS_BUILD_DIR)/librecmc/ + +createiso: + mkdir -p $(ISO_BUILD_DIR)/bin/$(BOARD) + (cd $(CCS_BUILD_DIR); $(TAR) -czf $(ISO_BUILD_DIR)/$(CCS_NAME).tar.gz librecmc) + $(CP) ./files/README $(ISO_BUILD_DIR) + $(CP) $(BIN_DIR) $(ISO_BUILD_DIR)/bin/$(BOARD) + $(VERSION_SED_SCRIPT) $(ISO_BUILD_DIR)/README + genisoimage -J -joliet-long -r -o $(BIN_DIR)/$(CCS_NAME).iso $(ISO_BUILD_DIR) + +download: +compile: +install: clean $(BIN_DIR)/$(CCS_NAME).tar.gz createiso + + +clean: + rm -rf $(CCS_BUILD_DIR) $(BIN_DIR)/$(CCS_NAME).tar.gz $(BIN_DIR)/$(CCS_NAME)-src.iso diff --git a/target/ccsdisk/files/README b/target/ccsdisk/files/README new file mode 100644 index 0000000000..840888f1d4 --- /dev/null +++ b/target/ccsdisk/files/README @@ -0,0 +1,94 @@ + ____ _____ ____ + _ _ _ | __|| || __| + | (_) |__ _ _ ___ | | | | | || | + | | | '_ \ '_/ -_)| |__ | | | || |__ + |_|_|_.__/_| \___||____||_|_|_||____| + ----------------------------------------- + The libre embedded GNU/Linux distro. + +This compact disk contains the source code and firmware images +for the %T line of routers. + + +Disk Layout: +============================ + +/bin/%T/* : Contains firmware images for %T family of routers + + +libreCMC-%V-src.tar.gz : The full libreCMC source code w/ original configuration. + + +Building libreCMC image from source: +============================ + +To build your own firmware, you need to have access to a GNU/Linux system +(case-sensitive filesystem required) with the following installed : + +gcc, binutils, bzip2, flex, python, perl, make, find, +grep, diff, unzip, gawk, getopt, libssl-dev (openssl-devel), libz-dev and libc headers. + +References to this and other documentation use : "$LIBRECMC_SRC" , which +is the directory where the libreCMC source code resides. + +Before starting, please extract : libreCMC-%V.tar.gz + +tar fxv librecmc-%V.tar.gz + +cd libreCMC/ + +Within the libreCMC src. directory (in this case, trunk), please use "make menuconfig" to create your +desired configuration for the toolchain and firmware. Please note that the default configuration is +what was used to build the firmware image for your router. It is advised that you use this configuration. If +you need to restore the default configuration, copy librecmc_config to libreCMC/trunk/.config + +Simply running "make" will build your firmware. The build system will extract all included sources, +build the cross-compile toolchain, the kernel and all chosen applications. If there is an issue, please run: + +make V=s + +This will show debugging output and give a clue as to why the build failed. + +When the build completes without any issues, the resulting librecmc-ar71xx-generic-tpe-r1100-squashfs-sysupgrade.bin image will +be found in : $SRC_ROOT/bin/targets/ar71xx/ + +Flashing The libreCMC firmware +============================ + +1) Open a web browser and go to : https://192.168.10.1 + +2) You will see a security warning because SSL cert is self- +signed. Click the "understand the risks" and then "add exception" buttons. + +3) Enter the admin password for the router (stock password is : none ) + +4) The backup / flash utility is under "System -> Backup / Flash Firmware". + +5) Make sure to backup your configuration (if you are upgrading to a new release) +by clicking the "Generate archive" button. This will download a file named +backup-libreCMC-$(DATE).tar.gz + +6) Upload the new firmware by clicking the "browse" button under "Flash new firmware image". +If you wish to keep your current settings, make sure that the "Keep Settings" checkbox is +checked. If the file name is correct, make sure to click the "Flash Image" button. + +7) Wait a about 1 - 2.5 min. The router will restart itself then the page should refresh, bringing +you back to the login page. + + +Final Words +============================ + +We would like to thank you for supporting the libreCMC project. If you find any +software in this release that is non-free software, please report it to info@librecmc.org. +We will review the offending piece of software and devise a workaround or patch. +libreCMC aims to always be a 100% libre Free Software project. + + +Happy Hacking, + + Your libreCMC Project + http://librecmc.org + info@librecmc.org + +