From 1bf48850e4e3ad7a7bbdb4fe13982cbdcb649df3 Mon Sep 17 00:00:00 2001 From: mwasilew Date: Mon, 18 Jul 2016 12:52:30 +0100 Subject: [PATCH 001/268] RPB-EE-Release: Added QA checkpoints Added QA checkpoints with descriptions. --- Reference-Platform/ReleaseStatus/RPB-EE-Release.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Reference-Platform/ReleaseStatus/RPB-EE-Release.md b/Reference-Platform/ReleaseStatus/RPB-EE-Release.md index 8ad1715..0703cc4 100644 --- a/Reference-Platform/ReleaseStatus/RPB-EE-Release.md +++ b/Reference-Platform/ReleaseStatus/RPB-EE-Release.md @@ -19,6 +19,9 @@ * Linaro Connect Las Vegas, from 2016-09-26 to 2016-09-30 * OP-TEE 2.2.0, around 2016-10-15 * QA checkpoints + * Alpha: feature complete, no blocker bugs + * Beta: code freeze, no blocker bugs, no critical bugs (only bugfixes are accepted after this point) + * RC: no critical bugs, possibly no major bugs ### EE Release Goals From c46972efcf0ea49efb059435a5c93ef6b302776a Mon Sep 17 00:00:00 2001 From: mwasilew Date: Mon, 18 Jul 2016 12:53:36 +0100 Subject: [PATCH 002/268] RPB-EE-Release: Changed ownership of proposed goal Changed ownership of 'LAVA support for installers' goal for EE Reference Platform. --- Reference-Platform/ReleaseStatus/RPB-EE-Release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/ReleaseStatus/RPB-EE-Release.md b/Reference-Platform/ReleaseStatus/RPB-EE-Release.md index 0703cc4..d13d70b 100644 --- a/Reference-Platform/ReleaseStatus/RPB-EE-Release.md +++ b/Reference-Platform/ReleaseStatus/RPB-EE-Release.md @@ -89,7 +89,7 @@ Note: if it's relevant, add tags in the summary. e.g. [Debian] [CentOS]
* **Summary:** Debian/CentOS installers support in LAVA * **Description:** LAVA supports Debian/CentOS installers -* **Advocate/Owner:** TBA +* **Advocate/Owner:** Milosz Wasilewski * **State:** proposed * **Bug(s):** TBA
From f24b66398daa9b91fcdda478c1b3b453dfdeb699 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 25 Jul 2016 09:40:02 -0700 Subject: [PATCH 003/268] Update BFSDebianRPB.md Update TOC to match contents Signed-off-by: Robert Wolff --- .../RPOfficial/ConsumerEdition/HiKey/BFSDebianRPB.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSDebianRPB.md index d15235d..6c74c11 100644 --- a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSDebianRPB.md +++ b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSDebianRPB.md @@ -6,13 +6,10 @@ - Step 3: Export path to cross compiler tool and confirm version - Step 5: Set the right kernel .config file - Step 6: Build kernel image and debian package - - Step 7: Copy Modules - - Step 8: Find kernel release string - - Step 9: Generate modules.dep and map files - - Step 10: Find HiKey IP Address - - Step 11: Transfer the modules to the target HiKey - - Step 12: Generate the initramfs - - Step 13: Create the device tree image and boot image + - Step 7: Find HiKey IP Address + - Step 8: Transfer the modules to the target HiKey + - Step 9: Generate the initramfs + - Step 10: Create the device tree image and boot image - Customize Bootloader - Build Rootfs from source From 025b78e173e3c0045ff1e31a5c736c75f10e60ab Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 3 Aug 2016 14:29:39 -0700 Subject: [PATCH 004/268] Update README.md Remove Test Report section and link Signed-off-by: Robert Wolff --- Reference-Platform/RPOfficial/ConsumerEdition/HiKey/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/README.md b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/README.md index b3dfbdb..8e370a8 100644 --- a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/README.md +++ b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/README.md @@ -4,7 +4,6 @@ - **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. - **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. - **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. *** @@ -16,7 +15,7 @@ | [Install Instructions](InstallDebianRPB.md) | | [Build from Source](BFSDebianRPB.md) | | [Known issues](../../../Known-Issues.md) | -| [Test Report](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/16.06-CE-Debian-RPB-Test-Report.pdf) | + | **CE AOSP** | From 3a756aeda07029f359e895e156898ffee7a29f71 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 3 Aug 2016 14:30:53 -0700 Subject: [PATCH 005/268] Update README.md Remove Test Report section and link to download Signed-off-by: Robert Wolff --- .../RPTest/ConsumerEdition/DragonBoard-410c/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/README.md index 43c698f..cb2b5f5 100644 --- a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/README.md +++ b/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/README.md @@ -3,7 +3,6 @@ - **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. - **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. - **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. *** @@ -11,8 +10,7 @@ |:-----------------------------:| | [Install Instructions](InstallDebianRPB-16.06.md) | | [Build from Source](BFSDebianRPB-16.06.md) | -| [Known issues](../../../Known-Issues.md) | -| [Test Report](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/16.06-CE-Debian-RPB-Test-Report.pdf) | +| [Known issues](../../../Known-Issues.md) | *** From 39c4a05391f01278f100c73f9c1716cb6fd7d376 Mon Sep 17 00:00:00 2001 From: Victor Chong Date: Thu, 4 Aug 2016 08:31:34 +0100 Subject: [PATCH 006/268] BuildSourceBL: Add optee_os support Signed-off-by: Victor Chong --- .../RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md index 4498f42..f06c027 100644 --- a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md +++ b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md @@ -3,6 +3,7 @@ The source code is available from: - [**l-loader**](https://github.com/96boards-hikey/l-loader) - [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) +- [**OP-TEE**](https://github.com/OP-TEE/optee_os) - [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. @@ -30,6 +31,7 @@ export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" ```shell git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git +git clone https://github.com/OP-TEE/optee_os.git git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git git clone https://github.com/96boards-hikey/l-loader.git git clone git://git.linaro.org/uefi/uefi-tools.git @@ -44,11 +46,12 @@ To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): ```shell export AARCH64_TOOLCHAIN=GCC49 export EDK2_DIR=${PWD}/edk2 +export OPTEE_DIR=${PWD}/optee_os export ATF_DIR=${PWD}/arm-trusted-firmware export UEFI_TOOLS_DIR=${PWD}/uefi-tools cd ${EDK2_DIR} rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg -${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} hikey +${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} -s ${OPTEE_DIR} hikey ``` And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): From a4e6dd304ff6cc5e7aaa4676631a6ee3b87467c0 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Fri, 12 Aug 2016 10:54:24 +0100 Subject: [PATCH 007/268] Delete README.md Legacy from when the RP was the 96boards firmware --- Reference-Platform/Contribute/RPK/README.md | 29 --------------------- 1 file changed, 29 deletions(-) delete mode 100644 Reference-Platform/Contribute/RPK/README.md diff --git a/Reference-Platform/Contribute/RPK/README.md b/Reference-Platform/Contribute/RPK/README.md deleted file mode 100644 index fa88738..0000000 --- a/Reference-Platform/Contribute/RPK/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Reference Platform Kernel - -Instructions on how/where to submit patches for the Reference Platform Kernel - -### Contribute - -- Submit patch to Linux upstream - - https://github.com/torvalds/linux - - https://www.kernel.org/doc/Documentation/SubmittingPatches - -###### Patch accepted upstream - -- If patch submitted upstream, and accepted by a Linux developer: - - Patch is ready for the RPK - - Submit through the 96Boards developer Mailing list - - dev@lists.96boards.org - -###### Patch under review - not accepted upstream - -- If patch is submitted upstream, and under review by a Linux developer: - - Patch is not yet ready for the RPK - - Please review Reference Platform [Kernel Policy](../../Reference-Platform/KernelPolicy.md) for more information - - When patch is ready for the RPK, submit all patches through the 96Boards developer Mailing list - - dev@lists.96boards.org - -*** - - - From 421d18c0ddeca68c009b3f6248132c87f11a0ff6 Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Fri, 12 Aug 2016 11:17:42 +0100 Subject: [PATCH 008/268] Rename Reference-Platform/KernelSubmissions.md to Reference-Platform/Contribute/RPK/README.md Move to where the other contribute stuff is. --- .../{KernelSubmissions.md => Contribute/RPK/README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Reference-Platform/{KernelSubmissions.md => Contribute/RPK/README.md} (100%) diff --git a/Reference-Platform/KernelSubmissions.md b/Reference-Platform/Contribute/RPK/README.md similarity index 100% rename from Reference-Platform/KernelSubmissions.md rename to Reference-Platform/Contribute/RPK/README.md From 0a0357eb174ae8cb24f0d4be2f4e410c0f7156de Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Tue, 23 Aug 2016 16:23:12 +0100 Subject: [PATCH 009/268] Update Kernel-Roadmap.md Remove bitrotted references to old policies & 96boards firmware stuff. --- Reference-Platform/Kernel-Roadmap.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Reference-Platform/Kernel-Roadmap.md b/Reference-Platform/Kernel-Roadmap.md index 751f8d8..c22b7bd 100644 --- a/Reference-Platform/Kernel-Roadmap.md +++ b/Reference-Platform/Kernel-Roadmap.md @@ -34,8 +34,7 @@ FIXME No. RPK's main focus is on engineers and teams that need to get their code upstream as a requirement to get distribution support (e.g. LEG features enabled in RHEL, Ubuntu) or that need to work on tip to get new features accepted into the kernel (e.g. core engineering teams such at KWG, PMWG). We don't have resources to maintain a long-term kernel. Please talk to the LSK team for long-term supported kernels. ## Additional Material - * [Talk](https://www.youtube.com/watch?v=fW6_eL3U7OQ) about RPK at BKK16 (March 2016) + * [Talk](https://www.youtube.com/watch?v=fW6_eL3U7OQ) about RPK at BKK16 (March 2016, policy/goals substantially changed since) * [Patch-acceptance Policy](KernelPolicy.md) for RPK -## Communications - * [Dev](https://lists.96boards.org/mailman/listinfo) mailing list + From a36f4f5b8fdb2090614f1be75e7b0945b2aaf724 Mon Sep 17 00:00:00 2001 From: Victor Chong Date: Sun, 4 Sep 2016 14:11:35 +0100 Subject: [PATCH 010/268] BuildSourceBL: Use 96boards-hikey fork: uefi-tools hikey-aosp branch git.linaro.org/uefi/uefi-tools.git recently added support for gcc5 but github.com/96boards-hikey/edk2.git has not, so the build will break if using a gcc5 version toolchain. Fixes http://www.96boards.org/forums/topic/cannot-build-hikey-fw-from-source until hikey edk2 gets upstreamed. Signed-off-by: Victor Chong --- .../RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md index f06c027..9dce74b 100644 --- a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md +++ b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md @@ -34,7 +34,7 @@ git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git git clone https://github.com/OP-TEE/optee_os.git git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git git clone https://github.com/96boards-hikey/l-loader.git -git clone git://git.linaro.org/uefi/uefi-tools.git +git clone -b hikey-aosp https://github.com/96boards-hikey/uefi-tools.git ``` #### Building EDK2/UEFI for HiKey From a380422c681aa4c7bd9df2451f9d8bba4f5e1c80 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 23 Sep 2016 00:11:54 -0700 Subject: [PATCH 011/268] Removed all none official boards from official folder RPB Official and test platforms were repeated in the various folders. The test board have now been deleted from the official folder and remain only in the test folder Signed-off-by: Robert Wolff --- .../RPOfficial/EnterpriseEdition/.DS_Store | Bin 0 -> 6148 bytes .../EnterpriseEdition/D02/README.md | 60 ----------------- .../EnterpriseEdition/D03/README.md | 60 ----------------- .../HP-ProLiant-m400/README.md | 48 -------------- .../EnterpriseEdition/Overdrive/README.md | 61 ------------------ .../EnterpriseEdition/Q2432LZB/README.md | 48 -------------- .../EnterpriseEdition/ThunderX/README.md | 48 -------------- .../X-Gene-Mustang/README.md | 48 -------------- 8 files changed, 373 deletions(-) create mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/.DS_Store delete mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/D02/README.md delete mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/D03/README.md delete mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/HP-ProLiant-m400/README.md delete mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/Overdrive/README.md delete mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/Q2432LZB/README.md delete mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/ThunderX/README.md delete mode 100644 Reference-Platform/RPOfficial/EnterpriseEdition/X-Gene-Mustang/README.md diff --git a/Reference-Platform/RPOfficial/EnterpriseEdition/.DS_Store b/Reference-Platform/RPOfficial/EnterpriseEdition/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Fri, 23 Sep 2016 00:27:36 -0700 Subject: [PATCH 012/268] Organize top RPB folder Move many files around into Extras folder to organize top folder. Should optimize workflow. Signed-off-by: Robert Wolff --- Reference-Platform/.DS_Store | Bin 0 -> 6148 bytes .../{ => Extras}/Feedback-and-Support.md | 0 Reference-Platform/{ => Extras}/Highlights.md | 0 .../{ => Extras}/Kernel-Roadmap.md | 0 Reference-Platform/{ => Extras}/KernelPolicy.md | 0 Reference-Platform/{ => Extras}/Known-Issues.md | 0 .../{ => Extras}/PreviousReleases/README.md | 0 .../DragonBoard-410c/BFSDebianRPB-15.10.md | 0 .../DragonBoard-410c/InstallDebianRPB-15.10.md | 0 .../ConsumerEdition/DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 0 .../ConsumerEdition/HiKey/BFSDebianRPB-15.10.md | 0 .../ConsumerEdition/HiKey/InstallAOSP-15.10.md | 0 .../HiKey/InstallDebianRPB-15.10.md | 0 .../RPB_15.10/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.10/ConsumerEdition/README.md | 0 .../PreviousReleases/RPB_15.10/Highlights.md | 0 .../PreviousReleases/RPB_15.10/Known-Issues.md | 0 .../PreviousReleases/RPB_15.10/README.md | 0 .../ConsumerEdition/DragonBoard-410c/README.md | 0 .../RPB_15.12/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.12/ConsumerEdition/README.md | 0 .../RPB_15.12/EnterpriseEdition/README.md | 0 .../PreviousReleases/RPB_15.12/Highlights.md | 0 .../PreviousReleases/RPB_15.12/Known-Issues.md | 0 .../PreviousReleases/RPB_15.12/README.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../DragonBoard-410c/InstallDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../ConsumerEdition/DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 0 .../ConsumerEdition/HiKey/BFSDebianRPB-16.03.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../HiKey/InstallAOSPRPB-16.03.md | 0 .../HiKey/InstallDebianRPB-16.03.md | 0 .../RPB_16.03/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.03/ConsumerEdition/README.md | 0 .../RPB_16.03/EnterpriseEdition/.DS_Store | Bin .../RPB_16.03/EnterpriseEdition/Cello/README.md | 0 .../RPB_16.03/EnterpriseEdition/D02/README.md | 0 .../RPB_16.03/EnterpriseEdition/D03/README.md | 0 .../EnterpriseEdition/DHCP-TFTP-Server-UEFI.md | 0 .../EnterpriseEdition/HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Install-CentOS-7.md | 0 .../EnterpriseEdition/Install-Debian-Jessie.md | 0 .../EnterpriseEdition/Install-Fedora-23.md | 0 .../ODPi-BigTop-Hadoop-Config-Run.md | 0 .../ODPi-Hadoop-Installation.md | 0 .../EnterpriseEdition/OpenStack-Liberty.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../RPB_16.03/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 0 .../EnterpriseEdition/X-Gene-Mustang/README.md | 0 .../PreviousReleases/RPB_16.03/Highlights.md | 0 .../PreviousReleases/RPB_16.03/Known-Issues.md | 0 .../PreviousReleases/RPB_16.03/README.md | 0 .../RPB_16.03/ReleaseStatus-16.03.md | 0 Reference-Platform/{ => Extras}/RPB-CI.md | 0 .../{ => Extras}/RPB-future-status.md | 0 .../{ => Extras}/ReleaseStatus/README.md | 0 .../{ => Extras}/ReleaseStatus/RPB-CE-Release.md | 0 .../{ => Extras}/ReleaseStatus/RPB-EE-Release.md | 0 Reference-Platform/{ => Extras}/Report-a-bug.md | 0 Reference-Platform/LICENSE.md | 9 +++++++++ 66 files changed, 9 insertions(+) create mode 100644 Reference-Platform/.DS_Store rename Reference-Platform/{ => Extras}/Feedback-and-Support.md (100%) rename Reference-Platform/{ => Extras}/Highlights.md (100%) rename Reference-Platform/{ => Extras}/Kernel-Roadmap.md (100%) rename Reference-Platform/{ => Extras}/KernelPolicy.md (100%) rename Reference-Platform/{ => Extras}/Known-Issues.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/ConsumerEdition/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/Highlights.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/Known-Issues.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.10/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.12/ConsumerEdition/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.12/Highlights.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.12/Known-Issues.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_15.12/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ConsumerEdition/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/.DS_Store (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/Highlights.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/Known-Issues.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/README.md (100%) rename Reference-Platform/{ => Extras}/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md (100%) rename Reference-Platform/{ => Extras}/RPB-CI.md (100%) rename Reference-Platform/{ => Extras}/RPB-future-status.md (100%) rename Reference-Platform/{ => Extras}/ReleaseStatus/README.md (100%) rename Reference-Platform/{ => Extras}/ReleaseStatus/RPB-CE-Release.md (100%) rename Reference-Platform/{ => Extras}/ReleaseStatus/RPB-EE-Release.md (100%) rename Reference-Platform/{ => Extras}/Report-a-bug.md (100%) create mode 100644 Reference-Platform/LICENSE.md diff --git a/Reference-Platform/.DS_Store b/Reference-Platform/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c736bb8d81acfdf24d5d597b1582b67419946ace GIT binary patch literal 6148 zcmeHKOHKnZ47H&`6>Pd>nJe@LqiTABUI5gQU_sRiTB*xyxe*89K)h!gq=ASH5-P}+ zlIO&BK5sNhEF!u%40Dm0h)hw4N~Iy}Zko=*c>+`$<5r#??&hoYcC%{?bc$VE`-Lp! zD0_L7_WDQm&9?7{!+tIDdinffTl!=lzP0b}{}ex`_|0-n$v`rY3?u_TV*qzHWqRe9 zbuy3)Bm*A|@O&sJ#4fNp+R=f^QUD;I(I(KDOE9Jcc7fFq7KnN%&_gv+4E1pIm+ Date: Fri, 23 Sep 2016 00:29:00 -0700 Subject: [PATCH 013/268] Delete .DS_Store --- Reference-Platform/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/.DS_Store diff --git a/Reference-Platform/.DS_Store b/Reference-Platform/.DS_Store deleted file mode 100644 index c736bb8d81acfdf24d5d597b1582b67419946ace..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKOHKnZ47H&`6>Pd>nJe@LqiTABUI5gQU_sRiTB*xyxe*89K)h!gq=ASH5-P}+ zlIO&BK5sNhEF!u%40Dm0h)hw4N~Iy}Zko=*c>+`$<5r#??&hoYcC%{?bc$VE`-Lp! zD0_L7_WDQm&9?7{!+tIDdinffTl!=lzP0b}{}ex`_|0-n$v`rY3?u_TV*qzHWqRe9 zbuy3)Bm*A|@O&sJ#4fNp+R=f^QUD;I(I(KDOE9Jcc7fFq7KnN%&_gv+4E1pIm+ Date: Fri, 23 Sep 2016 00:31:40 -0700 Subject: [PATCH 014/268] Update README.md Fixed relative links to the various moved files Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index cddc0d3..d14752b 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -8,9 +8,9 @@ For more information about the Reference Software Platform project please watch

- [Release Highlights](Highlights.md) | - [Known Issues](Known-Issues.md)
- Release Status ([CE](ReleaseStatus/RPB-CE-Release.md) / [EE](ReleaseStatus/RPB-EE-Release.md)) + [Release Highlights](Extras/Highlights.md) | + [Known Issues](Extras/Known-Issues.md)
+ Release Status ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md))
*** @@ -26,17 +26,17 @@ For more information about the Reference Software Platform project please watch #### Resources -- [Previous RPB Releases](PreviousReleases/README.md) -- [RPB CI](RPB-CI.md) -- [Report a bug](Report-a-bug.md) -- [Feedback and Support](Feedback-and-Support.md) -- [Kernel Policy](KernelPolicy.md) -- [Kernel Roadmap](Kernel-Roadmap.md) +- [Previous RPB Releases](Extras/PreviousReleases/README.md) +- [RPB CI](Extras/RPB-CI.md) +- [Report a bug](Extras/Report-a-bug.md) +- [Feedback and Support](Extras/Feedback-and-Support.md) +- [Kernel Policy](Extras/KernelPolicy.md) +- [Kernel Roadmap](Extras/Kernel-Roadmap.md) ***

[Contribute to RPB](Contribute/README.md) | - [Doc Contribution Policy](../ContributionPolicy.md) + [Document Contribution Policy](../ContributionPolicy.md)
From d218c72382b23fe3e239f371022e430cf597d9c7 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 23 Sep 2016 00:37:30 -0700 Subject: [PATCH 015/268] Update README.md Changed relative links Signed-off-by: Robert Wolff --- Reference-Platform/RPOfficial/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/RPOfficial/README.md b/Reference-Platform/RPOfficial/README.md index 6b432b4..16d82f0 100644 --- a/Reference-Platform/RPOfficial/README.md +++ b/Reference-Platform/RPOfficial/README.md @@ -2,9 +2,9 @@

- [Release Highlights](../Highlights.md) | - [Known Issues](../Known-Issues.md)
- Release Status ([CE](../ReleaseStatus/RPB-CE-Release.md) / [EE](../ReleaseStatus/RPB-EE-Release.md)) + [Release Highlights](../Extras/Highlights.md) | + [Known Issues](../Extras/Known-Issues.md)
+ Release Status ([CE](../Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](../Extras/ReleaseStatus/RPB-EE-Release.md))
*** @@ -22,17 +22,17 @@ Choose Consumer Edition or Enterprise Edition to start setting up your instructi #### Resources -- [Previous RPB Releases](../PreviousReleases/README.md) -- [RPB CI](../RPB-CI.md) -- [Report a bug](../Report-a-bug.md) -- [Feedback and Support](../Feedback-and-Support.md) -- [Kernel Policy](../KernelPolicy.md) -- [Kernel Roadmap](../Kernel-Roadmap.md) +- [Previous RPB Releases](../Extras/PreviousReleases/README.md) +- [RPB CI](../Extras/RPB-CI.md) +- [Report a bug](../Extras/Report-a-bug.md) +- [Feedback and Support](../Extras/Feedback-and-Support.md) +- [Kernel Policy](../Extras/KernelPolicy.md) +- [Kernel Roadmap](../Extras/Kernel-Roadmap.md) ***

- [Contribute to RPB](../Contribute/README.md) | + [Contribute to RPB](../Extras/Contribute/README.md) | [Doc Contribution Policy](../../ContributionPolicy.md)
From 1499b7286b8bd0bc7ab41fbd0a47fb4afc0ab59f Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 23 Sep 2016 00:38:40 -0700 Subject: [PATCH 016/268] Update README.md Changed relative links Signed-off-by: Robert Wolff --- Reference-Platform/RPTest/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/RPTest/README.md b/Reference-Platform/RPTest/README.md index 9452170..9640700 100644 --- a/Reference-Platform/RPTest/README.md +++ b/Reference-Platform/RPTest/README.md @@ -2,9 +2,9 @@

- [Release Highlights](../Highlights.md) | - [Known Issues](../Known-Issues.md)
- Release Status ([CE](../ReleaseStatus/RPB-CE-Release.md) / [EE](../ReleaseStatus/RPB-EE-Release.md)) + [Release Highlights](../Extras/Highlights.md) | + [Known Issues](../Extras/Known-Issues.md)
+ Release Status ([CE](../Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](../Extras/ReleaseStatus/RPB-EE-Release.md))
*** @@ -30,17 +30,17 @@ Choose Consumer Edition or Enterprise Edition to start setting up your instructi #### Resources -- [Previous RPB Releases](../PreviousReleases/README.md) -- [RPB CI](../RPB-CI.md) -- [Report a bug](../Report-a-bug.md) -- [Feedback and Support](../Feedback-and-Support.md) -- [Kernel Policy](../KernelPolicy.md) -- [Kernel Roadmap](../Kernel-Roadmap.md) +- [Previous RPB Releases](../Extras/PreviousReleases/README.md) +- [RPB CI](../Extras/RPB-CI.md) +- [Report a bug](../Extras/Report-a-bug.md) +- [Feedback and Support](../Extras/Feedback-and-Support.md) +- [Kernel Policy](../Extras/KernelPolicy.md) +- [Kernel Roadmap](../Extras/Kernel-Roadmap.md) ***

- [Contribute to RPB](../Contribute/README.md) | + [Contribute to RPB](../Extras/Contribute/README.md) | [Doc Contribution Policy](../../ContributionPolicy.md)
From b1911e5e34013d9bbfa623fe6a655f6d91bc2855 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Mon, 17 Oct 2016 14:16:03 +0300 Subject: [PATCH 017/268] CECommon/OE.md: fix partition name for HiKey On HiKey /dev/mmcblk0p9 (the partition used to store rootfs) is named 'system', not 'rootfs'. Signed-off-by: Andrey Konovalov --- Reference-Platform/CECommon/OE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index 2d2a92d..722cac7 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -145,7 +145,7 @@ Dragonboard 410c: HiKey: * `/dev/mmcblk0p6` , aka `boot` is used for the boot image (kernel, device tree, initrd) -* `/dev/mmcblk0p9` , aka `rootfs` is used for the root file system +* `/dev/mmcblk0p9` , aka `system` is used for the root file system # Flashing build artifacts @@ -170,7 +170,7 @@ In the case of Dragonboard 410c: In the case of HiKey: # ext2simg -v IMAGE-MACHINE.ext4 IMAGE-MACHINE.img - # fastboot flash rootfs IMAGE-MACHINE.img + # fastboot flash system IMAGE-MACHINE.img # Proprietary firmware blob From 803fb661677edfb185449f89e3d349ba554bf75b Mon Sep 17 00:00:00 2001 From: Ricardo Salveti de Araujo Date: Mon, 31 Oct 2016 15:05:32 -0200 Subject: [PATCH 018/268] Kernel-Roadmap.md: fixing patch acceptance policy link --- Reference-Platform/Extras/Kernel-Roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Extras/Kernel-Roadmap.md b/Reference-Platform/Extras/Kernel-Roadmap.md index c22b7bd..c18c6a2 100644 --- a/Reference-Platform/Extras/Kernel-Roadmap.md +++ b/Reference-Platform/Extras/Kernel-Roadmap.md @@ -1,7 +1,7 @@ ## Introduction The Reference Platform Kernel (RPK) brings together WIP code that is still under review upstream in case that is useful. -The kernel tree is managed similar to linux-next, in that topic branches adding support for various platforms and new kernel features are merged on top of a (close-to-mainline) vanilla kernel. These topic branches are provided by the relevant segment group, Landing Team or vendor engineers who want to add support for a hardware platform or a new feature into RPK. Please review the [[patch-acceptance policy|RP-Kernel-Policy]] for RPK. It is implicit that the person responsible for the feature/platform suppport will rebase it to the new kernel version if that feature is not to be dropped in subsequent kernel releases. +The kernel tree is managed similar to linux-next, in that topic branches adding support for various platforms and new kernel features are merged on top of a (close-to-mainline) vanilla kernel. These topic branches are provided by the relevant segment group, Landing Team or vendor engineers who want to add support for a hardware platform or a new feature into RPK. Please review the [patch-acceptance Policy](KernelPolicy.md) for RPK. It is implicit that the person responsible for the feature/platform suppport will rebase it to the new kernel version if that feature is not to be dropped in subsequent kernel releases. See the [table](#kernel-version-table) below for a roadmap of proposed kernel versions for future releases. From 57f32f9b4409ea8bb7dc21fde56cc567695d50d2 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Tue, 1 Nov 2016 16:18:27 +0300 Subject: [PATCH 019/268] OE.md: add instructions for doing "32-bit userland/64-bit kernel" builds Signed-off-by: Andrey Konovalov --- Reference-Platform/CECommon/OE.md | 112 ++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index 722cac7..dcaff5f 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -226,6 +226,118 @@ If you boot this image on the board, you should get a command prompt on the HDMI And that should get you to the Weston desktop shell. +# Build mixed 32bit/64bit image + +OE RPB has support for creating mixed 32-bit/64-bit builds with 64-bit +kernel and 32-bit userland for: +* HiKey +* Dragonboard-410c + +There are two variants of machine configuration for both HiKey and +Dragonboard-410c boards: + +| Board | MACHINE-32 | MACHINE-64 | +|:-----:|:-------------:|:-----------:| +| HiKey | hikey-32 | hikey | +| DB-410c| dragonboard-410c-32 | dragonboard-410c | + +MACHINE-32 configuration doesn't build the kernel. It is intended to +create the 32-bit root filesystem only. + +MACHINE-64 configuration is universal. But in this mixed build only the +kernel and the kernel modules are needed from the 64-bit configuration, +so the 64-bit rpb-minimal-image is built. + +## Running a mixed build + +Setting up the build environment is the same as usual. The only difference +is that when running +``` +$ . setup-environment +``` +one should select `` as the MACHINE. +DISTRO values can be: +* rpb-x11 +* rpb-wayland + +Then do +``` +bitbake_secondary_image --extra-machine +``` +e.g. if MACHINE=dragonboard-410c-32 and DISTRO=rpb-wayland were selected +when sourcing setup-environment, the command could be: +`bitbake_secondary_image --extra-machine dragonboard-410c rpb-weston-image` + +## Creating the mixed rootfs image + +`bitbake_secondary_image` actually runs two builds. So in the build directory, +under `tmp-*/deploy/images/` two directories are created: one for 32-bit build +artifacts, and the other for the 64-bit ones. E.g. +``` +tmp-rpb_wayland-glibc/deploy/images/dragonboard-410c-32 +``` +and +``` +tmp-rpb_wayland-glibc/deploy/images/dragonboard-410c + +Unpack the 32-bit `*.rootfs.ext4` image, resize it to make sure that there is +enough space for the 64-bit modules, mount it via a loop device, and unpack the +64-bit modules into the 32-bit root filesystem. Then unmount the rootfs to get +the 32-bit rootfs.ext4 image with the 64-bit kernel modules added. + +Please find more detailed instructions for the both boards below. + +### Creating the image for Dragonboard-410c + +Assuming that all the relevant build artifacts are in the current directory: +``` +gunzip -k rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4.gz +resize2fs rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4 512M +mkdir root +sudo mount -o loop rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4 root +cd root/ +sudo tar xzf ../modules--4.4-r0-dragonboard-410c-20161013094521.tgz +cd .. +sync +sudo umount root +ext2simg rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4 rpb-weston-image-dragonboard-410c.rootfs.img +``` +The resulting rpb-weston-image-dragonboard-410c.rootfs.img with 32-bit userland +and 64-bit kernel modules can be flashed into the board with +``` +fastboot flash rootfs rpb-weston-image-dragonboard-410c.rootfs.img +``` + +### Creating the image for HiKey + +Creating the mixed tootfs image for HiKey is the same as for Dragonboard-410c, +but requires an extra step, as HiKey reads the kernel image to boot from the +rootfs (vs a boot partition in the case of Dragonboard-410c). So the 64-bit +kernel image and the DTB file must be copied to the 32-bit rootfs, the /boot +directory - this is where GRUB looks the kernel image for. E.g.: +``` +mkdir root +mkdir root-64 +gunzip -k rpb-minimal-image-hikey-20161014162659.rootfs.ext4.gz +sudo mount -o loop rpb-minimal-image-hikey-20161014162659.rootfs.ext4 root-64/ +gunzip -k rpb-weston-image-hikey-32-20161014172406.rootfs.ext4.gz +resize2fs rpb-weston-image-hikey-32-20161014172406.rootfs.ext4 512M +sudo mount -o loop rpb-weston-image-hikey-32-20161014172406.rootfs.ext4 root +sudo cp -r root-64/boot/* root/boot/ +cd root +sudo tar xzf ../modules--4.4.11+git-r0-hikey-20161014162659.tgz +cd .. +sync +sudo umount root +sudo umount root-64 +ext2simg rpb-weston-image-hikey-32-20161014172406.rootfs.ext4 rpb-weston-image-hikey.rootfs.img +``` +The resulting rpb-weston-image-hikey.rootfs.img with a 32-bit userland, and +64-bit kernel modules and the kernel can be flashed into the board with +``` +fastboot flash system rpb-weston-image-hikey.rootfs.img +``` + # Support For general question or support request, please go to [96boards.org Community forum](http://www.96boards.org/forums/forum/products/). From 048c0c87c077f9f5407105301b07ec3e7c9ef5eb Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Tue, 1 Nov 2016 19:00:54 +0300 Subject: [PATCH 020/268] OE.md: fix formatting in "Creating the mixed rootfs image" section Add the line missing from commit 57f32f9b4409 Signed-off-by: Andrey Konovalov --- Reference-Platform/CECommon/OE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index dcaff5f..d30974d 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -279,6 +279,7 @@ tmp-rpb_wayland-glibc/deploy/images/dragonboard-410c-32 and ``` tmp-rpb_wayland-glibc/deploy/images/dragonboard-410c +``` Unpack the 32-bit `*.rootfs.ext4` image, resize it to make sure that there is enough space for the 64-bit modules, mount it via a loop device, and unpack the From 5ffa7cca927fea9765661bd6f06056adaca2103c Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Thu, 10 Nov 2016 16:50:44 +0300 Subject: [PATCH 021/268] OE.md: fix the manifest branch RPB had moved from jethro to krogoth quite some time ago. Having "jethro" in the instructions causes confusion. Signed-off-by: Andrey Konovalov --- Reference-Platform/CECommon/OE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index d30974d..990b4ae 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -86,7 +86,7 @@ To manage the various git trees and the OpenEmbedded environment, a repo manifes To initialize your build environment, you need to run: mkdir oe-rpb && cd oe-rpb - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b krogoth repo sync source setup-environment [] From 6417a90ceb2a6704e3ac907e7ffe3a4dfd2e7c52 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 10:18:42 -0800 Subject: [PATCH 022/268] Added some files from wiki Signed-off-by: Robert Wolff --- ...an-RPB-Dragonboard410c-15.12-Build.textile | 104 ++++++++++++++++ ...-RPB-Dragonboard410c-15.12-Install.textile | 81 +++++++++++++ .../CE-Debian-RPB-Dragonboard410c.textile | 28 +++++ .../CE-AOSP-RPB-HiKey-15.12-Build.textile | 37 ++++++ .../CE-AOSP-RPB-HiKey-15.12-Install.textile | 112 ++++++++++++++++++ .../CE-Debian-RPB-HiKey-15.12-Build.textile | 53 +++++++++ .../CE-Debian-RPB-HiKey-15.12-Install.textile | 97 +++++++++++++++ 7 files changed, 512 insertions(+) create mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Build.textile create mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Install.textile create mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile create mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Build.textile create mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Install.textile create mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Build.textile create mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Install.textile diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Build.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Build.textile new file mode 100644 index 0000000..f129219 --- /dev/null +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Build.textile @@ -0,0 +1,104 @@ +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-qcom +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @boot@ image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-qcom +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +h4. Building a boot image + +You now need to create a valid boot image with your own kernel build. + +On your host PC, we need to install the following tools: + +bc. sudo apt-get install device-tree-compiler +git clone git://codeaurora.org/quic/kernel/skales + +The boot image consists of the table of device tree (@dt.img@), the kernel image (@Image@) and an init ramdisk image. + +The @dtbTool@ is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. + +bc. ./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/ + +To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. + +The tool @mkbootimg@ (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: + +bc. ./skales/mkbootimg --kernel arch/arm64/boot/Image \ + --ramdisk initrd.img \ + --output boot-db410c.img \ + --dt dt.img \ + --pagesize 2048 \ + --base 0x80000000 \ + --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" + +h4. Booting a custom boot image + +Assuming you have now built a valid boot image called @boot-db410c.img@, you can run the following @fastboot@ command to boot it on the board: + +bc. sudo fastboot boot boot-db410c.img + +If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the @boot@ partition: + +bc. sudo fastboot flash boot boot-db410c.img + +h4. How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on "Qualcomm Developer Network":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip, the second stage bootloader is @LK@ and is open source. + +The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the "Linaro Qualcomm Landing Team git repository":https://git.linaro.org/landing-teams/working/qualcomm/lk.git: + +bc. git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 + +To build the LK bootloader, you can use the following instructions: + +bc. git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- + +The second stage bootloader is flashed on the @aboot@ partition, you can now flash your board with: + +bc. sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source \ No newline at end of file diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Install.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Install.textile new file mode 100644 index 0000000..59fc76a --- /dev/null +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Install.textile @@ -0,0 +1,81 @@ +h2. Install Instructions - CE Debian RPB 15.12 - Dragonboard410c + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for Dragonboard410c. + +For more information about the Dragonboard410c development board, please check "https://www.96boards.org/products/ce/dragonboard410c/":https://www.96boards.org/products/ce/dragonboard410c/ + +h3. Image Components + +The CE Debian RPB 15.12 - Dragonboard410c build is composed of the following artifacts: + +* Bootloader: +** "Qualcomm proprietary first stage bootloader":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip +** "Little Kernel":https://git.linaro.org/landing-teams/working/qualcomm/lk.git as second stage boot loader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-qcom-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay + +h4. Closed source binaries + +This release contains proprietary firmware. You can also download the proprietary firmware separately, from "here":https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin. All the required firmware files are pre-installed, and the image is bound to the following "license agreement":https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt. + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +Download the latest bootloader zip from "http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest":http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest (look for dragonboard410c_bootloader_emmc_linux*.zip) + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-boot-linux-20151214-35.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip dragonboard410c-* + +h3. Flashing + +h4. Bootloader + +Flash the eMMC with the bootloader: + +* Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. +* Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC +* Assure micro SD Card slot is empty on the DB410c +* Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} +* Power on the DB410c into fastboot mode +** Press and hold the Vol (-) button on the DB410c (S4) +** While pressing S4 button, power up the DB410c. It will come up in fastboot mode +* From the host PC terminal window, run the following commands: + +bc. # Check to make sure fastboot device connected. If not resolve +sudo fastboot devices +# cd to the directory the bootloader zip file was extracted +cd +sudo ./flashall + +The bootloader is now installed on the DB410c. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot dragonboard410c-boot-linux-20151214-35.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform + +In the case that the board experiences an irrecoverable error and no longer function, please check the "rescue image guide":https://github.com/96boards/documentation/wiki/Dragonboard-410c-Installation-Guide-for-Linux-and-Android#create--install-a-rescue-image diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile new file mode 100644 index 0000000..f83f929 --- /dev/null +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile @@ -0,0 +1,28 @@ +h2. Install Instructions + +Look for the desirable release at "https://builds.96boards.org/snapshots/reference-platform/debian/":https://builds.96boards.org/snapshots/reference-platform/debian/ + +h3. Downloading + +With the version in hands, simply download the images with wget: + +bc. wget https://builds.96boards.org/snapshots/reference-platform/debian/30/dragonboard410c/dragonboard410c-boot-linux-20151106-30.img.gz +wget https://builds.96boards.org/snapshots/reference-platform/debian/30/dragonboard410c/dragonboard410c-rootfs-debian-jessie-alip-20151106-30.emmc.img.gz +gunzip dragonboard410c-* + +h3. Flashing + +Unplug the power cable, press volume down and plug the power cable again (to boot in fastboot mode). Once in fastboot, flash with the following commands: + +bc. sudo fastboot flash boot dragonboard410c-boot-linux-*.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img + +Now just reboot the board and enjoy the release :-) + +For known issues and more information, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferenceSoftware + +h3. TODO + +* Recovery process +* Extend instructions to explain the files used + diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Build.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Build.textile new file mode 100644 index 0000000..6f4f6e0 --- /dev/null +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Build.textile @@ -0,0 +1,37 @@ +h4. Building AOSP from source + +Additional AOSP repositories are hosted at: +* https://github.com/96boards/android_hardware_ti_wpan +* https://github.com/96boards/android_device_linaro_hikey +* https://github.com/96boards/android_manifest +* https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +*Build setup:* + +Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html + +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +bc. ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp + +*Download the code:* + +bc. mkdir android/ +cd android/ + +Download and extract the Mali vendor binaries in the above directory: "http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2":http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +*Build the image:* + +bc. repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hikey \ No newline at end of file diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Install.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Install.textile new file mode 100644 index 0000000..30edc3e --- /dev/null +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Install.textile @@ -0,0 +1,112 @@ + +h2. Install Instructions - CE AOSP RPB 15.12 - HiKey + +This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE AOSP RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader +* Linux Kernel: +** Derived from Linux 4.1 kernel +** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git +** Branch: *android-hikey-linaro-4.1* +* AOSP Android Marshmallow 6.0 + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.5* +* Extra firmware files available from firmware-linux +* Mali (requires EULA) + +h3. Downloading the pre-built binaries + +The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-4g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-8g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/hisi-idt.py + +*CE AOSP RPB image:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/boot_fat.uefi.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/cache.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata-8gb.img.tar.xz + +Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz and follow the instructions to download the file. + +Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: + +bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-aosp@ and @userdata@ files will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-aosp@), otherwise flashing the system image might fail. + +h4. Boot, System, Cache and Userdata + +Fastboot is required to flash boot, system, cache and userdata. + +*Flashing boot, cache, system and userdata:* + +Enable fastboot (either via recovery or by changing the boot jumpers), and then just flash the required files: + +bc. sudo fastboot flash boot boot_fat.uefi.img +sudo fastboot flash cache cache.img +sudo fastboot flash system system.img +sudo fastboot flash nvme nvme.img + +Then on a 4G compatible device: + +bc. sudo fastboot flash userdata userdata.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash userdata userdata-8gb.img + + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don't have any sd card in place (since it first tries to boot from sd card, boot order can be changed with @sudo fastboot oem bootdevice [emmc|sd]@), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Build.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Build.textile new file mode 100644 index 0000000..9d5809c --- /dev/null +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Build.textile @@ -0,0 +1,53 @@ +h3. Boot Loader + +Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. + +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-hikey +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-hikey +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source \ No newline at end of file diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Install.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Install.textile new file mode 100644 index 0000000..9ce2d83 --- /dev/null +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Install.textile @@ -0,0 +1,97 @@ +h2. Install Instructions - CE Debian RPB 15.12 - HiKey + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE Debian RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-hikey-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay +** Kernel and initrd loaded from the rootfs (under /boot) + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.6* +* Extra firmware files available from firmware-linux +* Mali (not yet included by default) + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-4g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-8g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/hisi-idt.py + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-boot-linux-20151214-35.uefi.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip hikey-* + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-linux@ file will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Make sure to reboot the board after updating the partition table (@ptable-linux@), otherwise flashing the rootfs might fail. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +To avoid bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot hikey-boot-linux-20151214-35.uefi.img +sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don’t have any sd card in place (since it first tries to boot from sd card, boot order can be changed with sudo fastboot oem bootdevice [emmc|sd]), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform From 6b9b7bdac5f33f9133d2dbe126c86de4aa0a61a2 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 12:57:09 -0800 Subject: [PATCH 023/268] Wiki migration Signed-off-by: Robert Wolff --- .../Extras/PreviousReleases/RPB_15.10/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md b/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md index 40e151d..eebef76 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md @@ -6,6 +6,17 @@ [Known Issues](Known-Issues.md)
+#### Reference Platform Builds - 15.10 Alpha Release + +The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). + +While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at "https://builds.96boards.org/releases/dragonboard410c/":https://builds.96boards.org/releases/dragonboard410c/ and "https://builds.96boards.org/releases/hikey/":https://builds.96boards.org/releases/hikey/. + +*** + #### Reference Software - Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +*** + From e1d1a73aed28dfb4fffaca7bef24f68e1148994a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 12:57:50 -0800 Subject: [PATCH 024/268] format fix Signed-off-by: Robert Wolff --- Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md b/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md index eebef76..4d95268 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md @@ -10,7 +10,7 @@ The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). -While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at "https://builds.96boards.org/releases/dragonboard410c/":https://builds.96boards.org/releases/dragonboard410c/ and "https://builds.96boards.org/releases/hikey/":https://builds.96boards.org/releases/hikey/. +While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at https://builds.96boards.org/releases/dragonboard410c and https://builds.96boards.org/releases/hikey/. *** From e4f904f056c58c72a0ac8776ac1b7d83252b68f6 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 12:58:33 -0800 Subject: [PATCH 025/268] remove content Signed-off-by: Robert Wolff --- .../Extras/PreviousReleases/RPB_15.10/README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md b/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md index 4d95268..5a60267 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md @@ -6,14 +6,6 @@ [Known Issues](Known-Issues.md)
-#### Reference Platform Builds - 15.10 Alpha Release - -The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). - -While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at https://builds.96boards.org/releases/dragonboard410c and https://builds.96boards.org/releases/hikey/. - -*** - #### Reference Software - Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) From 0667a7525e0fa538564b51a571f2846de1a7e312 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:09:14 -0800 Subject: [PATCH 026/268] Rename CE-AOSP-RPB-HiKey-15.12-Build.textile to BFSAOSPRPB-15.12.md Signed-off-by: Robert Wolff --- ...E-AOSP-RPB-HiKey-15.12-Build.textile => BFSAOSPRPB-15.12.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/{CE-AOSP-RPB-HiKey-15.12-Build.textile => BFSAOSPRPB-15.12.md} (98%) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Build.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md similarity index 98% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Build.textile rename to Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md index 6f4f6e0..0b74369 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Build.textile +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md @@ -34,4 +34,4 @@ repo sync -j8 source build/envsetup.sh lunch hikey-userdebug make droidcore -j8 -cd out/target/product/hikey \ No newline at end of file +cd out/target/product/hikey From f3322b7f8678a9a530f684334771a171d6d635ff Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:11:24 -0800 Subject: [PATCH 027/268] Rename CE-AOSP-RPB-HiKey-15.12-Install.textile to InstallAOSPRPB-15.12.md Signed-off-by: Robert Wolff --- ...SP-RPB-HiKey-15.12-Install.textile => InstallAOSPRPB-15.12.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/{CE-AOSP-RPB-HiKey-15.12-Install.textile => InstallAOSPRPB-15.12.md} (100%) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Install.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-AOSP-RPB-HiKey-15.12-Install.textile rename to Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md From f03a4c7067752640481774dd48121289ab6d1aaa Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:11:55 -0800 Subject: [PATCH 028/268] Rename CE-Debian-RPB-HiKey-15.12-Build.textile to BFSDebianRPB-15.12.md Signed-off-by: Robert Wolff --- ...bian-RPB-HiKey-15.12-Build.textile => BFSDebianRPB-15.12.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/{CE-Debian-RPB-HiKey-15.12-Build.textile => BFSDebianRPB-15.12.md} (98%) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Build.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md similarity index 98% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Build.textile rename to Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md index 9d5809c..f3a7c58 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Build.textile +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md @@ -50,4 +50,4 @@ dpkg-buildpackage -b -us -uc h4. TODO -* Explain how to build the rootfs from source \ No newline at end of file +* Explain how to build the rootfs from source From b20c38da24e80cb1c3dd93bf4378d39554a46732 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:12:28 -0800 Subject: [PATCH 029/268] Rename CE-Debian-RPB-HiKey-15.12-Install.textile to InstallDebianRPB-15.12.md Signed-off-by: Robert Wolff --- ...-RPB-HiKey-15.12-Install.textile => InstallDebianRPB-15.12.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/{CE-Debian-RPB-HiKey-15.12-Install.textile => InstallDebianRPB-15.12.md} (100%) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Install.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/CE-Debian-RPB-HiKey-15.12-Install.textile rename to Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md From 41113eb964b0eebd95602ce31708bfe005716953 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:12:50 -0800 Subject: [PATCH 030/268] Update README.md Signed-off-by: Robert Wolff --- .../RPB_15.12/ConsumerEdition/HiKey/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md index 8b13789..eff7304 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md @@ -1 +1,18 @@ +# HiKey Reference Platform Build - 15.12 +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +#### HiKey + +| **CE Debian RPB - 15.12** | **CE AOSP RPB - 15.12** | +|:------------------------------------------------------:|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | [Install Instructions](InstallAOSPRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | [Build from Source](BFSAOSPRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | + +*** From 53132f452ea9380b1365ff5495bb7553921fb7e8 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:15:12 -0800 Subject: [PATCH 031/268] Update README.md Signed-off-by: Robert Wolff --- .../ConsumerEdition/DragonBoard-410c/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md index 8b13789..4245bd0 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md @@ -1 +1,14 @@ +## Dragonboard™ 410c - Reference Platform Build - 15.12 +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 15.12** | +|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | From 1088806b69eb6d2e961d025a979bf2d22ff9036b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:16:01 -0800 Subject: [PATCH 032/268] Rename CE-Debian-RPB-Dragonboard410c-15.12-Build.textile to BFSDebianRPB-15.12.md Signed-off-by: Robert Wolff --- ...ragonboard410c-15.12-Build.textile => BFSDebianRPB-15.12.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/{CE-Debian-RPB-Dragonboard410c-15.12-Build.textile => BFSDebianRPB-15.12.md} (99%) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Build.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md similarity index 99% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Build.textile rename to Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md index f129219..a5c3977 100644 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Build.textile +++ b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md @@ -101,4 +101,4 @@ dpkg-buildpackage -b -us -uc h4. TODO -* Explain how to build the rootfs from source \ No newline at end of file +* Explain how to build the rootfs from source From 4855d629977e8baac2987d78cc91ef3e6818efd1 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:16:55 -0800 Subject: [PATCH 033/268] Delete CE-Debian-RPB-Dragonboard410c.textile Signed-off-by: Robert Wolff --- .../CE-Debian-RPB-Dragonboard410c.textile | 28 ------------------- 1 file changed, 28 deletions(-) delete mode 100644 Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile deleted file mode 100644 index f83f929..0000000 --- a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c.textile +++ /dev/null @@ -1,28 +0,0 @@ -h2. Install Instructions - -Look for the desirable release at "https://builds.96boards.org/snapshots/reference-platform/debian/":https://builds.96boards.org/snapshots/reference-platform/debian/ - -h3. Downloading - -With the version in hands, simply download the images with wget: - -bc. wget https://builds.96boards.org/snapshots/reference-platform/debian/30/dragonboard410c/dragonboard410c-boot-linux-20151106-30.img.gz -wget https://builds.96boards.org/snapshots/reference-platform/debian/30/dragonboard410c/dragonboard410c-rootfs-debian-jessie-alip-20151106-30.emmc.img.gz -gunzip dragonboard410c-* - -h3. Flashing - -Unplug the power cable, press volume down and plug the power cable again (to boot in fastboot mode). Once in fastboot, flash with the following commands: - -bc. sudo fastboot flash boot dragonboard410c-boot-linux-*.img -sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img - -Now just reboot the board and enjoy the release :-) - -For known issues and more information, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferenceSoftware - -h3. TODO - -* Recovery process -* Extend instructions to explain the files used - From df47c9f88d8151a9f4f653912c2a8ec72b88ff39 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 15 Nov 2016 13:17:18 -0800 Subject: [PATCH 034/268] Rename CE-Debian-RPB-Dragonboard410c-15.12-Install.textile to InstallDebianRPB-15.12.md Signed-off-by: Robert Wolff --- ...nboard410c-15.12-Install.textile => InstallDebianRPB-15.12.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/{CE-Debian-RPB-Dragonboard410c-15.12-Install.textile => InstallDebianRPB-15.12.md} (100%) diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Install.textile b/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/CE-Debian-RPB-Dragonboard410c-15.12-Install.textile rename to Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md From b71b8d68cb694d8bd9a1f975fd4c84626827f99a Mon Sep 17 00:00:00 2001 From: Ricardo Salveti Date: Mon, 21 Nov 2016 14:15:23 -0200 Subject: [PATCH 035/268] rp/ee/centos: update references to the centos version used Signed-off-by: Ricardo Salveti --- Reference-Platform/EECommon/Install-CentOS-7.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Reference-Platform/EECommon/Install-CentOS-7.md b/Reference-Platform/EECommon/Install-CentOS-7.md index a2177dd..dbd12bd 100644 --- a/Reference-Platform/EECommon/Install-CentOS-7.md +++ b/Reference-Platform/EECommon/Install-CentOS-7.md @@ -1,4 +1,4 @@ -## Installing CentOS 7.2 15.11 - Reference Platform Enterprise +## Installing CentOS 7 - Reference Platform Enterprise This guide is not to be a replacement of the official CentOS Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64](https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64) @@ -15,7 +15,7 @@ wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/BOOTAA64.EFI wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/grubaa64.efi ``` -#### Downloading the CentOS installer from the Reference Platform 16.06 release (4.4.11 RP Kernel): +#### Downloading the CentOS 7 Reference Platform installer (e.g. 16.06 release): ```shell mkdir /srv/tftp/centos7 @@ -27,7 +27,7 @@ wget https://builds.96boards.org/releases/reference-platform/components/centos-i Creating the Grub 2 config file (`grub.cfg`): ```shell -menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.06' --class red --class gnu-linux --class gnu --class os { +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform' --class red --class gnu-linux --class gnu --class os { linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/ inst.repo=http://mirror.centos.org/altarch/7/os/aarch64/ inst.ks=file:/ks.cfg initrd (tftp)/centos7/initrd.img } @@ -90,7 +90,7 @@ Press or to enter setup. At this stage you should be able to see the Grub 2 menu, like: ```shell -Install CentOS 7 ARM 64-bit - Reference Platform - 16.06 +Install CentOS 7 ARM 64-bit - Reference Platform . Use the and keys to change the selection. Press 'e' to edit the selected item, or 'c' for a command prompt. @@ -203,7 +203,7 @@ echo linaro | passwd linaro --stdin Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: ```shell -menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.06' --class red --class gnu-linux --class gnu --class os { +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform' --class red --class gnu-linux --class gnu --class os { linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg initrd (tftp)/centos7/initrd.img } From c89316fe7715e6f8a587af8f7bf18e7e2eff477e Mon Sep 17 00:00:00 2001 From: Shovan Date: Thu, 24 Nov 2016 14:39:09 +0000 Subject: [PATCH 036/268] Added edit in Github --- Linaro/Downloads/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Linaro/Downloads/README.md b/Linaro/Downloads/README.md index 1ae9b9f..b785924 100644 --- a/Linaro/Downloads/README.md +++ b/Linaro/Downloads/README.md @@ -68,3 +68,6 @@ Linaro offers monthly updates to QEMU, GDB, toolchain components and various ver *** More interested in bare-metal and long-term maintained [releases](https://launchpad.net/gcc-arm-embedded) for ARM embedded processors? We’re working with ARM to also supply a Cortex-R and Cortex-M bare-metal build. Major releases will be made once a year with quarterly update releases. Releases will be maintained for two years. Get these from Launchpad: https://launchpad.net/gcc-arm-embedded + +*** +[Edit this page on GitHub](https://github.com/Linaro/documentation/blob/master/Linaro/Downloads/README.md) From 7adbd825821964376a8ec019482a5e566cd5d344 Mon Sep 17 00:00:00 2001 From: Shovan Date: Thu, 24 Nov 2016 14:40:54 +0000 Subject: [PATCH 037/268] File Moved https://github.com/Linaro/website/blob/master/Linaro.org/downloads/README.md --- Linaro/Downloads/README.md | 74 ++------------------------------------ 1 file changed, 2 insertions(+), 72 deletions(-) diff --git a/Linaro/Downloads/README.md b/Linaro/Downloads/README.md index b785924..5e25dee 100644 --- a/Linaro/Downloads/README.md +++ b/Linaro/Downloads/README.md @@ -1,73 +1,3 @@ -## Downloads +[This File has been moved here](https://github.com/Linaro/website/blob/master/Linaro.org/downloads/README.md) -This page contains direct links to the latest versions of the most popular downloads from Linaro. These include a selection of builds including Android, the LAVA test framework and key toolchains. - -## Linaro Member Builds - -LMBs are full system builds of popular open-source products set up at the request of a Linaro Core/Club [Member](https://www.linaro.org/members/) company. - -| | | | -|:---|:---|:---| -|ARM| Juno, Fixed Virtual Platforms (FVP), Versatile Express | [Platform release notes](http://community.arm.com/groups/arm-development-platforms)| -|Qualcomm| Download for Snapdragon 600 processor | [Snapdragon 600 Linux Platform](https://releases.linaro.org/debian/boards/snapdragon/latest/)| - -*** - -## Linaro Stable Kernel (LSK) - -The LSK is a version of kernel.org’s Long-Term Stable (LTS) release with new Linaro developed optimizations and ARM support integrated. There are two versions: a “Core” version for generic Linux and an “Android” version. Click right for the latest downloads. - -- [linux-linaro-stable (LSK), Source, Git](https://wiki.linaro.org/LSK) - -*** - -## Linaro Confectionary Release (LCR) - -R-LCR is a build of the Android Open Source Project (AOSP) from a stable “L” branch that includes platform support and other features. R-LCR includes the Android flavour of Linaro Stable Kernel (LSK) for all machine configurations. - -*** - -## LAVA - -The Linaro Automated Validation Architecture (LAVA) is a test and continuous integration framework that Linaro uses to validate its releases. The source is open so that members and others can create their own instantiations and run proprietary tests within this standard framework. [Click here for the latest downloads](https://releases.linaro.org/components/lava/latest/). - -*** - -## Linaro Networking - -Based on the Linaro Stable Kernel (LSK) and upstream, these kernels add features currently being developed by LNG and not upstreamed yet. - -Release notes https://git.linaro.org/lng/releases-instructions.git - -Repo https://git.linaro.org/kernel/linux-linaro-lng.git - -- Latest LSK kernel for which a preempt-rt patch set has been released, plus patches that have not yet been accepted upstream and are relevant to LNG ([linux-linaro-lng-4.1](http://releases.linaro.org/components/kernel/linux-linaro-lng/16.03/linux-linaro-lng-4.1.14-2016.03.tar.bz2)) -- Same as linux-linaro-lng-v4.1 but with the preempt-rt patches applied. ([linux-linaro-lng-preempt-rt-4.1](http://releases.linaro.org/components/kernel/linux-linaro-lng/16.03/linux-linaro-lng-preempt-rt-4.1.14-2016.03.tar.bz2)) - -*** - -#### OpenDataPlane - -The [OpenDataPlane](http://www.opendataplane.org/) API has three implementations supported directly by LNG - -- Functional reference model that runs on any linux implementation ([odp-linux-generic](https://git.linaro.org/lng/odp.git)) -- Reusing odp-linux-generic and adding packet_io acceleration via Netmap ([odp-netmap](https://git.linaro.org/lng/odp-netmap.git)) -- Performance implementation build for x86 using the DPDK SDK. ([odp-dpdk](https://git.linaro.org/lng/odp-dpdk.git)) - -*** - -## Linaro Toolchain - -Linaro offers monthly updates to QEMU, GDB, toolchain components and various versions of GCC. You can access source and pre-built binaries. Click below for the latest downloads. - -- linaro-toolchain-binaries (little-endian) - ([Linux](https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabihf/) / [Windows Archive](https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabihf/) / [Bare Metal](https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-eabi/) / [Source](https://releases.linaro.org/components/toolchain/gcc-linaro/latest-5/) / [Sysroot](https://releases.linaro.org/components/toolchain/binaries/latest-5/arm-linux-gnueabihf/)) -- linaro-toolchain-binaries (big-endian) - ([Linux](https://releases.linaro.org/components/toolchain/binaries/latest-5/armeb-linux-gnueabihf/) / [Bare Metal](https://releases.linaro.org/components/toolchain/binaries/latest-5/armeb-eabi/) / [Source](https://releases.linaro.org/components/toolchain/gcc-linaro/latest-5/) / [Sysroot](https://releases.linaro.org/components/toolchain/binaries/latest-5/armeb-linux-gnueabihf/)) -- linaro-toolchain-binaries (Aarch64 little-endian) - ([Linux](https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/) / [Windows Archive](https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/) / [Bare Metal](https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-elf/) / [Source](https://releases.linaro.org/components/toolchain/gcc-linaro/latest-5/) / [Sysroot](https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/)) -- linaro-toolchain-binaries (Aarch64 big-endian) - ([Linux](https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64_be-linux-gnu/) / [Bare Metal](https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64_be-elf/) / [Source](https://releases.linaro.org/components/toolchain/gcc-linaro/latest-5/) / [Sysroot](https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64_be-linux-gnu/)) - -*** - -More interested in bare-metal and long-term maintained [releases](https://launchpad.net/gcc-arm-embedded) for ARM embedded processors? We’re working with ARM to also supply a Cortex-R and Cortex-M bare-metal build. Major releases will be made once a year with quarterly update releases. Releases will be maintained for two years. Get these from Launchpad: https://launchpad.net/gcc-arm-embedded - -*** -[Edit this page on GitHub](https://github.com/Linaro/documentation/blob/master/Linaro/Downloads/README.md) +https://github.com/Linaro/website/blob/master/Linaro.org/downloads/README.md From 140f4188ecaaa15eb921107e259cd2d566f05bd8 Mon Sep 17 00:00:00 2001 From: Ricardo Salveti de Araujo Date: Mon, 28 Nov 2016 17:24:59 -0200 Subject: [PATCH 038/268] Fixing link for HiKey board recovery instructions. --- .../RPOfficial/ConsumerEdition/HiKey/InstallDebianRPB.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallDebianRPB.md index 331a703..d14bb67 100644 --- a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallDebianRPB.md +++ b/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -227,7 +227,7 @@ $ sudo fastboot devices 0123456789abcdef fastboot ``` ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Installation/BoardRecovery.md) and return to this step once your board is ready 3 - **Install Operating System update using downloaded files** From 9ab43738d4a4386ebb211f0e64fdf7595be24dfe Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 12:42:52 -0800 Subject: [PATCH 039/268] Removed Linaro Home link - moved to website repo Signed-off-by: Robert Wolff --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 505fe63..5d4447a 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@ Welcome to the official documentation for Linaro and the Reference Software Plat - [Reference Platform Home](Reference-Platform/README.md) - Get started here with the Reference Software Platform -- [Linaro Home](Linaro/README.md) - - See whats new with Linaro - [Definitions](Definitions/README.md) - Linaro and 96Boards terminology - [Contribute to the Reference Platform](Reference-Platform/Contribute/README.md) From 6fc3cb9c8d760eb9fd2caea7d8135969dd7ce78d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 16:00:45 -0800 Subject: [PATCH 040/268] Massive move of docs to consolidate RP pages Removed separation of 96Boards from Test HW platforms and actual hardware platforms. Signed-off-by: Robert Wolff --- .../EnterpriseEdition => }/.DS_Store | Bin .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.06.md | 0 .../DragonBoard-410c/BFSOERPB-16.03.md | 0 .../DragonBoard-410c/BFSOERPB.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.06.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 0 .../ConsumerEdition/HiKey/BFSDebianRPB.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 0 .../ConsumerEdition/HiKey/InstallDebianRPB.md | 0 .../ConsumerEdition/HiKey/InstallOERPB.md | 0 .../ConsumerEdition/HiKey/README.md | 0 .../ConsumerEdition/README.md | 0 .../EnterpriseEdition/.DS_Store | Bin 0 -> 6148 bytes .../EnterpriseEdition/Cello/README.md | 0 .../EnterpriseEdition/D02/README.md | 0 .../EnterpriseEdition/D03/README.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../EnterpriseEdition/Q2432LZB/README.md | 0 .../EnterpriseEdition/README.md | 0 .../EnterpriseEdition/ThunderX/README.md | 0 .../X-Gene-Mustang/README.md | 0 Reference-Platform/README.md | 20 ++++-- Reference-Platform/RPOfficial/README.md | 38 ------------ .../RPTest/ConsumerEdition/README.md | 1 - .../RPTest/EnterpriseEdition/Cello/README.md | 58 ------------------ .../RPTest/EnterpriseEdition/README.md | 1 - Reference-Platform/RPTest/README.md | 46 -------------- 33 files changed, 15 insertions(+), 149 deletions(-) rename Reference-Platform/{RPOfficial/EnterpriseEdition => }/.DS_Store (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/BFSOERPB.md (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/{RPTest => }/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/HiKey/BFSAOSPRPB.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/HiKey/BFSDebianRPB.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/HiKey/InstallAOSPRPB.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/HiKey/InstallDebianRPB.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/HiKey/InstallOERPB.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{RPOfficial => }/ConsumerEdition/README.md (100%) create mode 100644 Reference-Platform/EnterpriseEdition/.DS_Store rename Reference-Platform/{RPOfficial => }/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/{RPTest => }/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/{RPTest => }/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/{RPTest => }/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/{RPTest => }/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/{RPTest => }/EnterpriseEdition/Q2432LZB/README.md (100%) rename Reference-Platform/{RPOfficial => }/EnterpriseEdition/README.md (100%) rename Reference-Platform/{RPTest => }/EnterpriseEdition/ThunderX/README.md (100%) rename Reference-Platform/{RPTest => }/EnterpriseEdition/X-Gene-Mustang/README.md (100%) delete mode 100644 Reference-Platform/RPOfficial/README.md delete mode 100644 Reference-Platform/RPTest/ConsumerEdition/README.md delete mode 100644 Reference-Platform/RPTest/EnterpriseEdition/Cello/README.md delete mode 100644 Reference-Platform/RPTest/EnterpriseEdition/README.md delete mode 100644 Reference-Platform/RPTest/README.md diff --git a/Reference-Platform/RPOfficial/EnterpriseEdition/.DS_Store b/Reference-Platform/.DS_Store similarity index 100% rename from Reference-Platform/RPOfficial/EnterpriseEdition/.DS_Store rename to Reference-Platform/.DS_Store diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSOERPB.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSOERPB.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/BFSOERPB.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSOERPB.md diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md diff --git a/Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/RPTest/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSAOSPRPB.md b/Reference-Platform/ConsumerEdition/HiKey/BFSAOSPRPB.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSAOSPRPB.md rename to Reference-Platform/ConsumerEdition/HiKey/BFSAOSPRPB.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/ConsumerEdition/HiKey/BFSDebianRPB.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BFSDebianRPB.md rename to Reference-Platform/ConsumerEdition/HiKey/BFSDebianRPB.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/ConsumerEdition/HiKey/BuildSourceBL.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/HiKey/BuildSourceBL.md rename to Reference-Platform/ConsumerEdition/HiKey/BuildSourceBL.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/ConsumerEdition/HiKey/InstallAOSPRPB.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallAOSPRPB.md rename to Reference-Platform/ConsumerEdition/HiKey/InstallAOSPRPB.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/ConsumerEdition/HiKey/InstallDebianRPB.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallDebianRPB.md rename to Reference-Platform/ConsumerEdition/HiKey/InstallDebianRPB.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallOERPB.md b/Reference-Platform/ConsumerEdition/HiKey/InstallOERPB.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/HiKey/InstallOERPB.md rename to Reference-Platform/ConsumerEdition/HiKey/InstallOERPB.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/HiKey/README.md b/Reference-Platform/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/HiKey/README.md rename to Reference-Platform/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/RPOfficial/ConsumerEdition/README.md b/Reference-Platform/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/RPOfficial/ConsumerEdition/README.md rename to Reference-Platform/ConsumerEdition/README.md diff --git a/Reference-Platform/EnterpriseEdition/.DS_Store b/Reference-Platform/EnterpriseEdition/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - - [Release Highlights](../Extras/Highlights.md) | - [Known Issues](../Extras/Known-Issues.md)
- Release Status ([CE](../Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](../Extras/ReleaseStatus/RPB-EE-Release.md)) -
-*** - -## QuickStart - -Choose Consumer Edition or Enterprise Edition to start setting up your instruction set. Download, build, and install your preferred Reference Platform operating system and/or components. Pre-built images and "build from source" options are available. - -#### Consumer Edition -- [HiKey](ConsumerEdition/HiKey/README.md) - -#### Enterprise Edition -- [LeMaker Cello](EnterpriseEdition/Cello/README.md) - -*** - -#### Resources - -- [Previous RPB Releases](../Extras/PreviousReleases/README.md) -- [RPB CI](../Extras/RPB-CI.md) -- [Report a bug](../Extras/Report-a-bug.md) -- [Feedback and Support](../Extras/Feedback-and-Support.md) -- [Kernel Policy](../Extras/KernelPolicy.md) -- [Kernel Roadmap](../Extras/Kernel-Roadmap.md) - -*** - -

- - [Contribute to RPB](../Extras/Contribute/README.md) | - [Doc Contribution Policy](../../ContributionPolicy.md) -
diff --git a/Reference-Platform/RPTest/ConsumerEdition/README.md b/Reference-Platform/RPTest/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/RPTest/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/RPTest/EnterpriseEdition/Cello/README.md b/Reference-Platform/RPTest/EnterpriseEdition/Cello/README.md deleted file mode 100644 index ff4bdb4..0000000 --- a/Reference-Platform/RPTest/EnterpriseEdition/Cello/README.md +++ /dev/null @@ -1,58 +0,0 @@ -### LeMaker Cello - -*** - -### Critical Bug List - -As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once the Realtek UEFI driver gets integrated as part of OpenPlatformPkg, it will also be possible to PXE boot the installer. - -Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Quick Start - -Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). - -### Distro Installers - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO -* [CentOS 7](../Install-CentOS-7.md) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/RPTest/EnterpriseEdition/README.md b/Reference-Platform/RPTest/EnterpriseEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/RPTest/EnterpriseEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/RPTest/README.md b/Reference-Platform/RPTest/README.md deleted file mode 100644 index 9640700..0000000 --- a/Reference-Platform/RPTest/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Other Test Platforms - -

- - [Release Highlights](../Extras/Highlights.md) | - [Known Issues](../Extras/Known-Issues.md)
- Release Status ([CE](../Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](../Extras/ReleaseStatus/RPB-EE-Release.md)) -
- -*** - -## QuickStart - -Choose Consumer Edition or Enterprise Edition to start setting up your instruction set. Download, build, and install your preferred Reference Platform operating system and/or components. Pre-built images and "build from source" options are available. - -#### Consumer Edition -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition -- [D02](EnterpriseEdition/D02/README.md) -- [D03](EnterpriseEdition/D03/README.md) -- [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) -- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) -- [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) -- [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) -- [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) - - -*** - -#### Resources - -- [Previous RPB Releases](../Extras/PreviousReleases/README.md) -- [RPB CI](../Extras/RPB-CI.md) -- [Report a bug](../Extras/Report-a-bug.md) -- [Feedback and Support](../Extras/Feedback-and-Support.md) -- [Kernel Policy](../Extras/KernelPolicy.md) -- [Kernel Roadmap](../Extras/Kernel-Roadmap.md) - -*** - -

- - [Contribute to RPB](../Extras/Contribute/README.md) | - [Doc Contribution Policy](../../ContributionPolicy.md) -
From 454f72c387df0a9a851c0d5a1344fed8cf98102f Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 16:34:46 -0800 Subject: [PATCH 041/268] Fixed OE relative link Signed-off-by: Robert Wolff --- Reference-Platform/ConsumerEdition/HiKey/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/ConsumerEdition/HiKey/README.md b/Reference-Platform/ConsumerEdition/HiKey/README.md index 8e370a8..7f936e4 100644 --- a/Reference-Platform/ConsumerEdition/HiKey/README.md +++ b/Reference-Platform/ConsumerEdition/HiKey/README.md @@ -28,4 +28,4 @@ *** - Access **bootloader** build from source instructions [here](BuildSourceBL.md) -- Access **OpenEmbedded** build from source instructions [here](../../../CECommon/OE.md) +- Access **OpenEmbedded** build from source instructions [here](../../CECommon/OE.md) From bd2c015555387a7e88f594f5fa025da3a35c62f3 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 16:34:57 -0800 Subject: [PATCH 042/268] Delete .DS_Store --- Reference-Platform/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/.DS_Store diff --git a/Reference-Platform/.DS_Store b/Reference-Platform/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Tue, 29 Nov 2016 16:49:35 -0800 Subject: [PATCH 043/268] Redo workflow for legacy rpb landing page Signed-off-by: Robert Wolff --- .../{EnterpriseEdition => }/.DS_Store | Bin .../EnterpriseEdition => }/.DS_Store | Bin Reference-Platform/README.md | 37 ++----- Reference-Platform/Releases/.DS_Store | Bin 0 -> 6148 bytes .../PreviousReleases => Releases}/README.md | 0 .../DragonBoard-410c/BFSDebianRPB-15.10.md | 0 .../InstallDebianRPB-15.10.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 0 .../HiKey/BFSDebianRPB-15.10.md | 0 .../HiKey/InstallAOSP-15.10.md | 0 .../HiKey/InstallDebianRPB-15.10.md | 0 .../RPB_15.10/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.10}/ConsumerEdition/README.md | 0 .../RPB_15.10/Highlights.md | 0 .../RPB_15.10/Known-Issues.md | 0 .../RPB_15.10/README.md | 0 .../DragonBoard-410c/BFSDebianRPB-15.12.md | 0 .../InstallDebianRPB-15.12.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 0 .../HiKey/BFSDebianRPB-15.12.md | 0 .../HiKey/InstallAOSPRPB-15.12.md | 0 .../HiKey/InstallDebianRPB-15.12.md | 0 .../RPB_15.12/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.12/ConsumerEdition}/README.md | 0 .../RPB_15.12/EnterpriseEdition}/README.md | 0 .../RPB_15.12/Highlights.md | 0 .../RPB_15.12/Known-Issues.md | 0 .../RPB_15.12/README.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 0 .../HiKey/BFSDebianRPB-16.03.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../HiKey/InstallAOSPRPB-16.03.md | 0 .../HiKey/InstallDebianRPB-16.03.md | 0 .../RPB_16.03/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.03}/ConsumerEdition/README.md | 0 .../RPB_16.03/EnterpriseEdition/.DS_Store | Bin 0 -> 6148 bytes .../EnterpriseEdition/Cello/README.md | 0 .../RPB_16.03/EnterpriseEdition/D02/README.md | 0 .../RPB_16.03/EnterpriseEdition/D03/README.md | 0 .../DHCP-TFTP-Server-UEFI.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Install-CentOS-7.md | 0 .../Install-Debian-Jessie.md | 0 .../EnterpriseEdition/Install-Fedora-23.md | 0 .../ODPi-BigTop-Hadoop-Config-Run.md | 0 .../ODPi-Hadoop-Installation.md | 0 .../EnterpriseEdition/OpenStack-Liberty.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../RPB_16.03}/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 0 .../X-Gene-Mustang/README.md | 0 .../RPB_16.03/Highlights.md | 0 .../RPB_16.03/Known-Issues.md | 0 .../RPB_16.03/README.md | 0 .../RPB_16.03/ReleaseStatus-16.03.md | 0 .../Releases/RPB_16.06/.DS_Store | Bin 0 -> 6148 bytes .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.06.md | 0 .../DragonBoard-410c/BFSOERPB-16.03.md | 0 .../DragonBoard-410c/BFSOERPB.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.06.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 0 .../ConsumerEdition/HiKey/BFSDebianRPB.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 0 .../ConsumerEdition/HiKey/InstallDebianRPB.md | 0 .../ConsumerEdition/HiKey/InstallOERPB.md | 0 .../ConsumerEdition/HiKey/README.md | 0 .../RPB_16.06}/ConsumerEdition/README.md | 0 .../RPB_16.06/EnterpriseEdition/.DS_Store | Bin 0 -> 6148 bytes .../EnterpriseEdition/Cello/README.md | 0 .../EnterpriseEdition/D02/README.md | 0 .../EnterpriseEdition/D03/README.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../EnterpriseEdition/Q2432LZB/README.md | 0 .../RPB_16.06}/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/ThunderX/README.md | 0 .../X-Gene-Mustang/README.md | 0 .../Releases/RPB_16.06/Highlights.md | 96 ++++++++++++++++++ .../Releases/RPB_16.06/Known-Issues.md | 47 +++++++++ .../Releases/RPB_16.06/README.md | 25 +++++ 93 files changed, 177 insertions(+), 28 deletions(-) rename Reference-Platform/{EnterpriseEdition => }/.DS_Store (100%) rename Reference-Platform/Extras/{PreviousReleases/RPB_16.03/EnterpriseEdition => }/.DS_Store (100%) create mode 100644 Reference-Platform/Releases/.DS_Store rename Reference-Platform/{Extras/PreviousReleases => Releases}/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{ => Releases/RPB_15.10}/ConsumerEdition/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/Highlights.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/Known-Issues.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.10/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{EnterpriseEdition => Releases/RPB_15.12/ConsumerEdition}/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases/RPB_15.10/ConsumerEdition => Releases/RPB_15.12/EnterpriseEdition}/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/Highlights.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/Known-Issues.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_15.12/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.03}/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/{ => Releases/RPB_16.03}/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/{ => Releases/RPB_16.03}/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases/RPB_15.12 => Releases/RPB_16.03}/ConsumerEdition/README.md (100%) create mode 100644 Reference-Platform/Releases/RPB_16.03/EnterpriseEdition/.DS_Store rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases/RPB_15.12 => Releases/RPB_16.03}/EnterpriseEdition/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/Highlights.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/Known-Issues.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases => Releases}/RPB_16.03/ReleaseStatus-16.03.md (100%) create mode 100644 Reference-Platform/Releases/RPB_16.06/.DS_Store rename Reference-Platform/{Extras/PreviousReleases/RPB_16.03 => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/BFSOERPB.md (100%) rename Reference-Platform/{Extras/PreviousReleases/RPB_16.03 => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md (100%) rename Reference-Platform/{Extras/PreviousReleases/RPB_16.03 => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/HiKey/BFSAOSPRPB.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/HiKey/BFSDebianRPB.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/HiKey/InstallAOSPRPB.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/HiKey/InstallDebianRPB.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/HiKey/InstallOERPB.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases/RPB_16.03 => Releases/RPB_16.06}/ConsumerEdition/README.md (100%) create mode 100644 Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/.DS_Store rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/Q2432LZB/README.md (100%) rename Reference-Platform/{Extras/PreviousReleases/RPB_16.03 => Releases/RPB_16.06}/EnterpriseEdition/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/ThunderX/README.md (100%) rename Reference-Platform/{ => Releases/RPB_16.06}/EnterpriseEdition/X-Gene-Mustang/README.md (100%) create mode 100644 Reference-Platform/Releases/RPB_16.06/Highlights.md create mode 100644 Reference-Platform/Releases/RPB_16.06/Known-Issues.md create mode 100644 Reference-Platform/Releases/RPB_16.06/README.md diff --git a/Reference-Platform/EnterpriseEdition/.DS_Store b/Reference-Platform/.DS_Store similarity index 100% rename from Reference-Platform/EnterpriseEdition/.DS_Store rename to Reference-Platform/.DS_Store diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/EnterpriseEdition/.DS_Store b/Reference-Platform/Extras/.DS_Store similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/EnterpriseEdition/.DS_Store rename to Reference-Platform/Extras/.DS_Store diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 3c35f1b..5edb7e3 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -6,47 +6,28 @@ The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) -

- - [Release Highlights](Extras/Highlights.md) | - [Known Issues](Extras/Known-Issues.md)
- Release Status ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) -
+Release Status ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) *** -## Choose your Hardware +## Choose your Release -#### Consumer Edition - - [HiKey](ConsumerEdition/HiKey/README.md) - - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition - - [LeMaker Cello](EnterpriseEdition/Cello/README.md) - - [D02](EnterpriseEdition/D02/README.md) - - [D03](EnterpriseEdition/D03/README.md) - - [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) - - [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) - - [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) - - [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) - - [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) + - [15.10(Alpha)](Releases/RPB_15.10/README.md) + - [15.12](Releases/RPB_15.12/README.md) + - [16.03](Releases/RPB_16.03/README.md) + - [16.06(Latest)](Releases/RPB_16.06/README.md) *** #### Resources -- [Previous RPB Releases](Extras/PreviousReleases/README.md) - [RPB CI](Extras/RPB-CI.md) - [Report a bug](Extras/Report-a-bug.md) - [Feedback and Support](Extras/Feedback-and-Support.md) - [Kernel Policy](Extras/KernelPolicy.md) - [Kernel Roadmap](Extras/Kernel-Roadmap.md) +- [Contribute to RPB](Contribute/README.md) +- [Document Contribution Policy](../ContributionPolicy.md) -*** - -

- - [Contribute to RPB](Contribute/README.md) | - [Document Contribution Policy](../ContributionPolicy.md) -
+*** \ No newline at end of file diff --git a/Reference-Platform/Releases/.DS_Store b/Reference-Platform/Releases/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0e85941549c4f44612c4ef697f6b8b43da217bea GIT binary patch literal 6148 zcmeHKu};G<5Pb(7idZ@_`U?=C64e6(LI~YS z_B-3}Z0AX_eE_6A4h^sZuw+pbbtuGD1ww&PAQbp91$bwx zEiVnD4h2GiP~b}eJs%Q_Vs;!2%hAEAqyR*HMi-;6xrD|f$Lu&7a)c%pO0-b%6hkbW z{mFURaWu4Wh$kQ7D}N?0QdZ~usn8+WFzQes6qqY;Zq1e6|F`^Qs!9GlBwC?BDDck| zkVUuYT7Hz@ttX$ScWq*MWKmPzs1A+(>=D3*o+DRf(8iPcAYVKoKOW JP~aC7_yFD>Cp7>7 literal 0 HcmV?d00001 diff --git a/Reference-Platform/Extras/PreviousReleases/README.md b/Reference-Platform/Releases/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/README.md rename to Reference-Platform/Releases/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/ConsumerEdition/README.md b/Reference-Platform/Releases/RPB_15.10/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/ConsumerEdition/README.md rename to Reference-Platform/Releases/RPB_15.10/ConsumerEdition/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/Highlights.md b/Reference-Platform/Releases/RPB_15.10/Highlights.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/Highlights.md rename to Reference-Platform/Releases/RPB_15.10/Highlights.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/Known-Issues.md b/Reference-Platform/Releases/RPB_15.10/Known-Issues.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/Known-Issues.md rename to Reference-Platform/Releases/RPB_15.10/Known-Issues.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md b/Reference-Platform/Releases/RPB_15.10/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/README.md rename to Reference-Platform/Releases/RPB_15.10/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/EnterpriseEdition/README.md b/Reference-Platform/Releases/RPB_15.12/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/EnterpriseEdition/README.md rename to Reference-Platform/Releases/RPB_15.12/ConsumerEdition/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/README.md b/Reference-Platform/Releases/RPB_15.12/EnterpriseEdition/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.10/ConsumerEdition/README.md rename to Reference-Platform/Releases/RPB_15.12/EnterpriseEdition/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/Highlights.md b/Reference-Platform/Releases/RPB_15.12/Highlights.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/Highlights.md rename to Reference-Platform/Releases/RPB_15.12/Highlights.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/Known-Issues.md b/Reference-Platform/Releases/RPB_15.12/Known-Issues.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/Known-Issues.md rename to Reference-Platform/Releases/RPB_15.12/Known-Issues.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/README.md b/Reference-Platform/Releases/RPB_15.12/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/README.md rename to Reference-Platform/Releases/RPB_15.12/README.md diff --git a/Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md diff --git a/Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md diff --git a/Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md similarity index 100% rename from Reference-Platform/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/README.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/Extras/PreviousReleases/RPB_15.12/ConsumerEdition/README.md rename to Reference-Platform/Releases/RPB_16.03/ConsumerEdition/README.md diff --git a/Reference-Platform/Releases/RPB_16.03/EnterpriseEdition/.DS_Store b/Reference-Platform/Releases/RPB_16.03/EnterpriseEdition/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0(Full List) | +| Conssumer | HiKey / DragonBoard 410c | + +[Report a bug](Report-a-bug.md) + +## Current Issues + +These lists group all **current and unfixed bugs** into their respective categories. Basic bug summaries and descriptions are available on Bugzilla, links to each full lists of bugs are available for convenience and quick reference. + +| Enterprise | Known Issues | +|:-----------|:---| +| Cello/Overdrive | (Full List) | +| APM/HP-m400 | (Full List) | +| D02 | (Full List) | +| D03 | (Full List) | +| Qualcomm QDF2432 Server Development Platform | (Full List) | +| ThunderX | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Consumer | Known Issues | +|:-----------|:---| +| HiKey | (Full List) | +| DragonBoard 410c | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Bug Legend | | +|:-----:|:-------| +| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | +| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | +| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | +| VERIFIED | A team has VERIFIED a working solution for a bug | + +*** diff --git a/Reference-Platform/Releases/RPB_16.06/README.md b/Reference-Platform/Releases/RPB_16.06/README.md new file mode 100644 index 0000000..ff019d5 --- /dev/null +++ b/Reference-Platform/Releases/RPB_16.06/README.md @@ -0,0 +1,25 @@ +# Reference Software Platform - 16.06 + +- [Release Highlights](Highlights.md) +- [Known Issues](Known-Issues.md) + +*** + +## Choose your Hardware + +#### Consumer Edition + - [HiKey](ConsumerEdition/HiKey/README.md) + - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition + - [LeMaker Cello](EnterpriseEdition/Cello/README.md) + - [D02](EnterpriseEdition/D02/README.md) + - [D03](EnterpriseEdition/D03/README.md) + - [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) + - [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) + - [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) + - [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) + - [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) + + +*** \ No newline at end of file From fa44f93471a3ba51149d369c1437f4e0f187a974 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 17:08:17 -0800 Subject: [PATCH 044/268] Format fix Signed-off-by: Robert Wolff --- .../Releases/RPB_16.06/README.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/README.md b/Reference-Platform/Releases/RPB_16.06/README.md index ff019d5..b4ce093 100644 --- a/Reference-Platform/Releases/RPB_16.06/README.md +++ b/Reference-Platform/Releases/RPB_16.06/README.md @@ -1,25 +1,25 @@ # Reference Software Platform - 16.06 -- [Release Highlights](Highlights.md) -- [Known Issues](Known-Issues.md) +[Release Highlights](Highlights.md) | [Known Issues](Known-Issues.md) *** ## Choose your Hardware #### Consumer Edition - - [HiKey](ConsumerEdition/HiKey/README.md) - - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) #### Enterprise Edition - - [LeMaker Cello](EnterpriseEdition/Cello/README.md) - - [D02](EnterpriseEdition/D02/README.md) - - [D03](EnterpriseEdition/D03/README.md) - - [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) - - [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) - - [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) - - [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) - - [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) +- [LeMaker Cello](EnterpriseEdition/Cello/README.md) +- [D02](EnterpriseEdition/D02/README.md) +- [D03](EnterpriseEdition/D03/README.md) +- [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) +- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) +- [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) +- [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) +- [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) -*** \ No newline at end of file +*** From 6f351b500b9ce1e9b74339f07c4e25b5338ca014 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 17:10:32 -0800 Subject: [PATCH 045/268] Added option to visit download page Option to visit builds.96boards.org has been added via link. Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_16.06/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Reference-Platform/Releases/RPB_16.06/README.md b/Reference-Platform/Releases/RPB_16.06/README.md index b4ce093..535202d 100644 --- a/Reference-Platform/Releases/RPB_16.06/README.md +++ b/Reference-Platform/Releases/RPB_16.06/README.md @@ -21,5 +21,6 @@ - [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) - [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) +Visit our [Components Downloads Page](https://builds.96boards.org/releases/reference-platform/components/) *** From 4a76ff4556f97bdc98e0b437374a545721fc046c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 17:12:12 -0800 Subject: [PATCH 046/268] Delete .DS_Store --- Reference-Platform/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/.DS_Store diff --git a/Reference-Platform/.DS_Store b/Reference-Platform/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Tue, 29 Nov 2016 17:28:04 -0800 Subject: [PATCH 047/268] Small ordering change of releases Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 5edb7e3..8fb920a 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -12,11 +12,10 @@ Release Status ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/Relea ## Choose your Release - - [15.10(Alpha)](Releases/RPB_15.10/README.md) - - [15.12](Releases/RPB_15.12/README.md) - - [16.03](Releases/RPB_16.03/README.md) - [16.06(Latest)](Releases/RPB_16.06/README.md) - + - [16.03](Releases/RPB_16.03/README.md) + - [15.12](Releases/RPB_15.12/README.md) + - [15.10(Alpha)](Releases/RPB_15.10/README.md) *** @@ -30,4 +29,4 @@ Release Status ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/Relea - [Contribute to RPB](Contribute/README.md) - [Document Contribution Policy](../ContributionPolicy.md) -*** \ No newline at end of file +*** From 3a45d66fb641fcae7d8b5266cd57219b7eed857a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 17:29:29 -0800 Subject: [PATCH 048/268] Added Legacy to title of page Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 8fb920a..1388ca6 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -1,4 +1,4 @@ -# Reference Software Platform - 16.06 +# Reference Software Platform - Legacy From 253ac0b4f74816c3f3434ce28666e889d52f454c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:50:30 -0800 Subject: [PATCH 049/268] Format changes Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 1388ca6..f2f09b5 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -6,13 +6,13 @@ The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) -Release Status ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) +**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) *** ## Choose your Release - - [16.06(Latest)](Releases/RPB_16.06/README.md) + - **[16.06(Latest)](Releases/RPB_16.06/README.md)** - [16.03](Releases/RPB_16.03/README.md) - [15.12](Releases/RPB_15.12/README.md) - [15.10(Alpha)](Releases/RPB_15.10/README.md) From ede80f2097d04abf8a86ebefc8bdf514be34744d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:52:33 -0800 Subject: [PATCH 050/268] Format changes Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_16.03/README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.03/README.md b/Reference-Platform/Releases/RPB_16.03/README.md index f6ed252..86274a3 100644 --- a/Reference-Platform/Releases/RPB_16.03/README.md +++ b/Reference-Platform/Releases/RPB_16.03/README.md @@ -1,11 +1,10 @@ # Reference Platform Build - 16.03 -

- Announcements
- [RPB 16.03 Highlights](Highlights.md) | - [Known Issues](Known-Issues.md) | - [RPB 16.03 Release Status](ReleaseStatus-16.03.md) -
+- [RPB 16.03 Highlights](Highlights.md) +- [Known Issues](Known-Issues.md) +- [RPB 16.03 Release Status](ReleaseStatus-16.03.md) + +## Choose your Hardware #### Reference Software - Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) From f8c7e1ec98996bfadf6ab74c2f64642ea8642b96 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:52:50 -0800 Subject: [PATCH 051/268] Delete .DS_Store --- Reference-Platform/Releases/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Releases/.DS_Store diff --git a/Reference-Platform/Releases/.DS_Store b/Reference-Platform/Releases/.DS_Store deleted file mode 100644 index 0e85941549c4f44612c4ef697f6b8b43da217bea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKu};G<5Pb(7idZ@_`U?=C64e6(LI~YS z_B-3}Z0AX_eE_6A4h^sZuw+pbbtuGD1ww&PAQbp91$bwx zEiVnD4h2GiP~b}eJs%Q_Vs;!2%hAEAqyR*HMi-;6xrD|f$Lu&7a)c%pO0-b%6hkbW z{mFURaWu4Wh$kQ7D}N?0QdZ~usn8+WFzQes6qqY;Zq1e6|F`^Qs!9GlBwC?BDDck| zkVUuYT7Hz@ttX$ScWq*MWKmPzs1A+(>=D3*o+DRf(8iPcAYVKoKOW JP~aC7_yFD>Cp7>7 From de5ccb2728a3b14438ad333d203077cdfd9f3b4a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:53:55 -0800 Subject: [PATCH 052/268] Remove content and links - moved Signed-off-by: Robert Wolff --- Reference-Platform/Releases/README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Reference-Platform/Releases/README.md b/Reference-Platform/Releases/README.md index 662ecdc..8b13789 100644 --- a/Reference-Platform/Releases/README.md +++ b/Reference-Platform/Releases/README.md @@ -1,9 +1 @@ -# Previous Reference Platform Build Releases -Home to all previous RPB information and images. This documentation will be considered as static and is not expected to change. Contributions to these documents are still welcome. - -*** - -- [15.10 (Alpha)](RPB_15.10/README.md) -- [15.12](RPB_15.12/README.md) -- [16.03](RPB_16.03/README.md) From 2976552efa194380cd35ec75d3740544cd9fa277 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:55:06 -0800 Subject: [PATCH 053/268] format change Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_16.03/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.03/README.md b/Reference-Platform/Releases/RPB_16.03/README.md index 86274a3..a393057 100644 --- a/Reference-Platform/Releases/RPB_16.03/README.md +++ b/Reference-Platform/Releases/RPB_16.03/README.md @@ -1,8 +1,6 @@ # Reference Platform Build - 16.03 -- [RPB 16.03 Highlights](Highlights.md) -- [Known Issues](Known-Issues.md) -- [RPB 16.03 Release Status](ReleaseStatus-16.03.md) +[RPB 16.03 Highlights](Highlights.md) | [Known Issues](Known-Issues.md) | [RPB 16.03 Release Status](ReleaseStatus-16.03.md) ## Choose your Hardware From e8b965ca50fd497e43a416c31786ee9ab3ef8b94 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:56:15 -0800 Subject: [PATCH 054/268] Format fix Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_15.12/README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Reference-Platform/Releases/RPB_15.12/README.md b/Reference-Platform/Releases/RPB_15.12/README.md index cd5d4de..3d887b2 100644 --- a/Reference-Platform/Releases/RPB_15.12/README.md +++ b/Reference-Platform/Releases/RPB_15.12/README.md @@ -1,10 +1,6 @@ # Reference Platform Build - 15.12 -

- Announcements
- [RPB 15.12 Highlights](Highlights.md) | - [Known Issues](Known-Issues.md) -
+[RPB 15.12 Highlights](Highlights.md) | [RPB 15.12 Known Issues](Known-Issues.md) #### Reference Software - Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) From 7684ffe1a1f83089a49c090814bc69d22798cb2b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:57:00 -0800 Subject: [PATCH 055/268] format change Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_16.03/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Releases/RPB_16.03/README.md b/Reference-Platform/Releases/RPB_16.03/README.md index a393057..fec207f 100644 --- a/Reference-Platform/Releases/RPB_16.03/README.md +++ b/Reference-Platform/Releases/RPB_16.03/README.md @@ -1,6 +1,6 @@ # Reference Platform Build - 16.03 -[RPB 16.03 Highlights](Highlights.md) | [Known Issues](Known-Issues.md) | [RPB 16.03 Release Status](ReleaseStatus-16.03.md) +[RPB 16.03 Highlights](Highlights.md) | [RPB 16.03 Known Issues](Known-Issues.md) | [RPB 16.03 Release Status](ReleaseStatus-16.03.md) ## Choose your Hardware From 0505375b1d15682d11aee8bb5d9ce2078623cb92 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 21:57:56 -0800 Subject: [PATCH 056/268] Format change Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_15.10/README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Reference-Platform/Releases/RPB_15.10/README.md b/Reference-Platform/Releases/RPB_15.10/README.md index 5a60267..c2f1cee 100644 --- a/Reference-Platform/Releases/RPB_15.10/README.md +++ b/Reference-Platform/Releases/RPB_15.10/README.md @@ -1,10 +1,6 @@ # Reference Platform Build - 15.10 -

- - [RPB 15.10 Highlights](Highlights.md) | - [Known Issues](Known-Issues.md) -
+[RPB 15.10 Highlights](Highlights.md) | [RPB 15.10 Known Issues](Known-Issues.md) #### Reference Software - Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) From ab3510b84f196a007c21564c5bbd49fafcf0f6ec Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 22:00:57 -0800 Subject: [PATCH 057/268] format fix Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_16.06/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/README.md b/Reference-Platform/Releases/RPB_16.06/README.md index 535202d..8342118 100644 --- a/Reference-Platform/Releases/RPB_16.06/README.md +++ b/Reference-Platform/Releases/RPB_16.06/README.md @@ -2,8 +2,6 @@ [Release Highlights](Highlights.md) | [Known Issues](Known-Issues.md) -*** - ## Choose your Hardware #### Consumer Edition From 97a3ad4a06274af784f3442e4fa3e502cfa59596 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 22:01:42 -0800 Subject: [PATCH 058/268] Small fix Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_16.03/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.03/README.md b/Reference-Platform/Releases/RPB_16.03/README.md index fec207f..68d0477 100644 --- a/Reference-Platform/Releases/RPB_16.03/README.md +++ b/Reference-Platform/Releases/RPB_16.03/README.md @@ -4,11 +4,11 @@ ## Choose your Hardware -#### Reference Software - Consumer Edition +#### Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) -#### Reference Software - Enterprise Edition +#### Enterprise Edition - [D02](EnterpriseEdition/D02/README.md) - [Overdrive](EnterpriseEdition/Overdrive/README.md) - [Cello](EnterpriseEdition/Cello/README.md) From 9618fdb6c7baa49353590b3ac958581214a2728b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 22:02:15 -0800 Subject: [PATCH 059/268] Small fix Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_15.12/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Releases/RPB_15.12/README.md b/Reference-Platform/Releases/RPB_15.12/README.md index 3d887b2..25ef139 100644 --- a/Reference-Platform/Releases/RPB_15.12/README.md +++ b/Reference-Platform/Releases/RPB_15.12/README.md @@ -2,10 +2,12 @@ [RPB 15.12 Highlights](Highlights.md) | [RPB 15.12 Known Issues](Known-Issues.md) -#### Reference Software - Consumer Edition +## Choose your Hardware + +#### Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) -#### Reference Software - Enterprise Edition +#### Enterprise Edition - [D02](EnterpriseEdition/D02/README.md) - [Overdrive](EnterpriseEdition/Overdrive/README.md) From 8fc2d4d8129227e120dde047431a82a7dcda1607 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 22:02:44 -0800 Subject: [PATCH 060/268] Small fix Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_15.10/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Reference-Platform/Releases/RPB_15.10/README.md b/Reference-Platform/Releases/RPB_15.10/README.md index c2f1cee..7a92254 100644 --- a/Reference-Platform/Releases/RPB_15.10/README.md +++ b/Reference-Platform/Releases/RPB_15.10/README.md @@ -2,7 +2,9 @@ [RPB 15.10 Highlights](Highlights.md) | [RPB 15.10 Known Issues](Known-Issues.md) -#### Reference Software - Consumer Edition +## Choose your Hardware + +#### Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) From b5cc48db31acfa2ca9dc28815dbb0af89cf4772b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 22:03:42 -0800 Subject: [PATCH 061/268] small fix Signed-off-by: Robert Wolff --- Reference-Platform/Releases/RPB_16.06/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Releases/RPB_16.06/README.md b/Reference-Platform/Releases/RPB_16.06/README.md index 8342118..1a9666f 100644 --- a/Reference-Platform/Releases/RPB_16.06/README.md +++ b/Reference-Platform/Releases/RPB_16.06/README.md @@ -1,6 +1,6 @@ # Reference Software Platform - 16.06 -[Release Highlights](Highlights.md) | [Known Issues](Known-Issues.md) +[RPB 16.06 Highlights](Highlights.md) | [RPB 16.06 Known Issues](Known-Issues.md) ## Choose your Hardware From 76367ba5f5b9f14a266b56bce28ff3f5a519284b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 29 Nov 2016 22:14:40 -0800 Subject: [PATCH 062/268] Formatting change for resources section Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index f2f09b5..e586c7b 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -21,12 +21,12 @@ For more information about the Reference Software Platform project please watch #### Resources -- [RPB CI](Extras/RPB-CI.md) -- [Report a bug](Extras/Report-a-bug.md) -- [Feedback and Support](Extras/Feedback-and-Support.md) -- [Kernel Policy](Extras/KernelPolicy.md) -- [Kernel Roadmap](Extras/Kernel-Roadmap.md) -- [Contribute to RPB](Contribute/README.md) -- [Document Contribution Policy](../ContributionPolicy.md) +| Extras and Support | Progress and Policy | +|:-----------------------------------------------------:|:-----------------------------------------:| +| [RPB CI](Extras/RPB-CI.md) | [Kernel Policy](Extras/KernelPolicy.md) | +| [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| +| [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | *** + +[Document Contribution Policy](../ContributionPolicy.md) From e9c08a3443fb850152ec28cc160f2a1ce04ba8e8 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 30 Nov 2016 18:28:25 -0800 Subject: [PATCH 063/268] Delete .DS_Store --- Reference-Platform/Releases/RPB_16.06/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Releases/RPB_16.06/.DS_Store diff --git a/Reference-Platform/Releases/RPB_16.06/.DS_Store b/Reference-Platform/Releases/RPB_16.06/.DS_Store deleted file mode 100644 index b4a0c1f5ca757667234c4cc4482b904a4243189d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}N773{JF2!Ap-G=N0+}L)kt-UqIOfJy=?_g&yY_#Ru~Hk|?Y$UIeL Date: Wed, 30 Nov 2016 18:51:57 -0800 Subject: [PATCH 064/268] Delete .DS_Store --- Reference-Platform/Extras/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Extras/.DS_Store diff --git a/Reference-Platform/Extras/.DS_Store b/Reference-Platform/Extras/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Fri, 2 Dec 2016 11:22:23 -0800 Subject: [PATCH 065/268] Delete .DS_Store --- .../RPB_16.06/EnterpriseEdition/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/.DS_Store diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/.DS_Store b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Fri, 2 Dec 2016 11:22:56 -0800 Subject: [PATCH 066/268] Delete .DS_Store --- .../RPB_16.03/EnterpriseEdition/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Releases/RPB_16.03/EnterpriseEdition/.DS_Store diff --git a/Reference-Platform/Releases/RPB_16.03/EnterpriseEdition/.DS_Store b/Reference-Platform/Releases/RPB_16.03/EnterpriseEdition/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Fri, 2 Dec 2016 11:24:23 -0800 Subject: [PATCH 067/268] Fixed relative links Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/Cello/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Cello/README.md index 32cf161..7fa5dc9 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Cello/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Cello/README.md @@ -10,7 +10,7 @@ Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [21 ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). ### Reference Platform Kernel @@ -26,33 +26,33 @@ Booting from the network is not yet supported due lack of a binary UEFI driver f ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). ### Distro Installers Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From c120733c2a36f56c20e2abae81cdb0b4c80a10b1 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:25:08 -0800 Subject: [PATCH 068/268] Update README.md Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/D02/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md index 515bdd5..472eb50 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md @@ -4,7 +4,7 @@ ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. ### Reference Platform Kernel @@ -18,21 +18,21 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. #### D02 - QuickStart -UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). **NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) #### Other distributions @@ -46,14 +46,14 @@ Extra resources for other distributions: #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 4ca1c9f47a2212d8651f49e1c26b6e49d4283ade Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:25:42 -0800 Subject: [PATCH 069/268] Update README.md --- .../Releases/RPB_16.06/EnterpriseEdition/D02/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md index 472eb50..89aa03a 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md @@ -40,7 +40,7 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) +* [Fedora 23](../../../../Install-Fedora-23.md) ### Enterprise Software Components From 63f513fe2f1a69c2e2e0a171358d55f8dbc1de5d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:27:10 -0800 Subject: [PATCH 070/268] fixed relative links Signed-off-by: Robert Wolff --- .../Releases/RPB_16.06/EnterpriseEdition/D02/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md index 89aa03a..43547db 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D02/README.md @@ -40,7 +40,7 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components From b89f88bc951e0dbc1c604ab9d69972298fee71ee Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:28:34 -0800 Subject: [PATCH 071/268] Fixed relative links Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/D03/README.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D03/README.md index 683e514..5802a3c 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D03/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/D03/README.md @@ -4,7 +4,7 @@ ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. ### Reference Platform Kernel @@ -18,21 +18,21 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. #### D03 - QuickStart -UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). **NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) #### Other distributions @@ -40,20 +40,20 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 5c0850828d1773c755724df0bc6c63a96aebd6c7 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:29:15 -0800 Subject: [PATCH 072/268] Fixed relative link Signed-off-by: Robert Wolff --- .../EnterpriseEdition/HP-ProLiant-m400/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md index 6f138f4..2b6ff67 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -16,11 +16,11 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) #### Other distributions @@ -28,20 +28,20 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 1b2601259bf80686a56f008bd0b89f32342d997e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:30:28 -0800 Subject: [PATCH 073/268] Fixed relative links Signed-off-by: Robert Wolff --- .../EnterpriseEdition/Overdrive/README.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Overdrive/README.md index ad50cd1..3b4fd01 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Overdrive/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Overdrive/README.md @@ -4,7 +4,7 @@ ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). ### Reference Platform Kernel @@ -18,42 +18,42 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. #### AMD Overdrive -UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). +UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). **NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 569edd8af5084f427af8dc9ddb00a6626cf7e438 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:31:28 -0800 Subject: [PATCH 074/268] Fixed relative links Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/Q2432LZB/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md index 519f727..fc8e51e 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md @@ -16,31 +16,31 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 6e0f6c304ebe4def55487fdb2747967ed397c097 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:32:22 -0800 Subject: [PATCH 075/268] Fixed relative link Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/ThunderX/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/ThunderX/README.md index 17dc1f3..db5c79b 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/ThunderX/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/ThunderX/README.md @@ -16,31 +16,31 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 664002edb0811460524861b0fc5084bb1e3bbb70 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 2 Dec 2016 11:33:12 -0800 Subject: [PATCH 076/268] Fixed relative links Signed-off-by: Robert Wolff --- .../EnterpriseEdition/X-Gene-Mustang/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md index 79e7ec7..bd2077f 100644 --- a/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md +++ b/Reference-Platform/Releases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md @@ -16,11 +16,11 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) @@ -29,20 +29,20 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 0f4581508bd2422b4fa80a1c137112162db70787 Mon Sep 17 00:00:00 2001 From: Ricardo Salveti de Araujo Date: Mon, 5 Dec 2016 10:33:20 +0000 Subject: [PATCH 077/268] Updating D03 UEFI flashing instructions. --- .../EECommon/UEFI-EDK2-Guide-EE.md | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md b/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md index 1968e56..bcb6166 100644 --- a/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md +++ b/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md @@ -265,24 +265,15 @@ Flashing D03 requires the board to have a working ethernet connection to the FTP ##### Clean flash -First make sure the built firmware is available in your FTP server ('D03.fd'): +To do a clean flash you will require access to the BMC. -```shell -cp D03.fd /srv/tftp/ -``` - -Now follow the steps below in order to fetch and flash the new firmware: - -1. Power off the board and unplug the power supply. -2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d03-2/](http://open-estuary.com/d03-2/) for the board picture) - - The board has two SPI flash chips, and this switch selects which one to boot from. -3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell -4. Push the dial switch **3. CPU0_SPI_SEL** to **on** - - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). -5. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master' like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' -6. Exit the EBL console and reboot the board +1. Make sure the board's BMC port is connected, and with a known IP address. +2. Login the BMC website, The username/passwd is root/Huawei12#$. Click "system", "Firmware upgrade", "Browse" to select the UEFI file in hpm formate. (Please contact support@open-estuary.org to get the hpm file). +3. Pull out the power cable to power off the board. Find the pin named "COM_SW" at J44. Then connect it with jump cap. +4. Power on the board, connect to the board's serial port. When the screen display message "You are trying to access a restricted zone. Only Authorized Users allowed.", type "Enter" key, input username/passwd, the username/passwd is root/Huawei12#$. +5. After you login the BMC interface which start with "iBMC:/->", use command "ifconfig" to see the modified BMC IP. When you get the board's BMC IP, please visit the BMC website by "https://" +6. Click "Start update" (Do not power off during this period). +7. After updated UFEI file, reboot the board to enter UEFI menu. ##### Upgrading firmware From 18f8097b8745b6e5fe62c7be3c513ce16761b356 Mon Sep 17 00:00:00 2001 From: Ricardo Salveti de Araujo Date: Mon, 5 Dec 2016 10:36:39 +0000 Subject: [PATCH 078/268] Update UEFI-EDK2-Guide-EE.md --- Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md b/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md index bcb6166..d65fbe0 100644 --- a/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md +++ b/Reference-Platform/EECommon/UEFI-EDK2-Guide-EE.md @@ -265,15 +265,15 @@ Flashing D03 requires the board to have a working ethernet connection to the FTP ##### Clean flash -To do a clean flash you will require access to the BMC. +To do a clean flash you will require access to the board's BMC. 1. Make sure the board's BMC port is connected, and with a known IP address. -2. Login the BMC website, The username/passwd is root/Huawei12#$. Click "system", "Firmware upgrade", "Browse" to select the UEFI file in hpm formate. (Please contact support@open-estuary.org to get the hpm file). +2. Login the BMC website, The username/passwd is root/Huawei12#$. Go to "System", "Firmware Upgrade", and "Browse" to select the UEFI file in hpm format. (Please contact support@open-estuary.org to get the hpm file). 3. Pull out the power cable to power off the board. Find the pin named "COM_SW" at J44. Then connect it with jump cap. -4. Power on the board, connect to the board's serial port. When the screen display message "You are trying to access a restricted zone. Only Authorized Users allowed.", type "Enter" key, input username/passwd, the username/passwd is root/Huawei12#$. -5. After you login the BMC interface which start with "iBMC:/->", use command "ifconfig" to see the modified BMC IP. When you get the board's BMC IP, please visit the BMC website by "https://" -6. Click "Start update" (Do not power off during this period). -7. After updated UFEI file, reboot the board to enter UEFI menu. +4. Power on the board and connect to the board's serial port. When the screen display message "You are trying to access a restricted zone. Only Authorized Users allowed.", type "Enter", input username/passwd (username/passwd is root/Huawei12#$). +5. After you login the BMC interface which start with "iBMC:/->", use command "ifconfig" to see the modified BMC IP. When you get the board's BMC IP, please visit the BMC website by "https://BMC IP ADDRESS/". +6. Go to "Start Update" (Do not power off during this period). +7. After updating the UEFI firmware, reboot the board to enter UEFI menu. ##### Upgrading firmware From dc79d6369d6391a89be5f444d1e958f6f6236dce Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:06:17 -0800 Subject: [PATCH 079/268] Massive move of files to fit new website structure This commit will most likely break many links, relative and rendered. Fix and cleanup will happen over the next few days. Signed-off-by: Robert Wolff --- Reference-Platform/.DS_Store | Bin 0 -> 6148 bytes Reference-Platform/Platforms/.DS_Store | Bin 0 -> 6148 bytes .../Platforms/Consumer/.DS_Store | Bin 0 -> 6148 bytes .../Platforms/Consumer/CECommon/OE.md | 346 ++++++++++++ .../Platforms/Consumer/CECommon/README.md | 1 + .../Platforms/Consumer/README.md | 37 ++ .../DragonBoard-410c/BFSDebianRPB-15.10.md | 122 ++++ .../InstallDebianRPB-15.10.md | 81 +++ .../DragonBoard-410c/README.md | 15 + .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 44 ++ .../HiKey/BFSDebianRPB-15.10.md | 53 ++ .../HiKey/InstallAOSP-15.10.md | 88 +++ .../HiKey/InstallDebianRPB-15.10.md | 85 +++ .../RPB_15.10/ConsumerEdition/HiKey/README.md | 24 + .../RPB_15.10/ConsumerEdition/README.md | 1 + .../Consumer/RPB_15.10/Highlights.md | 16 + .../Consumer/RPB_15.10/Known-Issues.md | 56 ++ .../Platforms/Consumer/RPB_15.10/README.md | 12 + .../DragonBoard-410c/BFSDebianRPB-15.12.md | 104 ++++ .../InstallDebianRPB-15.12.md | 81 +++ .../DragonBoard-410c/README.md | 14 + .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 37 ++ .../HiKey/BFSDebianRPB-15.12.md | 53 ++ .../HiKey/InstallAOSPRPB-15.12.md | 112 ++++ .../HiKey/InstallDebianRPB-15.12.md | 97 ++++ .../RPB_15.12/ConsumerEdition/HiKey/README.md | 18 + .../RPB_15.12/ConsumerEdition/README.md | 1 + .../RPB_15.12/EnterpriseEdition/README.md | 1 + .../Consumer/RPB_15.12/Highlights.md | 49 ++ .../Consumer/RPB_15.12/Known-Issues.md | 73 +++ .../Platforms/Consumer/RPB_15.12/README.md | 13 + .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 ++ .../DragonBoard-410c/BFSDebianRPB-16.03.md | 280 ++++++++++ .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ++++++ .../InstallDebianRPB-16.03.md | 153 +++++ .../DragonBoard-410c/InstallOERPB-16.03.md | 212 +++++++ .../DragonBoard-410c/README.md | 32 ++ .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 46 ++ .../HiKey/BFSDebianRPB-16.03.md | 185 +++++++ .../ConsumerEdition/HiKey/BuildSourceBL.md | 83 +++ .../HiKey/InstallAOSPRPB-16.03.md | 126 +++++ .../HiKey/InstallDebianRPB-16.03.md | 111 ++++ .../RPB_16.03/ConsumerEdition/HiKey/README.md | 24 + .../RPB_16.03/ConsumerEdition/README.md | 1 + .../EnterpriseEdition/Cello/README.md | 60 ++ .../RPB_16.03/EnterpriseEdition/D02/README.md | 64 +++ .../RPB_16.03/EnterpriseEdition/D03/README.md | 64 +++ .../DHCP-TFTP-Server-UEFI.md | 44 ++ .../HP-ProLiant-m400/README.md | 52 ++ .../EnterpriseEdition/Install-CentOS-7.md | 216 ++++++++ .../Install-Debian-Jessie.md | 522 ++++++++++++++++++ .../EnterpriseEdition/Install-Fedora-23.md | 164 ++++++ .../ODPi-BigTop-Hadoop-Config-Run.md | 320 +++++++++++ .../ODPi-Hadoop-Installation.md | 82 +++ .../EnterpriseEdition/OpenStack-Liberty.md | 376 +++++++++++++ .../EnterpriseEdition/Overdrive/README.md | 68 +++ .../RPB_16.03/EnterpriseEdition/README.md | 1 + .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 367 ++++++++++++ .../X-Gene-Mustang/README.md | 52 ++ .../Consumer/RPB_16.03/Highlights.md | 87 +++ .../Consumer/RPB_16.03/Known-Issues.md | 100 ++++ .../Platforms/Consumer/RPB_16.03/README.md | 18 + .../Consumer/RPB_16.03/ReleaseStatus-16.03.md | 170 ++++++ .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 ++ .../DragonBoard-410c/BFSDebianRPB-16.06.md | 281 ++++++++++ .../DragonBoard-410c/BFSOERPB-16.03.md | 1 + .../DragonBoard-410c/BFSOERPB.md | 196 +++++++ .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ++++++ .../InstallDebianRPB-16.06.md | 326 +++++++++++ .../DragonBoard-410c/InstallOERPB-16.03.md | 212 +++++++ .../DragonBoard-410c/README.md | 17 + .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 46 ++ .../ConsumerEdition/HiKey/BFSDebianRPB.md | 182 ++++++ .../ConsumerEdition/HiKey/BuildSourceBL.md | 86 +++ .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 126 +++++ .../ConsumerEdition/HiKey/InstallDebianRPB.md | 265 +++++++++ .../ConsumerEdition/HiKey/InstallOERPB.md | 1 + .../RPB_16.06/ConsumerEdition/HiKey/README.md | 31 ++ .../RPB_16.06/ConsumerEdition/README.md | 1 + .../EnterpriseEdition/Cello/README.md | 58 ++ .../RPB_16.06/EnterpriseEdition/D02/README.md | 59 ++ .../RPB_16.06/EnterpriseEdition/D03/README.md | 59 ++ .../HP-ProLiant-m400/README.md | 47 ++ .../EnterpriseEdition/Overdrive/README.md | 59 ++ .../EnterpriseEdition/Q2432LZB/README.md | 46 ++ .../RPB_16.06/EnterpriseEdition/README.md | 1 + .../EnterpriseEdition/ThunderX/README.md | 46 ++ .../X-Gene-Mustang/README.md | 48 ++ .../Consumer/RPB_16.06/Highlights.md | 96 ++++ .../Consumer/RPB_16.06/Known-Issues.md | 47 ++ .../Platforms/Consumer/RPB_16.06/README.md | 24 + .../Platforms/Enterprise/.DS_Store | Bin 0 -> 6148 bytes .../Platforms/Enterprise/README.md | 37 ++ .../DragonBoard-410c/BFSDebianRPB-15.10.md | 122 ++++ .../InstallDebianRPB-15.10.md | 81 +++ .../DragonBoard-410c/README.md | 15 + .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 44 ++ .../HiKey/BFSDebianRPB-15.10.md | 53 ++ .../HiKey/InstallAOSP-15.10.md | 88 +++ .../HiKey/InstallDebianRPB-15.10.md | 85 +++ .../RPB_15.10/ConsumerEdition/HiKey/README.md | 24 + .../RPB_15.10/ConsumerEdition/README.md | 1 + .../Enterprise/RPB_15.10/Highlights.md | 16 + .../Enterprise/RPB_15.10/Known-Issues.md | 56 ++ .../Platforms/Enterprise/RPB_15.10/README.md | 12 + .../DragonBoard-410c/BFSDebianRPB-15.12.md | 104 ++++ .../InstallDebianRPB-15.12.md | 81 +++ .../DragonBoard-410c/README.md | 14 + .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 37 ++ .../HiKey/BFSDebianRPB-15.12.md | 53 ++ .../HiKey/InstallAOSPRPB-15.12.md | 112 ++++ .../HiKey/InstallDebianRPB-15.12.md | 97 ++++ .../RPB_15.12/ConsumerEdition/HiKey/README.md | 18 + .../RPB_15.12/ConsumerEdition/README.md | 1 + .../RPB_15.12/EnterpriseEdition/README.md | 1 + .../Enterprise/RPB_15.12/Highlights.md | 49 ++ .../Enterprise/RPB_15.12/Known-Issues.md | 73 +++ .../Platforms/Enterprise/RPB_15.12/README.md | 13 + .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 ++ .../DragonBoard-410c/BFSDebianRPB-16.03.md | 280 ++++++++++ .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ++++++ .../InstallDebianRPB-16.03.md | 153 +++++ .../DragonBoard-410c/InstallOERPB-16.03.md | 212 +++++++ .../DragonBoard-410c/README.md | 32 ++ .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 46 ++ .../HiKey/BFSDebianRPB-16.03.md | 185 +++++++ .../ConsumerEdition/HiKey/BuildSourceBL.md | 83 +++ .../HiKey/InstallAOSPRPB-16.03.md | 126 +++++ .../HiKey/InstallDebianRPB-16.03.md | 111 ++++ .../RPB_16.03/ConsumerEdition/HiKey/README.md | 24 + .../RPB_16.03/ConsumerEdition/README.md | 1 + .../EnterpriseEdition/Cello/README.md | 60 ++ .../RPB_16.03/EnterpriseEdition/D02/README.md | 64 +++ .../RPB_16.03/EnterpriseEdition/D03/README.md | 64 +++ .../DHCP-TFTP-Server-UEFI.md | 44 ++ .../HP-ProLiant-m400/README.md | 52 ++ .../EnterpriseEdition/Install-CentOS-7.md | 216 ++++++++ .../Install-Debian-Jessie.md | 522 ++++++++++++++++++ .../EnterpriseEdition/Install-Fedora-23.md | 164 ++++++ .../ODPi-BigTop-Hadoop-Config-Run.md | 320 +++++++++++ .../ODPi-Hadoop-Installation.md | 82 +++ .../EnterpriseEdition/OpenStack-Liberty.md | 376 +++++++++++++ .../EnterpriseEdition/Overdrive/README.md | 68 +++ .../RPB_16.03/EnterpriseEdition/README.md | 1 + .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 367 ++++++++++++ .../X-Gene-Mustang/README.md | 52 ++ .../Enterprise/RPB_16.03/Highlights.md | 87 +++ .../Enterprise/RPB_16.03/Known-Issues.md | 100 ++++ .../Platforms/Enterprise/RPB_16.03/README.md | 18 + .../RPB_16.03/ReleaseStatus-16.03.md | 170 ++++++ .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 ++ .../DragonBoard-410c/BFSDebianRPB-16.06.md | 281 ++++++++++ .../DragonBoard-410c/BFSOERPB-16.03.md | 1 + .../DragonBoard-410c/BFSOERPB.md | 196 +++++++ .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ++++++ .../InstallDebianRPB-16.06.md | 326 +++++++++++ .../DragonBoard-410c/InstallOERPB-16.03.md | 212 +++++++ .../DragonBoard-410c/README.md | 17 + .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 46 ++ .../ConsumerEdition/HiKey/BFSDebianRPB.md | 182 ++++++ .../ConsumerEdition/HiKey/BuildSourceBL.md | 86 +++ .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 126 +++++ .../ConsumerEdition/HiKey/InstallDebianRPB.md | 265 +++++++++ .../ConsumerEdition/HiKey/InstallOERPB.md | 1 + .../RPB_16.06/ConsumerEdition/HiKey/README.md | 31 ++ .../RPB_16.06/ConsumerEdition/README.md | 1 + .../EECommon/DHCP-TFTP-Server-UEFI.md | 44 ++ .../RPB_16.06/EECommon/Install-CentOS-7.md | 216 ++++++++ .../EECommon/Install-Debian-Jessie.md | 342 ++++++++++++ .../RPB_16.06/EECommon/Install-Fedora-23.md | 164 ++++++ .../EECommon/ODPi-BigTop-Hadoop-Config-Run.md | 320 +++++++++++ .../EECommon/ODPi-Hadoop-Installation.md | 82 +++ .../RPB_16.06/EECommon/OpenStack-Liberty.md | 376 +++++++++++++ .../RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md | 350 ++++++++++++ .../EnterpriseEdition/Cello/README.md | 58 ++ .../RPB_16.06/EnterpriseEdition/D02/README.md | 59 ++ .../RPB_16.06/EnterpriseEdition/D03/README.md | 59 ++ .../HP-ProLiant-m400/README.md | 47 ++ .../EnterpriseEdition/Overdrive/README.md | 59 ++ .../EnterpriseEdition/Q2432LZB/README.md | 46 ++ .../RPB_16.06/EnterpriseEdition/README.md | 1 + .../EnterpriseEdition/ThunderX/README.md | 46 ++ .../X-Gene-Mustang/README.md | 48 ++ .../Enterprise/RPB_16.06/Highlights.md | 96 ++++ .../Enterprise/RPB_16.06/Known-Issues.md | 47 ++ .../Platforms/Enterprise/RPB_16.06/README.md | 24 + Reference-Platform/Platforms/IoT/.DS_Store | Bin 0 -> 6148 bytes Reference-Platform/Platforms/IoT/README.md | 37 ++ .../DragonBoard-410c/BFSDebianRPB-15.10.md | 122 ++++ .../InstallDebianRPB-15.10.md | 81 +++ .../DragonBoard-410c/README.md | 15 + .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 44 ++ .../HiKey/BFSDebianRPB-15.10.md | 53 ++ .../HiKey/InstallAOSP-15.10.md | 88 +++ .../HiKey/InstallDebianRPB-15.10.md | 85 +++ .../RPB_15.10/ConsumerEdition/HiKey/README.md | 24 + .../IoT/RPB_15.10/ConsumerEdition/README.md | 1 + .../Platforms/IoT/RPB_15.10/Highlights.md | 16 + .../Platforms/IoT/RPB_15.10/Known-Issues.md | 56 ++ .../Platforms/IoT/RPB_15.10/README.md | 12 + .../DragonBoard-410c/BFSDebianRPB-15.12.md | 104 ++++ .../InstallDebianRPB-15.12.md | 81 +++ .../DragonBoard-410c/README.md | 14 + .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 37 ++ .../HiKey/BFSDebianRPB-15.12.md | 53 ++ .../HiKey/InstallAOSPRPB-15.12.md | 112 ++++ .../HiKey/InstallDebianRPB-15.12.md | 97 ++++ .../RPB_15.12/ConsumerEdition/HiKey/README.md | 18 + .../IoT/RPB_15.12/ConsumerEdition/README.md | 1 + .../IoT/RPB_15.12/EnterpriseEdition/README.md | 1 + .../Platforms/IoT/RPB_15.12/Highlights.md | 49 ++ .../Platforms/IoT/RPB_15.12/Known-Issues.md | 73 +++ .../Platforms/IoT/RPB_15.12/README.md | 13 + .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 ++ .../DragonBoard-410c/BFSDebianRPB-16.03.md | 280 ++++++++++ .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ++++++ .../InstallDebianRPB-16.03.md | 153 +++++ .../DragonBoard-410c/InstallOERPB-16.03.md | 212 +++++++ .../DragonBoard-410c/README.md | 32 ++ .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 46 ++ .../HiKey/BFSDebianRPB-16.03.md | 185 +++++++ .../ConsumerEdition/HiKey/BuildSourceBL.md | 83 +++ .../HiKey/InstallAOSPRPB-16.03.md | 126 +++++ .../HiKey/InstallDebianRPB-16.03.md | 111 ++++ .../RPB_16.03/ConsumerEdition/HiKey/README.md | 24 + .../IoT/RPB_16.03/ConsumerEdition/README.md | 1 + .../EnterpriseEdition/Cello/README.md | 60 ++ .../RPB_16.03/EnterpriseEdition/D02/README.md | 64 +++ .../RPB_16.03/EnterpriseEdition/D03/README.md | 64 +++ .../DHCP-TFTP-Server-UEFI.md | 44 ++ .../HP-ProLiant-m400/README.md | 52 ++ .../EnterpriseEdition/Install-CentOS-7.md | 216 ++++++++ .../Install-Debian-Jessie.md | 522 ++++++++++++++++++ .../EnterpriseEdition/Install-Fedora-23.md | 164 ++++++ .../ODPi-BigTop-Hadoop-Config-Run.md | 320 +++++++++++ .../ODPi-Hadoop-Installation.md | 82 +++ .../EnterpriseEdition/OpenStack-Liberty.md | 376 +++++++++++++ .../EnterpriseEdition/Overdrive/README.md | 68 +++ .../IoT/RPB_16.03/EnterpriseEdition/README.md | 1 + .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 367 ++++++++++++ .../X-Gene-Mustang/README.md | 52 ++ .../Platforms/IoT/RPB_16.03/Highlights.md | 87 +++ .../Platforms/IoT/RPB_16.03/Known-Issues.md | 100 ++++ .../Platforms/IoT/RPB_16.03/README.md | 18 + .../IoT/RPB_16.03/ReleaseStatus-16.03.md | 170 ++++++ .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 ++ .../DragonBoard-410c/BFSDebianRPB-16.06.md | 281 ++++++++++ .../DragonBoard-410c/BFSOERPB-16.03.md | 1 + .../DragonBoard-410c/BFSOERPB.md | 196 +++++++ .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ++++++ .../InstallDebianRPB-16.06.md | 326 +++++++++++ .../DragonBoard-410c/InstallOERPB-16.03.md | 212 +++++++ .../DragonBoard-410c/README.md | 17 + .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 46 ++ .../ConsumerEdition/HiKey/BFSDebianRPB.md | 182 ++++++ .../ConsumerEdition/HiKey/BuildSourceBL.md | 86 +++ .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 126 +++++ .../ConsumerEdition/HiKey/InstallDebianRPB.md | 265 +++++++++ .../ConsumerEdition/HiKey/InstallOERPB.md | 1 + .../RPB_16.06/ConsumerEdition/HiKey/README.md | 31 ++ .../IoT/RPB_16.06/ConsumerEdition/README.md | 1 + .../EnterpriseEdition/Cello/README.md | 58 ++ .../RPB_16.06/EnterpriseEdition/D02/README.md | 59 ++ .../RPB_16.06/EnterpriseEdition/D03/README.md | 59 ++ .../HP-ProLiant-m400/README.md | 47 ++ .../EnterpriseEdition/Overdrive/README.md | 59 ++ .../EnterpriseEdition/Q2432LZB/README.md | 46 ++ .../IoT/RPB_16.06/EnterpriseEdition/README.md | 1 + .../EnterpriseEdition/ThunderX/README.md | 46 ++ .../X-Gene-Mustang/README.md | 48 ++ .../Platforms/IoT/RPB_16.06/Highlights.md | 96 ++++ .../Platforms/IoT/RPB_16.06/Known-Issues.md | 47 ++ .../Platforms/IoT/RPB_16.06/README.md | 24 + Reference-Platform/README.md | 11 +- 274 files changed, 26636 insertions(+), 6 deletions(-) create mode 100644 Reference-Platform/.DS_Store create mode 100644 Reference-Platform/Platforms/.DS_Store create mode 100644 Reference-Platform/Platforms/Consumer/.DS_Store create mode 100644 Reference-Platform/Platforms/Consumer/CECommon/OE.md create mode 100644 Reference-Platform/Platforms/Consumer/CECommon/README.md create mode 100644 Reference-Platform/Platforms/Consumer/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/Highlights.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.10/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/Highlights.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_15.12/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Cello/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D02/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D03/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Overdrive/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/Highlights.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.03/ReleaseStatus-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Cello/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D02/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D03/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Overdrive/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/ThunderX/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/Highlights.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Consumer/RPB_16.06/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/.DS_Store create mode 100644 Reference-Platform/Platforms/Enterprise/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/Highlights.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.10/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/Highlights.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_15.12/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Cello/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D02/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D03/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Overdrive/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/Highlights.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.03/ReleaseStatus-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/DHCP-TFTP-Server-UEFI.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-CentOS-7.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Debian-Jessie.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Fedora-23.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-BigTop-Hadoop-Config-Run.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-Hadoop-Installation.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/OpenStack-Liberty.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Cello/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D02/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D03/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Overdrive/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/ThunderX/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/Highlights.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/Known-Issues.md create mode 100644 Reference-Platform/Platforms/Enterprise/RPB_16.06/README.md create mode 100644 Reference-Platform/Platforms/IoT/.DS_Store create mode 100644 Reference-Platform/Platforms/IoT/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/Highlights.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/Known-Issues.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.10/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/Highlights.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/Known-Issues.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_15.12/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Cello/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D02/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D03/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Overdrive/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/Highlights.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/Known-Issues.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.03/ReleaseStatus-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Cello/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D02/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D03/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Overdrive/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/ThunderX/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/Highlights.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/Known-Issues.md create mode 100644 Reference-Platform/Platforms/IoT/RPB_16.06/README.md diff --git a/Reference-Platform/.DS_Store b/Reference-Platform/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f24b4c8a675df8f3424f5a32ecb5c91db6121dcf GIT binary patch literal 6148 zcmeHKF-`+95S)b+K{P2T{e}GC6kU3xd;pXaP~7PvNP547SMe5VX1xo#Q(RCWgwU>J z&)S}~eIuRi1t6PKw+2=KmMn^*PQ|plI&|UW1yRZz4;b-`0WbYyWum{>rF*}^EqdJJ zh{^ufyZtyECR?tshOuqC({T^H_3y8RTV-|MU>%;$R-7yzZYU56gaV;JDDYzn@Xl6S zUK>Uo3WNfoz?TAgJ|q^!#xWa~qk~mR0f_pHE=FH-35`jPjbk?C2u&=MXrbaMhFCcJ zlk*zKY-r&SPd>y~{!Ct^tj_sUp+g$Os6&BJV6MQWHCKB7Z~4nqll*x|v_gSU;GZcV zi+0y;_)&hho_(I)wTb19MNN5G9UA@FBY+J(M{dfXjVJZVYaFwo&Z7M#oEQ&*B1lxB Iz%MB90ofNWR{#J2 literal 0 HcmV?d00001 diff --git a/Reference-Platform/Platforms/.DS_Store b/Reference-Platform/Platforms/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0e721867b4ac7c22324180ff96e3a01a47aad268 GIT binary patch literal 6148 zcmeHKJ5Iwu5S>j@gin!@(pT^etl$*X<^V`>1V}NqAntt{IvUQxS*UsQk!9oMQy_%U zj5Pb!vopKnXUpRuqOfkulxRgnODN;)2t!18opmBJvz!8h?9oz1JG$Rrr^UqE4S$gV zes)Vbr<(5Qfd;fYUG=Xu#4wnQ)c*GKV;_>^DzG&gDS?yO_lAe#ffNz_1Z zk=c&lsqgrW@_LfIqWe|#Ah%EaBKghf0(@OYGP0FX4$qQ9zcM&=v=TXIK)+9&0cXG& z_)!K>vssoWiat66&VVz}Gr-@61j?8hc8c=pz#uIEZ~?Oj=G;qgOk$WBc8XYm1Pujh zXs{L|XgKVN`DKQkqJ~qj<|Ek2!8(*6r(^#_+$m&=J~{)=z?gx#Uaq+QZ$9q-$3cGO z3^)V-ih;1mi+qh+vf4ViIj*${^a{$tew|_;f{B!3_;M*egNneO@C29{c8ah-{6|1& L@WC1QRR-Pw03>D% literal 0 HcmV?d00001 diff --git a/Reference-Platform/Platforms/Consumer/.DS_Store b/Reference-Platform/Platforms/Consumer/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..11b39ced90e1864b583ba0d9b47a4c5b5d71f440 GIT binary patch literal 6148 zcmeHKO-sW-5PhRP6ujirP5IqA+MeFEiRGR}P3Lv$(C7~y0c_|wa-9clJgLulrDJEPt7w0w Q6XPL}1&JyY_yq;t0fLV=#sB~S literal 0 HcmV?d00001 diff --git a/Reference-Platform/Platforms/Consumer/CECommon/OE.md b/Reference-Platform/Platforms/Consumer/CECommon/OE.md new file mode 100644 index 0000000..990b4ae --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/CECommon/OE.md @@ -0,0 +1,346 @@ +## OpenEmbedded and Yocto + +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c and HiKey. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +The support for HiKey is available in the [meta-96boards BSP layer](https://github.com/96boards/meta-96boards). + +These layers have been tested with OpenEmbedded Core layer, and are expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for these boards is the Reference Platform Kernel (RPK). The graphic stack is based on mesa: +* using the freedreno driver for Dragonboard 410c +* using the ARM Mali Utgard GPU driver for HiKey + +## OE Layers + +| Layer | Description | +|:-----------------------:|:----------------------| +| oe-core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | +| meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | +| meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | +| meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | +| meta-qt5 | This is a cross-platform toolkit. | +| meta-linaro | This layer is used to get the Linaro toolchain. | +| meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | +| meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer Edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The BSPs layesr can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with OpenEmbedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-rpb && cd oe-rpb + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b krogoth + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` or `hikey` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found under `tmp-eglibc/deploy/images/MACHINE/`. The two artifacts you will use to update your board are: +* `rpb-console-image-MACHINE.ext4.gz` and +* `boot-MACHINE.img` + +where `MACHINE` is `dragonboard-410c` or `hikey`. + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the board (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package for Dragonboard 410c from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your board is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the board, in the case of the DragonBoard 410c, it must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard 410c +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard 410c (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +In the case of case of HiKey, see `TBA` (put a link to Debian instructions, they are the same). + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular board, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +Dragonboard 410c: +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +HiKey: +* `/dev/mmcblk0p6` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p9` , aka `system` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `IMAGE` with the name of the image you built. For example: if you built `rpb-console-image` then `IMAGE` will be `rpb-console-image`. +Same for `IMAGE`, replace with the name of your board. For example: if you built for `Dragonboard 410c` then `MACHINE` will be `dragonboard-410c`, if you built for `HiKey` then `MACHINE` will be `hikey`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `IMAGE-MACHINE.ext4.gz` and +* `boot-MACHINE.img` + +These will be found in your `tmp-eglibc/deploy/images/MACHINE` directory. + +To install these to your board's eMMC from your development host: + + # gunzip IMAGE-MACHINE.ext4.gz + # fastboot flash boot boot-MACHINE.img + +In the case of Dragonboard 410c: + + # fastboot flash rootfs IMAGE-MACHINE.ext4 + +In the case of HiKey: + + # ext2simg -v IMAGE-MACHINE.ext4 IMAGE-MACHINE.img + # fastboot flash system IMAGE-MACHINE.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support, run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/MACHINE/rpb-desktop-image-MACHINE.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is needed to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So, in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/MACHINE/rpb-weston-image-MACHINE.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Build mixed 32bit/64bit image + +OE RPB has support for creating mixed 32-bit/64-bit builds with 64-bit +kernel and 32-bit userland for: +* HiKey +* Dragonboard-410c + +There are two variants of machine configuration for both HiKey and +Dragonboard-410c boards: + +| Board | MACHINE-32 | MACHINE-64 | +|:-----:|:-------------:|:-----------:| +| HiKey | hikey-32 | hikey | +| DB-410c| dragonboard-410c-32 | dragonboard-410c | + +MACHINE-32 configuration doesn't build the kernel. It is intended to +create the 32-bit root filesystem only. + +MACHINE-64 configuration is universal. But in this mixed build only the +kernel and the kernel modules are needed from the 64-bit configuration, +so the 64-bit rpb-minimal-image is built. + +## Running a mixed build + +Setting up the build environment is the same as usual. The only difference +is that when running +``` +$ . setup-environment +``` +one should select `` as the MACHINE. +DISTRO values can be: +* rpb-x11 +* rpb-wayland + +Then do +``` +bitbake_secondary_image --extra-machine +``` +e.g. if MACHINE=dragonboard-410c-32 and DISTRO=rpb-wayland were selected +when sourcing setup-environment, the command could be: +`bitbake_secondary_image --extra-machine dragonboard-410c rpb-weston-image` + +## Creating the mixed rootfs image + +`bitbake_secondary_image` actually runs two builds. So in the build directory, +under `tmp-*/deploy/images/` two directories are created: one for 32-bit build +artifacts, and the other for the 64-bit ones. E.g. +``` +tmp-rpb_wayland-glibc/deploy/images/dragonboard-410c-32 +``` +and +``` +tmp-rpb_wayland-glibc/deploy/images/dragonboard-410c +``` + +Unpack the 32-bit `*.rootfs.ext4` image, resize it to make sure that there is +enough space for the 64-bit modules, mount it via a loop device, and unpack the +64-bit modules into the 32-bit root filesystem. Then unmount the rootfs to get +the 32-bit rootfs.ext4 image with the 64-bit kernel modules added. + +Please find more detailed instructions for the both boards below. + +### Creating the image for Dragonboard-410c + +Assuming that all the relevant build artifacts are in the current directory: +``` +gunzip -k rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4.gz +resize2fs rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4 512M +mkdir root +sudo mount -o loop rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4 root +cd root/ +sudo tar xzf ../modules--4.4-r0-dragonboard-410c-20161013094521.tgz +cd .. +sync +sudo umount root +ext2simg rpb-weston-image-dragonboard-410c-32-20161013104111.rootfs.ext4 rpb-weston-image-dragonboard-410c.rootfs.img +``` +The resulting rpb-weston-image-dragonboard-410c.rootfs.img with 32-bit userland +and 64-bit kernel modules can be flashed into the board with +``` +fastboot flash rootfs rpb-weston-image-dragonboard-410c.rootfs.img +``` + +### Creating the image for HiKey + +Creating the mixed tootfs image for HiKey is the same as for Dragonboard-410c, +but requires an extra step, as HiKey reads the kernel image to boot from the +rootfs (vs a boot partition in the case of Dragonboard-410c). So the 64-bit +kernel image and the DTB file must be copied to the 32-bit rootfs, the /boot +directory - this is where GRUB looks the kernel image for. E.g.: +``` +mkdir root +mkdir root-64 +gunzip -k rpb-minimal-image-hikey-20161014162659.rootfs.ext4.gz +sudo mount -o loop rpb-minimal-image-hikey-20161014162659.rootfs.ext4 root-64/ +gunzip -k rpb-weston-image-hikey-32-20161014172406.rootfs.ext4.gz +resize2fs rpb-weston-image-hikey-32-20161014172406.rootfs.ext4 512M +sudo mount -o loop rpb-weston-image-hikey-32-20161014172406.rootfs.ext4 root +sudo cp -r root-64/boot/* root/boot/ +cd root +sudo tar xzf ../modules--4.4.11+git-r0-hikey-20161014162659.tgz +cd .. +sync +sudo umount root +sudo umount root-64 +ext2simg rpb-weston-image-hikey-32-20161014172406.rootfs.ext4 rpb-weston-image-hikey.rootfs.img +``` +The resulting rpb-weston-image-hikey.rootfs.img with a 32-bit userland, and +64-bit kernel modules and the kernel can be flashed into the board with +``` +fastboot flash system rpb-weston-image-hikey.rootfs.img +``` + +# Support + +For general question or support request, please go to [96boards.org Community forum](http://www.96boards.org/forums/forum/products/). + +For any bug related to this release, please submit issues to the [Linaro Bug Tracking System](https://bugs.linaro.org/). To submit a bug, follow this [link](https://bugs.linaro.org/enter_bug.cgi?product=Reference%20Platforms). diff --git a/Reference-Platform/Platforms/Consumer/CECommon/README.md b/Reference-Platform/Platforms/Consumer/CECommon/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/CECommon/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md new file mode 100644 index 0000000..9db0980 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -0,0 +1,37 @@ +# Reference Software Platform - Legacy + + + + +The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. +For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) + +**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) + +*** + +| | | | +|:---:|:---:|:---:| +| | | | + + + + + - **[16.06(Latest)](Releases/RPB_16.06/README.md)** + - [16.03](Releases/RPB_16.03/README.md) + - [15.12](Releases/RPB_15.12/README.md) + - [15.10(Alpha)](Releases/RPB_15.10/README.md) + +*** + +#### Resources + +| Extras and Support | Progress and Policy | +|:-----------------------------------------------------:|:-----------------------------------------:| +| [RPB CI](Extras/RPB-CI.md) | [Kernel Policy](Extras/KernelPolicy.md) | +| [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| +| [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | + +*** + +[Document Contribution Policy](../ContributionPolicy.md) diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md new file mode 100644 index 0000000..3087438 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md @@ -0,0 +1,122 @@ +### How to get and customize the kernel source code + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/rsalveti/linux) + +``` +git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.10-qcom +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the [Linaro GCC cross compiler (Aarch64 little-endian)](http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +``` +git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-qcom +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release +``` + +#### Building a boot image + +You now need to create a valid boot image with your own kernel build. + +On your host PC, we need to install the following tools: + +``` +sudo apt-get install device-tree-compiler +git clone git://codeaurora.org/quic/kernel/skales +``` + +The boot image consists of the table of device tree (`dt.img`), the kernel image (`Image`) and an init ramdisk image. + +The `dtbTool` is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. + +`./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/` + +To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. + +The tool `mkbootimg` (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: + +``` +./skales/mkbootimg --kernel arch/arm64/boot/Image \ + --ramdisk initrd.img \ + --output boot-db410c.img \ + --dt dt.img \ + --pagesize 2048 \ + --base 0x80000000 \ + --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" +``` + +#### Booting a custom boot image + +Assuming you have now built a valid boot image called `boot-db410c.img`, you can run the following `fastboot` command to boot it on the board: + +`sudo fastboot boot boot-db410c.img` + +If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the `boot` partition: + +`sudo fastboot flash boot boot-db410c.img` + +#### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +``` +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +``` +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `aboot` partition, you can now flash your board with: + +`sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +``` +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +``` +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md new file mode 100644 index 0000000..14f6bd8 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md @@ -0,0 +1,81 @@ +## Install Instructions - CE Debian RPB 15.10 - Dragonboard410c + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for Dragonboard410c. + +For more information about the Dragonboard410c development board, please check https://www.96boards.org/products/ce/dragonboard410c/ + +### Image Components + +The CE Debian RPB 15.10 - Dragonboard410c build is composed of the following artifacts: + +- Bootloader: + - [Qualcomm proprietary first stage bootloader](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip) + - [Little Kernel](https://git.linaro.org/landing-teams/working/qualcomm/lk.git) as second stage boot loader +- Linux Kernel: + - Upstream plus extra changes for a better hardware support + - Git: https://github.com/rsalveti/linux.git + - Branch: *reference-qcom-rebase* +- Debian "Jessie" + - ALIP (LXDE based) + - Custom 96Boards artworks and default settings + - Additional packages provided by [linaro-overlay](http://repo.linaro.org/ubuntu/linaro-overlay) + +#### Closed source binaries + +This release contains proprietary firmware. You can also download the proprietary firmware separately, from [here](https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin). All the required firmware files are pre-installed, and the image is bound to the following [license agreement](https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt). + +### Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +Download the latest bootloader zip from [http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux*.zip) + +*CE Debian RPB image:* + +``` +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-boot-linux-20151106-31.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz +gunzip dragonboard410c-* +``` + +### Flashing + +#### Bootloader + +Flash the eMMC with the bootloader: + +- Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. +- Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC +- Assure micro SD Card slot is empty on the DB410c +- Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} +- Power on the DB410c into fastboot mode + - Press and hold the Vol (-) button on the DB410c (S4) + - While pressing S4 button, power up the DB410c. It will come up in fastboot mode +- From the host PC terminal window, run the following commands: + +``` +# Check to make sure fastboot device connected. If not resolve +sudo fastboot devices +# cd to the directory the bootloader zip file was extracted +cd +sudo ./flashall +``` + +The bootloader is now installed on the DB410c. + +#### Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +*Flashing boot and rootfs:* + +``` +sudo fastboot flash boot dragonboard410c-boot-linux-20151106-31.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img +``` + +Once flashed just reboot the board and enjoy :-) diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..2f79a1c --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,15 @@ +## Dragonboard™ 410c - Reference Platform Build - 15.10 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 15.10** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-15.10.md) | +| [Build from Source](BFSDebianRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md new file mode 100644 index 0000000..d47aa23 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md @@ -0,0 +1,44 @@ +h4. Building AOSP from source + +*NOTE*: This build instructions are not yet reflecting the 15.10 image + +AOSP sources are hosted in these repositories: +* https://github.com/96boards/android_hardware_ti_wpan +* https://github.com/96boards/android_external_wpa_supplicant_8 +* https://github.com/96boards/android_device_linaro_hikey +* https://github.com/96boards/android_manifest + +*Build setup:* + +Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html + +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +bc. ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp + +*Download the code:* + +bc. $ mkdir android/ +$ cd android/ + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +*Build the image:* + +bc. $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1\ +> -g "default,-device,hikey" +$ cd .repo/ +$ git clone https://github.com/96boards/android_manifest -b android-5.0 local_manifests +$ cd - +$ repo sync -j8 +$ source build/envsetup.sh +$ lunch hikey-userdebug +$ make droidcore -j8 +$ cd out/target/product/hikey + +h4. TODO + +* Update to reflect the latest/current build diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md new file mode 100644 index 0000000..a8f9ccd --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md @@ -0,0 +1,53 @@ +h3. Boot Loader + +Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. + +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.10-hikey +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-hikey +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md new file mode 100644 index 0000000..ea36329 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md @@ -0,0 +1,88 @@ +h2. Install Instructions - CE AOSP RPB 15.10 - HiKey + +This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.10, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE AOSP RPB 15.10 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader +* Linux Kernel: +** Derived from Linux 3.18 kernel +** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git +** Branch: *hikey* +* AOSP Android Marshmallow 6.0 + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.5* +* Extra firmware files available from firmware-linux +* Mali (requires EULA) + +h3. Downloading the pre-built binaries + +The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/ptable-aosp.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/hisi-idt.py + +*CE AOSP RPB image:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/boot_fat.uefi.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/cache.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/userdata.img.tar.xz + +Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz and follow the instructions to download the file. + +Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: + +bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 +sudo fastboot flash ptable ptable-aosp.img +sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-aosp.img@), otherwise flashing the system image might fail. + +h4. Boot, System, Cache and Userdata + +Fastboot is required to flash boot, system, cache and userdata. + +Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash the images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot, cache, system and userdata:* + +bc. sudo fastboot flash boot boot_fat.uefi.img +sudo fastboot flash cache cache.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferencePlatform + diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md new file mode 100644 index 0000000..d94b908 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md @@ -0,0 +1,85 @@ +h2. Install Instructions - CE Debian RPB 15.10 - HiKey + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE Debian RPB 15.10 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-hikey-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay +** Kernel and initrd loaded from the rootfs (under /boot) + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.6* +* Extra firmware files available from firmware-linux +* Mali (not yet included by default) + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/ptable-linux.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/hisi-idt.py + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-boot-linux-20151106-31.uefi.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz +gunzip hikey-* + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 +sudo fastboot flash ptable ptable-linux.img +sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-linux.img@), otherwise flashing the rootfs might fail. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot hikey-boot-linux-20151106-31.uefi.img +sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferenceSoftware diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..a7f56c2 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/HiKey/README.md @@ -0,0 +1,24 @@ +# HiKey Reference Platform Build - 15.10 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| [CE Debian RPB - 15.10](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/) | +|:------|:------| +| [Install instructions](InstallDebianRPB-15.10.md) | +| [Build from source](BFSDebianRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/CE-Debian-RPB-15.10-HiKey-TestReport.pdf) | + + + +| [CE AOSP RPB - 15.10](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/) | +|:------|:------| +| [Install instructions](InstallAOSP-15.10.md) | +| [Build from source](BFSAOSPRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/CE-AOSP-RPB-15.10-HiKey-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/Highlights.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/Highlights.md new file mode 100644 index 0000000..52be04b --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/Highlights.md @@ -0,0 +1,16 @@ +# Highlights + +The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). + +While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at https://builds.96boards.org/releases/dragonboard410c/ and https://builds.96boards.org/releases/hikey/. + +##### Highlights for this release: + +- CE Debian RPBs: + - Debian 8.2 "Jessie" + - 4.3 kernel (with additional patches) + - OpenJDK 8 included by default + - 96Boards artworks and default settings +- CE AOSP RPB: + - AOSP Android Marshmallow 6.0 + - 3.18 based kernel diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/Known-Issues.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/Known-Issues.md new file mode 100644 index 0000000..03c5da1 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/Known-Issues.md @@ -0,0 +1,56 @@ +## Reference Platform Build - 15.10 Release - Known Issues + +### UEFI - HiKey + +- "Bug 117":https://bugs.96boards.org/show_bug.cgi?id=117 - UEFI fastboot uploads hangs for large images + - Workaround is to use the fastboot support provided by the ARM TF (@bl1.bin@, provided by the binary @l-loader.bin@) + +### Debian + +#### HiKey + +- Mali not supported, missing kernel and userspace support +- [Bug 20](https://bugs.96boards.org/show_bug.cgi?id=20) - USB kernel trace errors -22 +- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete +- [Bug 86](https://bugs.96boards.org/show_bug.cgi?id=86) - Debian ALIP: resize UI screen when underlying DRM resolution changed. +- [Bug 143](https://bugs.96boards.org/show_bug.cgi?id=143) - Mouse cursor invisible after boot (until you open an application) +- [Bug 144](https://bugs.96boards.org/show_bug.cgi?id=144) - Shutdown is not clean +- [Bug 145](https://bugs.96boards.org/show_bug.cgi?id=145) - Thermal sensor is not readable +- [Bug 147](https://bugs.96boards.org/show_bug.cgi?id=147) - Highest resolution of 1080p monitor cannot be detected +- [Bug 148](https://bugs.96boards.org/show_bug.cgi?id=148) - Bluetooth doesn't work +- [Bug 150](https://bugs.96boards.org/show_bug.cgi?id=150) - Cannot login when the screen is locked +- [Bug 151](https://bugs.96boards.org/show_bug.cgi?id=151) - glxgears: couldn't get an RGB, Double-buffered visual +- [Bug 152](https://bugs.96boards.org/show_bug.cgi?id=152) - SD-Card doesn't work +- [Bug 159](https://bugs.96boards.org/show_bug.cgi?id=159) - No sound cards found +- [Bug 160](https://bugs.96boards.org/show_bug.cgi?id=160) - Behaviors of power on button not following hardware user guide + +#### DragonBoard 410c + + - Freedreno graphics driver not provided by the image + -Newer mesa, libdrm and freedreno xorg driver is needed (to be available as part of the next release) + - Workaround is to enable the qcom overlay PPA, and install the required packages: + +``` +sudo su - +echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list +apt-get update +apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno +reboot +``` + +- Slow USB throughput: https://www.96boards.org/forums/topic/super-slow-usb/ +- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete +- [Bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) - Cannot soft power off or shutdown db410c +- [Bug 154](https://bugs.96boards.org/show_bug.cgi?id=154) - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) +- [Bug 156](https://bugs.96boards.org/show_bug.cgi?id=156) - HDMI resolution change not workin +- [Bug 157](https://bugs.96boards.org/show_bug.cgi?id=157) - HDMI audio not working (MIGHT NOT BE A BUG) +- [Bug 165](https://bugs.96boards.org/show_bug.cgi?id=165) - HDMI Display sleep - no way to wake back up + +### AOSP + +#### HiKey + +- [Bug 136](https://bugs.96boards.org/show_bug.cgi?id=136) - HDMI goes off while running CTS +- [Bug 161](https://bugs.96boards.org/show_bug.cgi?id=161) - Fails to enter sleep mode +- [Bug 163](https://bugs.96boards.org/show_bug.cgi?id=163) - HDMI audio not working +- [Bug 164](https://bugs.96boards.org/show_bug.cgi?id=164) - Behaviors of power on button not following hardware user guide diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.10/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.10/README.md new file mode 100644 index 0000000..7a92254 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.10/README.md @@ -0,0 +1,12 @@ +# Reference Platform Build - 15.10 + +[RPB 15.10 Highlights](Highlights.md) | [RPB 15.10 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +*** + diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md new file mode 100644 index 0000000..a5c3977 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md @@ -0,0 +1,104 @@ +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-qcom +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @boot@ image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-qcom +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +h4. Building a boot image + +You now need to create a valid boot image with your own kernel build. + +On your host PC, we need to install the following tools: + +bc. sudo apt-get install device-tree-compiler +git clone git://codeaurora.org/quic/kernel/skales + +The boot image consists of the table of device tree (@dt.img@), the kernel image (@Image@) and an init ramdisk image. + +The @dtbTool@ is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. + +bc. ./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/ + +To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. + +The tool @mkbootimg@ (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: + +bc. ./skales/mkbootimg --kernel arch/arm64/boot/Image \ + --ramdisk initrd.img \ + --output boot-db410c.img \ + --dt dt.img \ + --pagesize 2048 \ + --base 0x80000000 \ + --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" + +h4. Booting a custom boot image + +Assuming you have now built a valid boot image called @boot-db410c.img@, you can run the following @fastboot@ command to boot it on the board: + +bc. sudo fastboot boot boot-db410c.img + +If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the @boot@ partition: + +bc. sudo fastboot flash boot boot-db410c.img + +h4. How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on "Qualcomm Developer Network":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip, the second stage bootloader is @LK@ and is open source. + +The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the "Linaro Qualcomm Landing Team git repository":https://git.linaro.org/landing-teams/working/qualcomm/lk.git: + +bc. git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 + +To build the LK bootloader, you can use the following instructions: + +bc. git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- + +The second stage bootloader is flashed on the @aboot@ partition, you can now flash your board with: + +bc. sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md new file mode 100644 index 0000000..59fc76a --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md @@ -0,0 +1,81 @@ +h2. Install Instructions - CE Debian RPB 15.12 - Dragonboard410c + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for Dragonboard410c. + +For more information about the Dragonboard410c development board, please check "https://www.96boards.org/products/ce/dragonboard410c/":https://www.96boards.org/products/ce/dragonboard410c/ + +h3. Image Components + +The CE Debian RPB 15.12 - Dragonboard410c build is composed of the following artifacts: + +* Bootloader: +** "Qualcomm proprietary first stage bootloader":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip +** "Little Kernel":https://git.linaro.org/landing-teams/working/qualcomm/lk.git as second stage boot loader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-qcom-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay + +h4. Closed source binaries + +This release contains proprietary firmware. You can also download the proprietary firmware separately, from "here":https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin. All the required firmware files are pre-installed, and the image is bound to the following "license agreement":https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt. + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +Download the latest bootloader zip from "http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest":http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest (look for dragonboard410c_bootloader_emmc_linux*.zip) + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-boot-linux-20151214-35.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip dragonboard410c-* + +h3. Flashing + +h4. Bootloader + +Flash the eMMC with the bootloader: + +* Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. +* Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC +* Assure micro SD Card slot is empty on the DB410c +* Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} +* Power on the DB410c into fastboot mode +** Press and hold the Vol (-) button on the DB410c (S4) +** While pressing S4 button, power up the DB410c. It will come up in fastboot mode +* From the host PC terminal window, run the following commands: + +bc. # Check to make sure fastboot device connected. If not resolve +sudo fastboot devices +# cd to the directory the bootloader zip file was extracted +cd +sudo ./flashall + +The bootloader is now installed on the DB410c. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot dragonboard410c-boot-linux-20151214-35.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform + +In the case that the board experiences an irrecoverable error and no longer function, please check the "rescue image guide":https://github.com/96boards/documentation/wiki/Dragonboard-410c-Installation-Guide-for-Linux-and-Android#create--install-a-rescue-image diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..4245bd0 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,14 @@ +## Dragonboard™ 410c - Reference Platform Build - 15.12 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 15.12** | +|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md new file mode 100644 index 0000000..0b74369 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md @@ -0,0 +1,37 @@ +h4. Building AOSP from source + +Additional AOSP repositories are hosted at: +* https://github.com/96boards/android_hardware_ti_wpan +* https://github.com/96boards/android_device_linaro_hikey +* https://github.com/96boards/android_manifest +* https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +*Build setup:* + +Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html + +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +bc. ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp + +*Download the code:* + +bc. mkdir android/ +cd android/ + +Download and extract the Mali vendor binaries in the above directory: "http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2":http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +*Build the image:* + +bc. repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hikey diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md new file mode 100644 index 0000000..f3a7c58 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md @@ -0,0 +1,53 @@ +h3. Boot Loader + +Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. + +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-hikey +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-hikey +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md new file mode 100644 index 0000000..30edc3e --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md @@ -0,0 +1,112 @@ + +h2. Install Instructions - CE AOSP RPB 15.12 - HiKey + +This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE AOSP RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader +* Linux Kernel: +** Derived from Linux 4.1 kernel +** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git +** Branch: *android-hikey-linaro-4.1* +* AOSP Android Marshmallow 6.0 + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.5* +* Extra firmware files available from firmware-linux +* Mali (requires EULA) + +h3. Downloading the pre-built binaries + +The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-4g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-8g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/hisi-idt.py + +*CE AOSP RPB image:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/boot_fat.uefi.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/cache.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata-8gb.img.tar.xz + +Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz and follow the instructions to download the file. + +Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: + +bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-aosp@ and @userdata@ files will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-aosp@), otherwise flashing the system image might fail. + +h4. Boot, System, Cache and Userdata + +Fastboot is required to flash boot, system, cache and userdata. + +*Flashing boot, cache, system and userdata:* + +Enable fastboot (either via recovery or by changing the boot jumpers), and then just flash the required files: + +bc. sudo fastboot flash boot boot_fat.uefi.img +sudo fastboot flash cache cache.img +sudo fastboot flash system system.img +sudo fastboot flash nvme nvme.img + +Then on a 4G compatible device: + +bc. sudo fastboot flash userdata userdata.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash userdata userdata-8gb.img + + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don't have any sd card in place (since it first tries to boot from sd card, boot order can be changed with @sudo fastboot oem bootdevice [emmc|sd]@), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md new file mode 100644 index 0000000..9ce2d83 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md @@ -0,0 +1,97 @@ +h2. Install Instructions - CE Debian RPB 15.12 - HiKey + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE Debian RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-hikey-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay +** Kernel and initrd loaded from the rootfs (under /boot) + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.6* +* Extra firmware files available from firmware-linux +* Mali (not yet included by default) + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-4g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-8g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/hisi-idt.py + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-boot-linux-20151214-35.uefi.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip hikey-* + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-linux@ file will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Make sure to reboot the board after updating the partition table (@ptable-linux@), otherwise flashing the rootfs might fail. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +To avoid bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot hikey-boot-linux-20151214-35.uefi.img +sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don’t have any sd card in place (since it first tries to boot from sd card, boot order can be changed with sudo fastboot oem bootdevice [emmc|sd]), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..eff7304 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/HiKey/README.md @@ -0,0 +1,18 @@ +# HiKey Reference Platform Build - 15.12 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +#### HiKey + +| **CE Debian RPB - 15.12** | **CE AOSP RPB - 15.12** | +|:------------------------------------------------------:|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | [Install Instructions](InstallAOSPRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | [Build from Source](BFSAOSPRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | + +*** diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/Highlights.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/Highlights.md new file mode 100644 index 0000000..32a601c --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/Highlights.md @@ -0,0 +1,49 @@ +## Reference Platform Builds - 15.12 + +The *15.12* release is the second release for the Reference Software Platform project, and for the first time also including support for the Enterprise Edition. Since there is still no availability for the 96Boards HuskyBoard, the first EE RPB was produced using the current enterprise development boards that are available in Linaro, such as HiSilicon D02 and AMD Overdrive (same SoC from HuskyBoard, known as Seattle). Once HuskBoard is available, the work for making it supported by the EE RPB should be minimal. + +A lot of work was put in place for the EE RPB, covering firmware (UEFI/EDK2), Linux 4.4 (with ACPI), Debian Jessie/CentOS 7 network installers, OpenStack Liberty, Hadoop, Spark and a few others, consolidating the work from several other Linaro groups and teams as well as from community and members. + +For the Consumer Edition the CE AOSP RPB for Hikey is now using a 4.1 based kernel, closer to what is provided directly by AOSP. We decided to not push major updates and rebases for the CE Debian RPB kernel since we want the changes to follow the same [kernel policy](../../KernelPolicy.md) as used by the EE kernel. The goal of having one single tree for both CE and EE, with a strict upstream-based policy will continue, and we hope to have more news on that during the upcoming weeks. + +The work for the CE OE/Yocto RPB was also started, but unfortunately not yet covering a single machine (due lack of a single kernel). Please check [https://github.com/96boards/meta-rpb](https://github.com/96boards/meta-rpb) and https://github.com/96boards/oe-rpb-manifest to see what was already done for OpenEmbedded. + +##### Highlights for this release: + +###### Enterprise Edition + +- Firmware: + - UEFI/EDK2 support for D02, provided by OpenPlatformPkg +- Linux: + - 4.4-rc4 based, including support for D02 and Overdrive + - ACPI support for D02 and Overdrive (mandatory for the enterprise edition) +- Distributions: + - Debian Jessie network installer (using latest kernel) + - CentOS 7 network installer (alpha state) +- Enterprise Components: + - Docker 1.9.1 + - OpenStack Liberty + - ODPi BigTop (Hadoop, Spark, etc) + - OpenJDK 8 + +###### Consumer Edition + +- CE Debian RPB for DragonBoard410 and HiKey (including support for the LeMaker version): + - Debian 8.2 "Jessie" + - 4.3 kernel (with additional patches) + - OpenJDK 8 included by default + - 96Boards artwork and default settings +- CE AOSP RPB for HiKey (including support for the LeMaker version): + - AOSP Android Marshmallow 6.0 + - 4.1 based kernel + +The complete list of known issues for this release: [Known Issues](Known-Issues.md) + +##### Enterprise + +- [UEFI/EDK2](https://builds.96boards.org/releases/reference-platform/components/uefi/15.12/) for HiSilicon D02 +- [Kernel 4.4-rc4](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/) tested with D02 and Overdrive +- [Debian (Jessie) Installer](https://builds.96boards.org/releases/reference-platform/components/debian-installer/15.12/) tested with D02 and Overdrive (shipping kernel 4.4-rc4 by default) +- [OpenStack Liberty]() for Debian Jessie +- [ODPi Hadoop]() for Debian Jessie +- [EE Debian Test Report](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/EE-Debian-RPB-15.12-TestReport.pdf) diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/Known-Issues.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/Known-Issues.md new file mode 100644 index 0000000..c9025ff --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/Known-Issues.md @@ -0,0 +1,73 @@ +## Reference Platform Build - 15.12 Release - Known Issues + +### Enterprise + +#### Kernel + +- "Bug 1966":https://bugs.linaro.org/show_bug.cgi?id=1966 - KVM errors when booting on overdrive and d02 + +#### HiSilicon D02 + +- "Bug 1965":https://bugs.linaro.org/show_bug.cgi?id=1965 - D02: kernel unable to find valid mac for the network interfaces +- "Bug 1967":https://bugs.linaro.org/show_bug.cgi?id=1967 - D02: unhandled level 3 permission fault (11) +- "Bug 1975":https://bugs.linaro.org/show_bug.cgi?id=1975 - D02: Kernel can only see 2GB of memory (from 8GB) +- *SATA*: Due to bugs in the SATA controller, there is a risk of disk corruption when installing to a SATA disk. This is expected to be fixed in subsequent silicon revisions. +- *SAS*: not yet supported in EDK2. For it to work on linux only, this "patch":https://git.linaro.org/uefi/OpenPlatformPkg.git/commit/96d58c4318584f066b1bb7f1c48b72e7e25cf709 needs to be reverted on UEFI/EDK2, but then an alternative boot method needs to be used (since UEFI/EDK2 is unable to load grub/kernel from SAS). + +#### AMD Overdrive + +- UEFI/EDK2 is not yet supported + +### Debian + +#### HiKey + +- Mali not supported, missing kernel and userspace support +- "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 +- "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete +- "Bug 86":https://bugs.96boards.org/show_bug.cgi?id=86 - Debian ALIP: resize UI screen when underlying DRM resolution changed. +- "Bug 143":https://bugs.96boards.org/show_bug.cgi?id=143 - Mouse cursor invisible after boot (until you open an application) +- "Bug 144":https://bugs.96boards.org/show_bug.cgi?id=144 - Shutdown is not clean +- "Bug 145":https://bugs.96boards.org/show_bug.cgi?id=145 - Thermal sensor is not readable +- "Bug 147":https://bugs.96boards.org/show_bug.cgi?id=147 - Highest resolution of 1080p monitor cannot be detected +- "Bug 148":https://bugs.96boards.org/show_bug.cgi?id=148 - Bluetooth doesn't work +- "Bug 151":https://bugs.96boards.org/show_bug.cgi?id=151 - glxgears: couldn't get an RGB, Double-buffered visual +- "Bug 152":https://bugs.96boards.org/show_bug.cgi?id=152 - SD-Card doesn't work +- "Bug 159":https://bugs.96boards.org/show_bug.cgi?id=159 - No sound cards found +- "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide +- "Bug 166":https://bugs.96boards.org/show_bug.cgi?id=166 - Support 8GB emmc +- "Bug 211":https://bugs.96boards.org/show_bug.cgi?id=211 - Fails to enter fastboot mode from grub boot menu + +#### DragonBoard 410c + +- Freedreno graphics driver not provided by the image + - Newer mesa, libdrm and freedreno xorg driver is needed (work in progress to be included by default as part of the next release) + - Workaround is to enable the qcom overlay PPA, and install the required packages: + +```shell +sudo su - +echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list +apt-get update +apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno +reboot +``` + +* Slow USB throughput: "https://www.96boards.org/forums/topic/super-slow-usb/":https://www.96boards.org/forums/topic/super-slow-usb/ +* "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete +* "Bug 121":https://bugs.96boards.org/show_bug.cgi?id=121 - Cannot soft power off or shutdown db410c +* "Bug 154":https://bugs.96boards.org/show_bug.cgi?id=154 - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) +* "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide +* "Bug 207":https://bugs.96boards.org/show_bug.cgi?id=208 - Bluetooth does not work on Dragonboard debian +* "Bug 208":https://bugs.96boards.org/show_bug.cgi?id=208 - Real Time clock not working: due to /dev/rtc not found + +### AOSP + +#### HiKey + +* "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 +* "Bug 124":https://bugs.96boards.org/show_bug.cgi?id=124 - CPU frequency will be reset to lowest when it is heavily loaded +* "Bug 136":https://bugs.96boards.org/show_bug.cgi?id=136 - HDMI goes off while running CTS +* "Bug 163":https://bugs.96boards.org/show_bug.cgi?id=163 - HDMI audio not working +* "Bug 164":https://bugs.96boards.org/show_bug.cgi?id=164 - Behaviors of power on button not following hardware user guide +* "Bug 180":https://bugs.96boards.org/show_bug.cgi?id=180 - Shutdown cannot turn off HDMI monitor +* "Bug 204":https://bugs.96boards.org/show_bug.cgi?id=204 - File download crashes the build-in browser diff --git a/Reference-Platform/Platforms/Consumer/RPB_15.12/README.md b/Reference-Platform/Platforms/Consumer/RPB_15.12/README.md new file mode 100644 index 0000000..25ef139 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_15.12/README.md @@ -0,0 +1,13 @@ +# Reference Platform Build - 15.12 + +[RPB 15.12 Highlights](Highlights.md) | [RPB 15.12 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [D02](EnterpriseEdition/D02/README.md) +- [Overdrive](EnterpriseEdition/Overdrive/README.md) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..15f676d --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted at: +- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) +- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) +- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) +- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) +- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) +- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) + +*Build setup:* + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +Also install make sure to install the following packages: + +```shell +sudo apt-get install libfdt-dev python-mako get text +``` + +*Download the firmware blobs:* + +```shell +mkdir android/ +cd android/ +mkdir -p vendor/db410c +cd vendor/db410c +wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin +sh firmware-410c-1.2.0.bin +cd - +``` + +*Build the image:* + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 +cd .repo +git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch db410c-userdebug +make droidcore -j8 +cd out/target/product/db410c +``` + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md new file mode 100644 index 0000000..d0a3461 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md @@ -0,0 +1,280 @@ +## Debian RPB 16.03 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain and Skales Tool + - Step 3: Export path to cross compiler tool and confirm version + - Step 4: Clone the Reference Platform kernel + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target DragonBoard™ 410c + - [Step 12: Generate the initramfs + - [Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +tag: 96b-kernelci +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir` and call is something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir DB410c-16.03 +$ cd DB410c-16.03 +``` + +#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +``` + +###### Skales tool + +```shell +$ sudo apt-get install libfdt-dev +$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales +$ export PATH=$PATH:/tmp/skales +``` +>Skales will be used later when creating the device tree + + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes + +```shell +$ git clone -b 96b-kernelci http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- Once kernel source has been cloned cd into its directory + +```shell +$ cd kernel +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX +``` + +#### Step 7: Copy Modules + +- Modules must be local (host computer) before transferring to target device +- Still within linux directory +- Make temp folder +- Create modules + +```shell +$ mk tmp/modules +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 +``` + +#### Step 8: Find kernel release string + +- This was created during the kernel build +- In this example the kernel.release is 4.4.0+ + +```shell +$ cat include/config/kernel.release +#Output +$ 4.4.0+ +``` + +#### Step 9: Generate modules.dep and map files + +- Helps kernel find modules when system boots +- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 + +```shell +$ depmod -a -b /tmp/modules 4.4.0+ +``` + +#### Step 10: Find DragonBoard™ 410c IP Address + +- On your DragonBoard™ 410c +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 11: Transfer the modules to the target DragonBoard™ 410c + +- Using your board's IP Address for linaro@ + +```shell +$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules +$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#DragonBoard™ 410c shell +db410c $ tar -jxvf modules.tar.bz2 +db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ +``` + +#### Step 12: Generate the initramfs + +- You should still be in the DragonBoard™ 410c shell + +```shell +db410c $ sudo update-initramfs -k 4.4.0+ -c +``` + +- Copy back the new initramfs +- This will be used when creating the boot.mg + +#### Step 13: Create the device tree image and boot image + +###### Device tree + +```shell +$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom +``` + +###### Boot image + +```shell +$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" +``` + +Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. + +- Flashing the boot image can be done using fastboot +- Board must be booted into fastboot mode +- With USB to microUSB cable still connect execute the following: + +```shell +$ sudo fastboot flash boot boot.img +$ sudo fastboot reboot +``` + +*** + +### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +```shell +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +```shell +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `about` partition, you can now flash your board with: + +```shell +sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn +``` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TO-DO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..ef52214 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md @@ -0,0 +1,155 @@ +[]() +[]() +[]() +[]() +[]() + +>**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Android Bootloader and Boot file + +- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) +- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +#### Step 3: Download all remaining files + +- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) +- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) +- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Android using Fastboot with Linux host + +This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +fastboot devices +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +cd + +#Example: +cd dragonboard410c_bootloader_emmc_android +# = dragonboard410c_bootloader_emmc_android + +# This command will execute the flashall script within the bootloader folder +./flashall + +``` + +5 - **Recall location of all downloaded files from downloads page** + +This will include the files listed below: + +###### Reference Platform files + +- boot.img.tar.xz +- system.img.tar.xz +- userdata.img.tar.xz +- cache.img.tar.xz + +6 - **Unzip all files** + +7 - **Flash all files to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of all extracted(unzipped) files +- `cd` to the directory with your unzipped files +- From within extraction directory, execute the following commands: + +###### Reference Platform + +```shell +# (Once again) Check to make sure fastboot device connected +sudo fastboot devices + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the downloads +sudo fastboot flash boot boot.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img +sudo fastboot flash cache cache.img +``` + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into Android lock screen. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md new file mode 100644 index 0000000..56b81fd --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md @@ -0,0 +1,153 @@ +[]() +[]() +[]() +[]() +[]() + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian Bootloader and Boot file + +- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) +- Debian Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) + +#### Step 3: Download Root File System + +- Debian Rootfs (Desktop) ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Wait for about 20 seconds. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +$ fastboot devices +``` + +Typically it will show as bellow +```shell +de82318 fastboot +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` +- XX represents the release number of the Bootloader +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +$ cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +$ cd + +#Example: +cd dragonboard410c_bootloader_emmc_linux-40 +# = dragonboard410c_bootloader_emmc_linux-40 +#This example took place during release 40 + +# This command will execute the flashall script within the bootloader folder +$ ./flashall + +``` + +5 - **Recall location of `boot` and `rootfs` download from the downloads page** + +- You should have downloaded the `boot` file +- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) + +6 - **Unzip both 'boot' and 'rootfs' files** + +7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of extracted(unzipped) `boot` file +- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) +- `cd` to the directory with your unzipped `boot` and `rootfs` files +- From within extraction directory, execute the following commands: + +```shell +# (Once again) Check to make sure fastboot device connected +$ sudo fastboot devices +# It will show similar to bellow if the device is connected successfully +de82318 fastboot + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the boot and rootfs downloads +$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img +$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img +``` +**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into either command line or desktop depending on rootfs + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md new file mode 100644 index 0000000..d64f135 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md @@ -0,0 +1,212 @@ +## OpenEmbedded RPB 16.03 - Build from Source + +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +## OE Layers + +| Layer | Description | +|:-----------------------:|:----------------------| +| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | +| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | +| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | +| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | +| Meta-qt5 | This is a cross-platform toolkit. | +| Meta-linaro | This layer is used to get the Linaro toolchain. | +| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | +| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..cbabbe6 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,32 @@ +## Dragonboard™ 410c - Reference Platform Build - 16.03 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 16.03** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-16.03.md) | +| [Build from Source](BFSDebianRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | + +*** + +| **CE AOSP RPB - 16.03**
(Developer Preview) | +|:---------------------------:| +| [Install Instructions](InstallAOSPRPB-16.03.md) | +| [Build from Source](BFSAOSPRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/CE-AOSP-RPB-16.03-DB410c-TestReport.pdf) | + +*** + + +| **CE OpenEmbedded - 16.03** | +|:-----------------------------:| +| [Install Instructions](InstallOERPB-16.03.md) | + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..8823ad6 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted here: +- https://github.com/96boards/android_hardware_ti_wpan +- https://github.com/96boards/android_device_linaro_hikey +- https://github.com/96boards/android_manifest +- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +**Build setup:** + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +###### Out of date: +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +```shell + ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp +``` + +*** + +**Download the code:** + +```shell +mkdir android/ +cd android/ +``` + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +**Build the image:** + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hiked +``` diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md new file mode 100644 index 0000000..ee85550 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md @@ -0,0 +1,185 @@ +## Debian RPB 16.03 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain + - Step 3: Export path to cross compiler tool and confirm version + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image and debian package + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target HiKey + - Step 12: Generate the initramfs + - Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.03 +defconfig: arch/arm64/configs/distro.config +``` + +The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir`, name it something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir HiKey-16.03 +$ cd HiKey-16.03 +``` + +#### Step 2: Step 2: Download the Linaro cross compiler toolchain + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +``` + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=~/Desktop/HiKey-16.03/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes +- Use **96b/releases/2016.03** if you want the same version used by the 16.03 release + +```shell +$ git clone -b 96b/releases/2016.03 http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process +- Once kernel source has been cloned cd into its directory + +```shell +$ cd linux +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ cp arch/arm64/configs/distro.config .config +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image and debian package + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory +- Creating the kernel package is recommended for HiKey, as it supports Grub 2 + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag +``` + +#### Step 7: Find HiKey IP Address + +- On your HiKey board +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 8: Transfer the modules to the target HiKey + +- Using your board's IP Address for linaro@ + +```shell +$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#HiKey shell + +$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb +``` +Congratulations! Your new kernel is now ready to be used by your HiKey. + +- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel +- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated + +### Boot Loader + +Please see [https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source](https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source) for instructions on how to built the boot loader from source. + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +```shell +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md new file mode 100644 index 0000000..076028b --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md @@ -0,0 +1,83 @@ +## Building from source + +The source code is available from: +- [**l-loader**](https://github.com/96boards-hikey/l-loader) +- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) +- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) + +Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. + +### Build instructions + +Prerequisites: +- GCC 5.3 cross-toolchain for Aarch64 available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) +- GCC 5.3 cross-toolchain for gnueabihf available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) +- GPT fdisk (gdisk package from your favorite distribution). + +#### Installing pre-built toolchain(s) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +```shell +git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git +git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git +git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git +git clone https://github.com/96boards-hikey/l-loader.git +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building EDK2/UEFI for HiKey + +Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. + +To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export EDK2_DIR=${PWD}/edk2 +export ATF_DIR=${PWD}/arm-trusted-firmware +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${EDK2_DIR} +rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg +${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} hikey +``` + +And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): + +```shell +cd ../l-loader +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin +make # requires sudo for creating the partition tables +``` + +The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. + +#### EFI boot partition + +The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). + +```shell +wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi +mkdir boot-fat +dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 +sudo mkfs.fat -n "boot" boot-fat.uefi.img +sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat +sudo mkdir -p boot-fat/EFI/BOOT +sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi +sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi +sudo umount boot-fat +sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img +rm -rf boot-fat +``` + +Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..317256b --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md @@ -0,0 +1,126 @@ +#### Your Build Choice + +[]() +[]() +[]() +[]() +[]() + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download the following files + +>Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +Build Folders (**Binaries** / **Image**) + +- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) +- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) +- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) +- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) +- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) +- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) +- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) +- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) +- **system.img.tar.xz** (**Download**) + +*** + +#### Step 3: Install AOSP Using Fastboot with Linux host + +This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Set HiKey into Recovery Mode using J15 header** + +- Remove link between pins 5 and 6 +- Link pins 1 and 2 +- Link pins 3 and 4 + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | closed +GPIO3-1 | Link 5-6 | open + +4 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable ptable-aosp-8g.img +$ sudo fastboot reboot +$ sudo fastboot flash boot boot_fat.uefi.img +$ sudo fastboot flash cache cache.img +$ sudo fastboot flash system system.img +$ sudo fastboot flash userdata userdata-8gb.img +``` + +5 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 3-4 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md new file mode 100644 index 0000000..2928cb4 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md @@ -0,0 +1,111 @@ + + + + + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian partition table + +> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +**ptable-linux.img** ([**4G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-4g.img) / [**8G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-8g.img)) + +*** + +#### Step 3: Download Boot image and Root File System + +- **Debian Boot** ([**Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/hikey-boot-linux-*.uefi.img.gz)) +- **Debian Rootfs** (**Download**) + + +*** + +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. + + + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Wait for about 10 seconds +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable .img +$ sudo fastboot reboot +$ sudo fastboot flash boot .uefi.img +$ sudo fastboot flash system hikey-jessie_alip_2015MMDD-nnn-Xg.emmc.img +``` + +4 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 5-6 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..0761a72 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/HiKey/README.md @@ -0,0 +1,24 @@ +# HiKey Reference Platform Build - 16.03 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +#### HiKey + + + +| **CE Debian RPB - 16.03** | **CE AOSP RPB - 16.03** | +|:-----------------------------:|:---------------------------:| +| [Install Instructions](InstallDebianRPB-16.03.md) | [Install Instructions](InstallAOSPRPB-16.03.md) | +| [Build from Source](BFSDebianRPB-16.03.md) | [Build from Source](BFSAOSPRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/CE-Debian-RPB-16.03-HiKey-TestReport.pdf) | [Test Report](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/CE-AOSP-RPB-16.03-HiKey-TestReport.pdf) | + + +*** + +Access **bootloader** build from source instructions [here](BuildSourceBL.md) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Cello/README.md new file mode 100644 index 0000000..3a63c2b --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Cello/README.md @@ -0,0 +1,60 @@ +### LeMaker Cello + +*** + +### Critical Bug List + +As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once we get a functional Realtek UEFI driver, it will also be possible to PXE boot the installer. + +Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (EDK2). + +Since the EDK2 based firmware is not yet public (work in progress), internal access to the tree/binary is required. Email your board point of contact for further information on how to download the required firmware. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +### Quick Start + +Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Distro Installers + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D02/README.md new file mode 100644 index 0000000..a126caa --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D02/README.md @@ -0,0 +1,64 @@ +### D02 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### D02 - QuickStart + +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.03 kernel **requires** the 16.03 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D03/README.md new file mode 100644 index 0000000..3529558 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/D03/README.md @@ -0,0 +1,64 @@ +### D03 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.11*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### D03 - QuickStart + +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/](https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.06-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.06-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md new file mode 100644 index 0000000..ad1eadd --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md @@ -0,0 +1,44 @@ +## Setting up DHCP/TFTP server for UEFI distro network installers + +A simple way to install the major Linux Distributions (e.g. Debian, Fedora, CentOS, openSUSE, etc) is by booting the network installer via PXE. In order to have a working PXE environment, a DHCP and TFTP server is required, which is responsible for providing the target device a valid IP configuration and the required files to boot the system (usually Grub 2 + kernel + initrd). + +In order to simplify the setup, this document will use dnsmasq, which is a lightweight, easy to configure DNS forwarder and DHCP server with BOOTP/TFTP/PXE functionality. + +### Installing and configuring dnsmasq + +Debian/Ubuntu: + +```shell +sudo apt-get install dnsmasq +``` + +Fedora/CentOS/RHEL: + +```shell +yum install dnsmasq +``` + +This guide assumes you already know the network interface that will provide the DHCP/TFTP/PXE functionality for the target device. In this case, we are using _eth1_ as our secondary interface, with address _192.168.3.1_. + +Following is the /etc/dnsmasq.conf providing the required functionality for PXE: + +```shell +interface=eth1 +dhcp-range=192.168.3.10,192.168.3.100,255.255.255.0,1h +dhcp-boot=BOOTAA64.EFI +enable-tftp +tftp-root=/srv/tftp +``` + +Check [http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html) for more information and additional dnsmasq config options. + +Now make sure the tftp-root directory is available, and then start/restart the dnsmasq service: + +```shell +sudo mkdir -p /srv/tftp +sudo systemctl restart dnsmasq +``` + +Since we require UEFI support for the Reference Platform Software Enterprise Edition (EE-RPB), this document doesn't cover the traditional pxelinux specific configuration (used with the traditional BIOS setup). + +For UEFI, we only require DHCP to provide the UEFI binary name (retrieved via TFTP), which in this case is the Grub 2 bootloader (which then loads the kernel, initrd and other extra files from the TFTP server). diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md new file mode 100644 index 0000000..66581be --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -0,0 +1,52 @@ +### HP ProLiant m400 + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md new file mode 100644 index 0000000..985fb61 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md @@ -0,0 +1,216 @@ +## Installing CentOS 7.2 15.11 - Reference Platform Enterprise + +This guide is not to be a replacement of the official CentOS Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64](https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required CentOS 7 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +```shell +sudo su - +cd /srv/tftp/ +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/BOOTAA64.EFI +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/grubaa64.efi +``` + +#### Downloading the CentOS installer from the Reference Platform 16.03 release (4.4.0 RP Kernel): + +```shell +mkdir /srv/tftp/centos7 +cd /srv/tftp/centos7 +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/vmlinuz +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.repo=http://mirror.centos.org/altarch/7/os/aarch64/ inst.ks=file:/ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +**Note:** `inst.ks` is required because of the additional linaro-overlay repository (which contains the reference platform kernel rpm package), which is available inside the `initrd.img`. The `inst.ks` contains only one line, which is used by the installer to fetch and install the right kernel package. The content: `repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/`. + +Also check the [RHEL 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html) and the [anaconda documentation](https://rhinstaller.github.io/anaconda/boot-options.html) for additional boot options. One example is using **ip=eth1:dhcp** if you want to use the second network interface as default. + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── centos7 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 15:14:55, Feb 9 2016 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000e80000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 15:18:14 on Feb 9 2016) +Version 2.17.1249. Copyright (C) 2016 American Megatrends, Inc. +BIOS Date: 02/09/2016 15:15:23 Ver: ROD1001A00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install CentOS 7 ARM 64-bit - Reference Platform - 16.03 +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 +[ 0.000000] Boot CPU: AArch64 Processor [411fd072] +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 +... +Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! +... +dracut-initqueue[610]: RTNETLINK answers: File exists +dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current +dracut-initqueue[610]: Dload Upload Total Spent Left Speed +100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 +... +Welcome to CentOS Linux 7 (AltArch)! +... +Starting installer, one moment... +anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +21:06:29 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: 2 +[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. + +### Automating the installation with kickstart + +It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. + +Kickstart example: + +```shell +cmdline +url --url="http://mirror.centos.org/altarch/7/os/aarch64/" +repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ +repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ +repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ +lang en_US.UTF-8 +keyboard us +timezone --utc Etc/UTC +auth --useshadow --passalgo=sha512 +rootpw --lock --iscrypted locked +firewall --disabled +firstboot --disabled +selinux --disabled +reboot +network --bootproto=dhcp --device=eth0 --activate --onboot=on +ignoredisk --only-use=sda +bootloader --location=mbr +clearpart --drives=sda --all --initlabel +part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 +part /boot --fstype=ext4 --size=512 +part / --fstype=ext4 --size=10240 --grow +part swap --size=4000 +%packages +wget +net-tools +chrony +%end +%post +useradd -m -U -G wheel linaro +echo linaro | passwd linaro --stdin +%end +``` + +#### Setting up grub.cfg + +Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. + +#### Booting the system + +Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md new file mode 100644 index 0000000..cdea0fe --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md @@ -0,0 +1,522 @@ +## Installing Debian "Jessie" 8.4 + +This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) + +### Debian Installer + +The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. + +Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. + +## Loading debian-installer from the network +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. + +#### Downloading debian-installer: + +```shell +sudo su - +cd /srv/tftp/ +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz +tar -zxvf netboot.tar.gz +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── debian-installer +│   └── arm64 +│   ├── bootnetaa64.efi +│   ├── grub +│   │   ├── arm64-efi +│   │   │   ├── acpi.mod +│   │   │   ├── adler32.mod +│   │   │   ├── all_video.mod +│   │   │   ├── archelp.mod +│   │   │   ├── bfs.mod +│   │   │   ├── bitmap.mod +│   │   │   ├── bitmap_scale.mod +│   │   │   ├── blocklist.mod +│   │   │   ├── boot.mod +│   │   │   ├── btrfs.mod +│   │   │   ├── bufio.mod +│   │   │   ├── cat.mod +│   │   │   ├── cbfs.mod +│   │   │   ├── chain.mod +│   │   │   ├── cmdline_cat_test.mod +│   │   │   ├── cmp.mod +│   │   │   ├── command.lst +│   │   │   ├── cpio_be.mod +│   │   │   ├── cpio.mod +│   │   │   ├── crc64.mod +│   │   │   ├── cryptodisk.mod +│   │   │   ├── crypto.lst +│   │   │   ├── crypto.mod +│   │   │   ├── datehook.mod +│   │   │   ├── date.mod +│   │   │   ├── datetime.mod +│   │   │   ├── diskfilter.mod +│   │   │   ├── disk.mod +│   │   │   ├── div_test.mod +│   │   │   ├── dm_nv.mod +│   │   │   ├── echo.mod +│   │   │   ├── efifwsetup.mod +│   │   │   ├── efi_gop.mod +│   │   │   ├── efinet.mod +│   │   │   ├── elf.mod +│   │   │   ├── eval.mod +│   │   │   ├── exfat.mod +│   │   │   ├── exfctest.mod +│   │   │   ├── ext2.mod +│   │   │   ├── extcmd.mod +│   │   │   ├── fat.mod +│   │   │   ├── file.mod +│   │   │   ├── font.mod +│   │   │   ├── fs.lst +│   │   │   ├── gcry_arcfour.mod +│   │   │   ├── gcry_blowfish.mod +│   │   │   ├── gcry_camellia.mod +│   │   │   ├── gcry_cast5.mod +│   │   │   ├── gcry_crc.mod +│   │   │   ├── gcry_des.mod +│   │   │   ├── gcry_dsa.mod +│   │   │   ├── gcry_idea.mod +│   │   │   ├── gcry_md4.mod +│   │   │   ├── gcry_md5.mod +│   │   │   ├── gcry_rfc2268.mod +│   │   │   ├── gcry_rijndael.mod +│   │   │   ├── gcry_rmd160.mod +│   │   │   ├── gcry_rsa.mod +│   │   │   ├── gcry_seed.mod +│   │   │   ├── gcry_serpent.mod +│   │   │   ├── gcry_sha1.mod +│   │   │   ├── gcry_sha256.mod +│   │   │   ├── gcry_sha512.mod +│   │   │   ├── gcry_tiger.mod +│   │   │   ├── gcry_twofish.mod +│   │   │   ├── gcry_whirlpool.mod +│   │   │   ├── geli.mod +│   │   │   ├── gettext.mod +│   │   │   ├── gfxmenu.mod +│   │   │   ├── gfxterm_background.mod +│   │   │   ├── gfxterm_menu.mod +│   │   │   ├── gfxterm.mod +│   │   │   ├── gptsync.mod +│   │   │   ├── grub.cfg +│   │   │   ├── gzio.mod +│   │   │   ├── halt.mod +│   │   │   ├── hashsum.mod +│   │   │   ├── help.mod +│   │   │   ├── hexdump.mod +│   │   │   ├── hfs.mod +│   │   │   ├── hfspluscomp.mod +│   │   │   ├── hfsplus.mod +│   │   │   ├── http.mod +│   │   │   ├── jfs.mod +│   │   │   ├── jpeg.mod +│   │   │   ├── keystatus.mod +│   │   │   ├── ldm.mod +│   │   │   ├── linux.mod +│   │   │   ├── loadenv.mod +│   │   │   ├── loopback.mod +│   │   │   ├── lsacpi.mod +│   │   │   ├── lsefimmap.mod +│   │   │   ├── lsefi.mod +│   │   │   ├── lsefisystab.mod +│   │   │   ├── lsmmap.mod +│   │   │   ├── ls.mod +│   │   │   ├── lssal.mod +│   │   │   ├── luks.mod +│   │   │   ├── lvm.mod +│   │   │   ├── lzopio.mod +│   │   │   ├── macbless.mod +│   │   │   ├── macho.mod +│   │   │   ├── mdraid09_be.mod +│   │   │   ├── mdraid09.mod +│   │   │   ├── mdraid1x.mod +│   │   │   ├── memrw.mod +│   │   │   ├── minicmd.mod +│   │   │   ├── minix2_be.mod +│   │   │   ├── minix2.mod +│   │   │   ├── minix3_be.mod +│   │   │   ├── minix3.mod +│   │   │   ├── minix_be.mod +│   │   │   ├── mmap.mod +│   │   │   ├── moddep.lst +│   │   │   ├── mpi.mod +│   │   │   ├── msdospart.mod +│   │   │   ├── net.mod +│   │   │   ├── newc.mod +│   │   │   ├── normal.mod +│   │   │   ├── ntfscomp.mod +│   │   │   ├── ntfs.mod +│   │   │   ├── odc.mod +│   │   │   ├── offsetio.mod +│   │   │   ├── part_acorn.mod +│   │   │   ├── part_amiga.mod +│   │   │   ├── part_apple.mod +│   │   │   ├── part_bsd.mod +│   │   │   ├── part_dfly.mod +│   │   │   ├── part_dvh.mod +│   │   │   ├── part_gpt.mod +│   │   │   ├── partmap.lst +│   │   │   ├── part_msdos.mod +│   │   │   ├── part_plan.mod +│   │   │   ├── part_sun.mod +│   │   │   ├── part_sunpc.mod +│   │   │   ├── parttool.lst +│   │   │   ├── parttool.mod +│   │   │   ├── password.mod +│   │   │   ├── password_pbkdf2.mod +│   │   │   ├── pbkdf2.mod +│   │   │   ├── pbkdf2_test.mod +│   │   │   ├── png.mod +│   │   │   ├── priority_queue.mod +│   │   │   ├── probe.mod +│   │   │   ├── procfs.mod +│   │   │   ├── progress.mod +│   │   │   ├── raid5rec.mod +│   │   │   ├── raid6rec.mod +│   │   │   ├── read.mod +│   │   │   ├── reboot.mod +│   │   │   ├── regexp.mod +│   │   │   ├── reiserfs.mod +│   │   │   ├── romfs.mod +│   │   │   ├── scsi.mod +│   │   │   ├── serial.mod +│   │   │   ├── setjmp.mod +│   │   │   ├── setjmp_test.mod +│   │   │   ├── signature_test.mod +│   │   │   ├── sleep.mod +│   │   │   ├── sleep_test.mod +│   │   │   ├── squash4.mod +│   │   │   ├── syslinuxcfg.mod +│   │   │   ├── terminal.lst +│   │   │   ├── terminal.mod +│   │   │   ├── terminfo.mod +│   │   │   ├── test_blockarg.mod +│   │   │   ├── testload.mod +│   │   │   ├── test.mod +│   │   │   ├── testspeed.mod +│   │   │   ├── tftp.mod +│   │   │   ├── tga.mod +│   │   │   ├── time.mod +│   │   │   ├── trig.mod +│   │   │   ├── tr.mod +│   │   │   ├── true.mod +│   │   │   ├── udf.mod +│   │   │   ├── ufs1_be.mod +│   │   │   ├── ufs1.mod +│   │   │   ├── ufs2.mod +│   │   │   ├── verify.mod +│   │   │   ├── video_colors.mod +│   │   │   ├── video_fb.mod +│   │   │   ├── videoinfo.mod +│   │   │   ├── video.lst +│   │   │   ├── video.mod +│   │   │   ├── videotest_checksum.mod +│   │   │   ├── videotest.mod +│   │   │   ├── xfs.mod +│   │   │   ├── xnu_uuid.mod +│   │   │   ├── xnu_uuid_test.mod +│   │   │   ├── xzio.mod +│   │   │   └── zfscrypt.mod +│   │   ├── font.pf2 +│   │   └── grub.cfg +│   ├── initrd.gz +│   └── linux +├── netboot.tar.gz +└── version.info +``` + +Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: + +```shell +dhcp-boot=debian-installer/arm64/bootnetaa64.efi +``` +## Loading debian-installer from the minimal CD + +Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. + +Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): + +``` +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso +sudo cp mini.iso /dev/sdX +sync +``` + +Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. + +## Booting the installer + +If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install +Advanced options ... +Install with speech synthesis +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. + +**NOTE - Cello Only:** The network driver **r8169** needs an additional module parameter for a functional 64-bit DMA operation ([related kernel change](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4300e8c7f64d95a80ffa7d98d98738f41546bc30)), so please edit your grub boot parameter by pressing _e_ at the selected boot line, and add _r8169.use_dac=1_ in the end of the linux line. To boot, simply press _Control + x_. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND +[ 0.763784] kvm [1]: error: no compatible GIC node found +[ 0.763818] kvm [1]: error initializing Hyp mode: -19 +[ 0.886298] Failed to find cpu0 device node +[ 0.947082] zswap: default zpool zbud not available +[ 0.951959] zswap: pool creation failed +Starting system log daemon: syslogd, klogd. +... + ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ + │ │ + │ Choose the language to be used for the installation process. The │ + │ selected language will also be the default language for the installed │ + │ system. │ + │ │ + │ Language: │ + │ │ + │ C │ + │ English │ + │ │ + │ │ + │ │ + └─────────────────────────────────────────────────────────────────────────┘ + moves; selects; activates buttons +``` + +### Finishing the installation + +For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) + +**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. + +``` +~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f +~ # exit +``` + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. + +**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: + +``` +root@debian:~# cat /etc/network/interfaces +... +allow-hotplug enp1s0 +iface enp1s0 inet dhcp + hwaddress ether de:5e:60:e4:6b:1f +``` + +### Automating the installation using preseeding + +Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. + +This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) + +**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: + +```shell +d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands +``` + +#### Creating the preseed file + +Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. + +Once created, make sure the file gets published into a network address that can be reachable from your target device. + +Preseed example (`preseed.cfg`): + +```shell +d-i debian-installer/locale string en_US +d-i keyboard-configuration/xkb-keymap select us +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/get_hostname string unassigned-hostname +d-i netcfg/get_domain string unassigned-domain +d-i netcfg/hostname string debian +d-i mirror/country string manual +d-i mirror/http/hostname string httpredir.debian.org +d-i mirror/http/directory string /debian +d-i mirror/http/proxy string +d-i passwd/root-password password linaro123 +d-i passwd/root-password-again password linaro123 +d-i passwd/user-fullname string Linaro User +d-i passwd/username string linaro +d-i passwd/user-password password linaro +d-i passwd/user-password-again password linaro +d-i passwd/user-default-groups string audio cdrom video sudo +d-i time/zone string UTC +d-i clock-setup/ntp boolean true +d-i clock-setup/utc boolean true +d-i partman-auto/disk string /dev/sda +d-i partman-auto/method string regular +d-i partman-lvm/device_remove_lvm boolean true +d-i partman-md/device_remove_md boolean true +d-i partman-auto/choose_recipe select atomic +d-i partman/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true +popularity-contest popularity-contest/participate boolean false +tasksel tasksel/first multiselect standard, web-server +d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp +d-i pkgsel/upgrade select safe-upgrade +d-i finish-install/reboot_in_progress note +``` + +In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) + +#### Setting up grub.cfg + +Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: + +```shell +$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg +# Force grub to automatically load the first option +set default=0 +set timeout=1 +menuentry 'Install with preseeding' { + linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- + initrd /debian-installer/arm64/initrd.gz +} +``` + +The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. + +In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. + +#### Booting the system + +Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. + +Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. + +### Building debian-installer from source + +#### Build kernel package and udebs + +Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. + +You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) + +#### Rebuilding debian-installer with the new udebs + +To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. + +Download the installer (from jessie): + +```shell +sudo apt-get build-dep debian-installer +dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u2.dsc +``` + +Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): + +```shell +cd debian-installer-* +cd build +sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common +sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common +``` + +Download the kernel udebs that you created at the localudebs folder: + +```shell +cd localudebs +wget +cd .. +``` + +Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): + +```shell +cat < pkg-lists/local +ext4-modules-\${kernel:Version} +fat-modules-\${kernel:Version} +btrfs-modules-\${kernel:Version} +md-modules-\${kernel:Version} +efi-modules-\${kernel:Version} +scsi-modules-\${kernel:Version} +jfs-modules-\${kernel:Version} +xfs-modules-\${kernel:Version} +ata-modules-\${kernel:Version} +sata-modules-\${kernel:Version} +usb-storage-modules-\${kernel:Version} +EOF +``` + +Set up the local repo, so the installer can locate your udebs (from localudebs): + +```shell +cat < sources.list.udeb +deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ +deb http://httpredir.debian.org/debian jessie main/debian-installer +EOF +``` + +Default preseed to skip known errors (as the kernel provided by local udebs): + +``` +cat < default-preseed +# Continue install on "no kernel modules were found for this kernel" +d-i anna/no_kernel_modules boolean true +# Continue install on "no installable kernels found" +d-i base-installer/kernel/skip-install boolean true +d-i base-installer/kernel/no-kernels-found boolean true +d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb +EOF +``` + +Now just build the installer: + +```shell +fakeroot make build_netboot +``` + +You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md new file mode 100644 index 0000000..c625bdd --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md @@ -0,0 +1,164 @@ +## Installing Fedora 23 + +This guide is not to be a replacement of the official Fedora 23 Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation](https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Fedora 23 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +**Note:** Because of bug [1251600](https://bugzilla.redhat.com/show_bug.cgi?id=1251600), we need to use both `BOOTAA64.EFI` and `grubaa64.efi` from the Fedora 22 release. + +```shell +sudo su - +cd /srv/tftp/ +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/BOOTAA64.EFI +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/grubaa64.efi +``` + +Downloading upstream Kernel and Initrd + +```shell +mkdir /srv/tftp/f23 +cd /srv/tftp/f23 +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/vmlinuz +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install Fedora 23 ARM 64-bit' --class fedora --class gnu-linux --class gnu --class os { + linux (tftp)/f23/vmlinuz ip=dhcp inst.repo=http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/ + initrd (tftp)/f23/initrd.img +} +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── f23 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install Fedora 23 ARM 64-bit +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Fedora 23 (just make sure that target device has external network access, since the installer is downloaded automatically after booting the kernel). + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.2.3-300.fc23.aarch64 (mockbuild@aarch64-08a.arm.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Thu Oct 8 01:39:38 UTC 2015 +[ 0.000000] CPU: AArch64 Processor [411fd072] revision 2 +[ 0.000000] Detected PIPT I-cache on CPU0 +[ 0.000000] alternatives: enabling workaround for ARM erratum 832075 +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c6000 SMBIOS 3.0=0x83ff349718 +... +Welcome to Fedora 23 (Twenty Three) dracut-043-60.git20150811.fc23 (Initramfs)! +... +[ 23.105835] dracut-initqueue[685]: RTNETLINK answers: File exists +[ 23.756828] dracut-initqueue[685]: % Total % Received % Xferd Average Speed Time Time Time Current +[ 23.757345] dracut-initqueue[685]: Dload Upload Total Spent Left Speed +100 958 100 958 0 0 1514 0 --:--:-- --:--:-- --:--:-- 1513 0 --:--:-- --:--:-- --:--:-- 0 +... +Welcome to Fedora 23 (Twenty Three)! +... +Starting installer, one moment... +anaconda 23.19.10-1 for Fedora 23 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +00:29:26 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: +. +[anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1 +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the installation destination, the partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Fedora 23 system. + +### Automating the installation with kickstart + +TODO diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md new file mode 100644 index 0000000..5e134d1 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md @@ -0,0 +1,320 @@ +This post concentrates on Running Hadoop after [installing](ODPi-Hadoop-Installation.md) ODPi components built using Apache BigTop. These steps are only for configuring it on a single node and running them on a single node. + +# Add Hadoop User + We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop usergroup: + +```shell +sudo useradd -G hadoop hduser +``` + +give a password for hduser + +```shell +sudo passwd hduser +``` + +Add hduser to sudoers list +On Debian: + +```shell +sudo adduser hduser sudo +``` + +On Centos: + +```shell +sudo usermod -G wheel hduser +``` + +Switch to hduser: + +```shell +sudo su - hduser +``` + +# Generate ssh key for hduser + +```shell +ssh-keygen -t rsa -P "" +``` + +Press \ to leave to default file name. + +Enable ssh access to local machine: + +```shell +cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys +``` + +Test ssh setup, as hduser: + +```shell +ssh localhost +``` + +# Disabling IPv6 + +```shell +sudo nano /etc/sysctl.conf +``` + +Add the below lines to the end and save: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +``` + +Prefer IPv4 on Hadoop: + +```shell +sudo nano /etc/hadoop/conf/hadoop-env.sh +``` + +Uncomment line: + +```shell +# export HADOOP_OPTS=-Djava.net.preferIPV4stack=true +``` + +Run sysctl to apply the changes: + +```shell +sudo sysctl -p +``` + +# Configuring the app environment +Configure the app environment by following steps: + +```shell +sudo mkdir -p /app/hadoop/tmp +sudo chown hduser:hadoop /app/hadoop/tmp +sudo chmod 750 /app/hadoop/tmp +sudo chown hduser:hadoop /usr/lib/hadoop +sudo chmod 750 /usr/lib/hadoop +``` + +# Setting up Environment Variables +Follow the below steps to setup Environment Variables in bash file : + +```shell +sudo su - hduser +nano .bashrc +``` + +Add the following to the end and save: + +```shell +export HADOOP_HOME=/usr/lib/hadoop +export HADOOP_PREFIX=$HADOOP_HOME +export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" +export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec +export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop +export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native +export HADOOP_COMMON_HOME=$HADOOP_HOME +export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce +export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs +export YARN_HOME=/usr/lib/hadoop-yarn +export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ +export CLASSPATH=$CLASSPATH:. +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.6.0.jar +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/client/hadoop-hdfs-2.6.0.jar +export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") +export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH +``` + +Execute the terminal environment again (`bash`), or simply logout and change to `hduser` again. + +# Modifying config files +## core-site.xml + +```shell +sudo nano /etc/hadoop/conf/core-site.xml +``` + +And add/modify the following settings: +Look for property with fs.defaultFS and modify as below: + +```shell + + fs.default.name + hdfs://localhost:54310 + The name of the default file system. A URI whose + scheme and authority determine the FileSystem implementation. The + uri's scheme determines the config property (fs.SCHEME.impl) naming + the FileSystem implementation class. The uri's authority is used to + determine the host, port, etc. for a filesystem. + +``` + +Add this to the bottom before \ tag: + +```shell + + hadoop.tmp.dir + /app/hadoop/tmp + A base for other temporary directories. + +``` + +## mapred-site.xml + +```shell +sudo nano /etc/hadoop/conf/mapred-site.xml +``` + +Modify existing properties as follows: +Look for property tag with as mapred.job.tracker and modify as below: + +```shell + + mapred.job.tracker + localhost:54311 + The host and port that the MapReduce job tracker runs + at. If "local", then jobs are run in-process as a single map + and reduce task. + + +``` + +## hdfs-site.xml: + +```shell +sudo nano /etc/hadoop/conf/hdfs-site.xml +``` + +Modify existing property as below : + +```shell + + dfs.replication + 1 + Default block replication. + The actual number of replications can be specified when the file is created. + The default is used if replication is not specified in create time. + + +``` + +# Format Namenode +This step is needed for the first time. Doing it every time will result in loss of content on HDFS. + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init +``` + +# Start the YARN daemons + +```shell +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done +sudo /etc/init.d/hadoop-yarn-resourcemanager start +sudo /etc/init.d/hadoop-yarn-nodemanager start +``` + +# Validating Hadoop +Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux + +```shell +sudo jps +``` +or + +```shell +ps aux | grep java +``` + +Alternatively, check if yarn managers are running: + +```shell +sudo /etc/init.d/hadoop-yarn-resourcemanager status +sudo /etc/init.d/hadoop-yarn-nodemanager status +``` + +You would see like below: + +```shell +● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager + Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) + Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago + CGroup: /system.slice/hadoop-yarn-nodemanager.service + └─10366 /usr/lib/jvm/java-1.7.0-openjdk-arm64/bin/java -Dproc_node... + +Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root +Dec 22 18:24:57 debian su[10348]: + ??? root:yarn +Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) +Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... +Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn +Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... +``` + + +## Run teragen, terasort and teravalidate ## + +```shell +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate +``` + +## Stop the Hadoop services ## + +```shell +sudo /etc/init.d/hadoop-yarn-nodemanager stop + +sudo /etc/init.d/hadoop-yarn-resourcemanager stop + +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done +``` + +## Potential Errors / Issues and Resolutions ## +* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: + +```shell +sudo groupadd supergroup + +sudo usermod -g supergroup hduser +``` + +* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. + +```shell +You may have delete all the packages and re-run the steps of installation from scratch. +``` + +* Error while formatting namenode +With the following command: + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init + + +If you see the following error: + WARN net.DNS: Unable to determine local hostname -falling back to "localhost" + java.net.UnknownHostException: centos: centos + at java.net.InetAddress.getLocalHost(InetAddress.java:1496) + at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) + at org.apache.hadoop.net.DNS.(DNS.java:57) + +Something is wrong in the network setup. Please check /etc/hosts file. + +```shell +sudo nano /etc/hosts +``` + +The hosts file should like below: + +```shell +127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname +::1 localhost +``` + +Also try the following steps: + +```shell +sudo rm -Rf /app/hadoop/tmp + +hadoop namenode -format +``` diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md new file mode 100644 index 0000000..e810f26 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md @@ -0,0 +1,82 @@ +This post concentrates on installing ODPi components built using Apache BigTop. These steps configure and run the components on a single node. + +# Prerequisites: + +* Java 7 (e.g. openjdk-7-jre) + +# Repo: + +ODPi deb and rpm packages can be found on Linaro repositories: + +* Debian Jessie - http://repo.linaro.org/ubuntu/linaro-overlay/ +* CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/ + + +# Installation : + +### On Debian: + +Add to repo source list (**not required if you are using the installer from the Reference Platform**): + +```shell +echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +Update the source list and install the dependencies: + +```shell +sudo apt-get update +sudo apt-get install openssh-server rsync openjdk-7-jre openjdk-7-jdk +sudo apt-get build-dep build-essential +``` + +Install Hadoop packages: + +```shell +sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### On CentOS: + +```shell +sudo wget http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo -O /etc/yum.repos.d/linaro-overlay.repo +sudo yum update +sudo yum -y install openssh-server openssh-clients java-1.7.0-openjdk* +sudo yum install -y bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### Verifying Installation + +Packages would get installed in /usr/lib + +Type hadoop to check if hadoop is installed: + +```shell +hadoop +``` + +And you should see the following: + +```shell +linaro@debian:~$ hadoop +Usage: hadoop [--config confdir] COMMAND + where COMMAND is one of: + fs run a generic filesystem user client + version print the version + jar run a jar file + checknative [-a|-h] check native hadoop and compression libraries availability + distcp copy file or directories recursively + archive -archiveName NAME -p * create a hadoop archive + classpath prints the class path needed to get the + credential interact with credential providers + Hadoop jar and the required libraries + daemonlog get/set the log level for each daemon + trace view and modify Hadoop tracing settings + or + CLASSNAME run the class named CLASSNAME +``` + + Most commands print help when invoked w/o parameters. + +Next Step: [Setup, Configuration and Running Hadoop](ODPi-BigTop-Hadoop-Config-Run.md) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md new file mode 100644 index 0000000..d3b4cb9 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md @@ -0,0 +1,376 @@ +# OpenStack Liberty - Debian Jessie + +# Introduction + +In general, the instructions in the Liberty install guide should be followed: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html. This guide will describe changes to the documented procedures that should be kept in mind while going through the guide. + +Each section below will correspond to a section in the guide. Guide sections that do not have a corresponding section below may be followed as-is. + +# Release Notes + +## Configuring images for aarch64 + +An image must be configured specially in glance to be able to boot correctly on aarch64. +To attach the devices to the virtio bus (which does not allow hotplugging a volume, but will work if the image does not have SCSI support), the following properties must be set: + +```shell +--property hw_machine_type=virt +--property os_command_line='root=/dev/vda rw rootwait console=ttyAMA0' +--property hw_cdrom_bus=virtio +``` + +To attach the devices to the SCSI bus (which does allow hotplugging a volume, but might not be supported by the guest image), the following properties must be set: + +```shell +--property hw_scsi_model='virtio-scsi' +--property hw_disk_bus='scsi' +--property os_command_line='root=/dev/sda rw rootwait console=ttyAMA0' +``` + +You can set these properties when you are uploading the image into glance, or modify the image if you have already uploaded it. + + +# Pre-Installation + +## Verify/enable additional repositories + +Verify that the `linaro-overlay` and `jessie-backports` repositories are enabled. + +Check if they are available by checking `/etc/apt/sources.list` and `/etc/apt/sources.list.d`. + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://httpredir.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backports.list +``` + +## Modify repository priorities + +Create `/etc/apt/preferences.d/jessie-backports`: + +```shell +Package: * +Pin: release a=jessie-backports +Pin-Priority: 500 +``` + +Then, make sure to run apt-get update: + +```shell +$ sudo apt-get update +``` + +## Environment + +Update `/etc/hosts` to add “controller” as an alias for localhost. + +```shell +127.0.0.1 localhost controller +``` + +## Disable IPV6 + +Add the following to `/etc/sysctl.conf`: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +net.ipv6.conf.eth0.disable_ipv6 = 1 +``` + +Run sysctl to apply the changes: + +```shell +$ sudo sysctl -p +``` + +# Following the Openstack guide... + +OpenStack guide: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html + +## Environment + +### Openstack Packages + +Do not enable the `cloud-archive:liberty` repository. + +Install some dependencies: + +```shell +$ sudo apt-get install openstack-cloud-services python-pymysql +``` + +Answer the questions asked by debconf: + +* New password for the MySQL **root** user: \ + +Install the openstack client: + +```shell +$ sudo apt-get install python-openstackclient +``` + +### NoSQL Database + +The instructions in this section are not required, as Telemetry is not installed. + +## Add the Identity service (Keystone) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during meta package installation later. + +#### Install and configure components + +Install the apache and the keystone meta package: + +```shell +$ sudo apt-get install openstack-cloud-identity +``` + +Answer the questions asked by debconf: + +* Set up a database for Keystone: **Yes** +* Configure database for keystone with dbconfig-common: **Yes** +* Database type to be used by keystone: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for keystone: **\** +* Authentication server administration token: **\** +* Register administration tenants? **Yes** +* Password of the administrative user: **\** +* Register Keystone endpoint? **Yes** +* Keystone endpoint IP address: **\** + +#### Configure the Apache HTTP server + +Omit this section of the guide. + +#### Finalize the installation + +Omit this section of the guide. + +### Create the service entity and API endpoints + +Omit this section of the guide. + +### Create projects, users, and roles + +Omit this section of the guide. + + +## Add the Image service (Glance) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install glance +``` + +Answer the questions asked by debconf: + +* Set up a database for Glance: **Yes** +* Configure database for glance-common with dbconfig-common? **Yes** +* Database type to be used by glance-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for glance-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Pipeline flavor: **keystone** +* Authentication server hostname: **\** +* Authentication server password: **\** +* Register Glance in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Omit this section of the guide. + +### Verify operation + +The CirrOS image to run on aarch64 is the file that ends in `-uec.tar.gz`. It must be extracted and each file (kernel, initrd, disk image) uploaded to Glance separately. + +Download the CirrOS AArch64 UEC tarball and untar it: + +```shell +$ wget http://download.cirros-cloud.net/daily/20150923/cirros-d150923-aarch64-uec.tar.gz +$ tar xvf cirros-d150923-aarch64-uec.tar.gz +``` + +Upload the image parts into Glance. You will need to make note of the IDs assigned to the kernel and initrd and pass them on the command line when uploading the disk image: + +```shell +$ glance image-create --name "cirros-kernel" --visibility public --progress \ + --container-format aki --disk-format aki --file cirros-d150923-aarch64-vmlinuz + +$ glance image-create --name "cirros-initrd" --visibility public --progress \ + --container-format ari --disk-format ari --file cirros-d150923-aarch64-initrd + +$ glance image-create --name "cirros" --visibility public --progress \ + --property hw_machine_type=virt --property hw_cdrom_bus=virtio \ + -property os_command_line='console=ttyAMA0' \ + --property kernel_id=KERNEL_ID --property ramdisk_id=INITRD_ID \ + --container-format ami --disk-format ami --file cirros-d150923-aarch64-blank.img +``` + +## Add the Compute service (Nova) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install nova-api nova-cert nova-conductor \ + nova-consoleauth nova-scheduler nova-compute +``` + +Answer the questions asked by debconf: + +* Set up a database for Nova: **Yes** +* Configure database for nova-common with dbconfig-common? **Yes** +* Database type to be used by nova-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for nova-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Auth server hostname: **\** +* Auth server password: **\** +* Neutron server URL: **http://\:9696** +* Neutron administrator password: **\** +* Metadata proxy shared secret: **\** +* API to activate: choose **osapi_compute and metadata** +* Value for my_ip: **\** +* Register Nova in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Ensure that vnc and spice are disabled in `/etc/nova/nova.conf`. Look for the following keys in `nova.conf` and set them to False: + +```shell +vnc_enabled=false + +[spice] +enabled=false +``` + +Enable KVM by ensuring the following is in `nova-compute.conf`: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +virt_type=kvm +``` + +**NOTE: Until kernel support for KVM is properly enabled, instances can be run in emulation by ensuring the following is in `nova-compute.conf`**: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +cpu_mode = custom +virt_type = qemu +cpu_model = cortex-a57 +``` + +**IMPORTANT: If you make changes to `nova.conf`, or `nova-compute.conf`, restart the nova services:** + +```shell +$ sudo service nova-compute restart +``` + + +## Add the Networking service (Neutron) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install neutron-server neutron-plugin-ml2 \ + neutron-plugin-linuxbridge-agent neutron-dhcp-agent \ + neutron-metadata-agent +``` + +Answer the questions asked by debconf: + +* neutron-common + * Set up a database for Neutron: **Yes** + * Configure database for neutron-common with dbconfig-common? **Yes** + * Database type to be used by neutron-common: **mysql** + * Password of the database's administrative user: **\** + * MySQL application password for neutron-common: **\** + * IP address of your RabbitMQ host: **\** + * Username for connection to the RabbitMQ server: **guest** + * Password for connection to the RabbitMQ server: **guest** + * Authentication server hostname: **\** + * Authentication server password: **\** + * Neutron plugin: **ml2** +* neutron-metadata-agent + * Auth server hostname: **\** + * Auth server password: **\** + * Name of the region to be used by the metadata server: **\** + * Metadata proxy shared secret: **\** +* neutron-server + * Register Neutron in the Keystone endpoint catalog? **Yes** + * Keystone authentication token: **\** + +#### Configure networking options +Follow "Networking Option 1: Provider networks". + +#### Finalize installation + +Omit this section of the guide. + + +## Launch an instance + +### Create virtual networks + +Follow section “Public provider network” + +### Launch an instance + +Follow section “Launch an instance on the public network” + +NOTE: Accessing an image via the virtual console (VNC) will not work, as VNC is not supported. You may access the console log using the following command: + +```shell +$ nova console-log --length=10 INSTANCE_ID +``` diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Overdrive/README.md new file mode 100644 index 0000000..586bd01 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/Overdrive/README.md @@ -0,0 +1,68 @@ +### Overdrive + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### AMD Overdrive + +Since the EDK2 based firmware is not yet supported (work in progress), the original AMI BIOS based firmware from AMD is required. + +At the time of the 16.03 release the latest firmware version for Overdrive (*B0*) is 1.0.0.1. Latest for *rev A* is still 0.0.7.4. + +*A* and *B0* are both supported by the 16.03 release (`A` requires an external PCIe NIC) + +After flashing/updating the firmware, proceed to the network installer instructions in order to install your favorite distribution. No special setup is required for Overdrive. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100), but a board like the [SPI Hook](http://www.tincantools.com/SPI_Hook.html) should also be compatible with it (not yet tested). + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md new file mode 100644 index 0000000..9ba1ff1 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md @@ -0,0 +1,367 @@ +## UEFI/EDK2 + +EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. + +The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). + +Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. + +EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. + +This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) + +### Building + +#### Pre-Requisites + +Make sure the build dependencies are available at your host machine. + +On Debian/Ubuntu: + +```shell +sudo apt-get install uuid-dev build-essential aisle +``` + +On RHEL/CentOS/Fedora: + +```shell +sudo yum install uuid-devel libuuid-devel aisle +``` + +Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': + +```shell +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb +sudo dpkg -i --force-all *.deb +``` + +If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. + +Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +UEFI/EDK2: + +```shell +git clone https://github.com/tianocore/edk2.git +git clone https://git.linaro.org/uefi/OpenPlatformPkg.git +cd edk2 +git checkout -b stable-baseline d0d34cdf1d2752f0d7c3ca41af7e7ed29c221d11 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git +ln -s ../OpenPlatformPkg +``` + +ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): + +```shell +git clone https://github.com/ARM-software/arm-trusted-firmware.git +cd arm-trusted-firmware +git checkout -b stable-baseline v1.2 # suggested latest stable release +``` + +UEFI Tools (helpers and scripts to make the build process easy): + +```shell +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building UEFI/EDK2 for Juno R0/R1 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +export ARMTF_DIR=${PWD}/arm-trusted-firmware +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno +``` + +The output files: + +- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` +- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` + +#### Building UEFI/EDK2 for D02 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since D02 support is not yet merged in OpenPlatformPkg, a specific branch needs to be used for it: + +```shell +cd OpenPlatformPkg +git checkout d02-release +``` + +Then just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 +``` + +The output file: + +- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` + +#### Building UEFI/EDK2 for Overdrive + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive +``` + +The output file: + +- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` + +#### Building UEFI/EDK2 for HuskyBoard / Cello + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello +``` + +The output file: + +- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` + +### Flashing + +#### Juno R0/R1 + +##### Clean flash + +Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: + +```shell +Cmd> flash +Flash> eraseall +Flash> quit +Cmd> usb_on +``` + +This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. + +In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: + +```shell +git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git +``` + +Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE +``` + +Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): + +```shell +cp -rf vexpress-firmware/* /media/recovery +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. + +##### Upgrading UEFI/EDK2 + +If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). + +Export Juno's MMC as a usb storage device on your host machine: + +```shell +Cmd> usb_on +``` + +Then just copy over the UEFI/EDK2 files that were built in the previous steps: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Then just power cycle the Juno and the board should see and use the new firmware. + +#### D02 + +Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('PV660D02.fd'): + +```shell +cp PV660D02.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### D03 + +Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('D03.fd'): + +```shell +cp D03.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d03-2/](http://open-estuary.com/d03-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('D03.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### AMD Overdrive / HuskyBoard / Cello + +##### Clean flash + +###### DediProg SF100 + +Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. + +First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: + +```shell +dpcmd --type MX25L12835F -e +``` + +Now just flash the new firmware: + +```shell +dpcmd --type MX25L12835F -p FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +###### SPI Hook + +Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) + +Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. + +Example for the 4.5M based firmware: + +```shell +dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc +``` + +Connect the SPI cable, unplug the power cord and flash SPI: + +```shell +sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +##### Upgrading firmware + +There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. + +### Links and References: + +- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) +- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md new file mode 100644 index 0000000..9a9daea --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md @@ -0,0 +1,52 @@ +### X-Gene Mustang + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/Highlights.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/Highlights.md new file mode 100644 index 0000000..a7e8f79 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/Highlights.md @@ -0,0 +1,87 @@ +### Highlights for 16.03 release: + +*** + +###### Consumer and Enterprise Edition: +#### Kernel +- Unified tree shared between the CE and EE builds. Supports Hikey, Dragonboard, D02, APM X-Gene, HP Proliant m400 and AMD Overdrive. +- 4.4.0 based, including under-review topic branches to extend the hardware support for the platforms available. +- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. +- Single kernel config for all platforms in arch/arm64/configs/distro.config +- Single kernel binary (package) for all platforms + +*** + +###### Consumer Edition: + +#### CE Debian RPB (common): +- Upgrade to Debian 8.3 "Jessie" +- Upgrade to the unified 4.4.0 Linux Kernel +- Upgrade graphics components: Mesa 11.1.2 and Xserver 1.17.3 +- Rootfs automatically resized during the first boot + +#### CE Debian RPB for DragonBoard™ 410: +- Freedreno X11 video driver included by default (1.4.0) +- Analog audio playback and record support +- Upgrade Qualcomm Firmware Package to 1.2 + +#### CE Debian RPB for HiKey (CircuitCo & LeMaker): +- Default Grub 2 boot configuration updated, now supporting kernel package upgrades +- xserver-xorg-video-armsoc now included by default (still using software rendering, Mali integration expected as part of the next release)
 + +#### CE AOSP RPB (common): +- AOSP Android Marshmallow 6.0 (android-6.0.1_r16)
 + +#### CE AOSP RPB for DragonBoard™ 410: +- Initial build, available as Developer Preview (not suitable for end users). +- Mesa and Freedreno support +- Kernel 4.4.0 
 + +#### CE AOSP RPB for HiKey (CircuitCo & LeMaker): +- AOSP Android Marshmallow 6.0 (android-6.0.1_r16) +- 4.1 based kernel
 + +#### CE OE/Yocto RPB: +- Included the unified 4.4.0 kernel +- meta-backports created, to contain backported recipes used by the reference platform + +*** + +###### Enterprise Edition + +#### Supported platforms: + +- AMD Overdrive A0 (new) and B0 +- D02 +- APM X-Gene Mustang (new) +- HP ProLiant m400 (new)
 + +#### Overall platform features, validated as part of the release: + +- UEFI with ACPI +- KVM +- PCIe
 + +#### Firmware: + +- Updated UEFI/EDK2 for D02, including support for PCIe and SAS
 + +#### Network Installers: + +- Debian: + - Upgrade to Debian 8.3 "Jessie" + - Using the unified 4.4.0 kernel +- CentOS (Now officially supported): + - Based on CentOS 7.2 15.11 + - Using the consolidated 4.4 kernel + +#### Enterprise Components: + +- Docker 1.9.1 +- OpenStack Liberty for Debian Jessie + - CentOS to be supported as part of the next cycle +- ODPi based Hadoop +- Spark 1.6 +- OpenJDK 8 (Linaro 16.03) + +*** diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/Known-Issues.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/Known-Issues.md new file mode 100644 index 0000000..d66ba58 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/Known-Issues.md @@ -0,0 +1,100 @@ +## Reference Platform Build - 16.03 Release - Known Issues + +### Enterprise + +Fixed Issues +( Bugzilla ) + +| Enterprise Edition | Known Issues ( Bugzilla ) | +|:-----:|:-----| +|[bug 2079](https://bugs.linaro.org/show_bug.cgi?id=2079)| [RPB] D02- Sometimes root partition is missing when booting Debian/CentOS| +|[bug 2100](https://bugs.linaro.org/show_bug.cgi?id=2100)| [RPB] Placing D02 under major stress and SAS driver starts to have errors| +|[bug 2067](https://bugs.linaro.org/show_bug.cgi?id=2067)| [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system| +|[bug 2068](https://bugs.linaro.org/show_bug.cgi?id=2068)| [RPB] D02- Detailed information about firmware version is needed| +|[bug 2085](https://bugs.linaro.org/show_bug.cgi?id=2085)| [RPB] D02- CentOS installer fails to detect SATA drive| +|[bug 2106](https://bugs.linaro.org/show_bug.cgi?id=2206)| [RPB] D02- shutdown works as reboot| +|[bug 2097](https://bugs.linaro.org/show_bug.cgi?id=2097)| [RPB] kernel fails to build on amd64| +|[bug 2069](https://bugs.linaro.org/show_bug.cgi?id=2069)| [RPB] D02- Selected item in BIOS is not highlighted in minicom| +|[bug 2086](https://bugs.linaro.org/show_bug.cgi?id=2086)| [RPB] D02: Booting CentOS Linux failed| +|[bug 2066](https://bugs.linaro.org/show_bug.cgi?id=2066)| QEMU can't launch an instance with more than 30GB RAM| +|[bug 2075](https://bugs.linaro.org/show_bug.cgi?id=2075)| [RPB] D02: Latest EDK2 breaks network support in UEFI| + +*** + +### HiKey + +Fixed Issues ( Bugzilla ) + +| Debian | Known Issues ( Bugzilla ) | +|:-----:|:-----| +|[bug 187](https://bugs.96boards.org/show_bug.cgi?id=187)| Missing XWindows video acceleration - Weston (needs Mali r6p0)| +|[bug 262](https://bugs.96boards.org/show_bug.cgi?id=262)| [RPB] LG W2253V fails to work with 4.4.0-93-arm64| +|[bug 212](https://bugs.96boards.org/show_bug.cgi?id=212)| Suspend/resume support needed in 4.1/4.4| +[bug 223](https://bugs.96boards.org/show_bug.cgi?id=223)| **HiKey**: Linux 4.4: USB unstable with SMP| +|[bug 27](https://bugs.96boards.org/show_bug.cgi?id=27)| UEFI variable runtime service not working| +|[bug 222](https://bugs.96boards.org/show_bug.cgi?id=222)| **HiKey**: RTC RTS code accesses unrelocated address| +|[bug 267](https://bugs.96boards.org/show_bug.cgi?id=267)| [RPB] UEFI does not provide devicetree to OS| +|[bug 290](https://bugs.96boards.org/show_bug.cgi?id=290)| [RPB] fastboot erase/flash system is just too slow when flashing the Debian images| +|[bug 176](https://bugs.96boards.org/show_bug.cgi?id=176)| Upgrade HiKey Mali Lib to r6p0| +|[bug 205](https://bugs.96boards.org/show_bug.cgi?id=205)| [RPB] USB OTG fails after hot removal and reinsertion| +|[bug 286](https://bugs.96boards.org/show_bug.cgi?id=286)| [RPB] 4.4.0-102-arm64 - Bad mode in Synchronous Abort handler detected| +|[bug 20](https://bugs.96boards.org/show_bug.cgi?id=20)| [RPB] USB kernel trace errors -22| +|[bug 152](https://bugs.96boards.org/show_bug.cgi?id=152)| [RPB] SD-Card doesn't work| +|[bug 163](https://bugs.96boards.org/show_bug.cgi?id=163)| [RPB-AOSP] HDMI audio not working| +|[bug 233](https://bugs.96boards.org/show_bug.cgi?id=233)| [RPB] Bluetooth driver prevents board from rebooting| +|[bug 265](https://bugs.96boards.org/show_bug.cgi?id=265)| fastboot reboot-bootloader doesn't work| +|[bug 291](https://bugs.96boards.org/show_bug.cgi?id=291)| [RPB] fastboot erase not supported in l-loader (recovery)| +|[bug 282](https://bugs.96boards.org/show_bug.cgi?id=282)| [RPB] Missing wl18xx wlconf setup as part of the first boot process| +|[bug 145](https://bugs.96boards.org/show_bug.cgi?id=145)| [RPB] unable to read thermal sensors| +|[bug 151](https://bugs.96boards.org/show_bug.cgi?id=151)| [RPB] glxgears: couldn't get an RGB, Double-buffered visual| + +| AOSP | Known Issues ( Bugzilla ) | +|:-----:|:------| +|[bug 180](https://bugs.96boards.org/show_bug.cgi?id=180)| [RPB] Shutdown cannot turn off HDMI monitor| +|[bug 224](https://bugs.96boards.org/show_bug.cgi?id=224)| [RPB-AOSP] BT status LED doesn't blink when BT transfer is in progress| +|[bug 225](https://bugs.96boards.org/show_bug.cgi?id=225)| [RPB] User LED numbers on the board don't match the sysfs entries| +|[bug 228](https://bugs.96boards.org/show_bug.cgi?id=228)| [RPB] Bluetooth mice pair and connect but don't show input| + +*** + +### DragonBoard™ 410c + +Fixed Issues +( Bugzilla ) + +| Debian | Known Issues ( Bugzilla )| +|:-------:|:---------| +| [bug 285](https://bugs.96boards.org/show_bug.cgi?id=285) | USB host doesn't detect any plugged devices | +| [bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) | [RPB] Cannot soft power off or shutdown db410c | +| [bug 284](https://bugs.96boards.org/show_bug.cgi?id=284) | [RPB] Dragon board Display sleep not working | +| [bug 289](https://bugs.96boards.org/show_bug.cgi?id=289) | [RPB] USB devices don't work after reboot | +| [bug 207](https://bugs.96boards.org/show_bug.cgi?id=207) | [RPB] Bluetooth does not work on Dragon board debian | +| [bug 153](https://bugs.96boards.org/show_bug.cgi?id=153) | [RPB] Missing information about hwpack usage| + + +Fixed Issues +( Bugzilla ) + + +| AOSP | Known Issues ( Bugzilla ) | +|:----------:|:-----------| +| [bug 254](https://bugs.96boards.org/show_bug.cgi?id=254) | [RPB] wpa_supplicant crashes wcn36xx | +| [bug 276](https://bugs.96boards.org/show_bug.cgi?id=276) | [RPB-AOSP] USB-OTG doesn't work | +| [bug 278](https://bugs.96boards.org/show_bug.cgi?id=278) | [RPB-AOSP] Free internal disk space is too small | +| [bug 279](https://bugs.96boards.org/show_bug.cgi?id=279) | [RPB-AOSP] "x App has stopped" happens frequently | +| [bug 280](https://bugs.96boards.org/show_bug.cgi?id=280) | [RPB-AOSP] App crashes when SD card mounted manually | +| [bug 277](https://bugs.96boards.org/show_bug.cgi?id=277) | [RPB-AOSP] SD card auto mount from UI doesn't work | + + +*** + + + +| Bug Legend | | +|:-----:|:-------| +| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | +| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | +| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | +| VERIFIED | A team has VERIFIED a working solution for a bug | + +*** diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/README.md new file mode 100644 index 0000000..68d0477 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/README.md @@ -0,0 +1,18 @@ +# Reference Platform Build - 16.03 + +[RPB 16.03 Highlights](Highlights.md) | [RPB 16.03 Known Issues](Known-Issues.md) | [RPB 16.03 Release Status](ReleaseStatus-16.03.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [D02](EnterpriseEdition/D02/README.md) +- [Overdrive](EnterpriseEdition/Overdrive/README.md) +- [Cello](EnterpriseEdition/Cello/README.md) +- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) +- [HP ProLiant m400](EnterpriseEdition/HP-Proliant-m400/README.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.03/ReleaseStatus-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.03/ReleaseStatus-16.03.md new file mode 100644 index 0000000..a3c91c1 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.03/ReleaseStatus-16.03.md @@ -0,0 +1,170 @@ +## Reference Platform Release Status + +- *Release:* 16.03 +- *Code/feature freeze:* February 22th / 2016 +- *RC1:* February 22th / 2016 +- *Release date:* March 3th / 2016 (originally March 1) + +### Release Candidates + +#### Final + +- *Debian Installer (118):* [mini.iso](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz) +- *CentOS Installer (36):* [16.03](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/) +- *Kernel (104):* [linux-image-4.4.0-104](https://builds.96boards.org/releases/reference-platform/components/linux/16.03/) +- *CE AOSP RPB HiKey (65)*: [16.03](https://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/) +- *CE AOSP RPB Dragonboard410c (45):* [16.03](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/) +- *CE Debian RPB HiKey (68)*: [16.03](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/) +- *CE Debian RPB Dragonboard410c (68):* [16.03](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/) + +#### RC5 + +- *Debian Installer (111):* [mini.iso](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/netboot.tar.gz) +- *CentOS Installer:* [34](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/34/) +- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) +- *UEFI*: [46](https://builds.96boards.org/snapshots/reference-platform/components/uefi/46/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/hikey/) +- *CE Debian RPB Dragonboard410c:* [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/dragonboard410c/) + +#### RC4 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [33](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/33/) +- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/hikey/) +- *CE Debian RPB Dragonboard410c:* [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/dragonboard410c/) + +#### RC3 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [31](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/31/) +- *Kernel:* [linux-image-4.4.0-93](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-93-arm64_4.4.0.linaro.93-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- - *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/hikey/) +- *CE Debian RPB Dragonboard410c:* [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/dragonboard410c/) + +#### RC2 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [30](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/30/) +- *Kernel:* [linux-image-4.4.0-91](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-91-arm64_4.4.0.linaro.91-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/hikey/) +- *CE Debian RPB Dragonboard410c:* [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/dragonboard410c/) + +#### RC1 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [29](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/29/) +- *Kernel:* [linux-image-4.4.0-85](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-85-arm64_4.4.0.linaro.85-1.linarojessie.1_arm64.deb) +- *UEFI*: [43](https://builds.96boards.org/snapshots/reference-platform/components/uefi/43/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [43](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/43/) +- *CE Debian RPB HiKey*: [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/hikey/) +- *CE Debian RPB Dragonboard410c:* [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/dragonboard410c/) + +### Kernel + +Kernel is 4.4 based, unified and supporting the following boards by default: +* Dragonboard410c +* HiKey +* AMD Overdrive (A0 should also be supported, pending kernel update) +* D02 +* APM X-Gene/Moonshot m400 (supported with the final RC) + +Tree data: +* Git: https://github.com/96boards/linux/ +* Branch: *96b/releases/2016.03* +* Config: https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config + +### Remaining Work Activities + +* QA/Validation - QA Team +** Enterprise Debian Overdrive +** Enterprise Debian D02 +** Enterprise CentOS Overdrive +** Enterprise CentOS D02 +** -CE Debian DB410c - *Naresh*- +** -CE AOSP HiKey - *Chase Qi*- +** -CE AOSP DB410c (nice to have) - *Chase Qi*- +** -CE Debian HiKey - *Naresh*- +* Test/Validation of GPIO, I2C and SPI support on both HiKey and Dragonboard410c - *Grant* +* Release Documentation - *Robert* +* -Porting xorg-server into linaro-overlay - *Nicolas/Ricardo*- +* -Linaro-EDK2 February Release - *Leif*- +* D02 OpenPlatformPkg update - *Heyi/Leif* +* D02 EDK2 SAS support - *Zhangfei Gao* +* -Move unified kernel to https://github.com/96boards/linux - *Amit*- +* -Update CentOS installer to use the unified kernel - *Ricardo*- +* -Update default grub config used by HiKey (generic) - *Ricardo*- +* ROD Openstack support for CentOS - *Fathi* + +### Out of Scope / Next Release + +* Kernel Fragments - *Amit* +* Lack of a default device-tree for HiKey - *Ricardo/Guodong*: bugs [27](https://bugs.96boards.org/show_bug.cgi?id=27) and [267](https://bugs.96boards.org/show_bug.cgi?id=267) to cover the right implementation, postponed to *16.06*. +* [Bug 254 - [RPB] wpa_supplicant crashes wcn36xx](https://bugs.96boards.org/show_bug.cgi?id=254) +* [Bug 207 - [RPB] Bluetooth does not work on Dragonboard debian](https://bugs.96boards.org/show_bug.cgi?id=207) +* [Bug 262 - [RPB] LG W2253V fails to work with 4.4.0-93-arm64](https://bugs.96boards.org/show_bug.cgi?id=262) - *Amit* +* [Bug 2067 - [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system](https://bugs.linaro.org/show_bug.cgi?id=2067) - Amit/Hanjun + +### Current Issues / Bugs + +#### Kernel + +* -[Bug 1999 - RP Kernel doesn't boot on HP Moonshot m400 (APM X-Gene) cartridges (ACPI)](https://bugs.linaro.org/show_bug.cgi?id=1999) - *Ricardo/Amit*- +* -[Bug 2060 - [RPB] Missing support for APM XGENE / Moonshot m400](https://bugs.linaro.org/show_bug.cgi?id=2060) - *Amit*- + +###### HiKey + +* -[Bug 274 - [RPB] xserver armsoc driver fails to allocate buffer](https://bugs.96boards.org/show_bug.cgi?id=274) - *Amit/Guodong/Xinliang*- +* [Bug 281 - [RPB] regression - constant hangs with linux-image-4.4.0-99-arm64](https://bugs.96boards.org/show_bug.cgi?id=281) - *Amit/Guodong* + +###### Overdrive + +* -[Bug 2051 - RPB: Overdrive fails to find the SATA disks when booting with ACPI](https://bugs.linaro.org/show_bug.cgi?id=2051) - *Graeme*- + +###### Dragonboard410c + +* -[Bug 2061 - [RPB] CONFIG_QCOM_SCM breaks XGENE support](https://bugs.linaro.org/show_bug.cgi?id=2061) - *Amit/Nicolas*- + +###### D02 + +* -[Bug 2037 - D02: Unable to handle kernel paging request](https://bugs.linaro.org/show_bug.cgi?id=2037) - *Amit/Hanjun*- +* -[Bug 2063 - D02: No console unless you boot with console=ttyS0,115200](https://bugs.linaro.org/show_bug.cgi?id=2063) - *Amit/Hanjun*- +* -[Bug 2032 - ACPI NUMA Support crashes on D02](https://bugs.linaro.org/show_bug.cgi?id=2032) - *Hanjun*- + +#### UEFI + +###### D02 + +* -[Bug 2062 - EDK2 D02: "sas: realizing _RST replacing syscon" breaks SAS support in Linux](https://bugs.linaro.org/show_bug.cgi?id=2062) - *Heyi*- +* -Lack of PCIe support for D02 on Linux (missing tables) - *Hanjun/Heyi*- +* Lack of SAS support in EDK2/UEFI - *Zhangfei* +* -[Bug 2075 - [RPB] D02: Latest EDK2 breaks network support in UEFI](https://bugs.linaro.org/show_bug.cgi?id=2075)- + +###### HiKey + +#### Debian + +* -[Bug 2009 - Wrong network device name set after Debian install](https://bugs.linaro.org/show_bug.cgi?id=2009) - *Ricardo* +* -[ttyAMA2 (tty96B0) missing on HiKey with 16.03-rc4](https://bugs.96boards.org/show_bug.cgi?id=273) - *Amit* + +###### DB410c + +#### AOSP + +###### DB410c + +* -[Bug 253 - [RPB] Gallery fails to open due a fatal exception in GLThread](https://bugs.96boards.org/show_bug.cgi?id=253)- + +#### OE/Yocto diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..15f676d --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted at: +- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) +- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) +- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) +- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) +- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) +- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) + +*Build setup:* + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +Also install make sure to install the following packages: + +```shell +sudo apt-get install libfdt-dev python-mako get text +``` + +*Download the firmware blobs:* + +```shell +mkdir android/ +cd android/ +mkdir -p vendor/db410c +cd vendor/db410c +wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin +sh firmware-410c-1.2.0.bin +cd - +``` + +*Build the image:* + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 +cd .repo +git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch db410c-userdebug +make droidcore -j8 +cd out/target/product/db410c +``` + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md new file mode 100644 index 0000000..e8ed4bd --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md @@ -0,0 +1,281 @@ +## Debian RPB 16.06 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain and Skales Tool + - Step 3: Export path to cross compiler tool and confirm version + - Step 4: Clone the Reference Platform kernel + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target DragonBoard™ 410c + - Step 12: Generate the initramfs + - Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.06 +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir` and call is something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir DB410c-16.06 +$ cd DB410c-16.06 +``` + +#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +``` + +###### Skales tool + +```shell +$ sudo apt-get install libfdt-dev +$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales +$ export PATH=$PATH:/tmp/skales +``` +>Skales will be used later when creating the device tree + + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes + +```shell +$ git clone -b 96b-kernelci http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- Once kernel source has been cloned cd into its directory + +```shell +$ cd kernel +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX +``` + +#### Step 7: Copy Modules + +- Modules must be local (host computer) before transferring to target device +- Still within linux directory +- Make temp folder +- Create modules + +```shell +$ mk tmp/modules +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 +``` + +#### Step 8: Find kernel release string + +- This was created during the kernel build +- In this example the kernel.release is 4.4.0+ + +```shell +$ cat include/config/kernel.release +#Output +$ 4.4.0+ +``` + +#### Step 9: Generate modules.dep and map files + +- Helps kernel find modules when system boots +- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 + +```shell +$ depmod -a -b /tmp/modules 4.4.0+ +``` + +#### Step 10: Find DragonBoard™ 410c IP Address + +- On your DragonBoard™ 410c +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 11: Transfer the modules to the target DragonBoard™ 410c + +- Using your board's IP Address for linaro@ + +```shell +$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules +$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#DragonBoard™ 410c shell +db410c $ tar -jxvf modules.tar.bz2 +db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ +``` + +#### Step 12: Generate the initramfs + +- You should still be in the DragonBoard™ 410c shell + +```shell +db410c $ sudo update-initramfs -k 4.4.0+ -c +``` + +- Copy back the new initramfs +- This will be used when creating the boot.mg + +#### Step 13: Create the device tree image and boot image + +###### Device tree + +```shell +$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom +``` + +###### Boot image + +```shell +$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" +``` + +Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. + +- Flashing the boot image can be done using fastboot +- Board must be booted into fastboot mode +- With USB to microUSB cable still connect execute the following: + +```shell +$ sudo fastboot flash boot boot.img +$ sudo fastboot reboot +``` + +*** + +### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +```shell +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +```shell +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `about` partition, you can now flash your board with: + +```shell +sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn +``` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TO-DO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md new file mode 100644 index 0000000..66afe04 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md @@ -0,0 +1,196 @@ +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..ef52214 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md @@ -0,0 +1,155 @@ +[]() +[]() +[]() +[]() +[]() + +>**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Android Bootloader and Boot file + +- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) +- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +#### Step 3: Download all remaining files + +- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) +- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) +- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Android using Fastboot with Linux host + +This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +fastboot devices +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +cd + +#Example: +cd dragonboard410c_bootloader_emmc_android +# = dragonboard410c_bootloader_emmc_android + +# This command will execute the flashall script within the bootloader folder +./flashall + +``` + +5 - **Recall location of all downloaded files from downloads page** + +This will include the files listed below: + +###### Reference Platform files + +- boot.img.tar.xz +- system.img.tar.xz +- userdata.img.tar.xz +- cache.img.tar.xz + +6 - **Unzip all files** + +7 - **Flash all files to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of all extracted(unzipped) files +- `cd` to the directory with your unzipped files +- From within extraction directory, execute the following commands: + +###### Reference Platform + +```shell +# (Once again) Check to make sure fastboot device connected +sudo fastboot devices + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the downloads +sudo fastboot flash boot boot.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img +sudo fastboot flash cache cache.img +``` + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into Android lock screen. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md new file mode 100644 index 0000000..f45ae71 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md @@ -0,0 +1,326 @@ +# Install Instructions - Reference Software Platform + +This page provides download and installation instructions inteded for those interested in flashing the DragonBoard 410c board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/). + +## Contents + +- [SD Card Method](#sd-card-method) +- [Fastboot Method](#fastboot-method) + +*** + +# SD Card Method + +#### Step 1: Read about the SD Card Method + +The SD card method allows you to place a microSD card into the DragonBoard™ 410c to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- MicroSD card with 4GB or more of storage +- USB Mouse and/or keyboard +- HDMI Monitor with full size HDMI cable + + +*** + +#### Step 2: Download SD Card Image + +[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-debian-jessie-alip-sdcard-*.img.gz) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** + +#### Step 3: Prepare MicroSD card + +- Ensure data from mircoSD card is backed up +- Everything on microSD card will be lost by the end of this procedure. + +*** + +#### Step 4: Find SD Card Device name + +- Use host Linux computer +- Open "Terminal" application +- Remove SD card from host computer and run the following command: +```shell +$ lsblk +``` +- Note all recognized disk names +- **Insert SD card** and run the following command (again): +```shell +$ lsblk +``` +- Note the newly recognized disk. This will be your SD card. +- **Remember** your SD card device name for a later step + +*** + +#### Step 5: Recall Download Location + +- Locate SD card install file from Downloads page. +- This file will be needed for the next step. + +*** + +#### Step 6: Unzip _SD Card Install Image_ + +- When unzipped, you will have a folder with the following contents: + - Linaro/Debian Install Image (.img) + - Readme + + +*** + +#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal + +- Use host Linux computer +- Open "Terminal" application +- `cd` to the directory with your unzipped **Debian SD Card Install Image** + +```shell +$ cd + +#Example: +# = /home/YourUserName/Downloads +#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. +$ cd /home/YourUserName/Downloads +``` + + +*** + +#### Step 8: Locate SD Card Install Image + +- Make sure you are in the extraction directory + +**Unzipped Debian SD Card download will be a folder. This folder should be listed in your directory. Type `ls` from command line for a list of files that can be found in your current directory**: + +```shell +$ ls + +#output +dragonboard410c_sdcard_install_debian-XX +``` + +- Unzipped folder should be called dragonboard410c_sdcard_install_debian-XX, where XX represents the Debian release number +- `cd` into this directory + +```shell +$ cd dragonboard410c_sdcard_install_debian-XX +``` + +- Inside this folder you will find the install image + - `db410c_sd_install_debian.img` +- This `.img` file is what will be flashed to your SD Card. + + +*** + +#### Step 9: Install Image onto SD Card + +**Checklist:** + +- SD card inserted into host Linux computer +- Recall SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name) +- From within the dragonboard410c_sdcard_install_debian-XX folder, using the Terminal execute the following commands: + +**Execute:** + +```shell +$ sudo dd if=db410c_sd_install_debian.img of=/dev/XXX bs=4M oflag=sync status=noxfer +``` + +**Note:** + +- `if=db410c_sd_install_debian.img`: should match the name of the image that was downloaded. +- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name). Be sure to use the device name with out the partition. +- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. +- Once SD card is done flashing, remove from host computer and set aside for a later step + +*** + +#### Step 10: Prepare DragonBoard™ 410c with SD card + +- Make sure DragonBoard™ 410c is unplugged from power +- Set S6 switch on DragonBoard™ 410c to `0-1-0-0`, "SD Boot switch" should be set to "ON". + - Please see "1.1 Board Overview" on page 7 from [DragonBoard™ 410c Hardware Manual](http://linaro.co/96b-hwm-db) if you cannot find S6 +- Connect an HDMI monitor to the DragonBoard™ 410c with an HDMI cable, and power on the monitor +- Plug a USB keyboard and/or mouse into either of the two USB connectors on the DragonBoard™ 410c +- Insert the microSD card into the DragonBoard™ 410c +- Plug power adaptor into DragonBoard™ 410c, wait for board to boot up. + +*** + +#### Step 11: Install RPB Linaro/Debian onto DragonBoard™ 410c + + + +- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your DragonBoard™ 410c +- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory +- This process can take a few minutes to complete +- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. + +Before clicking "OK": + +- Remove the SD Card +- Set S6 switch on DragonBoard™ 410c to `0-0-0-0`, all switches should be set to "OFF" +- Now click "OK" button and allow DragonBoard™ 410c to reboot. + +**Congratulations! You are now booting your newly installed operating system directly from eMMC on the DragonBoard™ 410c!** + +[Back to top](#install-instructions---reference-software-platform) + +*** + +# Fastboot Method + + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host Linux machine +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian Bootloader + +- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) + +#### Step 3: Download Boot image and Root file system + +- Debian Boot ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) +- Debian Rootfs (Desktop) ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Wait for about 20 seconds. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +$ fastboot devices +``` + +Typically it will show as bellow +```shell +de82318 fastboot +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` +- XX represents the release number of the Bootloader +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +$ cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +$ cd + +#Example: +cd dragonboard410c_bootloader_emmc_linux-40 +# = dragonboard410c_bootloader_emmc_linux-40 +#This example took place during release 40 + +# This command will execute the flashall script within the bootloader folder +$ ./flashall + +``` + +5 - **Recall location of `boot` and `rootfs` download from the downloads page** + +- You should have downloaded the `boot` file +- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) + +6 - **Unzip both 'boot' and 'rootfs' files** + +7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of extracted(unzipped) `boot` file +- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) +- `cd` to the directory with your unzipped `boot` and `rootfs` files +- From within extraction directory, execute the following commands: + +```shell +# (Once again) Check to make sure fastboot device connected +$ sudo fastboot devices +# It will show similar to bellow if the device is connected successfully +de82318 fastboot + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the boot and rootfs downloads +$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img +$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img +``` +**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into either command line or desktop depending on rootfs + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + +[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md new file mode 100644 index 0000000..d64f135 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md @@ -0,0 +1,212 @@ +## OpenEmbedded RPB 16.03 - Build from Source + +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +## OE Layers + +| Layer | Description | +|:-----------------------:|:----------------------| +| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | +| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | +| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | +| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | +| Meta-qt5 | This is a cross-platform toolkit. | +| Meta-linaro | This layer is used to get the Linaro toolchain. | +| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | +| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..cb2b5f5 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,17 @@ +## Dragonboard™ 410c - Reference Platform Build - 16.06 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. + +*** + +| **CE Debian RPB - 16.06** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-16.06.md) | +| [Build from Source](BFSDebianRPB-16.06.md) | +| [Known issues](../../../Known-Issues.md) | + +*** + +- Access generic **OpenEmbedded** build from source instructions [here](../../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md new file mode 100644 index 0000000..8823ad6 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted here: +- https://github.com/96boards/android_hardware_ti_wpan +- https://github.com/96boards/android_device_linaro_hikey +- https://github.com/96boards/android_manifest +- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +**Build setup:** + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +###### Out of date: +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +```shell + ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp +``` + +*** + +**Download the code:** + +```shell +mkdir android/ +cd android/ +``` + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +**Build the image:** + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hiked +``` diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md new file mode 100644 index 0000000..6c74c11 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md @@ -0,0 +1,182 @@ +## Debian RPB 16.06 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain + - Step 3: Export path to cross compiler tool and confirm version + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image and debian package + - Step 7: Find HiKey IP Address + - Step 8: Transfer the modules to the target HiKey + - Step 9: Generate the initramfs + - Step 10: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.06 +defconfig: arch/arm64/configs/distro.config +``` + +The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir`, name it something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir HiKey-16.06 +$ cd HiKey-16.06 +``` + +#### Step 2: Step 2: Download the Linaro cross compiler toolchain + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +``` + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=~/Desktop/HiKey-16.06/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes +- Use **96b/releases/2016.06** if you want the same version used by the 16.06 release + +```shell +$ git clone -b 96b/releases/2016.06 http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process +- Once kernel source has been cloned cd into its directory + +```shell +$ cd linux +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ cp arch/arm64/configs/distro.config .config +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image and debian package + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory +- Creating the kernel package is recommended for HiKey, as it supports Grub 2 + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag +``` + +#### Step 7: Find HiKey IP Address + +- On your HiKey board +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 8: Transfer the modules to the target HiKey + +- Using your board's IP Address for linaro@ + +```shell +$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#HiKey shell + +$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb +``` +Congratulations! Your new kernel is now ready to be used by your HiKey. + +- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel +- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated + +### Boot Loader + +Please see go [here](BuildSourceBL.md) for instructions on how to built the boot loader from source. + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +```shell +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md new file mode 100644 index 0000000..9dce74b --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md @@ -0,0 +1,86 @@ +## HiKey Bootloader - Building from source + +The source code is available from: +- [**l-loader**](https://github.com/96boards-hikey/l-loader) +- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) +- [**OP-TEE**](https://github.com/OP-TEE/optee_os) +- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) + +Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. + +### Build instructions + +Prerequisites: +- GCC 5.3 cross-toolchain for Aarch64 available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) +- GCC 5.3 cross-toolchain for gnueabihf available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) +- GPT fdisk (gdisk package from your favorite distribution). + +#### Installing pre-built toolchain(s) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +```shell +git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git +git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git +git clone https://github.com/OP-TEE/optee_os.git +git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git +git clone https://github.com/96boards-hikey/l-loader.git +git clone -b hikey-aosp https://github.com/96boards-hikey/uefi-tools.git +``` + +#### Building EDK2/UEFI for HiKey + +Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. + +To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export EDK2_DIR=${PWD}/edk2 +export OPTEE_DIR=${PWD}/optee_os +export ATF_DIR=${PWD}/arm-trusted-firmware +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${EDK2_DIR} +rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg +${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} -s ${OPTEE_DIR} hikey +``` + +And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): + +```shell +cd ../l-loader +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin +make # requires sudo for creating the partition tables +``` + +The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. + +#### EFI boot partition + +The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). + +```shell +wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi +mkdir boot-fat +dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 +sudo mkfs.fat -n "boot" boot-fat.uefi.img +sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat +sudo mkdir -p boot-fat/EFI/BOOT +sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi +sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi +sudo umount boot-fat +sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img +rm -rf boot-fat +``` + +Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md new file mode 100644 index 0000000..317256b --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md @@ -0,0 +1,126 @@ +#### Your Build Choice + +[]() +[]() +[]() +[]() +[]() + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download the following files + +>Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +Build Folders (**Binaries** / **Image**) + +- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) +- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) +- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) +- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) +- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) +- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) +- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) +- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) +- **system.img.tar.xz** (**Download**) + +*** + +#### Step 3: Install AOSP Using Fastboot with Linux host + +This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Set HiKey into Recovery Mode using J15 header** + +- Remove link between pins 5 and 6 +- Link pins 1 and 2 +- Link pins 3 and 4 + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | closed +GPIO3-1 | Link 5-6 | open + +4 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable ptable-aosp-8g.img +$ sudo fastboot reboot +$ sudo fastboot flash boot boot_fat.uefi.img +$ sudo fastboot flash cache cache.img +$ sudo fastboot flash system system.img +$ sudo fastboot flash userdata userdata-8gb.img +``` + +5 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 3-4 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md new file mode 100644 index 0000000..d14bb67 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -0,0 +1,265 @@ +# Install Instructions - Reference Software Platform + +This page provides download and installation instructions inteded for those interested in flashing the HiKey board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/). + +## Contents + +- [SD Card Method](#sd-card-method) +- [Fastboot Method](#fastboot-method) + +*** + +# SD Card Method + + + + + + + +#### Step 1: Read about the SD Card Method + +The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. + +This method requires the following hardware: +- HiKey with power supply +- Host Linux machine (Linux, Mac OS X, or Windows) +- MicroSD card with 4GB or more of storage +- USB Mouse and/or keyboard +- HDMI Monitor with full size HDMI cable + + +*** +#### Step 2: Download SD Card Image + +**Debian Linux Reference Software Platform - SD Card Image** + +[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-debian-jessie-alip-sdcard-*.img.gz) + +*** + +#### Step 3: Prepare MicroSD card + +- Ensure data from mircoSD card is backed up +- Everything on microSD card will be lost by the end of this procedure. + +*** + +#### Step 4: Find SD Card Device name + +- Use host Linux computer +- Open "Terminal" application +- Remove SD card from host computer and run the following command: +```shell +lsblk +``` +- Note all recognized disk names +- **Insert SD card** and run the following command (again): +```shell +lsblk +``` +- Note the newly recognized disk. This will be your SD card. +- You will need to remember this device name for a later step. + +*** + +#### Step 5: Recall Download Location + +- Locate SD card install file from Downloads page. +- This file will be needed for the next step. + +*** + +#### Step 6: Unzip _SD Card Install Image_ + +- When unzipped, you will have a folder with the following contents: + - Linaro/Debian Install Image (.img) + - Readme + +*** + +#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal + +- Use host Linux computer +- Open "Terminal" application +- `cd` to the directory with your unzipped **SD Card Install Image** + +```shell +cd + +#Example: +# = /home/YourUserName/Downloads +#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. +cd /home/YourUserName/Downloads +``` + +*** + +#### Step 8: Install Image onto SD Card + +**Checklist:** + +- SD card inserted into host Linux computer +- Recall SD Card device name **Step 4** +- From within the extraction folder, using the Terminal execute the following commands: + +**Execute:** + +```shell +sudo dd if=hikey-jessie_alip_2015MMDD-nnn.img of=/dev/XXX bs=4M oflag=sync status=noxfer +``` + +**Note:** + +- `if=hikey-jessie_alip_2015MMDD-nnn.img`: should match the name of the image that was downloaded. +- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](). Be sure to use the device name with out the partition. +- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. +- Once SD card is done flashing, remove from host computer and set aside for a later step + + +*** + +#### Step 9: Prepare HiKey with SD card + +- Make sure HiKey is unplugged from power +- Connect an HDMI monitor to the HiKey with an HDMI cable, and power on the monitor +- Plug a USB keyboard and/or mouse into either of the two USB connectors on the HiKey +- Insert the microSD card into the HiKey +- Plug power adaptor into HiKey, wait for board to boot up. + +*** + +#### Step 10: Install Linaro/Debian onto HiKey + + + +- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your HiKey +- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory +- This process can take a few minutes to complete +- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. + +Before clicking "OK": + +- Remove the SD Card +- Now click "OK" button and allow HiKey to reboot. + +**Congratulations! You are now booting your newly installed operating system directly from eMMC on the HiKey** + +[Back to top](#install-instructions---reference-software-platform) + +*** + +# Fastboot Method + + + + + + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host Linux machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian partition table + +> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +**ptable-linux.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-8g.img)) + +*** + +#### Step 3: Download Boot image and Root File System + +- **Debian Boot** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-boot-linux-*.uefi.img.gz)) +- **Debian Rootfs** (**Download**) + +*** + +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. + + + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Wait for about 10 seconds +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Installation/BoardRecovery.md) and return to this step once your board is ready + +3 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable .img +$ sudo fastboot reboot +$ sudo fastboot flash boot .uefi.img +$ sudo fastboot flash system hikey-rootfs-debian-jessie-alip-YYYYMMDD-nnn.emmc.img +``` + +4 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 5-6 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** + +[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..7f936e4 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/HiKey/README.md @@ -0,0 +1,31 @@ +## Reference Platform Build - 16.06 + + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. + +*** + +#### HiKey + + +| **CE Debian RPB - 16.06** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB.md) | +| [Build from Source](BFSDebianRPB.md) | +| [Known issues](../../../Known-Issues.md) | + + + +| **CE AOSP** | +|:---------------------------:| +| [Install Instructions](https://source.android.com/source/devices.html) | +| [Known issues](../../../Known-Issues.md) | + + + +*** + +- Access **bootloader** build from source instructions [here](BuildSourceBL.md) +- Access **OpenEmbedded** build from source instructions [here](../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Cello/README.md new file mode 100644 index 0000000..7fa5dc9 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Cello/README.md @@ -0,0 +1,58 @@ +### LeMaker Cello + +*** + +### Critical Bug List + +As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once the Realtek UEFI driver gets integrated as part of OpenPlatformPkg, it will also be possible to PXE boot the installer. + +Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Distro Installers + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D02/README.md new file mode 100644 index 0000000..43547db --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D02/README.md @@ -0,0 +1,59 @@ +### D02 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### D02 - QuickStart + +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D03/README.md new file mode 100644 index 0000000..5802a3c --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/D03/README.md @@ -0,0 +1,59 @@ +### D03 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### D03 - QuickStart + +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md new file mode 100644 index 0000000..2b6ff67 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -0,0 +1,47 @@ +### HP ProLiant m400 + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Overdrive/README.md new file mode 100644 index 0000000..3b4fd01 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Overdrive/README.md @@ -0,0 +1,59 @@ +### Overdrive + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### AMD Overdrive + +UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md new file mode 100644 index 0000000..fc8e51e --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md @@ -0,0 +1,46 @@ +## Qualcomm QDF2432 Server Development Platform + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/ThunderX/README.md new file mode 100644 index 0000000..db5c79b --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/ThunderX/README.md @@ -0,0 +1,46 @@ +### Cavium ThunderX + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md new file mode 100644 index 0000000..bd2077f --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md @@ -0,0 +1,48 @@ +### X-Gene Mustang + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/Highlights.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/Highlights.md new file mode 100644 index 0000000..0f94f24 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/Highlights.md @@ -0,0 +1,96 @@ +### Highlights for 16.06 release: + +*** + +###### Consumer and Enterprise Edition: + +#### Kernel + +- Unified tree shared between the CE and EE builds. +- 4.4.11-based, including some under-review topic branches to extend the features and platform hardware support. +- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. +- Added OP-TEE support + - Enabled on HiKey and Juno-r1 +- Supports Reference HW platforms HiKey and Cello + - Other Test Platforms include: Dragonboard 410c, Hisilicon D02 and D03, APM X-Gene, HP Proliant m400, AMD Overdrive, Qualcomm QDF2432 Server Development Platform, and Cavium ThunderX. +- Single kernel config for all platforms in arch/arm64/configs/distro.config +- Single kernel binary (package) for all platforms + +#### Bootloader + +- UEFI OpenPlatformPkg (upstream) now contains reference implementations for Huawei D02/D03, AMD Overdrive and LeMaker Cello +- U-boot support in DB410c images to allow easier handling of images + +*** + +###### Consumer Edition: + +#### Reference hardware platform: +- LeMaker Hikey + +#### Other supported test platforms: +- Dragonboard 410c + +#### Overall CE Debian platform features, validated as part of the release: +- UEFI with DT +- Upgrade to Debian 8.5 "Jessie" +- Upgrade to the unified 4.4.11 Linux Kernel +- Upgrade graphics components: Mesa 11.1.2 and XServer 1.17.3a +- Rootfs automatically resized during the first boot + +#### CE Debian RPB for HiKey: +- OP-TEE integrated by default +- UEFI updated to use the latest development trees based on Tianocore + - OpenPlatformPkg + +#### CE Debian build for DragonBoard™ 410c: +- U-boot chain-loaded from LK + +#### CE OE/Yocto RPB: +- First OpenEmbedded-based RPB, including several changes and components merged from the LHG OE layers +- Dragonboard 410c and HiKey support +- HiKey features: + - OP-TEE initial support + - Mali support for HiKey +- Dragonboard 410c features: + - GPU, WLAN, BT, audio, LS I/O, camera and GPS + +*** + +###### Enterprise Edition + +#### Reference hardware platform: +- LeMaker Cello + +#### Other supported test platforms: +- AMD Overdrive A0 and B0 +- Hisilicon D02 +- Hisilicon D03 (new) +- APM X-Gene Mustang +- HP ProLiant m400 +- Qualcomm QDF2432 Server Development Platform (new) +- Cavium ThunderX (new) + +#### Overall platform features, validated as part of the release: +- UEFI with ACPI +- KVM +- PCIe + +#### Firmware: +- UEFI OpenPlatformPkg (upstream) now contains reference implementation for Huawei D02/D03, AMD Overdrive and LeMaker Cello + +#### Network Installers: +- Debian: + - Upgrade to Debian 8.5 "Jessie" + - Use the unified 4.4.11 kernel +- CentOS + - Based on CentOS 7.2 16.03 + - Use the unified 4.4.11 kernel + +#### Enterprise Components: +- Docker 1.9.1 +- OpenStack Liberty for Debian Jessie and CentOS +- ODPi 1.0.0 based Hadoop +- Spark 1.3.1 +- OpenJDK 8 +- QEMU 2.6 diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/Known-Issues.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/Known-Issues.md new file mode 100644 index 0000000..fb56320 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/Known-Issues.md @@ -0,0 +1,47 @@ +# Reference Platform Build - 16.06 Release - Known Issues + +## Fixed Issues + +These lists group all **fixed RPB issues** into their repective categories. Underlying Consumer and Enterprise Edition boards, and their bug fixes are grouped under a single page for convenience and quick reference. + +| Fixed Issues | | +|:---|:----| +| Enterprise | (Full List) | +| Conssumer | HiKey / DragonBoard 410c | + +[Report a bug](Report-a-bug.md) + +## Current Issues + +These lists group all **current and unfixed bugs** into their respective categories. Basic bug summaries and descriptions are available on Bugzilla, links to each full lists of bugs are available for convenience and quick reference. + +| Enterprise | Known Issues | +|:-----------|:---| +| Cello/Overdrive | (Full List) | +| APM/HP-m400 | (Full List) | +| D02 | (Full List) | +| D03 | (Full List) | +| Qualcomm QDF2432 Server Development Platform | (Full List) | +| ThunderX | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Consumer | Known Issues | +|:-----------|:---| +| HiKey | (Full List) | +| DragonBoard 410c | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Bug Legend | | +|:-----:|:-------| +| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | +| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | +| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | +| VERIFIED | A team has VERIFIED a working solution for a bug | + +*** diff --git a/Reference-Platform/Platforms/Consumer/RPB_16.06/README.md b/Reference-Platform/Platforms/Consumer/RPB_16.06/README.md new file mode 100644 index 0000000..1a9666f --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/RPB_16.06/README.md @@ -0,0 +1,24 @@ +# Reference Software Platform - 16.06 + +[RPB 16.06 Highlights](Highlights.md) | [RPB 16.06 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition + +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [LeMaker Cello](EnterpriseEdition/Cello/README.md) +- [D02](EnterpriseEdition/D02/README.md) +- [D03](EnterpriseEdition/D03/README.md) +- [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) +- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) +- [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) +- [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) +- [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) + +Visit our [Components Downloads Page](https://builds.96boards.org/releases/reference-platform/components/) + +*** diff --git a/Reference-Platform/Platforms/Enterprise/.DS_Store b/Reference-Platform/Platforms/Enterprise/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..11b39ced90e1864b583ba0d9b47a4c5b5d71f440 GIT binary patch literal 6148 zcmeHKO-sW-5PhRP6ujirP5IqA+MeFEiRGR}P3Lv$(C7~y0c_|wa-9clJgLulrDJEPt7w0w Q6XPL}1&JyY_yq;t0fLV=#sB~S literal 0 HcmV?d00001 diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md new file mode 100644 index 0000000..9db0980 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -0,0 +1,37 @@ +# Reference Software Platform - Legacy + + + + +The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. +For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) + +**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) + +*** + +| | | | +|:---:|:---:|:---:| +| | | | + + + + + - **[16.06(Latest)](Releases/RPB_16.06/README.md)** + - [16.03](Releases/RPB_16.03/README.md) + - [15.12](Releases/RPB_15.12/README.md) + - [15.10(Alpha)](Releases/RPB_15.10/README.md) + +*** + +#### Resources + +| Extras and Support | Progress and Policy | +|:-----------------------------------------------------:|:-----------------------------------------:| +| [RPB CI](Extras/RPB-CI.md) | [Kernel Policy](Extras/KernelPolicy.md) | +| [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| +| [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | + +*** + +[Document Contribution Policy](../ContributionPolicy.md) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md new file mode 100644 index 0000000..3087438 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md @@ -0,0 +1,122 @@ +### How to get and customize the kernel source code + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/rsalveti/linux) + +``` +git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.10-qcom +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the [Linaro GCC cross compiler (Aarch64 little-endian)](http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +``` +git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-qcom +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release +``` + +#### Building a boot image + +You now need to create a valid boot image with your own kernel build. + +On your host PC, we need to install the following tools: + +``` +sudo apt-get install device-tree-compiler +git clone git://codeaurora.org/quic/kernel/skales +``` + +The boot image consists of the table of device tree (`dt.img`), the kernel image (`Image`) and an init ramdisk image. + +The `dtbTool` is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. + +`./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/` + +To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. + +The tool `mkbootimg` (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: + +``` +./skales/mkbootimg --kernel arch/arm64/boot/Image \ + --ramdisk initrd.img \ + --output boot-db410c.img \ + --dt dt.img \ + --pagesize 2048 \ + --base 0x80000000 \ + --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" +``` + +#### Booting a custom boot image + +Assuming you have now built a valid boot image called `boot-db410c.img`, you can run the following `fastboot` command to boot it on the board: + +`sudo fastboot boot boot-db410c.img` + +If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the `boot` partition: + +`sudo fastboot flash boot boot-db410c.img` + +#### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +``` +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +``` +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `aboot` partition, you can now flash your board with: + +`sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +``` +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +``` +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md new file mode 100644 index 0000000..14f6bd8 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md @@ -0,0 +1,81 @@ +## Install Instructions - CE Debian RPB 15.10 - Dragonboard410c + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for Dragonboard410c. + +For more information about the Dragonboard410c development board, please check https://www.96boards.org/products/ce/dragonboard410c/ + +### Image Components + +The CE Debian RPB 15.10 - Dragonboard410c build is composed of the following artifacts: + +- Bootloader: + - [Qualcomm proprietary first stage bootloader](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip) + - [Little Kernel](https://git.linaro.org/landing-teams/working/qualcomm/lk.git) as second stage boot loader +- Linux Kernel: + - Upstream plus extra changes for a better hardware support + - Git: https://github.com/rsalveti/linux.git + - Branch: *reference-qcom-rebase* +- Debian "Jessie" + - ALIP (LXDE based) + - Custom 96Boards artworks and default settings + - Additional packages provided by [linaro-overlay](http://repo.linaro.org/ubuntu/linaro-overlay) + +#### Closed source binaries + +This release contains proprietary firmware. You can also download the proprietary firmware separately, from [here](https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin). All the required firmware files are pre-installed, and the image is bound to the following [license agreement](https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt). + +### Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +Download the latest bootloader zip from [http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux*.zip) + +*CE Debian RPB image:* + +``` +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-boot-linux-20151106-31.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz +gunzip dragonboard410c-* +``` + +### Flashing + +#### Bootloader + +Flash the eMMC with the bootloader: + +- Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. +- Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC +- Assure micro SD Card slot is empty on the DB410c +- Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} +- Power on the DB410c into fastboot mode + - Press and hold the Vol (-) button on the DB410c (S4) + - While pressing S4 button, power up the DB410c. It will come up in fastboot mode +- From the host PC terminal window, run the following commands: + +``` +# Check to make sure fastboot device connected. If not resolve +sudo fastboot devices +# cd to the directory the bootloader zip file was extracted +cd +sudo ./flashall +``` + +The bootloader is now installed on the DB410c. + +#### Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +*Flashing boot and rootfs:* + +``` +sudo fastboot flash boot dragonboard410c-boot-linux-20151106-31.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img +``` + +Once flashed just reboot the board and enjoy :-) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..2f79a1c --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,15 @@ +## Dragonboard™ 410c - Reference Platform Build - 15.10 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 15.10** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-15.10.md) | +| [Build from Source](BFSDebianRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md new file mode 100644 index 0000000..d47aa23 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md @@ -0,0 +1,44 @@ +h4. Building AOSP from source + +*NOTE*: This build instructions are not yet reflecting the 15.10 image + +AOSP sources are hosted in these repositories: +* https://github.com/96boards/android_hardware_ti_wpan +* https://github.com/96boards/android_external_wpa_supplicant_8 +* https://github.com/96boards/android_device_linaro_hikey +* https://github.com/96boards/android_manifest + +*Build setup:* + +Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html + +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +bc. ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp + +*Download the code:* + +bc. $ mkdir android/ +$ cd android/ + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +*Build the image:* + +bc. $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1\ +> -g "default,-device,hikey" +$ cd .repo/ +$ git clone https://github.com/96boards/android_manifest -b android-5.0 local_manifests +$ cd - +$ repo sync -j8 +$ source build/envsetup.sh +$ lunch hikey-userdebug +$ make droidcore -j8 +$ cd out/target/product/hikey + +h4. TODO + +* Update to reflect the latest/current build diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md new file mode 100644 index 0000000..a8f9ccd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md @@ -0,0 +1,53 @@ +h3. Boot Loader + +Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. + +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.10-hikey +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-hikey +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md new file mode 100644 index 0000000..ea36329 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md @@ -0,0 +1,88 @@ +h2. Install Instructions - CE AOSP RPB 15.10 - HiKey + +This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.10, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE AOSP RPB 15.10 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader +* Linux Kernel: +** Derived from Linux 3.18 kernel +** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git +** Branch: *hikey* +* AOSP Android Marshmallow 6.0 + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.5* +* Extra firmware files available from firmware-linux +* Mali (requires EULA) + +h3. Downloading the pre-built binaries + +The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/ptable-aosp.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/hisi-idt.py + +*CE AOSP RPB image:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/boot_fat.uefi.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/cache.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/userdata.img.tar.xz + +Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz and follow the instructions to download the file. + +Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: + +bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 +sudo fastboot flash ptable ptable-aosp.img +sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-aosp.img@), otherwise flashing the system image might fail. + +h4. Boot, System, Cache and Userdata + +Fastboot is required to flash boot, system, cache and userdata. + +Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash the images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot, cache, system and userdata:* + +bc. sudo fastboot flash boot boot_fat.uefi.img +sudo fastboot flash cache cache.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferencePlatform + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md new file mode 100644 index 0000000..d94b908 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md @@ -0,0 +1,85 @@ +h2. Install Instructions - CE Debian RPB 15.10 - HiKey + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE Debian RPB 15.10 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-hikey-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay +** Kernel and initrd loaded from the rootfs (under /boot) + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.6* +* Extra firmware files available from firmware-linux +* Mali (not yet included by default) + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/ptable-linux.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/hisi-idt.py + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-boot-linux-20151106-31.uefi.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz +gunzip hikey-* + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 +sudo fastboot flash ptable ptable-linux.img +sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-linux.img@), otherwise flashing the rootfs might fail. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot hikey-boot-linux-20151106-31.uefi.img +sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferenceSoftware diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..a7f56c2 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/HiKey/README.md @@ -0,0 +1,24 @@ +# HiKey Reference Platform Build - 15.10 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| [CE Debian RPB - 15.10](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/) | +|:------|:------| +| [Install instructions](InstallDebianRPB-15.10.md) | +| [Build from source](BFSDebianRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/CE-Debian-RPB-15.10-HiKey-TestReport.pdf) | + + + +| [CE AOSP RPB - 15.10](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/) | +|:------|:------| +| [Install instructions](InstallAOSP-15.10.md) | +| [Build from source](BFSAOSPRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/CE-AOSP-RPB-15.10-HiKey-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/Highlights.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/Highlights.md new file mode 100644 index 0000000..52be04b --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/Highlights.md @@ -0,0 +1,16 @@ +# Highlights + +The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). + +While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at https://builds.96boards.org/releases/dragonboard410c/ and https://builds.96boards.org/releases/hikey/. + +##### Highlights for this release: + +- CE Debian RPBs: + - Debian 8.2 "Jessie" + - 4.3 kernel (with additional patches) + - OpenJDK 8 included by default + - 96Boards artworks and default settings +- CE AOSP RPB: + - AOSP Android Marshmallow 6.0 + - 3.18 based kernel diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/Known-Issues.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/Known-Issues.md new file mode 100644 index 0000000..03c5da1 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/Known-Issues.md @@ -0,0 +1,56 @@ +## Reference Platform Build - 15.10 Release - Known Issues + +### UEFI - HiKey + +- "Bug 117":https://bugs.96boards.org/show_bug.cgi?id=117 - UEFI fastboot uploads hangs for large images + - Workaround is to use the fastboot support provided by the ARM TF (@bl1.bin@, provided by the binary @l-loader.bin@) + +### Debian + +#### HiKey + +- Mali not supported, missing kernel and userspace support +- [Bug 20](https://bugs.96boards.org/show_bug.cgi?id=20) - USB kernel trace errors -22 +- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete +- [Bug 86](https://bugs.96boards.org/show_bug.cgi?id=86) - Debian ALIP: resize UI screen when underlying DRM resolution changed. +- [Bug 143](https://bugs.96boards.org/show_bug.cgi?id=143) - Mouse cursor invisible after boot (until you open an application) +- [Bug 144](https://bugs.96boards.org/show_bug.cgi?id=144) - Shutdown is not clean +- [Bug 145](https://bugs.96boards.org/show_bug.cgi?id=145) - Thermal sensor is not readable +- [Bug 147](https://bugs.96boards.org/show_bug.cgi?id=147) - Highest resolution of 1080p monitor cannot be detected +- [Bug 148](https://bugs.96boards.org/show_bug.cgi?id=148) - Bluetooth doesn't work +- [Bug 150](https://bugs.96boards.org/show_bug.cgi?id=150) - Cannot login when the screen is locked +- [Bug 151](https://bugs.96boards.org/show_bug.cgi?id=151) - glxgears: couldn't get an RGB, Double-buffered visual +- [Bug 152](https://bugs.96boards.org/show_bug.cgi?id=152) - SD-Card doesn't work +- [Bug 159](https://bugs.96boards.org/show_bug.cgi?id=159) - No sound cards found +- [Bug 160](https://bugs.96boards.org/show_bug.cgi?id=160) - Behaviors of power on button not following hardware user guide + +#### DragonBoard 410c + + - Freedreno graphics driver not provided by the image + -Newer mesa, libdrm and freedreno xorg driver is needed (to be available as part of the next release) + - Workaround is to enable the qcom overlay PPA, and install the required packages: + +``` +sudo su - +echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list +apt-get update +apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno +reboot +``` + +- Slow USB throughput: https://www.96boards.org/forums/topic/super-slow-usb/ +- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete +- [Bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) - Cannot soft power off or shutdown db410c +- [Bug 154](https://bugs.96boards.org/show_bug.cgi?id=154) - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) +- [Bug 156](https://bugs.96boards.org/show_bug.cgi?id=156) - HDMI resolution change not workin +- [Bug 157](https://bugs.96boards.org/show_bug.cgi?id=157) - HDMI audio not working (MIGHT NOT BE A BUG) +- [Bug 165](https://bugs.96boards.org/show_bug.cgi?id=165) - HDMI Display sleep - no way to wake back up + +### AOSP + +#### HiKey + +- [Bug 136](https://bugs.96boards.org/show_bug.cgi?id=136) - HDMI goes off while running CTS +- [Bug 161](https://bugs.96boards.org/show_bug.cgi?id=161) - Fails to enter sleep mode +- [Bug 163](https://bugs.96boards.org/show_bug.cgi?id=163) - HDMI audio not working +- [Bug 164](https://bugs.96boards.org/show_bug.cgi?id=164) - Behaviors of power on button not following hardware user guide diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.10/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.10/README.md new file mode 100644 index 0000000..7a92254 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.10/README.md @@ -0,0 +1,12 @@ +# Reference Platform Build - 15.10 + +[RPB 15.10 Highlights](Highlights.md) | [RPB 15.10 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +*** + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md new file mode 100644 index 0000000..a5c3977 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md @@ -0,0 +1,104 @@ +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-qcom +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @boot@ image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-qcom +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +h4. Building a boot image + +You now need to create a valid boot image with your own kernel build. + +On your host PC, we need to install the following tools: + +bc. sudo apt-get install device-tree-compiler +git clone git://codeaurora.org/quic/kernel/skales + +The boot image consists of the table of device tree (@dt.img@), the kernel image (@Image@) and an init ramdisk image. + +The @dtbTool@ is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. + +bc. ./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/ + +To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. + +The tool @mkbootimg@ (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: + +bc. ./skales/mkbootimg --kernel arch/arm64/boot/Image \ + --ramdisk initrd.img \ + --output boot-db410c.img \ + --dt dt.img \ + --pagesize 2048 \ + --base 0x80000000 \ + --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" + +h4. Booting a custom boot image + +Assuming you have now built a valid boot image called @boot-db410c.img@, you can run the following @fastboot@ command to boot it on the board: + +bc. sudo fastboot boot boot-db410c.img + +If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the @boot@ partition: + +bc. sudo fastboot flash boot boot-db410c.img + +h4. How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on "Qualcomm Developer Network":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip, the second stage bootloader is @LK@ and is open source. + +The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the "Linaro Qualcomm Landing Team git repository":https://git.linaro.org/landing-teams/working/qualcomm/lk.git: + +bc. git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 + +To build the LK bootloader, you can use the following instructions: + +bc. git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- + +The second stage bootloader is flashed on the @aboot@ partition, you can now flash your board with: + +bc. sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md new file mode 100644 index 0000000..59fc76a --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md @@ -0,0 +1,81 @@ +h2. Install Instructions - CE Debian RPB 15.12 - Dragonboard410c + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for Dragonboard410c. + +For more information about the Dragonboard410c development board, please check "https://www.96boards.org/products/ce/dragonboard410c/":https://www.96boards.org/products/ce/dragonboard410c/ + +h3. Image Components + +The CE Debian RPB 15.12 - Dragonboard410c build is composed of the following artifacts: + +* Bootloader: +** "Qualcomm proprietary first stage bootloader":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip +** "Little Kernel":https://git.linaro.org/landing-teams/working/qualcomm/lk.git as second stage boot loader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-qcom-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay + +h4. Closed source binaries + +This release contains proprietary firmware. You can also download the proprietary firmware separately, from "here":https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin. All the required firmware files are pre-installed, and the image is bound to the following "license agreement":https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt. + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +Download the latest bootloader zip from "http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest":http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest (look for dragonboard410c_bootloader_emmc_linux*.zip) + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-boot-linux-20151214-35.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip dragonboard410c-* + +h3. Flashing + +h4. Bootloader + +Flash the eMMC with the bootloader: + +* Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. +* Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC +* Assure micro SD Card slot is empty on the DB410c +* Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} +* Power on the DB410c into fastboot mode +** Press and hold the Vol (-) button on the DB410c (S4) +** While pressing S4 button, power up the DB410c. It will come up in fastboot mode +* From the host PC terminal window, run the following commands: + +bc. # Check to make sure fastboot device connected. If not resolve +sudo fastboot devices +# cd to the directory the bootloader zip file was extracted +cd +sudo ./flashall + +The bootloader is now installed on the DB410c. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot dragonboard410c-boot-linux-20151214-35.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform + +In the case that the board experiences an irrecoverable error and no longer function, please check the "rescue image guide":https://github.com/96boards/documentation/wiki/Dragonboard-410c-Installation-Guide-for-Linux-and-Android#create--install-a-rescue-image diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..4245bd0 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,14 @@ +## Dragonboard™ 410c - Reference Platform Build - 15.12 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 15.12** | +|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md new file mode 100644 index 0000000..0b74369 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md @@ -0,0 +1,37 @@ +h4. Building AOSP from source + +Additional AOSP repositories are hosted at: +* https://github.com/96boards/android_hardware_ti_wpan +* https://github.com/96boards/android_device_linaro_hikey +* https://github.com/96boards/android_manifest +* https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +*Build setup:* + +Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html + +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +bc. ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp + +*Download the code:* + +bc. mkdir android/ +cd android/ + +Download and extract the Mali vendor binaries in the above directory: "http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2":http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +*Build the image:* + +bc. repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hikey diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md new file mode 100644 index 0000000..f3a7c58 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md @@ -0,0 +1,53 @@ +h3. Boot Loader + +Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. + +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-hikey +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-hikey +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md new file mode 100644 index 0000000..30edc3e --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md @@ -0,0 +1,112 @@ + +h2. Install Instructions - CE AOSP RPB 15.12 - HiKey + +This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE AOSP RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader +* Linux Kernel: +** Derived from Linux 4.1 kernel +** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git +** Branch: *android-hikey-linaro-4.1* +* AOSP Android Marshmallow 6.0 + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.5* +* Extra firmware files available from firmware-linux +* Mali (requires EULA) + +h3. Downloading the pre-built binaries + +The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-4g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-8g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/hisi-idt.py + +*CE AOSP RPB image:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/boot_fat.uefi.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/cache.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata-8gb.img.tar.xz + +Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz and follow the instructions to download the file. + +Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: + +bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-aosp@ and @userdata@ files will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-aosp@), otherwise flashing the system image might fail. + +h4. Boot, System, Cache and Userdata + +Fastboot is required to flash boot, system, cache and userdata. + +*Flashing boot, cache, system and userdata:* + +Enable fastboot (either via recovery or by changing the boot jumpers), and then just flash the required files: + +bc. sudo fastboot flash boot boot_fat.uefi.img +sudo fastboot flash cache cache.img +sudo fastboot flash system system.img +sudo fastboot flash nvme nvme.img + +Then on a 4G compatible device: + +bc. sudo fastboot flash userdata userdata.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash userdata userdata-8gb.img + + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don't have any sd card in place (since it first tries to boot from sd card, boot order can be changed with @sudo fastboot oem bootdevice [emmc|sd]@), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md new file mode 100644 index 0000000..9ce2d83 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md @@ -0,0 +1,97 @@ +h2. Install Instructions - CE Debian RPB 15.12 - HiKey + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE Debian RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-hikey-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay +** Kernel and initrd loaded from the rootfs (under /boot) + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.6* +* Extra firmware files available from firmware-linux +* Mali (not yet included by default) + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-4g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-8g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/hisi-idt.py + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-boot-linux-20151214-35.uefi.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip hikey-* + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-linux@ file will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Make sure to reboot the board after updating the partition table (@ptable-linux@), otherwise flashing the rootfs might fail. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +To avoid bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot hikey-boot-linux-20151214-35.uefi.img +sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don’t have any sd card in place (since it first tries to boot from sd card, boot order can be changed with sudo fastboot oem bootdevice [emmc|sd]), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..eff7304 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/HiKey/README.md @@ -0,0 +1,18 @@ +# HiKey Reference Platform Build - 15.12 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +#### HiKey + +| **CE Debian RPB - 15.12** | **CE AOSP RPB - 15.12** | +|:------------------------------------------------------:|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | [Install Instructions](InstallAOSPRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | [Build from Source](BFSAOSPRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | + +*** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/Highlights.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/Highlights.md new file mode 100644 index 0000000..32a601c --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/Highlights.md @@ -0,0 +1,49 @@ +## Reference Platform Builds - 15.12 + +The *15.12* release is the second release for the Reference Software Platform project, and for the first time also including support for the Enterprise Edition. Since there is still no availability for the 96Boards HuskyBoard, the first EE RPB was produced using the current enterprise development boards that are available in Linaro, such as HiSilicon D02 and AMD Overdrive (same SoC from HuskyBoard, known as Seattle). Once HuskBoard is available, the work for making it supported by the EE RPB should be minimal. + +A lot of work was put in place for the EE RPB, covering firmware (UEFI/EDK2), Linux 4.4 (with ACPI), Debian Jessie/CentOS 7 network installers, OpenStack Liberty, Hadoop, Spark and a few others, consolidating the work from several other Linaro groups and teams as well as from community and members. + +For the Consumer Edition the CE AOSP RPB for Hikey is now using a 4.1 based kernel, closer to what is provided directly by AOSP. We decided to not push major updates and rebases for the CE Debian RPB kernel since we want the changes to follow the same [kernel policy](../../KernelPolicy.md) as used by the EE kernel. The goal of having one single tree for both CE and EE, with a strict upstream-based policy will continue, and we hope to have more news on that during the upcoming weeks. + +The work for the CE OE/Yocto RPB was also started, but unfortunately not yet covering a single machine (due lack of a single kernel). Please check [https://github.com/96boards/meta-rpb](https://github.com/96boards/meta-rpb) and https://github.com/96boards/oe-rpb-manifest to see what was already done for OpenEmbedded. + +##### Highlights for this release: + +###### Enterprise Edition + +- Firmware: + - UEFI/EDK2 support for D02, provided by OpenPlatformPkg +- Linux: + - 4.4-rc4 based, including support for D02 and Overdrive + - ACPI support for D02 and Overdrive (mandatory for the enterprise edition) +- Distributions: + - Debian Jessie network installer (using latest kernel) + - CentOS 7 network installer (alpha state) +- Enterprise Components: + - Docker 1.9.1 + - OpenStack Liberty + - ODPi BigTop (Hadoop, Spark, etc) + - OpenJDK 8 + +###### Consumer Edition + +- CE Debian RPB for DragonBoard410 and HiKey (including support for the LeMaker version): + - Debian 8.2 "Jessie" + - 4.3 kernel (with additional patches) + - OpenJDK 8 included by default + - 96Boards artwork and default settings +- CE AOSP RPB for HiKey (including support for the LeMaker version): + - AOSP Android Marshmallow 6.0 + - 4.1 based kernel + +The complete list of known issues for this release: [Known Issues](Known-Issues.md) + +##### Enterprise + +- [UEFI/EDK2](https://builds.96boards.org/releases/reference-platform/components/uefi/15.12/) for HiSilicon D02 +- [Kernel 4.4-rc4](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/) tested with D02 and Overdrive +- [Debian (Jessie) Installer](https://builds.96boards.org/releases/reference-platform/components/debian-installer/15.12/) tested with D02 and Overdrive (shipping kernel 4.4-rc4 by default) +- [OpenStack Liberty]() for Debian Jessie +- [ODPi Hadoop]() for Debian Jessie +- [EE Debian Test Report](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/EE-Debian-RPB-15.12-TestReport.pdf) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/Known-Issues.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/Known-Issues.md new file mode 100644 index 0000000..c9025ff --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/Known-Issues.md @@ -0,0 +1,73 @@ +## Reference Platform Build - 15.12 Release - Known Issues + +### Enterprise + +#### Kernel + +- "Bug 1966":https://bugs.linaro.org/show_bug.cgi?id=1966 - KVM errors when booting on overdrive and d02 + +#### HiSilicon D02 + +- "Bug 1965":https://bugs.linaro.org/show_bug.cgi?id=1965 - D02: kernel unable to find valid mac for the network interfaces +- "Bug 1967":https://bugs.linaro.org/show_bug.cgi?id=1967 - D02: unhandled level 3 permission fault (11) +- "Bug 1975":https://bugs.linaro.org/show_bug.cgi?id=1975 - D02: Kernel can only see 2GB of memory (from 8GB) +- *SATA*: Due to bugs in the SATA controller, there is a risk of disk corruption when installing to a SATA disk. This is expected to be fixed in subsequent silicon revisions. +- *SAS*: not yet supported in EDK2. For it to work on linux only, this "patch":https://git.linaro.org/uefi/OpenPlatformPkg.git/commit/96d58c4318584f066b1bb7f1c48b72e7e25cf709 needs to be reverted on UEFI/EDK2, but then an alternative boot method needs to be used (since UEFI/EDK2 is unable to load grub/kernel from SAS). + +#### AMD Overdrive + +- UEFI/EDK2 is not yet supported + +### Debian + +#### HiKey + +- Mali not supported, missing kernel and userspace support +- "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 +- "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete +- "Bug 86":https://bugs.96boards.org/show_bug.cgi?id=86 - Debian ALIP: resize UI screen when underlying DRM resolution changed. +- "Bug 143":https://bugs.96boards.org/show_bug.cgi?id=143 - Mouse cursor invisible after boot (until you open an application) +- "Bug 144":https://bugs.96boards.org/show_bug.cgi?id=144 - Shutdown is not clean +- "Bug 145":https://bugs.96boards.org/show_bug.cgi?id=145 - Thermal sensor is not readable +- "Bug 147":https://bugs.96boards.org/show_bug.cgi?id=147 - Highest resolution of 1080p monitor cannot be detected +- "Bug 148":https://bugs.96boards.org/show_bug.cgi?id=148 - Bluetooth doesn't work +- "Bug 151":https://bugs.96boards.org/show_bug.cgi?id=151 - glxgears: couldn't get an RGB, Double-buffered visual +- "Bug 152":https://bugs.96boards.org/show_bug.cgi?id=152 - SD-Card doesn't work +- "Bug 159":https://bugs.96boards.org/show_bug.cgi?id=159 - No sound cards found +- "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide +- "Bug 166":https://bugs.96boards.org/show_bug.cgi?id=166 - Support 8GB emmc +- "Bug 211":https://bugs.96boards.org/show_bug.cgi?id=211 - Fails to enter fastboot mode from grub boot menu + +#### DragonBoard 410c + +- Freedreno graphics driver not provided by the image + - Newer mesa, libdrm and freedreno xorg driver is needed (work in progress to be included by default as part of the next release) + - Workaround is to enable the qcom overlay PPA, and install the required packages: + +```shell +sudo su - +echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list +apt-get update +apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno +reboot +``` + +* Slow USB throughput: "https://www.96boards.org/forums/topic/super-slow-usb/":https://www.96boards.org/forums/topic/super-slow-usb/ +* "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete +* "Bug 121":https://bugs.96boards.org/show_bug.cgi?id=121 - Cannot soft power off or shutdown db410c +* "Bug 154":https://bugs.96boards.org/show_bug.cgi?id=154 - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) +* "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide +* "Bug 207":https://bugs.96boards.org/show_bug.cgi?id=208 - Bluetooth does not work on Dragonboard debian +* "Bug 208":https://bugs.96boards.org/show_bug.cgi?id=208 - Real Time clock not working: due to /dev/rtc not found + +### AOSP + +#### HiKey + +* "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 +* "Bug 124":https://bugs.96boards.org/show_bug.cgi?id=124 - CPU frequency will be reset to lowest when it is heavily loaded +* "Bug 136":https://bugs.96boards.org/show_bug.cgi?id=136 - HDMI goes off while running CTS +* "Bug 163":https://bugs.96boards.org/show_bug.cgi?id=163 - HDMI audio not working +* "Bug 164":https://bugs.96boards.org/show_bug.cgi?id=164 - Behaviors of power on button not following hardware user guide +* "Bug 180":https://bugs.96boards.org/show_bug.cgi?id=180 - Shutdown cannot turn off HDMI monitor +* "Bug 204":https://bugs.96boards.org/show_bug.cgi?id=204 - File download crashes the build-in browser diff --git a/Reference-Platform/Platforms/Enterprise/RPB_15.12/README.md b/Reference-Platform/Platforms/Enterprise/RPB_15.12/README.md new file mode 100644 index 0000000..25ef139 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_15.12/README.md @@ -0,0 +1,13 @@ +# Reference Platform Build - 15.12 + +[RPB 15.12 Highlights](Highlights.md) | [RPB 15.12 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [D02](EnterpriseEdition/D02/README.md) +- [Overdrive](EnterpriseEdition/Overdrive/README.md) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..15f676d --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted at: +- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) +- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) +- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) +- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) +- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) +- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) + +*Build setup:* + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +Also install make sure to install the following packages: + +```shell +sudo apt-get install libfdt-dev python-mako get text +``` + +*Download the firmware blobs:* + +```shell +mkdir android/ +cd android/ +mkdir -p vendor/db410c +cd vendor/db410c +wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin +sh firmware-410c-1.2.0.bin +cd - +``` + +*Build the image:* + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 +cd .repo +git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch db410c-userdebug +make droidcore -j8 +cd out/target/product/db410c +``` + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md new file mode 100644 index 0000000..d0a3461 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md @@ -0,0 +1,280 @@ +## Debian RPB 16.03 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain and Skales Tool + - Step 3: Export path to cross compiler tool and confirm version + - Step 4: Clone the Reference Platform kernel + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target DragonBoard™ 410c + - [Step 12: Generate the initramfs + - [Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +tag: 96b-kernelci +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir` and call is something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir DB410c-16.03 +$ cd DB410c-16.03 +``` + +#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +``` + +###### Skales tool + +```shell +$ sudo apt-get install libfdt-dev +$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales +$ export PATH=$PATH:/tmp/skales +``` +>Skales will be used later when creating the device tree + + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes + +```shell +$ git clone -b 96b-kernelci http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- Once kernel source has been cloned cd into its directory + +```shell +$ cd kernel +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX +``` + +#### Step 7: Copy Modules + +- Modules must be local (host computer) before transferring to target device +- Still within linux directory +- Make temp folder +- Create modules + +```shell +$ mk tmp/modules +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 +``` + +#### Step 8: Find kernel release string + +- This was created during the kernel build +- In this example the kernel.release is 4.4.0+ + +```shell +$ cat include/config/kernel.release +#Output +$ 4.4.0+ +``` + +#### Step 9: Generate modules.dep and map files + +- Helps kernel find modules when system boots +- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 + +```shell +$ depmod -a -b /tmp/modules 4.4.0+ +``` + +#### Step 10: Find DragonBoard™ 410c IP Address + +- On your DragonBoard™ 410c +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 11: Transfer the modules to the target DragonBoard™ 410c + +- Using your board's IP Address for linaro@ + +```shell +$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules +$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#DragonBoard™ 410c shell +db410c $ tar -jxvf modules.tar.bz2 +db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ +``` + +#### Step 12: Generate the initramfs + +- You should still be in the DragonBoard™ 410c shell + +```shell +db410c $ sudo update-initramfs -k 4.4.0+ -c +``` + +- Copy back the new initramfs +- This will be used when creating the boot.mg + +#### Step 13: Create the device tree image and boot image + +###### Device tree + +```shell +$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom +``` + +###### Boot image + +```shell +$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" +``` + +Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. + +- Flashing the boot image can be done using fastboot +- Board must be booted into fastboot mode +- With USB to microUSB cable still connect execute the following: + +```shell +$ sudo fastboot flash boot boot.img +$ sudo fastboot reboot +``` + +*** + +### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +```shell +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +```shell +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `about` partition, you can now flash your board with: + +```shell +sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn +``` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TO-DO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..ef52214 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md @@ -0,0 +1,155 @@ +[]() +[]() +[]() +[]() +[]() + +>**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Android Bootloader and Boot file + +- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) +- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +#### Step 3: Download all remaining files + +- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) +- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) +- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Android using Fastboot with Linux host + +This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +fastboot devices +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +cd + +#Example: +cd dragonboard410c_bootloader_emmc_android +# = dragonboard410c_bootloader_emmc_android + +# This command will execute the flashall script within the bootloader folder +./flashall + +``` + +5 - **Recall location of all downloaded files from downloads page** + +This will include the files listed below: + +###### Reference Platform files + +- boot.img.tar.xz +- system.img.tar.xz +- userdata.img.tar.xz +- cache.img.tar.xz + +6 - **Unzip all files** + +7 - **Flash all files to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of all extracted(unzipped) files +- `cd` to the directory with your unzipped files +- From within extraction directory, execute the following commands: + +###### Reference Platform + +```shell +# (Once again) Check to make sure fastboot device connected +sudo fastboot devices + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the downloads +sudo fastboot flash boot boot.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img +sudo fastboot flash cache cache.img +``` + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into Android lock screen. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md new file mode 100644 index 0000000..56b81fd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md @@ -0,0 +1,153 @@ +[]() +[]() +[]() +[]() +[]() + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian Bootloader and Boot file + +- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) +- Debian Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) + +#### Step 3: Download Root File System + +- Debian Rootfs (Desktop) ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Wait for about 20 seconds. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +$ fastboot devices +``` + +Typically it will show as bellow +```shell +de82318 fastboot +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` +- XX represents the release number of the Bootloader +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +$ cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +$ cd + +#Example: +cd dragonboard410c_bootloader_emmc_linux-40 +# = dragonboard410c_bootloader_emmc_linux-40 +#This example took place during release 40 + +# This command will execute the flashall script within the bootloader folder +$ ./flashall + +``` + +5 - **Recall location of `boot` and `rootfs` download from the downloads page** + +- You should have downloaded the `boot` file +- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) + +6 - **Unzip both 'boot' and 'rootfs' files** + +7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of extracted(unzipped) `boot` file +- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) +- `cd` to the directory with your unzipped `boot` and `rootfs` files +- From within extraction directory, execute the following commands: + +```shell +# (Once again) Check to make sure fastboot device connected +$ sudo fastboot devices +# It will show similar to bellow if the device is connected successfully +de82318 fastboot + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the boot and rootfs downloads +$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img +$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img +``` +**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into either command line or desktop depending on rootfs + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md new file mode 100644 index 0000000..d64f135 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md @@ -0,0 +1,212 @@ +## OpenEmbedded RPB 16.03 - Build from Source + +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +## OE Layers + +| Layer | Description | +|:-----------------------:|:----------------------| +| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | +| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | +| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | +| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | +| Meta-qt5 | This is a cross-platform toolkit. | +| Meta-linaro | This layer is used to get the Linaro toolchain. | +| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | +| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..cbabbe6 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,32 @@ +## Dragonboard™ 410c - Reference Platform Build - 16.03 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 16.03** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-16.03.md) | +| [Build from Source](BFSDebianRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | + +*** + +| **CE AOSP RPB - 16.03**
(Developer Preview) | +|:---------------------------:| +| [Install Instructions](InstallAOSPRPB-16.03.md) | +| [Build from Source](BFSAOSPRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/CE-AOSP-RPB-16.03-DB410c-TestReport.pdf) | + +*** + + +| **CE OpenEmbedded - 16.03** | +|:-----------------------------:| +| [Install Instructions](InstallOERPB-16.03.md) | + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..8823ad6 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted here: +- https://github.com/96boards/android_hardware_ti_wpan +- https://github.com/96boards/android_device_linaro_hikey +- https://github.com/96boards/android_manifest +- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +**Build setup:** + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +###### Out of date: +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +```shell + ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp +``` + +*** + +**Download the code:** + +```shell +mkdir android/ +cd android/ +``` + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +**Build the image:** + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hiked +``` diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md new file mode 100644 index 0000000..ee85550 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md @@ -0,0 +1,185 @@ +## Debian RPB 16.03 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain + - Step 3: Export path to cross compiler tool and confirm version + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image and debian package + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target HiKey + - Step 12: Generate the initramfs + - Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.03 +defconfig: arch/arm64/configs/distro.config +``` + +The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir`, name it something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir HiKey-16.03 +$ cd HiKey-16.03 +``` + +#### Step 2: Step 2: Download the Linaro cross compiler toolchain + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +``` + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=~/Desktop/HiKey-16.03/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes +- Use **96b/releases/2016.03** if you want the same version used by the 16.03 release + +```shell +$ git clone -b 96b/releases/2016.03 http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process +- Once kernel source has been cloned cd into its directory + +```shell +$ cd linux +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ cp arch/arm64/configs/distro.config .config +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image and debian package + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory +- Creating the kernel package is recommended for HiKey, as it supports Grub 2 + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag +``` + +#### Step 7: Find HiKey IP Address + +- On your HiKey board +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 8: Transfer the modules to the target HiKey + +- Using your board's IP Address for linaro@ + +```shell +$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#HiKey shell + +$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb +``` +Congratulations! Your new kernel is now ready to be used by your HiKey. + +- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel +- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated + +### Boot Loader + +Please see [https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source](https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source) for instructions on how to built the boot loader from source. + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +```shell +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md new file mode 100644 index 0000000..076028b --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md @@ -0,0 +1,83 @@ +## Building from source + +The source code is available from: +- [**l-loader**](https://github.com/96boards-hikey/l-loader) +- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) +- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) + +Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. + +### Build instructions + +Prerequisites: +- GCC 5.3 cross-toolchain for Aarch64 available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) +- GCC 5.3 cross-toolchain for gnueabihf available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) +- GPT fdisk (gdisk package from your favorite distribution). + +#### Installing pre-built toolchain(s) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +```shell +git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git +git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git +git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git +git clone https://github.com/96boards-hikey/l-loader.git +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building EDK2/UEFI for HiKey + +Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. + +To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export EDK2_DIR=${PWD}/edk2 +export ATF_DIR=${PWD}/arm-trusted-firmware +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${EDK2_DIR} +rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg +${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} hikey +``` + +And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): + +```shell +cd ../l-loader +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin +make # requires sudo for creating the partition tables +``` + +The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. + +#### EFI boot partition + +The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). + +```shell +wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi +mkdir boot-fat +dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 +sudo mkfs.fat -n "boot" boot-fat.uefi.img +sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat +sudo mkdir -p boot-fat/EFI/BOOT +sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi +sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi +sudo umount boot-fat +sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img +rm -rf boot-fat +``` + +Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..317256b --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md @@ -0,0 +1,126 @@ +#### Your Build Choice + +[]() +[]() +[]() +[]() +[]() + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download the following files + +>Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +Build Folders (**Binaries** / **Image**) + +- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) +- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) +- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) +- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) +- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) +- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) +- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) +- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) +- **system.img.tar.xz** (**Download**) + +*** + +#### Step 3: Install AOSP Using Fastboot with Linux host + +This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Set HiKey into Recovery Mode using J15 header** + +- Remove link between pins 5 and 6 +- Link pins 1 and 2 +- Link pins 3 and 4 + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | closed +GPIO3-1 | Link 5-6 | open + +4 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable ptable-aosp-8g.img +$ sudo fastboot reboot +$ sudo fastboot flash boot boot_fat.uefi.img +$ sudo fastboot flash cache cache.img +$ sudo fastboot flash system system.img +$ sudo fastboot flash userdata userdata-8gb.img +``` + +5 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 3-4 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md new file mode 100644 index 0000000..2928cb4 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md @@ -0,0 +1,111 @@ + + + + + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian partition table + +> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +**ptable-linux.img** ([**4G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-4g.img) / [**8G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-8g.img)) + +*** + +#### Step 3: Download Boot image and Root File System + +- **Debian Boot** ([**Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/hikey-boot-linux-*.uefi.img.gz)) +- **Debian Rootfs** (**Download**) + + +*** + +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. + + + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Wait for about 10 seconds +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable .img +$ sudo fastboot reboot +$ sudo fastboot flash boot .uefi.img +$ sudo fastboot flash system hikey-jessie_alip_2015MMDD-nnn-Xg.emmc.img +``` + +4 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 5-6 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..0761a72 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/HiKey/README.md @@ -0,0 +1,24 @@ +# HiKey Reference Platform Build - 16.03 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +#### HiKey + + + +| **CE Debian RPB - 16.03** | **CE AOSP RPB - 16.03** | +|:-----------------------------:|:---------------------------:| +| [Install Instructions](InstallDebianRPB-16.03.md) | [Install Instructions](InstallAOSPRPB-16.03.md) | +| [Build from Source](BFSDebianRPB-16.03.md) | [Build from Source](BFSAOSPRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/CE-Debian-RPB-16.03-HiKey-TestReport.pdf) | [Test Report](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/CE-AOSP-RPB-16.03-HiKey-TestReport.pdf) | + + +*** + +Access **bootloader** build from source instructions [here](BuildSourceBL.md) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Cello/README.md new file mode 100644 index 0000000..3a63c2b --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Cello/README.md @@ -0,0 +1,60 @@ +### LeMaker Cello + +*** + +### Critical Bug List + +As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once we get a functional Realtek UEFI driver, it will also be possible to PXE boot the installer. + +Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (EDK2). + +Since the EDK2 based firmware is not yet public (work in progress), internal access to the tree/binary is required. Email your board point of contact for further information on how to download the required firmware. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +### Quick Start + +Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Distro Installers + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D02/README.md new file mode 100644 index 0000000..a126caa --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D02/README.md @@ -0,0 +1,64 @@ +### D02 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### D02 - QuickStart + +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.03 kernel **requires** the 16.03 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D03/README.md new file mode 100644 index 0000000..3529558 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/D03/README.md @@ -0,0 +1,64 @@ +### D03 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.11*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### D03 - QuickStart + +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/](https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.06-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.06-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md new file mode 100644 index 0000000..ad1eadd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md @@ -0,0 +1,44 @@ +## Setting up DHCP/TFTP server for UEFI distro network installers + +A simple way to install the major Linux Distributions (e.g. Debian, Fedora, CentOS, openSUSE, etc) is by booting the network installer via PXE. In order to have a working PXE environment, a DHCP and TFTP server is required, which is responsible for providing the target device a valid IP configuration and the required files to boot the system (usually Grub 2 + kernel + initrd). + +In order to simplify the setup, this document will use dnsmasq, which is a lightweight, easy to configure DNS forwarder and DHCP server with BOOTP/TFTP/PXE functionality. + +### Installing and configuring dnsmasq + +Debian/Ubuntu: + +```shell +sudo apt-get install dnsmasq +``` + +Fedora/CentOS/RHEL: + +```shell +yum install dnsmasq +``` + +This guide assumes you already know the network interface that will provide the DHCP/TFTP/PXE functionality for the target device. In this case, we are using _eth1_ as our secondary interface, with address _192.168.3.1_. + +Following is the /etc/dnsmasq.conf providing the required functionality for PXE: + +```shell +interface=eth1 +dhcp-range=192.168.3.10,192.168.3.100,255.255.255.0,1h +dhcp-boot=BOOTAA64.EFI +enable-tftp +tftp-root=/srv/tftp +``` + +Check [http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html) for more information and additional dnsmasq config options. + +Now make sure the tftp-root directory is available, and then start/restart the dnsmasq service: + +```shell +sudo mkdir -p /srv/tftp +sudo systemctl restart dnsmasq +``` + +Since we require UEFI support for the Reference Platform Software Enterprise Edition (EE-RPB), this document doesn't cover the traditional pxelinux specific configuration (used with the traditional BIOS setup). + +For UEFI, we only require DHCP to provide the UEFI binary name (retrieved via TFTP), which in this case is the Grub 2 bootloader (which then loads the kernel, initrd and other extra files from the TFTP server). diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md new file mode 100644 index 0000000..66581be --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -0,0 +1,52 @@ +### HP ProLiant m400 + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md new file mode 100644 index 0000000..985fb61 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md @@ -0,0 +1,216 @@ +## Installing CentOS 7.2 15.11 - Reference Platform Enterprise + +This guide is not to be a replacement of the official CentOS Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64](https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required CentOS 7 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +```shell +sudo su - +cd /srv/tftp/ +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/BOOTAA64.EFI +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/grubaa64.efi +``` + +#### Downloading the CentOS installer from the Reference Platform 16.03 release (4.4.0 RP Kernel): + +```shell +mkdir /srv/tftp/centos7 +cd /srv/tftp/centos7 +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/vmlinuz +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.repo=http://mirror.centos.org/altarch/7/os/aarch64/ inst.ks=file:/ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +**Note:** `inst.ks` is required because of the additional linaro-overlay repository (which contains the reference platform kernel rpm package), which is available inside the `initrd.img`. The `inst.ks` contains only one line, which is used by the installer to fetch and install the right kernel package. The content: `repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/`. + +Also check the [RHEL 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html) and the [anaconda documentation](https://rhinstaller.github.io/anaconda/boot-options.html) for additional boot options. One example is using **ip=eth1:dhcp** if you want to use the second network interface as default. + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── centos7 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 15:14:55, Feb 9 2016 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000e80000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 15:18:14 on Feb 9 2016) +Version 2.17.1249. Copyright (C) 2016 American Megatrends, Inc. +BIOS Date: 02/09/2016 15:15:23 Ver: ROD1001A00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install CentOS 7 ARM 64-bit - Reference Platform - 16.03 +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 +[ 0.000000] Boot CPU: AArch64 Processor [411fd072] +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 +... +Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! +... +dracut-initqueue[610]: RTNETLINK answers: File exists +dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current +dracut-initqueue[610]: Dload Upload Total Spent Left Speed +100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 +... +Welcome to CentOS Linux 7 (AltArch)! +... +Starting installer, one moment... +anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +21:06:29 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: 2 +[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. + +### Automating the installation with kickstart + +It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. + +Kickstart example: + +```shell +cmdline +url --url="http://mirror.centos.org/altarch/7/os/aarch64/" +repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ +repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ +repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ +lang en_US.UTF-8 +keyboard us +timezone --utc Etc/UTC +auth --useshadow --passalgo=sha512 +rootpw --lock --iscrypted locked +firewall --disabled +firstboot --disabled +selinux --disabled +reboot +network --bootproto=dhcp --device=eth0 --activate --onboot=on +ignoredisk --only-use=sda +bootloader --location=mbr +clearpart --drives=sda --all --initlabel +part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 +part /boot --fstype=ext4 --size=512 +part / --fstype=ext4 --size=10240 --grow +part swap --size=4000 +%packages +wget +net-tools +chrony +%end +%post +useradd -m -U -G wheel linaro +echo linaro | passwd linaro --stdin +%end +``` + +#### Setting up grub.cfg + +Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. + +#### Booting the system + +Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md new file mode 100644 index 0000000..cdea0fe --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md @@ -0,0 +1,522 @@ +## Installing Debian "Jessie" 8.4 + +This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) + +### Debian Installer + +The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. + +Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. + +## Loading debian-installer from the network +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. + +#### Downloading debian-installer: + +```shell +sudo su - +cd /srv/tftp/ +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz +tar -zxvf netboot.tar.gz +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── debian-installer +│   └── arm64 +│   ├── bootnetaa64.efi +│   ├── grub +│   │   ├── arm64-efi +│   │   │   ├── acpi.mod +│   │   │   ├── adler32.mod +│   │   │   ├── all_video.mod +│   │   │   ├── archelp.mod +│   │   │   ├── bfs.mod +│   │   │   ├── bitmap.mod +│   │   │   ├── bitmap_scale.mod +│   │   │   ├── blocklist.mod +│   │   │   ├── boot.mod +│   │   │   ├── btrfs.mod +│   │   │   ├── bufio.mod +│   │   │   ├── cat.mod +│   │   │   ├── cbfs.mod +│   │   │   ├── chain.mod +│   │   │   ├── cmdline_cat_test.mod +│   │   │   ├── cmp.mod +│   │   │   ├── command.lst +│   │   │   ├── cpio_be.mod +│   │   │   ├── cpio.mod +│   │   │   ├── crc64.mod +│   │   │   ├── cryptodisk.mod +│   │   │   ├── crypto.lst +│   │   │   ├── crypto.mod +│   │   │   ├── datehook.mod +│   │   │   ├── date.mod +│   │   │   ├── datetime.mod +│   │   │   ├── diskfilter.mod +│   │   │   ├── disk.mod +│   │   │   ├── div_test.mod +│   │   │   ├── dm_nv.mod +│   │   │   ├── echo.mod +│   │   │   ├── efifwsetup.mod +│   │   │   ├── efi_gop.mod +│   │   │   ├── efinet.mod +│   │   │   ├── elf.mod +│   │   │   ├── eval.mod +│   │   │   ├── exfat.mod +│   │   │   ├── exfctest.mod +│   │   │   ├── ext2.mod +│   │   │   ├── extcmd.mod +│   │   │   ├── fat.mod +│   │   │   ├── file.mod +│   │   │   ├── font.mod +│   │   │   ├── fs.lst +│   │   │   ├── gcry_arcfour.mod +│   │   │   ├── gcry_blowfish.mod +│   │   │   ├── gcry_camellia.mod +│   │   │   ├── gcry_cast5.mod +│   │   │   ├── gcry_crc.mod +│   │   │   ├── gcry_des.mod +│   │   │   ├── gcry_dsa.mod +│   │   │   ├── gcry_idea.mod +│   │   │   ├── gcry_md4.mod +│   │   │   ├── gcry_md5.mod +│   │   │   ├── gcry_rfc2268.mod +│   │   │   ├── gcry_rijndael.mod +│   │   │   ├── gcry_rmd160.mod +│   │   │   ├── gcry_rsa.mod +│   │   │   ├── gcry_seed.mod +│   │   │   ├── gcry_serpent.mod +│   │   │   ├── gcry_sha1.mod +│   │   │   ├── gcry_sha256.mod +│   │   │   ├── gcry_sha512.mod +│   │   │   ├── gcry_tiger.mod +│   │   │   ├── gcry_twofish.mod +│   │   │   ├── gcry_whirlpool.mod +│   │   │   ├── geli.mod +│   │   │   ├── gettext.mod +│   │   │   ├── gfxmenu.mod +│   │   │   ├── gfxterm_background.mod +│   │   │   ├── gfxterm_menu.mod +│   │   │   ├── gfxterm.mod +│   │   │   ├── gptsync.mod +│   │   │   ├── grub.cfg +│   │   │   ├── gzio.mod +│   │   │   ├── halt.mod +│   │   │   ├── hashsum.mod +│   │   │   ├── help.mod +│   │   │   ├── hexdump.mod +│   │   │   ├── hfs.mod +│   │   │   ├── hfspluscomp.mod +│   │   │   ├── hfsplus.mod +│   │   │   ├── http.mod +│   │   │   ├── jfs.mod +│   │   │   ├── jpeg.mod +│   │   │   ├── keystatus.mod +│   │   │   ├── ldm.mod +│   │   │   ├── linux.mod +│   │   │   ├── loadenv.mod +│   │   │   ├── loopback.mod +│   │   │   ├── lsacpi.mod +│   │   │   ├── lsefimmap.mod +│   │   │   ├── lsefi.mod +│   │   │   ├── lsefisystab.mod +│   │   │   ├── lsmmap.mod +│   │   │   ├── ls.mod +│   │   │   ├── lssal.mod +│   │   │   ├── luks.mod +│   │   │   ├── lvm.mod +│   │   │   ├── lzopio.mod +│   │   │   ├── macbless.mod +│   │   │   ├── macho.mod +│   │   │   ├── mdraid09_be.mod +│   │   │   ├── mdraid09.mod +│   │   │   ├── mdraid1x.mod +│   │   │   ├── memrw.mod +│   │   │   ├── minicmd.mod +│   │   │   ├── minix2_be.mod +│   │   │   ├── minix2.mod +│   │   │   ├── minix3_be.mod +│   │   │   ├── minix3.mod +│   │   │   ├── minix_be.mod +│   │   │   ├── mmap.mod +│   │   │   ├── moddep.lst +│   │   │   ├── mpi.mod +│   │   │   ├── msdospart.mod +│   │   │   ├── net.mod +│   │   │   ├── newc.mod +│   │   │   ├── normal.mod +│   │   │   ├── ntfscomp.mod +│   │   │   ├── ntfs.mod +│   │   │   ├── odc.mod +│   │   │   ├── offsetio.mod +│   │   │   ├── part_acorn.mod +│   │   │   ├── part_amiga.mod +│   │   │   ├── part_apple.mod +│   │   │   ├── part_bsd.mod +│   │   │   ├── part_dfly.mod +│   │   │   ├── part_dvh.mod +│   │   │   ├── part_gpt.mod +│   │   │   ├── partmap.lst +│   │   │   ├── part_msdos.mod +│   │   │   ├── part_plan.mod +│   │   │   ├── part_sun.mod +│   │   │   ├── part_sunpc.mod +│   │   │   ├── parttool.lst +│   │   │   ├── parttool.mod +│   │   │   ├── password.mod +│   │   │   ├── password_pbkdf2.mod +│   │   │   ├── pbkdf2.mod +│   │   │   ├── pbkdf2_test.mod +│   │   │   ├── png.mod +│   │   │   ├── priority_queue.mod +│   │   │   ├── probe.mod +│   │   │   ├── procfs.mod +│   │   │   ├── progress.mod +│   │   │   ├── raid5rec.mod +│   │   │   ├── raid6rec.mod +│   │   │   ├── read.mod +│   │   │   ├── reboot.mod +│   │   │   ├── regexp.mod +│   │   │   ├── reiserfs.mod +│   │   │   ├── romfs.mod +│   │   │   ├── scsi.mod +│   │   │   ├── serial.mod +│   │   │   ├── setjmp.mod +│   │   │   ├── setjmp_test.mod +│   │   │   ├── signature_test.mod +│   │   │   ├── sleep.mod +│   │   │   ├── sleep_test.mod +│   │   │   ├── squash4.mod +│   │   │   ├── syslinuxcfg.mod +│   │   │   ├── terminal.lst +│   │   │   ├── terminal.mod +│   │   │   ├── terminfo.mod +│   │   │   ├── test_blockarg.mod +│   │   │   ├── testload.mod +│   │   │   ├── test.mod +│   │   │   ├── testspeed.mod +│   │   │   ├── tftp.mod +│   │   │   ├── tga.mod +│   │   │   ├── time.mod +│   │   │   ├── trig.mod +│   │   │   ├── tr.mod +│   │   │   ├── true.mod +│   │   │   ├── udf.mod +│   │   │   ├── ufs1_be.mod +│   │   │   ├── ufs1.mod +│   │   │   ├── ufs2.mod +│   │   │   ├── verify.mod +│   │   │   ├── video_colors.mod +│   │   │   ├── video_fb.mod +│   │   │   ├── videoinfo.mod +│   │   │   ├── video.lst +│   │   │   ├── video.mod +│   │   │   ├── videotest_checksum.mod +│   │   │   ├── videotest.mod +│   │   │   ├── xfs.mod +│   │   │   ├── xnu_uuid.mod +│   │   │   ├── xnu_uuid_test.mod +│   │   │   ├── xzio.mod +│   │   │   └── zfscrypt.mod +│   │   ├── font.pf2 +│   │   └── grub.cfg +│   ├── initrd.gz +│   └── linux +├── netboot.tar.gz +└── version.info +``` + +Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: + +```shell +dhcp-boot=debian-installer/arm64/bootnetaa64.efi +``` +## Loading debian-installer from the minimal CD + +Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. + +Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): + +``` +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso +sudo cp mini.iso /dev/sdX +sync +``` + +Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. + +## Booting the installer + +If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install +Advanced options ... +Install with speech synthesis +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. + +**NOTE - Cello Only:** The network driver **r8169** needs an additional module parameter for a functional 64-bit DMA operation ([related kernel change](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4300e8c7f64d95a80ffa7d98d98738f41546bc30)), so please edit your grub boot parameter by pressing _e_ at the selected boot line, and add _r8169.use_dac=1_ in the end of the linux line. To boot, simply press _Control + x_. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND +[ 0.763784] kvm [1]: error: no compatible GIC node found +[ 0.763818] kvm [1]: error initializing Hyp mode: -19 +[ 0.886298] Failed to find cpu0 device node +[ 0.947082] zswap: default zpool zbud not available +[ 0.951959] zswap: pool creation failed +Starting system log daemon: syslogd, klogd. +... + ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ + │ │ + │ Choose the language to be used for the installation process. The │ + │ selected language will also be the default language for the installed │ + │ system. │ + │ │ + │ Language: │ + │ │ + │ C │ + │ English │ + │ │ + │ │ + │ │ + └─────────────────────────────────────────────────────────────────────────┘ + moves; selects; activates buttons +``` + +### Finishing the installation + +For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) + +**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. + +``` +~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f +~ # exit +``` + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. + +**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: + +``` +root@debian:~# cat /etc/network/interfaces +... +allow-hotplug enp1s0 +iface enp1s0 inet dhcp + hwaddress ether de:5e:60:e4:6b:1f +``` + +### Automating the installation using preseeding + +Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. + +This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) + +**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: + +```shell +d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands +``` + +#### Creating the preseed file + +Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. + +Once created, make sure the file gets published into a network address that can be reachable from your target device. + +Preseed example (`preseed.cfg`): + +```shell +d-i debian-installer/locale string en_US +d-i keyboard-configuration/xkb-keymap select us +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/get_hostname string unassigned-hostname +d-i netcfg/get_domain string unassigned-domain +d-i netcfg/hostname string debian +d-i mirror/country string manual +d-i mirror/http/hostname string httpredir.debian.org +d-i mirror/http/directory string /debian +d-i mirror/http/proxy string +d-i passwd/root-password password linaro123 +d-i passwd/root-password-again password linaro123 +d-i passwd/user-fullname string Linaro User +d-i passwd/username string linaro +d-i passwd/user-password password linaro +d-i passwd/user-password-again password linaro +d-i passwd/user-default-groups string audio cdrom video sudo +d-i time/zone string UTC +d-i clock-setup/ntp boolean true +d-i clock-setup/utc boolean true +d-i partman-auto/disk string /dev/sda +d-i partman-auto/method string regular +d-i partman-lvm/device_remove_lvm boolean true +d-i partman-md/device_remove_md boolean true +d-i partman-auto/choose_recipe select atomic +d-i partman/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true +popularity-contest popularity-contest/participate boolean false +tasksel tasksel/first multiselect standard, web-server +d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp +d-i pkgsel/upgrade select safe-upgrade +d-i finish-install/reboot_in_progress note +``` + +In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) + +#### Setting up grub.cfg + +Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: + +```shell +$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg +# Force grub to automatically load the first option +set default=0 +set timeout=1 +menuentry 'Install with preseeding' { + linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- + initrd /debian-installer/arm64/initrd.gz +} +``` + +The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. + +In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. + +#### Booting the system + +Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. + +Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. + +### Building debian-installer from source + +#### Build kernel package and udebs + +Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. + +You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) + +#### Rebuilding debian-installer with the new udebs + +To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. + +Download the installer (from jessie): + +```shell +sudo apt-get build-dep debian-installer +dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u2.dsc +``` + +Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): + +```shell +cd debian-installer-* +cd build +sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common +sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common +``` + +Download the kernel udebs that you created at the localudebs folder: + +```shell +cd localudebs +wget +cd .. +``` + +Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): + +```shell +cat < pkg-lists/local +ext4-modules-\${kernel:Version} +fat-modules-\${kernel:Version} +btrfs-modules-\${kernel:Version} +md-modules-\${kernel:Version} +efi-modules-\${kernel:Version} +scsi-modules-\${kernel:Version} +jfs-modules-\${kernel:Version} +xfs-modules-\${kernel:Version} +ata-modules-\${kernel:Version} +sata-modules-\${kernel:Version} +usb-storage-modules-\${kernel:Version} +EOF +``` + +Set up the local repo, so the installer can locate your udebs (from localudebs): + +```shell +cat < sources.list.udeb +deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ +deb http://httpredir.debian.org/debian jessie main/debian-installer +EOF +``` + +Default preseed to skip known errors (as the kernel provided by local udebs): + +``` +cat < default-preseed +# Continue install on "no kernel modules were found for this kernel" +d-i anna/no_kernel_modules boolean true +# Continue install on "no installable kernels found" +d-i base-installer/kernel/skip-install boolean true +d-i base-installer/kernel/no-kernels-found boolean true +d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb +EOF +``` + +Now just build the installer: + +```shell +fakeroot make build_netboot +``` + +You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md new file mode 100644 index 0000000..c625bdd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md @@ -0,0 +1,164 @@ +## Installing Fedora 23 + +This guide is not to be a replacement of the official Fedora 23 Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation](https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Fedora 23 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +**Note:** Because of bug [1251600](https://bugzilla.redhat.com/show_bug.cgi?id=1251600), we need to use both `BOOTAA64.EFI` and `grubaa64.efi` from the Fedora 22 release. + +```shell +sudo su - +cd /srv/tftp/ +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/BOOTAA64.EFI +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/grubaa64.efi +``` + +Downloading upstream Kernel and Initrd + +```shell +mkdir /srv/tftp/f23 +cd /srv/tftp/f23 +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/vmlinuz +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install Fedora 23 ARM 64-bit' --class fedora --class gnu-linux --class gnu --class os { + linux (tftp)/f23/vmlinuz ip=dhcp inst.repo=http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/ + initrd (tftp)/f23/initrd.img +} +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── f23 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install Fedora 23 ARM 64-bit +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Fedora 23 (just make sure that target device has external network access, since the installer is downloaded automatically after booting the kernel). + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.2.3-300.fc23.aarch64 (mockbuild@aarch64-08a.arm.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Thu Oct 8 01:39:38 UTC 2015 +[ 0.000000] CPU: AArch64 Processor [411fd072] revision 2 +[ 0.000000] Detected PIPT I-cache on CPU0 +[ 0.000000] alternatives: enabling workaround for ARM erratum 832075 +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c6000 SMBIOS 3.0=0x83ff349718 +... +Welcome to Fedora 23 (Twenty Three) dracut-043-60.git20150811.fc23 (Initramfs)! +... +[ 23.105835] dracut-initqueue[685]: RTNETLINK answers: File exists +[ 23.756828] dracut-initqueue[685]: % Total % Received % Xferd Average Speed Time Time Time Current +[ 23.757345] dracut-initqueue[685]: Dload Upload Total Spent Left Speed +100 958 100 958 0 0 1514 0 --:--:-- --:--:-- --:--:-- 1513 0 --:--:-- --:--:-- --:--:-- 0 +... +Welcome to Fedora 23 (Twenty Three)! +... +Starting installer, one moment... +anaconda 23.19.10-1 for Fedora 23 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +00:29:26 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: +. +[anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1 +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the installation destination, the partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Fedora 23 system. + +### Automating the installation with kickstart + +TODO diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md new file mode 100644 index 0000000..5e134d1 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md @@ -0,0 +1,320 @@ +This post concentrates on Running Hadoop after [installing](ODPi-Hadoop-Installation.md) ODPi components built using Apache BigTop. These steps are only for configuring it on a single node and running them on a single node. + +# Add Hadoop User + We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop usergroup: + +```shell +sudo useradd -G hadoop hduser +``` + +give a password for hduser + +```shell +sudo passwd hduser +``` + +Add hduser to sudoers list +On Debian: + +```shell +sudo adduser hduser sudo +``` + +On Centos: + +```shell +sudo usermod -G wheel hduser +``` + +Switch to hduser: + +```shell +sudo su - hduser +``` + +# Generate ssh key for hduser + +```shell +ssh-keygen -t rsa -P "" +``` + +Press \ to leave to default file name. + +Enable ssh access to local machine: + +```shell +cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys +``` + +Test ssh setup, as hduser: + +```shell +ssh localhost +``` + +# Disabling IPv6 + +```shell +sudo nano /etc/sysctl.conf +``` + +Add the below lines to the end and save: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +``` + +Prefer IPv4 on Hadoop: + +```shell +sudo nano /etc/hadoop/conf/hadoop-env.sh +``` + +Uncomment line: + +```shell +# export HADOOP_OPTS=-Djava.net.preferIPV4stack=true +``` + +Run sysctl to apply the changes: + +```shell +sudo sysctl -p +``` + +# Configuring the app environment +Configure the app environment by following steps: + +```shell +sudo mkdir -p /app/hadoop/tmp +sudo chown hduser:hadoop /app/hadoop/tmp +sudo chmod 750 /app/hadoop/tmp +sudo chown hduser:hadoop /usr/lib/hadoop +sudo chmod 750 /usr/lib/hadoop +``` + +# Setting up Environment Variables +Follow the below steps to setup Environment Variables in bash file : + +```shell +sudo su - hduser +nano .bashrc +``` + +Add the following to the end and save: + +```shell +export HADOOP_HOME=/usr/lib/hadoop +export HADOOP_PREFIX=$HADOOP_HOME +export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" +export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec +export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop +export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native +export HADOOP_COMMON_HOME=$HADOOP_HOME +export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce +export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs +export YARN_HOME=/usr/lib/hadoop-yarn +export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ +export CLASSPATH=$CLASSPATH:. +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.6.0.jar +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/client/hadoop-hdfs-2.6.0.jar +export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") +export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH +``` + +Execute the terminal environment again (`bash`), or simply logout and change to `hduser` again. + +# Modifying config files +## core-site.xml + +```shell +sudo nano /etc/hadoop/conf/core-site.xml +``` + +And add/modify the following settings: +Look for property with fs.defaultFS and modify as below: + +```shell + + fs.default.name + hdfs://localhost:54310 + The name of the default file system. A URI whose + scheme and authority determine the FileSystem implementation. The + uri's scheme determines the config property (fs.SCHEME.impl) naming + the FileSystem implementation class. The uri's authority is used to + determine the host, port, etc. for a filesystem. + +``` + +Add this to the bottom before \ tag: + +```shell + + hadoop.tmp.dir + /app/hadoop/tmp + A base for other temporary directories. + +``` + +## mapred-site.xml + +```shell +sudo nano /etc/hadoop/conf/mapred-site.xml +``` + +Modify existing properties as follows: +Look for property tag with as mapred.job.tracker and modify as below: + +```shell + + mapred.job.tracker + localhost:54311 + The host and port that the MapReduce job tracker runs + at. If "local", then jobs are run in-process as a single map + and reduce task. + + +``` + +## hdfs-site.xml: + +```shell +sudo nano /etc/hadoop/conf/hdfs-site.xml +``` + +Modify existing property as below : + +```shell + + dfs.replication + 1 + Default block replication. + The actual number of replications can be specified when the file is created. + The default is used if replication is not specified in create time. + + +``` + +# Format Namenode +This step is needed for the first time. Doing it every time will result in loss of content on HDFS. + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init +``` + +# Start the YARN daemons + +```shell +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done +sudo /etc/init.d/hadoop-yarn-resourcemanager start +sudo /etc/init.d/hadoop-yarn-nodemanager start +``` + +# Validating Hadoop +Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux + +```shell +sudo jps +``` +or + +```shell +ps aux | grep java +``` + +Alternatively, check if yarn managers are running: + +```shell +sudo /etc/init.d/hadoop-yarn-resourcemanager status +sudo /etc/init.d/hadoop-yarn-nodemanager status +``` + +You would see like below: + +```shell +● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager + Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) + Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago + CGroup: /system.slice/hadoop-yarn-nodemanager.service + └─10366 /usr/lib/jvm/java-1.7.0-openjdk-arm64/bin/java -Dproc_node... + +Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root +Dec 22 18:24:57 debian su[10348]: + ??? root:yarn +Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) +Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... +Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn +Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... +``` + + +## Run teragen, terasort and teravalidate ## + +```shell +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate +``` + +## Stop the Hadoop services ## + +```shell +sudo /etc/init.d/hadoop-yarn-nodemanager stop + +sudo /etc/init.d/hadoop-yarn-resourcemanager stop + +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done +``` + +## Potential Errors / Issues and Resolutions ## +* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: + +```shell +sudo groupadd supergroup + +sudo usermod -g supergroup hduser +``` + +* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. + +```shell +You may have delete all the packages and re-run the steps of installation from scratch. +``` + +* Error while formatting namenode +With the following command: + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init + + +If you see the following error: + WARN net.DNS: Unable to determine local hostname -falling back to "localhost" + java.net.UnknownHostException: centos: centos + at java.net.InetAddress.getLocalHost(InetAddress.java:1496) + at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) + at org.apache.hadoop.net.DNS.(DNS.java:57) + +Something is wrong in the network setup. Please check /etc/hosts file. + +```shell +sudo nano /etc/hosts +``` + +The hosts file should like below: + +```shell +127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname +::1 localhost +``` + +Also try the following steps: + +```shell +sudo rm -Rf /app/hadoop/tmp + +hadoop namenode -format +``` diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md new file mode 100644 index 0000000..e810f26 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md @@ -0,0 +1,82 @@ +This post concentrates on installing ODPi components built using Apache BigTop. These steps configure and run the components on a single node. + +# Prerequisites: + +* Java 7 (e.g. openjdk-7-jre) + +# Repo: + +ODPi deb and rpm packages can be found on Linaro repositories: + +* Debian Jessie - http://repo.linaro.org/ubuntu/linaro-overlay/ +* CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/ + + +# Installation : + +### On Debian: + +Add to repo source list (**not required if you are using the installer from the Reference Platform**): + +```shell +echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +Update the source list and install the dependencies: + +```shell +sudo apt-get update +sudo apt-get install openssh-server rsync openjdk-7-jre openjdk-7-jdk +sudo apt-get build-dep build-essential +``` + +Install Hadoop packages: + +```shell +sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### On CentOS: + +```shell +sudo wget http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo -O /etc/yum.repos.d/linaro-overlay.repo +sudo yum update +sudo yum -y install openssh-server openssh-clients java-1.7.0-openjdk* +sudo yum install -y bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### Verifying Installation + +Packages would get installed in /usr/lib + +Type hadoop to check if hadoop is installed: + +```shell +hadoop +``` + +And you should see the following: + +```shell +linaro@debian:~$ hadoop +Usage: hadoop [--config confdir] COMMAND + where COMMAND is one of: + fs run a generic filesystem user client + version print the version + jar run a jar file + checknative [-a|-h] check native hadoop and compression libraries availability + distcp copy file or directories recursively + archive -archiveName NAME -p * create a hadoop archive + classpath prints the class path needed to get the + credential interact with credential providers + Hadoop jar and the required libraries + daemonlog get/set the log level for each daemon + trace view and modify Hadoop tracing settings + or + CLASSNAME run the class named CLASSNAME +``` + + Most commands print help when invoked w/o parameters. + +Next Step: [Setup, Configuration and Running Hadoop](ODPi-BigTop-Hadoop-Config-Run.md) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md new file mode 100644 index 0000000..d3b4cb9 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md @@ -0,0 +1,376 @@ +# OpenStack Liberty - Debian Jessie + +# Introduction + +In general, the instructions in the Liberty install guide should be followed: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html. This guide will describe changes to the documented procedures that should be kept in mind while going through the guide. + +Each section below will correspond to a section in the guide. Guide sections that do not have a corresponding section below may be followed as-is. + +# Release Notes + +## Configuring images for aarch64 + +An image must be configured specially in glance to be able to boot correctly on aarch64. +To attach the devices to the virtio bus (which does not allow hotplugging a volume, but will work if the image does not have SCSI support), the following properties must be set: + +```shell +--property hw_machine_type=virt +--property os_command_line='root=/dev/vda rw rootwait console=ttyAMA0' +--property hw_cdrom_bus=virtio +``` + +To attach the devices to the SCSI bus (which does allow hotplugging a volume, but might not be supported by the guest image), the following properties must be set: + +```shell +--property hw_scsi_model='virtio-scsi' +--property hw_disk_bus='scsi' +--property os_command_line='root=/dev/sda rw rootwait console=ttyAMA0' +``` + +You can set these properties when you are uploading the image into glance, or modify the image if you have already uploaded it. + + +# Pre-Installation + +## Verify/enable additional repositories + +Verify that the `linaro-overlay` and `jessie-backports` repositories are enabled. + +Check if they are available by checking `/etc/apt/sources.list` and `/etc/apt/sources.list.d`. + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://httpredir.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backports.list +``` + +## Modify repository priorities + +Create `/etc/apt/preferences.d/jessie-backports`: + +```shell +Package: * +Pin: release a=jessie-backports +Pin-Priority: 500 +``` + +Then, make sure to run apt-get update: + +```shell +$ sudo apt-get update +``` + +## Environment + +Update `/etc/hosts` to add “controller” as an alias for localhost. + +```shell +127.0.0.1 localhost controller +``` + +## Disable IPV6 + +Add the following to `/etc/sysctl.conf`: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +net.ipv6.conf.eth0.disable_ipv6 = 1 +``` + +Run sysctl to apply the changes: + +```shell +$ sudo sysctl -p +``` + +# Following the Openstack guide... + +OpenStack guide: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html + +## Environment + +### Openstack Packages + +Do not enable the `cloud-archive:liberty` repository. + +Install some dependencies: + +```shell +$ sudo apt-get install openstack-cloud-services python-pymysql +``` + +Answer the questions asked by debconf: + +* New password for the MySQL **root** user: \ + +Install the openstack client: + +```shell +$ sudo apt-get install python-openstackclient +``` + +### NoSQL Database + +The instructions in this section are not required, as Telemetry is not installed. + +## Add the Identity service (Keystone) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during meta package installation later. + +#### Install and configure components + +Install the apache and the keystone meta package: + +```shell +$ sudo apt-get install openstack-cloud-identity +``` + +Answer the questions asked by debconf: + +* Set up a database for Keystone: **Yes** +* Configure database for keystone with dbconfig-common: **Yes** +* Database type to be used by keystone: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for keystone: **\** +* Authentication server administration token: **\** +* Register administration tenants? **Yes** +* Password of the administrative user: **\** +* Register Keystone endpoint? **Yes** +* Keystone endpoint IP address: **\** + +#### Configure the Apache HTTP server + +Omit this section of the guide. + +#### Finalize the installation + +Omit this section of the guide. + +### Create the service entity and API endpoints + +Omit this section of the guide. + +### Create projects, users, and roles + +Omit this section of the guide. + + +## Add the Image service (Glance) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install glance +``` + +Answer the questions asked by debconf: + +* Set up a database for Glance: **Yes** +* Configure database for glance-common with dbconfig-common? **Yes** +* Database type to be used by glance-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for glance-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Pipeline flavor: **keystone** +* Authentication server hostname: **\** +* Authentication server password: **\** +* Register Glance in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Omit this section of the guide. + +### Verify operation + +The CirrOS image to run on aarch64 is the file that ends in `-uec.tar.gz`. It must be extracted and each file (kernel, initrd, disk image) uploaded to Glance separately. + +Download the CirrOS AArch64 UEC tarball and untar it: + +```shell +$ wget http://download.cirros-cloud.net/daily/20150923/cirros-d150923-aarch64-uec.tar.gz +$ tar xvf cirros-d150923-aarch64-uec.tar.gz +``` + +Upload the image parts into Glance. You will need to make note of the IDs assigned to the kernel and initrd and pass them on the command line when uploading the disk image: + +```shell +$ glance image-create --name "cirros-kernel" --visibility public --progress \ + --container-format aki --disk-format aki --file cirros-d150923-aarch64-vmlinuz + +$ glance image-create --name "cirros-initrd" --visibility public --progress \ + --container-format ari --disk-format ari --file cirros-d150923-aarch64-initrd + +$ glance image-create --name "cirros" --visibility public --progress \ + --property hw_machine_type=virt --property hw_cdrom_bus=virtio \ + -property os_command_line='console=ttyAMA0' \ + --property kernel_id=KERNEL_ID --property ramdisk_id=INITRD_ID \ + --container-format ami --disk-format ami --file cirros-d150923-aarch64-blank.img +``` + +## Add the Compute service (Nova) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install nova-api nova-cert nova-conductor \ + nova-consoleauth nova-scheduler nova-compute +``` + +Answer the questions asked by debconf: + +* Set up a database for Nova: **Yes** +* Configure database for nova-common with dbconfig-common? **Yes** +* Database type to be used by nova-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for nova-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Auth server hostname: **\** +* Auth server password: **\** +* Neutron server URL: **http://\:9696** +* Neutron administrator password: **\** +* Metadata proxy shared secret: **\** +* API to activate: choose **osapi_compute and metadata** +* Value for my_ip: **\** +* Register Nova in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Ensure that vnc and spice are disabled in `/etc/nova/nova.conf`. Look for the following keys in `nova.conf` and set them to False: + +```shell +vnc_enabled=false + +[spice] +enabled=false +``` + +Enable KVM by ensuring the following is in `nova-compute.conf`: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +virt_type=kvm +``` + +**NOTE: Until kernel support for KVM is properly enabled, instances can be run in emulation by ensuring the following is in `nova-compute.conf`**: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +cpu_mode = custom +virt_type = qemu +cpu_model = cortex-a57 +``` + +**IMPORTANT: If you make changes to `nova.conf`, or `nova-compute.conf`, restart the nova services:** + +```shell +$ sudo service nova-compute restart +``` + + +## Add the Networking service (Neutron) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install neutron-server neutron-plugin-ml2 \ + neutron-plugin-linuxbridge-agent neutron-dhcp-agent \ + neutron-metadata-agent +``` + +Answer the questions asked by debconf: + +* neutron-common + * Set up a database for Neutron: **Yes** + * Configure database for neutron-common with dbconfig-common? **Yes** + * Database type to be used by neutron-common: **mysql** + * Password of the database's administrative user: **\** + * MySQL application password for neutron-common: **\** + * IP address of your RabbitMQ host: **\** + * Username for connection to the RabbitMQ server: **guest** + * Password for connection to the RabbitMQ server: **guest** + * Authentication server hostname: **\** + * Authentication server password: **\** + * Neutron plugin: **ml2** +* neutron-metadata-agent + * Auth server hostname: **\** + * Auth server password: **\** + * Name of the region to be used by the metadata server: **\** + * Metadata proxy shared secret: **\** +* neutron-server + * Register Neutron in the Keystone endpoint catalog? **Yes** + * Keystone authentication token: **\** + +#### Configure networking options +Follow "Networking Option 1: Provider networks". + +#### Finalize installation + +Omit this section of the guide. + + +## Launch an instance + +### Create virtual networks + +Follow section “Public provider network” + +### Launch an instance + +Follow section “Launch an instance on the public network” + +NOTE: Accessing an image via the virtual console (VNC) will not work, as VNC is not supported. You may access the console log using the following command: + +```shell +$ nova console-log --length=10 INSTANCE_ID +``` diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Overdrive/README.md new file mode 100644 index 0000000..586bd01 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/Overdrive/README.md @@ -0,0 +1,68 @@ +### Overdrive + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### AMD Overdrive + +Since the EDK2 based firmware is not yet supported (work in progress), the original AMI BIOS based firmware from AMD is required. + +At the time of the 16.03 release the latest firmware version for Overdrive (*B0*) is 1.0.0.1. Latest for *rev A* is still 0.0.7.4. + +*A* and *B0* are both supported by the 16.03 release (`A` requires an external PCIe NIC) + +After flashing/updating the firmware, proceed to the network installer instructions in order to install your favorite distribution. No special setup is required for Overdrive. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100), but a board like the [SPI Hook](http://www.tincantools.com/SPI_Hook.html) should also be compatible with it (not yet tested). + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md new file mode 100644 index 0000000..9ba1ff1 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md @@ -0,0 +1,367 @@ +## UEFI/EDK2 + +EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. + +The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). + +Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. + +EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. + +This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) + +### Building + +#### Pre-Requisites + +Make sure the build dependencies are available at your host machine. + +On Debian/Ubuntu: + +```shell +sudo apt-get install uuid-dev build-essential aisle +``` + +On RHEL/CentOS/Fedora: + +```shell +sudo yum install uuid-devel libuuid-devel aisle +``` + +Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': + +```shell +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb +sudo dpkg -i --force-all *.deb +``` + +If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. + +Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +UEFI/EDK2: + +```shell +git clone https://github.com/tianocore/edk2.git +git clone https://git.linaro.org/uefi/OpenPlatformPkg.git +cd edk2 +git checkout -b stable-baseline d0d34cdf1d2752f0d7c3ca41af7e7ed29c221d11 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git +ln -s ../OpenPlatformPkg +``` + +ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): + +```shell +git clone https://github.com/ARM-software/arm-trusted-firmware.git +cd arm-trusted-firmware +git checkout -b stable-baseline v1.2 # suggested latest stable release +``` + +UEFI Tools (helpers and scripts to make the build process easy): + +```shell +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building UEFI/EDK2 for Juno R0/R1 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +export ARMTF_DIR=${PWD}/arm-trusted-firmware +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno +``` + +The output files: + +- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` +- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` + +#### Building UEFI/EDK2 for D02 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since D02 support is not yet merged in OpenPlatformPkg, a specific branch needs to be used for it: + +```shell +cd OpenPlatformPkg +git checkout d02-release +``` + +Then just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 +``` + +The output file: + +- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` + +#### Building UEFI/EDK2 for Overdrive + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive +``` + +The output file: + +- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` + +#### Building UEFI/EDK2 for HuskyBoard / Cello + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello +``` + +The output file: + +- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` + +### Flashing + +#### Juno R0/R1 + +##### Clean flash + +Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: + +```shell +Cmd> flash +Flash> eraseall +Flash> quit +Cmd> usb_on +``` + +This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. + +In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: + +```shell +git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git +``` + +Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE +``` + +Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): + +```shell +cp -rf vexpress-firmware/* /media/recovery +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. + +##### Upgrading UEFI/EDK2 + +If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). + +Export Juno's MMC as a usb storage device on your host machine: + +```shell +Cmd> usb_on +``` + +Then just copy over the UEFI/EDK2 files that were built in the previous steps: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Then just power cycle the Juno and the board should see and use the new firmware. + +#### D02 + +Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('PV660D02.fd'): + +```shell +cp PV660D02.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### D03 + +Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('D03.fd'): + +```shell +cp D03.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d03-2/](http://open-estuary.com/d03-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('D03.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### AMD Overdrive / HuskyBoard / Cello + +##### Clean flash + +###### DediProg SF100 + +Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. + +First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: + +```shell +dpcmd --type MX25L12835F -e +``` + +Now just flash the new firmware: + +```shell +dpcmd --type MX25L12835F -p FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +###### SPI Hook + +Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) + +Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. + +Example for the 4.5M based firmware: + +```shell +dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc +``` + +Connect the SPI cable, unplug the power cord and flash SPI: + +```shell +sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +##### Upgrading firmware + +There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. + +### Links and References: + +- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) +- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md new file mode 100644 index 0000000..9a9daea --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md @@ -0,0 +1,52 @@ +### X-Gene Mustang + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/Highlights.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/Highlights.md new file mode 100644 index 0000000..a7e8f79 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/Highlights.md @@ -0,0 +1,87 @@ +### Highlights for 16.03 release: + +*** + +###### Consumer and Enterprise Edition: +#### Kernel +- Unified tree shared between the CE and EE builds. Supports Hikey, Dragonboard, D02, APM X-Gene, HP Proliant m400 and AMD Overdrive. +- 4.4.0 based, including under-review topic branches to extend the hardware support for the platforms available. +- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. +- Single kernel config for all platforms in arch/arm64/configs/distro.config +- Single kernel binary (package) for all platforms + +*** + +###### Consumer Edition: + +#### CE Debian RPB (common): +- Upgrade to Debian 8.3 "Jessie" +- Upgrade to the unified 4.4.0 Linux Kernel +- Upgrade graphics components: Mesa 11.1.2 and Xserver 1.17.3 +- Rootfs automatically resized during the first boot + +#### CE Debian RPB for DragonBoard™ 410: +- Freedreno X11 video driver included by default (1.4.0) +- Analog audio playback and record support +- Upgrade Qualcomm Firmware Package to 1.2 + +#### CE Debian RPB for HiKey (CircuitCo & LeMaker): +- Default Grub 2 boot configuration updated, now supporting kernel package upgrades +- xserver-xorg-video-armsoc now included by default (still using software rendering, Mali integration expected as part of the next release)
 + +#### CE AOSP RPB (common): +- AOSP Android Marshmallow 6.0 (android-6.0.1_r16)
 + +#### CE AOSP RPB for DragonBoard™ 410: +- Initial build, available as Developer Preview (not suitable for end users). +- Mesa and Freedreno support +- Kernel 4.4.0 
 + +#### CE AOSP RPB for HiKey (CircuitCo & LeMaker): +- AOSP Android Marshmallow 6.0 (android-6.0.1_r16) +- 4.1 based kernel
 + +#### CE OE/Yocto RPB: +- Included the unified 4.4.0 kernel +- meta-backports created, to contain backported recipes used by the reference platform + +*** + +###### Enterprise Edition + +#### Supported platforms: + +- AMD Overdrive A0 (new) and B0 +- D02 +- APM X-Gene Mustang (new) +- HP ProLiant m400 (new)
 + +#### Overall platform features, validated as part of the release: + +- UEFI with ACPI +- KVM +- PCIe
 + +#### Firmware: + +- Updated UEFI/EDK2 for D02, including support for PCIe and SAS
 + +#### Network Installers: + +- Debian: + - Upgrade to Debian 8.3 "Jessie" + - Using the unified 4.4.0 kernel +- CentOS (Now officially supported): + - Based on CentOS 7.2 15.11 + - Using the consolidated 4.4 kernel + +#### Enterprise Components: + +- Docker 1.9.1 +- OpenStack Liberty for Debian Jessie + - CentOS to be supported as part of the next cycle +- ODPi based Hadoop +- Spark 1.6 +- OpenJDK 8 (Linaro 16.03) + +*** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/Known-Issues.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/Known-Issues.md new file mode 100644 index 0000000..d66ba58 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/Known-Issues.md @@ -0,0 +1,100 @@ +## Reference Platform Build - 16.03 Release - Known Issues + +### Enterprise + +Fixed Issues +( Bugzilla ) + +| Enterprise Edition | Known Issues ( Bugzilla ) | +|:-----:|:-----| +|[bug 2079](https://bugs.linaro.org/show_bug.cgi?id=2079)| [RPB] D02- Sometimes root partition is missing when booting Debian/CentOS| +|[bug 2100](https://bugs.linaro.org/show_bug.cgi?id=2100)| [RPB] Placing D02 under major stress and SAS driver starts to have errors| +|[bug 2067](https://bugs.linaro.org/show_bug.cgi?id=2067)| [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system| +|[bug 2068](https://bugs.linaro.org/show_bug.cgi?id=2068)| [RPB] D02- Detailed information about firmware version is needed| +|[bug 2085](https://bugs.linaro.org/show_bug.cgi?id=2085)| [RPB] D02- CentOS installer fails to detect SATA drive| +|[bug 2106](https://bugs.linaro.org/show_bug.cgi?id=2206)| [RPB] D02- shutdown works as reboot| +|[bug 2097](https://bugs.linaro.org/show_bug.cgi?id=2097)| [RPB] kernel fails to build on amd64| +|[bug 2069](https://bugs.linaro.org/show_bug.cgi?id=2069)| [RPB] D02- Selected item in BIOS is not highlighted in minicom| +|[bug 2086](https://bugs.linaro.org/show_bug.cgi?id=2086)| [RPB] D02: Booting CentOS Linux failed| +|[bug 2066](https://bugs.linaro.org/show_bug.cgi?id=2066)| QEMU can't launch an instance with more than 30GB RAM| +|[bug 2075](https://bugs.linaro.org/show_bug.cgi?id=2075)| [RPB] D02: Latest EDK2 breaks network support in UEFI| + +*** + +### HiKey + +Fixed Issues ( Bugzilla ) + +| Debian | Known Issues ( Bugzilla ) | +|:-----:|:-----| +|[bug 187](https://bugs.96boards.org/show_bug.cgi?id=187)| Missing XWindows video acceleration - Weston (needs Mali r6p0)| +|[bug 262](https://bugs.96boards.org/show_bug.cgi?id=262)| [RPB] LG W2253V fails to work with 4.4.0-93-arm64| +|[bug 212](https://bugs.96boards.org/show_bug.cgi?id=212)| Suspend/resume support needed in 4.1/4.4| +[bug 223](https://bugs.96boards.org/show_bug.cgi?id=223)| **HiKey**: Linux 4.4: USB unstable with SMP| +|[bug 27](https://bugs.96boards.org/show_bug.cgi?id=27)| UEFI variable runtime service not working| +|[bug 222](https://bugs.96boards.org/show_bug.cgi?id=222)| **HiKey**: RTC RTS code accesses unrelocated address| +|[bug 267](https://bugs.96boards.org/show_bug.cgi?id=267)| [RPB] UEFI does not provide devicetree to OS| +|[bug 290](https://bugs.96boards.org/show_bug.cgi?id=290)| [RPB] fastboot erase/flash system is just too slow when flashing the Debian images| +|[bug 176](https://bugs.96boards.org/show_bug.cgi?id=176)| Upgrade HiKey Mali Lib to r6p0| +|[bug 205](https://bugs.96boards.org/show_bug.cgi?id=205)| [RPB] USB OTG fails after hot removal and reinsertion| +|[bug 286](https://bugs.96boards.org/show_bug.cgi?id=286)| [RPB] 4.4.0-102-arm64 - Bad mode in Synchronous Abort handler detected| +|[bug 20](https://bugs.96boards.org/show_bug.cgi?id=20)| [RPB] USB kernel trace errors -22| +|[bug 152](https://bugs.96boards.org/show_bug.cgi?id=152)| [RPB] SD-Card doesn't work| +|[bug 163](https://bugs.96boards.org/show_bug.cgi?id=163)| [RPB-AOSP] HDMI audio not working| +|[bug 233](https://bugs.96boards.org/show_bug.cgi?id=233)| [RPB] Bluetooth driver prevents board from rebooting| +|[bug 265](https://bugs.96boards.org/show_bug.cgi?id=265)| fastboot reboot-bootloader doesn't work| +|[bug 291](https://bugs.96boards.org/show_bug.cgi?id=291)| [RPB] fastboot erase not supported in l-loader (recovery)| +|[bug 282](https://bugs.96boards.org/show_bug.cgi?id=282)| [RPB] Missing wl18xx wlconf setup as part of the first boot process| +|[bug 145](https://bugs.96boards.org/show_bug.cgi?id=145)| [RPB] unable to read thermal sensors| +|[bug 151](https://bugs.96boards.org/show_bug.cgi?id=151)| [RPB] glxgears: couldn't get an RGB, Double-buffered visual| + +| AOSP | Known Issues ( Bugzilla ) | +|:-----:|:------| +|[bug 180](https://bugs.96boards.org/show_bug.cgi?id=180)| [RPB] Shutdown cannot turn off HDMI monitor| +|[bug 224](https://bugs.96boards.org/show_bug.cgi?id=224)| [RPB-AOSP] BT status LED doesn't blink when BT transfer is in progress| +|[bug 225](https://bugs.96boards.org/show_bug.cgi?id=225)| [RPB] User LED numbers on the board don't match the sysfs entries| +|[bug 228](https://bugs.96boards.org/show_bug.cgi?id=228)| [RPB] Bluetooth mice pair and connect but don't show input| + +*** + +### DragonBoard™ 410c + +Fixed Issues +( Bugzilla ) + +| Debian | Known Issues ( Bugzilla )| +|:-------:|:---------| +| [bug 285](https://bugs.96boards.org/show_bug.cgi?id=285) | USB host doesn't detect any plugged devices | +| [bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) | [RPB] Cannot soft power off or shutdown db410c | +| [bug 284](https://bugs.96boards.org/show_bug.cgi?id=284) | [RPB] Dragon board Display sleep not working | +| [bug 289](https://bugs.96boards.org/show_bug.cgi?id=289) | [RPB] USB devices don't work after reboot | +| [bug 207](https://bugs.96boards.org/show_bug.cgi?id=207) | [RPB] Bluetooth does not work on Dragon board debian | +| [bug 153](https://bugs.96boards.org/show_bug.cgi?id=153) | [RPB] Missing information about hwpack usage| + + +Fixed Issues +( Bugzilla ) + + +| AOSP | Known Issues ( Bugzilla ) | +|:----------:|:-----------| +| [bug 254](https://bugs.96boards.org/show_bug.cgi?id=254) | [RPB] wpa_supplicant crashes wcn36xx | +| [bug 276](https://bugs.96boards.org/show_bug.cgi?id=276) | [RPB-AOSP] USB-OTG doesn't work | +| [bug 278](https://bugs.96boards.org/show_bug.cgi?id=278) | [RPB-AOSP] Free internal disk space is too small | +| [bug 279](https://bugs.96boards.org/show_bug.cgi?id=279) | [RPB-AOSP] "x App has stopped" happens frequently | +| [bug 280](https://bugs.96boards.org/show_bug.cgi?id=280) | [RPB-AOSP] App crashes when SD card mounted manually | +| [bug 277](https://bugs.96boards.org/show_bug.cgi?id=277) | [RPB-AOSP] SD card auto mount from UI doesn't work | + + +*** + + + +| Bug Legend | | +|:-----:|:-------| +| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | +| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | +| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | +| VERIFIED | A team has VERIFIED a working solution for a bug | + +*** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/README.md new file mode 100644 index 0000000..68d0477 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/README.md @@ -0,0 +1,18 @@ +# Reference Platform Build - 16.03 + +[RPB 16.03 Highlights](Highlights.md) | [RPB 16.03 Known Issues](Known-Issues.md) | [RPB 16.03 Release Status](ReleaseStatus-16.03.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [D02](EnterpriseEdition/D02/README.md) +- [Overdrive](EnterpriseEdition/Overdrive/README.md) +- [Cello](EnterpriseEdition/Cello/README.md) +- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) +- [HP ProLiant m400](EnterpriseEdition/HP-Proliant-m400/README.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.03/ReleaseStatus-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ReleaseStatus-16.03.md new file mode 100644 index 0000000..a3c91c1 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.03/ReleaseStatus-16.03.md @@ -0,0 +1,170 @@ +## Reference Platform Release Status + +- *Release:* 16.03 +- *Code/feature freeze:* February 22th / 2016 +- *RC1:* February 22th / 2016 +- *Release date:* March 3th / 2016 (originally March 1) + +### Release Candidates + +#### Final + +- *Debian Installer (118):* [mini.iso](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz) +- *CentOS Installer (36):* [16.03](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/) +- *Kernel (104):* [linux-image-4.4.0-104](https://builds.96boards.org/releases/reference-platform/components/linux/16.03/) +- *CE AOSP RPB HiKey (65)*: [16.03](https://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/) +- *CE AOSP RPB Dragonboard410c (45):* [16.03](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/) +- *CE Debian RPB HiKey (68)*: [16.03](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/) +- *CE Debian RPB Dragonboard410c (68):* [16.03](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/) + +#### RC5 + +- *Debian Installer (111):* [mini.iso](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/netboot.tar.gz) +- *CentOS Installer:* [34](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/34/) +- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) +- *UEFI*: [46](https://builds.96boards.org/snapshots/reference-platform/components/uefi/46/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/hikey/) +- *CE Debian RPB Dragonboard410c:* [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/dragonboard410c/) + +#### RC4 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [33](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/33/) +- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/hikey/) +- *CE Debian RPB Dragonboard410c:* [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/dragonboard410c/) + +#### RC3 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [31](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/31/) +- *Kernel:* [linux-image-4.4.0-93](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-93-arm64_4.4.0.linaro.93-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- - *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/hikey/) +- *CE Debian RPB Dragonboard410c:* [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/dragonboard410c/) + +#### RC2 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [30](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/30/) +- *Kernel:* [linux-image-4.4.0-91](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-91-arm64_4.4.0.linaro.91-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/hikey/) +- *CE Debian RPB Dragonboard410c:* [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/dragonboard410c/) + +#### RC1 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [29](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/29/) +- *Kernel:* [linux-image-4.4.0-85](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-85-arm64_4.4.0.linaro.85-1.linarojessie.1_arm64.deb) +- *UEFI*: [43](https://builds.96boards.org/snapshots/reference-platform/components/uefi/43/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [43](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/43/) +- *CE Debian RPB HiKey*: [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/hikey/) +- *CE Debian RPB Dragonboard410c:* [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/dragonboard410c/) + +### Kernel + +Kernel is 4.4 based, unified and supporting the following boards by default: +* Dragonboard410c +* HiKey +* AMD Overdrive (A0 should also be supported, pending kernel update) +* D02 +* APM X-Gene/Moonshot m400 (supported with the final RC) + +Tree data: +* Git: https://github.com/96boards/linux/ +* Branch: *96b/releases/2016.03* +* Config: https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config + +### Remaining Work Activities + +* QA/Validation - QA Team +** Enterprise Debian Overdrive +** Enterprise Debian D02 +** Enterprise CentOS Overdrive +** Enterprise CentOS D02 +** -CE Debian DB410c - *Naresh*- +** -CE AOSP HiKey - *Chase Qi*- +** -CE AOSP DB410c (nice to have) - *Chase Qi*- +** -CE Debian HiKey - *Naresh*- +* Test/Validation of GPIO, I2C and SPI support on both HiKey and Dragonboard410c - *Grant* +* Release Documentation - *Robert* +* -Porting xorg-server into linaro-overlay - *Nicolas/Ricardo*- +* -Linaro-EDK2 February Release - *Leif*- +* D02 OpenPlatformPkg update - *Heyi/Leif* +* D02 EDK2 SAS support - *Zhangfei Gao* +* -Move unified kernel to https://github.com/96boards/linux - *Amit*- +* -Update CentOS installer to use the unified kernel - *Ricardo*- +* -Update default grub config used by HiKey (generic) - *Ricardo*- +* ROD Openstack support for CentOS - *Fathi* + +### Out of Scope / Next Release + +* Kernel Fragments - *Amit* +* Lack of a default device-tree for HiKey - *Ricardo/Guodong*: bugs [27](https://bugs.96boards.org/show_bug.cgi?id=27) and [267](https://bugs.96boards.org/show_bug.cgi?id=267) to cover the right implementation, postponed to *16.06*. +* [Bug 254 - [RPB] wpa_supplicant crashes wcn36xx](https://bugs.96boards.org/show_bug.cgi?id=254) +* [Bug 207 - [RPB] Bluetooth does not work on Dragonboard debian](https://bugs.96boards.org/show_bug.cgi?id=207) +* [Bug 262 - [RPB] LG W2253V fails to work with 4.4.0-93-arm64](https://bugs.96boards.org/show_bug.cgi?id=262) - *Amit* +* [Bug 2067 - [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system](https://bugs.linaro.org/show_bug.cgi?id=2067) - Amit/Hanjun + +### Current Issues / Bugs + +#### Kernel + +* -[Bug 1999 - RP Kernel doesn't boot on HP Moonshot m400 (APM X-Gene) cartridges (ACPI)](https://bugs.linaro.org/show_bug.cgi?id=1999) - *Ricardo/Amit*- +* -[Bug 2060 - [RPB] Missing support for APM XGENE / Moonshot m400](https://bugs.linaro.org/show_bug.cgi?id=2060) - *Amit*- + +###### HiKey + +* -[Bug 274 - [RPB] xserver armsoc driver fails to allocate buffer](https://bugs.96boards.org/show_bug.cgi?id=274) - *Amit/Guodong/Xinliang*- +* [Bug 281 - [RPB] regression - constant hangs with linux-image-4.4.0-99-arm64](https://bugs.96boards.org/show_bug.cgi?id=281) - *Amit/Guodong* + +###### Overdrive + +* -[Bug 2051 - RPB: Overdrive fails to find the SATA disks when booting with ACPI](https://bugs.linaro.org/show_bug.cgi?id=2051) - *Graeme*- + +###### Dragonboard410c + +* -[Bug 2061 - [RPB] CONFIG_QCOM_SCM breaks XGENE support](https://bugs.linaro.org/show_bug.cgi?id=2061) - *Amit/Nicolas*- + +###### D02 + +* -[Bug 2037 - D02: Unable to handle kernel paging request](https://bugs.linaro.org/show_bug.cgi?id=2037) - *Amit/Hanjun*- +* -[Bug 2063 - D02: No console unless you boot with console=ttyS0,115200](https://bugs.linaro.org/show_bug.cgi?id=2063) - *Amit/Hanjun*- +* -[Bug 2032 - ACPI NUMA Support crashes on D02](https://bugs.linaro.org/show_bug.cgi?id=2032) - *Hanjun*- + +#### UEFI + +###### D02 + +* -[Bug 2062 - EDK2 D02: "sas: realizing _RST replacing syscon" breaks SAS support in Linux](https://bugs.linaro.org/show_bug.cgi?id=2062) - *Heyi*- +* -Lack of PCIe support for D02 on Linux (missing tables) - *Hanjun/Heyi*- +* Lack of SAS support in EDK2/UEFI - *Zhangfei* +* -[Bug 2075 - [RPB] D02: Latest EDK2 breaks network support in UEFI](https://bugs.linaro.org/show_bug.cgi?id=2075)- + +###### HiKey + +#### Debian + +* -[Bug 2009 - Wrong network device name set after Debian install](https://bugs.linaro.org/show_bug.cgi?id=2009) - *Ricardo* +* -[ttyAMA2 (tty96B0) missing on HiKey with 16.03-rc4](https://bugs.96boards.org/show_bug.cgi?id=273) - *Amit* + +###### DB410c + +#### AOSP + +###### DB410c + +* -[Bug 253 - [RPB] Gallery fails to open due a fatal exception in GLThread](https://bugs.96boards.org/show_bug.cgi?id=253)- + +#### OE/Yocto diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..15f676d --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted at: +- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) +- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) +- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) +- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) +- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) +- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) + +*Build setup:* + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +Also install make sure to install the following packages: + +```shell +sudo apt-get install libfdt-dev python-mako get text +``` + +*Download the firmware blobs:* + +```shell +mkdir android/ +cd android/ +mkdir -p vendor/db410c +cd vendor/db410c +wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin +sh firmware-410c-1.2.0.bin +cd - +``` + +*Build the image:* + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 +cd .repo +git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch db410c-userdebug +make droidcore -j8 +cd out/target/product/db410c +``` + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md new file mode 100644 index 0000000..e8ed4bd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md @@ -0,0 +1,281 @@ +## Debian RPB 16.06 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain and Skales Tool + - Step 3: Export path to cross compiler tool and confirm version + - Step 4: Clone the Reference Platform kernel + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target DragonBoard™ 410c + - Step 12: Generate the initramfs + - Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.06 +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir` and call is something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir DB410c-16.06 +$ cd DB410c-16.06 +``` + +#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +``` + +###### Skales tool + +```shell +$ sudo apt-get install libfdt-dev +$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales +$ export PATH=$PATH:/tmp/skales +``` +>Skales will be used later when creating the device tree + + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes + +```shell +$ git clone -b 96b-kernelci http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- Once kernel source has been cloned cd into its directory + +```shell +$ cd kernel +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX +``` + +#### Step 7: Copy Modules + +- Modules must be local (host computer) before transferring to target device +- Still within linux directory +- Make temp folder +- Create modules + +```shell +$ mk tmp/modules +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 +``` + +#### Step 8: Find kernel release string + +- This was created during the kernel build +- In this example the kernel.release is 4.4.0+ + +```shell +$ cat include/config/kernel.release +#Output +$ 4.4.0+ +``` + +#### Step 9: Generate modules.dep and map files + +- Helps kernel find modules when system boots +- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 + +```shell +$ depmod -a -b /tmp/modules 4.4.0+ +``` + +#### Step 10: Find DragonBoard™ 410c IP Address + +- On your DragonBoard™ 410c +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 11: Transfer the modules to the target DragonBoard™ 410c + +- Using your board's IP Address for linaro@ + +```shell +$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules +$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#DragonBoard™ 410c shell +db410c $ tar -jxvf modules.tar.bz2 +db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ +``` + +#### Step 12: Generate the initramfs + +- You should still be in the DragonBoard™ 410c shell + +```shell +db410c $ sudo update-initramfs -k 4.4.0+ -c +``` + +- Copy back the new initramfs +- This will be used when creating the boot.mg + +#### Step 13: Create the device tree image and boot image + +###### Device tree + +```shell +$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom +``` + +###### Boot image + +```shell +$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" +``` + +Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. + +- Flashing the boot image can be done using fastboot +- Board must be booted into fastboot mode +- With USB to microUSB cable still connect execute the following: + +```shell +$ sudo fastboot flash boot boot.img +$ sudo fastboot reboot +``` + +*** + +### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +```shell +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +```shell +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `about` partition, you can now flash your board with: + +```shell +sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn +``` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TO-DO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md new file mode 100644 index 0000000..66afe04 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md @@ -0,0 +1,196 @@ +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..ef52214 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md @@ -0,0 +1,155 @@ +[]() +[]() +[]() +[]() +[]() + +>**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Android Bootloader and Boot file + +- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) +- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +#### Step 3: Download all remaining files + +- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) +- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) +- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Android using Fastboot with Linux host + +This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +fastboot devices +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +cd + +#Example: +cd dragonboard410c_bootloader_emmc_android +# = dragonboard410c_bootloader_emmc_android + +# This command will execute the flashall script within the bootloader folder +./flashall + +``` + +5 - **Recall location of all downloaded files from downloads page** + +This will include the files listed below: + +###### Reference Platform files + +- boot.img.tar.xz +- system.img.tar.xz +- userdata.img.tar.xz +- cache.img.tar.xz + +6 - **Unzip all files** + +7 - **Flash all files to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of all extracted(unzipped) files +- `cd` to the directory with your unzipped files +- From within extraction directory, execute the following commands: + +###### Reference Platform + +```shell +# (Once again) Check to make sure fastboot device connected +sudo fastboot devices + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the downloads +sudo fastboot flash boot boot.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img +sudo fastboot flash cache cache.img +``` + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into Android lock screen. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md new file mode 100644 index 0000000..f45ae71 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md @@ -0,0 +1,326 @@ +# Install Instructions - Reference Software Platform + +This page provides download and installation instructions inteded for those interested in flashing the DragonBoard 410c board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/). + +## Contents + +- [SD Card Method](#sd-card-method) +- [Fastboot Method](#fastboot-method) + +*** + +# SD Card Method + +#### Step 1: Read about the SD Card Method + +The SD card method allows you to place a microSD card into the DragonBoard™ 410c to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- MicroSD card with 4GB or more of storage +- USB Mouse and/or keyboard +- HDMI Monitor with full size HDMI cable + + +*** + +#### Step 2: Download SD Card Image + +[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-debian-jessie-alip-sdcard-*.img.gz) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** + +#### Step 3: Prepare MicroSD card + +- Ensure data from mircoSD card is backed up +- Everything on microSD card will be lost by the end of this procedure. + +*** + +#### Step 4: Find SD Card Device name + +- Use host Linux computer +- Open "Terminal" application +- Remove SD card from host computer and run the following command: +```shell +$ lsblk +``` +- Note all recognized disk names +- **Insert SD card** and run the following command (again): +```shell +$ lsblk +``` +- Note the newly recognized disk. This will be your SD card. +- **Remember** your SD card device name for a later step + +*** + +#### Step 5: Recall Download Location + +- Locate SD card install file from Downloads page. +- This file will be needed for the next step. + +*** + +#### Step 6: Unzip _SD Card Install Image_ + +- When unzipped, you will have a folder with the following contents: + - Linaro/Debian Install Image (.img) + - Readme + + +*** + +#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal + +- Use host Linux computer +- Open "Terminal" application +- `cd` to the directory with your unzipped **Debian SD Card Install Image** + +```shell +$ cd + +#Example: +# = /home/YourUserName/Downloads +#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. +$ cd /home/YourUserName/Downloads +``` + + +*** + +#### Step 8: Locate SD Card Install Image + +- Make sure you are in the extraction directory + +**Unzipped Debian SD Card download will be a folder. This folder should be listed in your directory. Type `ls` from command line for a list of files that can be found in your current directory**: + +```shell +$ ls + +#output +dragonboard410c_sdcard_install_debian-XX +``` + +- Unzipped folder should be called dragonboard410c_sdcard_install_debian-XX, where XX represents the Debian release number +- `cd` into this directory + +```shell +$ cd dragonboard410c_sdcard_install_debian-XX +``` + +- Inside this folder you will find the install image + - `db410c_sd_install_debian.img` +- This `.img` file is what will be flashed to your SD Card. + + +*** + +#### Step 9: Install Image onto SD Card + +**Checklist:** + +- SD card inserted into host Linux computer +- Recall SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name) +- From within the dragonboard410c_sdcard_install_debian-XX folder, using the Terminal execute the following commands: + +**Execute:** + +```shell +$ sudo dd if=db410c_sd_install_debian.img of=/dev/XXX bs=4M oflag=sync status=noxfer +``` + +**Note:** + +- `if=db410c_sd_install_debian.img`: should match the name of the image that was downloaded. +- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name). Be sure to use the device name with out the partition. +- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. +- Once SD card is done flashing, remove from host computer and set aside for a later step + +*** + +#### Step 10: Prepare DragonBoard™ 410c with SD card + +- Make sure DragonBoard™ 410c is unplugged from power +- Set S6 switch on DragonBoard™ 410c to `0-1-0-0`, "SD Boot switch" should be set to "ON". + - Please see "1.1 Board Overview" on page 7 from [DragonBoard™ 410c Hardware Manual](http://linaro.co/96b-hwm-db) if you cannot find S6 +- Connect an HDMI monitor to the DragonBoard™ 410c with an HDMI cable, and power on the monitor +- Plug a USB keyboard and/or mouse into either of the two USB connectors on the DragonBoard™ 410c +- Insert the microSD card into the DragonBoard™ 410c +- Plug power adaptor into DragonBoard™ 410c, wait for board to boot up. + +*** + +#### Step 11: Install RPB Linaro/Debian onto DragonBoard™ 410c + + + +- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your DragonBoard™ 410c +- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory +- This process can take a few minutes to complete +- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. + +Before clicking "OK": + +- Remove the SD Card +- Set S6 switch on DragonBoard™ 410c to `0-0-0-0`, all switches should be set to "OFF" +- Now click "OK" button and allow DragonBoard™ 410c to reboot. + +**Congratulations! You are now booting your newly installed operating system directly from eMMC on the DragonBoard™ 410c!** + +[Back to top](#install-instructions---reference-software-platform) + +*** + +# Fastboot Method + + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host Linux machine +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian Bootloader + +- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) + +#### Step 3: Download Boot image and Root file system + +- Debian Boot ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) +- Debian Rootfs (Desktop) ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Wait for about 20 seconds. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +$ fastboot devices +``` + +Typically it will show as bellow +```shell +de82318 fastboot +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` +- XX represents the release number of the Bootloader +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +$ cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +$ cd + +#Example: +cd dragonboard410c_bootloader_emmc_linux-40 +# = dragonboard410c_bootloader_emmc_linux-40 +#This example took place during release 40 + +# This command will execute the flashall script within the bootloader folder +$ ./flashall + +``` + +5 - **Recall location of `boot` and `rootfs` download from the downloads page** + +- You should have downloaded the `boot` file +- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) + +6 - **Unzip both 'boot' and 'rootfs' files** + +7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of extracted(unzipped) `boot` file +- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) +- `cd` to the directory with your unzipped `boot` and `rootfs` files +- From within extraction directory, execute the following commands: + +```shell +# (Once again) Check to make sure fastboot device connected +$ sudo fastboot devices +# It will show similar to bellow if the device is connected successfully +de82318 fastboot + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the boot and rootfs downloads +$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img +$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img +``` +**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into either command line or desktop depending on rootfs + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + +[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md new file mode 100644 index 0000000..d64f135 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md @@ -0,0 +1,212 @@ +## OpenEmbedded RPB 16.03 - Build from Source + +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +## OE Layers + +| Layer | Description | +|:-----------------------:|:----------------------| +| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | +| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | +| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | +| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | +| Meta-qt5 | This is a cross-platform toolkit. | +| Meta-linaro | This layer is used to get the Linaro toolchain. | +| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | +| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..cb2b5f5 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,17 @@ +## Dragonboard™ 410c - Reference Platform Build - 16.06 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. + +*** + +| **CE Debian RPB - 16.06** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-16.06.md) | +| [Build from Source](BFSDebianRPB-16.06.md) | +| [Known issues](../../../Known-Issues.md) | + +*** + +- Access generic **OpenEmbedded** build from source instructions [here](../../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md new file mode 100644 index 0000000..8823ad6 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted here: +- https://github.com/96boards/android_hardware_ti_wpan +- https://github.com/96boards/android_device_linaro_hikey +- https://github.com/96boards/android_manifest +- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +**Build setup:** + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +###### Out of date: +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +```shell + ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp +``` + +*** + +**Download the code:** + +```shell +mkdir android/ +cd android/ +``` + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +**Build the image:** + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hiked +``` diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md new file mode 100644 index 0000000..6c74c11 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md @@ -0,0 +1,182 @@ +## Debian RPB 16.06 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain + - Step 3: Export path to cross compiler tool and confirm version + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image and debian package + - Step 7: Find HiKey IP Address + - Step 8: Transfer the modules to the target HiKey + - Step 9: Generate the initramfs + - Step 10: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.06 +defconfig: arch/arm64/configs/distro.config +``` + +The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir`, name it something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir HiKey-16.06 +$ cd HiKey-16.06 +``` + +#### Step 2: Step 2: Download the Linaro cross compiler toolchain + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +``` + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=~/Desktop/HiKey-16.06/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes +- Use **96b/releases/2016.06** if you want the same version used by the 16.06 release + +```shell +$ git clone -b 96b/releases/2016.06 http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process +- Once kernel source has been cloned cd into its directory + +```shell +$ cd linux +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ cp arch/arm64/configs/distro.config .config +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image and debian package + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory +- Creating the kernel package is recommended for HiKey, as it supports Grub 2 + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag +``` + +#### Step 7: Find HiKey IP Address + +- On your HiKey board +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 8: Transfer the modules to the target HiKey + +- Using your board's IP Address for linaro@ + +```shell +$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#HiKey shell + +$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb +``` +Congratulations! Your new kernel is now ready to be used by your HiKey. + +- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel +- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated + +### Boot Loader + +Please see go [here](BuildSourceBL.md) for instructions on how to built the boot loader from source. + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +```shell +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md new file mode 100644 index 0000000..9dce74b --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md @@ -0,0 +1,86 @@ +## HiKey Bootloader - Building from source + +The source code is available from: +- [**l-loader**](https://github.com/96boards-hikey/l-loader) +- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) +- [**OP-TEE**](https://github.com/OP-TEE/optee_os) +- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) + +Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. + +### Build instructions + +Prerequisites: +- GCC 5.3 cross-toolchain for Aarch64 available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) +- GCC 5.3 cross-toolchain for gnueabihf available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) +- GPT fdisk (gdisk package from your favorite distribution). + +#### Installing pre-built toolchain(s) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +```shell +git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git +git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git +git clone https://github.com/OP-TEE/optee_os.git +git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git +git clone https://github.com/96boards-hikey/l-loader.git +git clone -b hikey-aosp https://github.com/96boards-hikey/uefi-tools.git +``` + +#### Building EDK2/UEFI for HiKey + +Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. + +To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export EDK2_DIR=${PWD}/edk2 +export OPTEE_DIR=${PWD}/optee_os +export ATF_DIR=${PWD}/arm-trusted-firmware +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${EDK2_DIR} +rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg +${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} -s ${OPTEE_DIR} hikey +``` + +And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): + +```shell +cd ../l-loader +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin +make # requires sudo for creating the partition tables +``` + +The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. + +#### EFI boot partition + +The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). + +```shell +wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi +mkdir boot-fat +dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 +sudo mkfs.fat -n "boot" boot-fat.uefi.img +sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat +sudo mkdir -p boot-fat/EFI/BOOT +sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi +sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi +sudo umount boot-fat +sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img +rm -rf boot-fat +``` + +Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md new file mode 100644 index 0000000..317256b --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md @@ -0,0 +1,126 @@ +#### Your Build Choice + +[]() +[]() +[]() +[]() +[]() + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download the following files + +>Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +Build Folders (**Binaries** / **Image**) + +- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) +- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) +- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) +- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) +- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) +- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) +- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) +- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) +- **system.img.tar.xz** (**Download**) + +*** + +#### Step 3: Install AOSP Using Fastboot with Linux host + +This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Set HiKey into Recovery Mode using J15 header** + +- Remove link between pins 5 and 6 +- Link pins 1 and 2 +- Link pins 3 and 4 + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | closed +GPIO3-1 | Link 5-6 | open + +4 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable ptable-aosp-8g.img +$ sudo fastboot reboot +$ sudo fastboot flash boot boot_fat.uefi.img +$ sudo fastboot flash cache cache.img +$ sudo fastboot flash system system.img +$ sudo fastboot flash userdata userdata-8gb.img +``` + +5 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 3-4 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md new file mode 100644 index 0000000..d14bb67 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -0,0 +1,265 @@ +# Install Instructions - Reference Software Platform + +This page provides download and installation instructions inteded for those interested in flashing the HiKey board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/). + +## Contents + +- [SD Card Method](#sd-card-method) +- [Fastboot Method](#fastboot-method) + +*** + +# SD Card Method + + + + + + + +#### Step 1: Read about the SD Card Method + +The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. + +This method requires the following hardware: +- HiKey with power supply +- Host Linux machine (Linux, Mac OS X, or Windows) +- MicroSD card with 4GB or more of storage +- USB Mouse and/or keyboard +- HDMI Monitor with full size HDMI cable + + +*** +#### Step 2: Download SD Card Image + +**Debian Linux Reference Software Platform - SD Card Image** + +[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-debian-jessie-alip-sdcard-*.img.gz) + +*** + +#### Step 3: Prepare MicroSD card + +- Ensure data from mircoSD card is backed up +- Everything on microSD card will be lost by the end of this procedure. + +*** + +#### Step 4: Find SD Card Device name + +- Use host Linux computer +- Open "Terminal" application +- Remove SD card from host computer and run the following command: +```shell +lsblk +``` +- Note all recognized disk names +- **Insert SD card** and run the following command (again): +```shell +lsblk +``` +- Note the newly recognized disk. This will be your SD card. +- You will need to remember this device name for a later step. + +*** + +#### Step 5: Recall Download Location + +- Locate SD card install file from Downloads page. +- This file will be needed for the next step. + +*** + +#### Step 6: Unzip _SD Card Install Image_ + +- When unzipped, you will have a folder with the following contents: + - Linaro/Debian Install Image (.img) + - Readme + +*** + +#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal + +- Use host Linux computer +- Open "Terminal" application +- `cd` to the directory with your unzipped **SD Card Install Image** + +```shell +cd + +#Example: +# = /home/YourUserName/Downloads +#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. +cd /home/YourUserName/Downloads +``` + +*** + +#### Step 8: Install Image onto SD Card + +**Checklist:** + +- SD card inserted into host Linux computer +- Recall SD Card device name **Step 4** +- From within the extraction folder, using the Terminal execute the following commands: + +**Execute:** + +```shell +sudo dd if=hikey-jessie_alip_2015MMDD-nnn.img of=/dev/XXX bs=4M oflag=sync status=noxfer +``` + +**Note:** + +- `if=hikey-jessie_alip_2015MMDD-nnn.img`: should match the name of the image that was downloaded. +- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](). Be sure to use the device name with out the partition. +- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. +- Once SD card is done flashing, remove from host computer and set aside for a later step + + +*** + +#### Step 9: Prepare HiKey with SD card + +- Make sure HiKey is unplugged from power +- Connect an HDMI monitor to the HiKey with an HDMI cable, and power on the monitor +- Plug a USB keyboard and/or mouse into either of the two USB connectors on the HiKey +- Insert the microSD card into the HiKey +- Plug power adaptor into HiKey, wait for board to boot up. + +*** + +#### Step 10: Install Linaro/Debian onto HiKey + + + +- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your HiKey +- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory +- This process can take a few minutes to complete +- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. + +Before clicking "OK": + +- Remove the SD Card +- Now click "OK" button and allow HiKey to reboot. + +**Congratulations! You are now booting your newly installed operating system directly from eMMC on the HiKey** + +[Back to top](#install-instructions---reference-software-platform) + +*** + +# Fastboot Method + + + + + + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host Linux machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian partition table + +> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +**ptable-linux.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-8g.img)) + +*** + +#### Step 3: Download Boot image and Root File System + +- **Debian Boot** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-boot-linux-*.uefi.img.gz)) +- **Debian Rootfs** (**Download**) + +*** + +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. + + + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Wait for about 10 seconds +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Installation/BoardRecovery.md) and return to this step once your board is ready + +3 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable .img +$ sudo fastboot reboot +$ sudo fastboot flash boot .uefi.img +$ sudo fastboot flash system hikey-rootfs-debian-jessie-alip-YYYYMMDD-nnn.emmc.img +``` + +4 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 5-6 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** + +[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..7f936e4 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/HiKey/README.md @@ -0,0 +1,31 @@ +## Reference Platform Build - 16.06 + + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. + +*** + +#### HiKey + + +| **CE Debian RPB - 16.06** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB.md) | +| [Build from Source](BFSDebianRPB.md) | +| [Known issues](../../../Known-Issues.md) | + + + +| **CE AOSP** | +|:---------------------------:| +| [Install Instructions](https://source.android.com/source/devices.html) | +| [Known issues](../../../Known-Issues.md) | + + + +*** + +- Access **bootloader** build from source instructions [here](BuildSourceBL.md) +- Access **OpenEmbedded** build from source instructions [here](../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/DHCP-TFTP-Server-UEFI.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/DHCP-TFTP-Server-UEFI.md new file mode 100644 index 0000000..ad1eadd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/DHCP-TFTP-Server-UEFI.md @@ -0,0 +1,44 @@ +## Setting up DHCP/TFTP server for UEFI distro network installers + +A simple way to install the major Linux Distributions (e.g. Debian, Fedora, CentOS, openSUSE, etc) is by booting the network installer via PXE. In order to have a working PXE environment, a DHCP and TFTP server is required, which is responsible for providing the target device a valid IP configuration and the required files to boot the system (usually Grub 2 + kernel + initrd). + +In order to simplify the setup, this document will use dnsmasq, which is a lightweight, easy to configure DNS forwarder and DHCP server with BOOTP/TFTP/PXE functionality. + +### Installing and configuring dnsmasq + +Debian/Ubuntu: + +```shell +sudo apt-get install dnsmasq +``` + +Fedora/CentOS/RHEL: + +```shell +yum install dnsmasq +``` + +This guide assumes you already know the network interface that will provide the DHCP/TFTP/PXE functionality for the target device. In this case, we are using _eth1_ as our secondary interface, with address _192.168.3.1_. + +Following is the /etc/dnsmasq.conf providing the required functionality for PXE: + +```shell +interface=eth1 +dhcp-range=192.168.3.10,192.168.3.100,255.255.255.0,1h +dhcp-boot=BOOTAA64.EFI +enable-tftp +tftp-root=/srv/tftp +``` + +Check [http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html) for more information and additional dnsmasq config options. + +Now make sure the tftp-root directory is available, and then start/restart the dnsmasq service: + +```shell +sudo mkdir -p /srv/tftp +sudo systemctl restart dnsmasq +``` + +Since we require UEFI support for the Reference Platform Software Enterprise Edition (EE-RPB), this document doesn't cover the traditional pxelinux specific configuration (used with the traditional BIOS setup). + +For UEFI, we only require DHCP to provide the UEFI binary name (retrieved via TFTP), which in this case is the Grub 2 bootloader (which then loads the kernel, initrd and other extra files from the TFTP server). diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-CentOS-7.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-CentOS-7.md new file mode 100644 index 0000000..dbd12bd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-CentOS-7.md @@ -0,0 +1,216 @@ +## Installing CentOS 7 - Reference Platform Enterprise + +This guide is not to be a replacement of the official CentOS Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64](https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required CentOS 7 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +```shell +sudo su - +cd /srv/tftp/ +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/BOOTAA64.EFI +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/grubaa64.efi +``` + +#### Downloading the CentOS 7 Reference Platform installer (e.g. 16.06 release): + +```shell +mkdir /srv/tftp/centos7 +cd /srv/tftp/centos7 +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/images/pxeboot/vmlinuz +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/ inst.repo=http://mirror.centos.org/altarch/7/os/aarch64/ inst.ks=file:/ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +**Note:** `inst.ks` is required because of the additional linaro-overlay repository (which contains the reference platform kernel rpm package), which is available inside the `initrd.img`. The `inst.ks` contains only one line, which is used by the installer to fetch and install the right kernel package. The content: `repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/`. + +Also check the [RHEL 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html) and the [anaconda documentation](https://rhinstaller.github.io/anaconda/boot-options.html) for additional boot options. One example is using **ip=eth1:dhcp** if you want to use the second network interface as default. + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── centos7 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 15:14:55, Feb 9 2016 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000e80000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 15:18:14 on Feb 9 2016) +Version 2.17.1249. Copyright (C) 2016 American Megatrends, Inc. +BIOS Date: 02/09/2016 15:15:23 Ver: ROD1001A00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install CentOS 7 ARM 64-bit - Reference Platform +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 +[ 0.000000] Boot CPU: AArch64 Processor [411fd072] +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 +... +Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! +... +dracut-initqueue[610]: RTNETLINK answers: File exists +dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current +dracut-initqueue[610]: Dload Upload Total Spent Left Speed +100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 +... +Welcome to CentOS Linux 7 (AltArch)! +... +Starting installer, one moment... +anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +21:06:29 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: 2 +[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. + +### Automating the installation with kickstart + +It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. + +Kickstart example: + +```shell +cmdline +url --url="http://mirror.centos.org/altarch/7/os/aarch64/" +repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ +repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ +repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ +lang en_US.UTF-8 +keyboard us +timezone --utc Etc/UTC +auth --useshadow --passalgo=sha512 +rootpw --lock --iscrypted locked +firewall --disabled +firstboot --disabled +selinux --disabled +reboot +network --bootproto=dhcp --device=eth0 --activate --onboot=on +ignoredisk --only-use=sda +bootloader --location=mbr +clearpart --drives=sda --all --initlabel +part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 +part /boot --fstype=ext4 --size=512 +part / --fstype=ext4 --size=10240 --grow +part swap --size=4000 +%packages +wget +net-tools +chrony +%end +%post +useradd -m -U -G wheel linaro +echo linaro | passwd linaro --stdin +%end +``` + +#### Setting up grub.cfg + +Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. + +#### Booting the system + +Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Debian-Jessie.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Debian-Jessie.md new file mode 100644 index 0000000..c95ec87 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Debian-Jessie.md @@ -0,0 +1,342 @@ +## Installing Debian "Jessie" 8.5 + +This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) + +### Debian Installer + +The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. + +Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. + +## Loading debian-installer from the network +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. + +#### Downloading debian-installer: + +```shell +sudo su - +cd /srv/tftp/ +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.06/netboot.tar.gz +tar -zxvf netboot.tar.gz +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── debian-installer +│   └── arm64 +│   ├── bootnetaa64.efi +│   ├── grub +│   │   ├── arm64-efi +│   │   │   ├── acpi.mod +│   │   │   ├── adler32.mod +│   │   │   ├── all_video.mod +│   │   │   ├── archelp.mod +│   │   │   ├── bfs.mod +│   │   │   ├── bitmap.mod +│   │   │   ├── bitmap_scale.mod +│   │   │   ├── blocklist.mod +│   │   │   ├── boot.mod +│   │   │   ├── btrfs.mod +│   │   │   ├── bufio.mod +... +│   │   │   ├── xzio.mod +│   │   │   └── zfscrypt.mod +│   │   ├── font.pf2 +│   │   └── grub.cfg +│   ├── initrd.gz +│   └── linux +├── netboot.tar.gz +└── version.info +``` + +Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: + +```shell +dhcp-boot=debian-installer/arm64/bootnetaa64.efi +``` +## Loading debian-installer from the minimal CD + +Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. + +Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): + +``` +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.06/mini.iso +sudo cp mini.iso /dev/sdX +sync +``` + +Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. + +## Booting the installer + +If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install +Advanced options ... +Install with speech synthesis +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND +[ 0.763784] kvm [1]: error: no compatible GIC node found +[ 0.763818] kvm [1]: error initializing Hyp mode: -19 +[ 0.886298] Failed to find cpu0 device node +[ 0.947082] zswap: default zpool zbud not available +[ 0.951959] zswap: pool creation failed +Starting system log daemon: syslogd, klogd. +... + ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ + │ │ + │ Choose the language to be used for the installation process. The │ + │ selected language will also be the default language for the installed │ + │ system. │ + │ │ + │ Language: │ + │ │ + │ C │ + │ English │ + │ │ + │ │ + │ │ + └─────────────────────────────────────────────────────────────────────────┘ + moves; selects; activates buttons +``` + +### Finishing the installation + +For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) + +**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. + +``` +~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f +~ # exit +``` + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. + +**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: + +``` +root@debian:~# cat /etc/network/interfaces +... +allow-hotplug enp1s0 +iface enp1s0 inet dhcp + hwaddress ether de:5e:60:e4:6b:1f +``` + +### Automating the installation using preseeding + +Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. + +This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) + +**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: + +```shell +d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands +``` + +#### Creating the preseed file + +Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. + +Once created, make sure the file gets published into a network address that can be reachable from your target device. + +Preseed example (`preseed.cfg`): + +```shell +d-i debian-installer/locale string en_US +d-i keyboard-configuration/xkb-keymap select us +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/get_hostname string unassigned-hostname +d-i netcfg/get_domain string unassigned-domain +d-i netcfg/hostname string debian +d-i mirror/country string manual +d-i mirror/http/hostname string httpredir.debian.org +d-i mirror/http/directory string /debian +d-i mirror/http/proxy string +d-i passwd/root-password password linaro123 +d-i passwd/root-password-again password linaro123 +d-i passwd/user-fullname string Linaro User +d-i passwd/username string linaro +d-i passwd/user-password password linaro +d-i passwd/user-password-again password linaro +d-i passwd/user-default-groups string audio cdrom video sudo +d-i time/zone string UTC +d-i clock-setup/ntp boolean true +d-i clock-setup/utc boolean true +d-i partman-auto/disk string /dev/sda +d-i partman-auto/method string regular +d-i partman-lvm/device_remove_lvm boolean true +d-i partman-md/device_remove_md boolean true +d-i partman-auto/choose_recipe select atomic +d-i partman/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true +popularity-contest popularity-contest/participate boolean false +tasksel tasksel/first multiselect standard, web-server +d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp +d-i pkgsel/upgrade select safe-upgrade +d-i finish-install/reboot_in_progress note +``` + +In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) + +#### Setting up grub.cfg + +Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: + +```shell +$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg +# Force grub to automatically load the first option +set default=0 +set timeout=1 +menuentry 'Install with preseeding' { + linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- + initrd /debian-installer/arm64/initrd.gz +} +``` + +The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. + +In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. + +#### Booting the system + +Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. + +Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. + +### Building debian-installer from source + +#### Build kernel package and udebs + +Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. + +You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) + +#### Rebuilding debian-installer with the new udebs + +To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. + +Download the installer (from jessie): + +```shell +sudo apt-get build-dep debian-installer +dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u4.dsc +``` + +Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): + +```shell +cd debian-installer-* +cd build +sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common +sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common +``` + +Download the kernel udebs that you created at the localudebs folder: + +```shell +cd localudebs +wget +cd .. +``` + +Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): + +```shell +cat < pkg-lists/local +ext4-modules-\${kernel:Version} +fat-modules-\${kernel:Version} +btrfs-modules-\${kernel:Version} +md-modules-\${kernel:Version} +efi-modules-\${kernel:Version} +scsi-modules-\${kernel:Version} +jfs-modules-\${kernel:Version} +xfs-modules-\${kernel:Version} +ata-modules-\${kernel:Version} +sata-modules-\${kernel:Version} +usb-storage-modules-\${kernel:Version} +EOF +``` + +Set up the local repo, so the installer can locate your udebs (from localudebs): + +```shell +cat < sources.list.udeb +deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ +deb http://httpredir.debian.org/debian jessie main/debian-installer +EOF +``` + +Default preseed to skip known errors (as the kernel provided by local udebs): + +``` +cat < default-preseed +# Continue install on "no kernel modules were found for this kernel" +d-i anna/no_kernel_modules boolean true +# Continue install on "no installable kernels found" +d-i base-installer/kernel/skip-install boolean true +d-i base-installer/kernel/no-kernels-found boolean true +d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb +EOF +``` + +Now just build the installer: + +```shell +fakeroot make build_netboot +``` + +You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Fedora-23.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Fedora-23.md new file mode 100644 index 0000000..c625bdd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/Install-Fedora-23.md @@ -0,0 +1,164 @@ +## Installing Fedora 23 + +This guide is not to be a replacement of the official Fedora 23 Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation](https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Fedora 23 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +**Note:** Because of bug [1251600](https://bugzilla.redhat.com/show_bug.cgi?id=1251600), we need to use both `BOOTAA64.EFI` and `grubaa64.efi` from the Fedora 22 release. + +```shell +sudo su - +cd /srv/tftp/ +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/BOOTAA64.EFI +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/grubaa64.efi +``` + +Downloading upstream Kernel and Initrd + +```shell +mkdir /srv/tftp/f23 +cd /srv/tftp/f23 +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/vmlinuz +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install Fedora 23 ARM 64-bit' --class fedora --class gnu-linux --class gnu --class os { + linux (tftp)/f23/vmlinuz ip=dhcp inst.repo=http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/ + initrd (tftp)/f23/initrd.img +} +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── f23 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install Fedora 23 ARM 64-bit +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Fedora 23 (just make sure that target device has external network access, since the installer is downloaded automatically after booting the kernel). + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.2.3-300.fc23.aarch64 (mockbuild@aarch64-08a.arm.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Thu Oct 8 01:39:38 UTC 2015 +[ 0.000000] CPU: AArch64 Processor [411fd072] revision 2 +[ 0.000000] Detected PIPT I-cache on CPU0 +[ 0.000000] alternatives: enabling workaround for ARM erratum 832075 +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c6000 SMBIOS 3.0=0x83ff349718 +... +Welcome to Fedora 23 (Twenty Three) dracut-043-60.git20150811.fc23 (Initramfs)! +... +[ 23.105835] dracut-initqueue[685]: RTNETLINK answers: File exists +[ 23.756828] dracut-initqueue[685]: % Total % Received % Xferd Average Speed Time Time Time Current +[ 23.757345] dracut-initqueue[685]: Dload Upload Total Spent Left Speed +100 958 100 958 0 0 1514 0 --:--:-- --:--:-- --:--:-- 1513 0 --:--:-- --:--:-- --:--:-- 0 +... +Welcome to Fedora 23 (Twenty Three)! +... +Starting installer, one moment... +anaconda 23.19.10-1 for Fedora 23 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +00:29:26 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: +. +[anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1 +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the installation destination, the partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Fedora 23 system. + +### Automating the installation with kickstart + +TODO diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-BigTop-Hadoop-Config-Run.md new file mode 100644 index 0000000..5e134d1 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-BigTop-Hadoop-Config-Run.md @@ -0,0 +1,320 @@ +This post concentrates on Running Hadoop after [installing](ODPi-Hadoop-Installation.md) ODPi components built using Apache BigTop. These steps are only for configuring it on a single node and running them on a single node. + +# Add Hadoop User + We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop usergroup: + +```shell +sudo useradd -G hadoop hduser +``` + +give a password for hduser + +```shell +sudo passwd hduser +``` + +Add hduser to sudoers list +On Debian: + +```shell +sudo adduser hduser sudo +``` + +On Centos: + +```shell +sudo usermod -G wheel hduser +``` + +Switch to hduser: + +```shell +sudo su - hduser +``` + +# Generate ssh key for hduser + +```shell +ssh-keygen -t rsa -P "" +``` + +Press \ to leave to default file name. + +Enable ssh access to local machine: + +```shell +cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys +``` + +Test ssh setup, as hduser: + +```shell +ssh localhost +``` + +# Disabling IPv6 + +```shell +sudo nano /etc/sysctl.conf +``` + +Add the below lines to the end and save: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +``` + +Prefer IPv4 on Hadoop: + +```shell +sudo nano /etc/hadoop/conf/hadoop-env.sh +``` + +Uncomment line: + +```shell +# export HADOOP_OPTS=-Djava.net.preferIPV4stack=true +``` + +Run sysctl to apply the changes: + +```shell +sudo sysctl -p +``` + +# Configuring the app environment +Configure the app environment by following steps: + +```shell +sudo mkdir -p /app/hadoop/tmp +sudo chown hduser:hadoop /app/hadoop/tmp +sudo chmod 750 /app/hadoop/tmp +sudo chown hduser:hadoop /usr/lib/hadoop +sudo chmod 750 /usr/lib/hadoop +``` + +# Setting up Environment Variables +Follow the below steps to setup Environment Variables in bash file : + +```shell +sudo su - hduser +nano .bashrc +``` + +Add the following to the end and save: + +```shell +export HADOOP_HOME=/usr/lib/hadoop +export HADOOP_PREFIX=$HADOOP_HOME +export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" +export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec +export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop +export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native +export HADOOP_COMMON_HOME=$HADOOP_HOME +export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce +export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs +export YARN_HOME=/usr/lib/hadoop-yarn +export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ +export CLASSPATH=$CLASSPATH:. +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.6.0.jar +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/client/hadoop-hdfs-2.6.0.jar +export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") +export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH +``` + +Execute the terminal environment again (`bash`), or simply logout and change to `hduser` again. + +# Modifying config files +## core-site.xml + +```shell +sudo nano /etc/hadoop/conf/core-site.xml +``` + +And add/modify the following settings: +Look for property with fs.defaultFS and modify as below: + +```shell + + fs.default.name + hdfs://localhost:54310 + The name of the default file system. A URI whose + scheme and authority determine the FileSystem implementation. The + uri's scheme determines the config property (fs.SCHEME.impl) naming + the FileSystem implementation class. The uri's authority is used to + determine the host, port, etc. for a filesystem. + +``` + +Add this to the bottom before \ tag: + +```shell + + hadoop.tmp.dir + /app/hadoop/tmp + A base for other temporary directories. + +``` + +## mapred-site.xml + +```shell +sudo nano /etc/hadoop/conf/mapred-site.xml +``` + +Modify existing properties as follows: +Look for property tag with as mapred.job.tracker and modify as below: + +```shell + + mapred.job.tracker + localhost:54311 + The host and port that the MapReduce job tracker runs + at. If "local", then jobs are run in-process as a single map + and reduce task. + + +``` + +## hdfs-site.xml: + +```shell +sudo nano /etc/hadoop/conf/hdfs-site.xml +``` + +Modify existing property as below : + +```shell + + dfs.replication + 1 + Default block replication. + The actual number of replications can be specified when the file is created. + The default is used if replication is not specified in create time. + + +``` + +# Format Namenode +This step is needed for the first time. Doing it every time will result in loss of content on HDFS. + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init +``` + +# Start the YARN daemons + +```shell +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done +sudo /etc/init.d/hadoop-yarn-resourcemanager start +sudo /etc/init.d/hadoop-yarn-nodemanager start +``` + +# Validating Hadoop +Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux + +```shell +sudo jps +``` +or + +```shell +ps aux | grep java +``` + +Alternatively, check if yarn managers are running: + +```shell +sudo /etc/init.d/hadoop-yarn-resourcemanager status +sudo /etc/init.d/hadoop-yarn-nodemanager status +``` + +You would see like below: + +```shell +● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager + Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) + Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago + CGroup: /system.slice/hadoop-yarn-nodemanager.service + └─10366 /usr/lib/jvm/java-1.7.0-openjdk-arm64/bin/java -Dproc_node... + +Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root +Dec 22 18:24:57 debian su[10348]: + ??? root:yarn +Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) +Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... +Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn +Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... +``` + + +## Run teragen, terasort and teravalidate ## + +```shell +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate +``` + +## Stop the Hadoop services ## + +```shell +sudo /etc/init.d/hadoop-yarn-nodemanager stop + +sudo /etc/init.d/hadoop-yarn-resourcemanager stop + +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done +``` + +## Potential Errors / Issues and Resolutions ## +* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: + +```shell +sudo groupadd supergroup + +sudo usermod -g supergroup hduser +``` + +* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. + +```shell +You may have delete all the packages and re-run the steps of installation from scratch. +``` + +* Error while formatting namenode +With the following command: + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init + + +If you see the following error: + WARN net.DNS: Unable to determine local hostname -falling back to "localhost" + java.net.UnknownHostException: centos: centos + at java.net.InetAddress.getLocalHost(InetAddress.java:1496) + at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) + at org.apache.hadoop.net.DNS.(DNS.java:57) + +Something is wrong in the network setup. Please check /etc/hosts file. + +```shell +sudo nano /etc/hosts +``` + +The hosts file should like below: + +```shell +127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname +::1 localhost +``` + +Also try the following steps: + +```shell +sudo rm -Rf /app/hadoop/tmp + +hadoop namenode -format +``` diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-Hadoop-Installation.md new file mode 100644 index 0000000..e810f26 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/ODPi-Hadoop-Installation.md @@ -0,0 +1,82 @@ +This post concentrates on installing ODPi components built using Apache BigTop. These steps configure and run the components on a single node. + +# Prerequisites: + +* Java 7 (e.g. openjdk-7-jre) + +# Repo: + +ODPi deb and rpm packages can be found on Linaro repositories: + +* Debian Jessie - http://repo.linaro.org/ubuntu/linaro-overlay/ +* CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/ + + +# Installation : + +### On Debian: + +Add to repo source list (**not required if you are using the installer from the Reference Platform**): + +```shell +echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +Update the source list and install the dependencies: + +```shell +sudo apt-get update +sudo apt-get install openssh-server rsync openjdk-7-jre openjdk-7-jdk +sudo apt-get build-dep build-essential +``` + +Install Hadoop packages: + +```shell +sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### On CentOS: + +```shell +sudo wget http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo -O /etc/yum.repos.d/linaro-overlay.repo +sudo yum update +sudo yum -y install openssh-server openssh-clients java-1.7.0-openjdk* +sudo yum install -y bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### Verifying Installation + +Packages would get installed in /usr/lib + +Type hadoop to check if hadoop is installed: + +```shell +hadoop +``` + +And you should see the following: + +```shell +linaro@debian:~$ hadoop +Usage: hadoop [--config confdir] COMMAND + where COMMAND is one of: + fs run a generic filesystem user client + version print the version + jar run a jar file + checknative [-a|-h] check native hadoop and compression libraries availability + distcp copy file or directories recursively + archive -archiveName NAME -p * create a hadoop archive + classpath prints the class path needed to get the + credential interact with credential providers + Hadoop jar and the required libraries + daemonlog get/set the log level for each daemon + trace view and modify Hadoop tracing settings + or + CLASSNAME run the class named CLASSNAME +``` + + Most commands print help when invoked w/o parameters. + +Next Step: [Setup, Configuration and Running Hadoop](ODPi-BigTop-Hadoop-Config-Run.md) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/OpenStack-Liberty.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/OpenStack-Liberty.md new file mode 100644 index 0000000..d3b4cb9 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/OpenStack-Liberty.md @@ -0,0 +1,376 @@ +# OpenStack Liberty - Debian Jessie + +# Introduction + +In general, the instructions in the Liberty install guide should be followed: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html. This guide will describe changes to the documented procedures that should be kept in mind while going through the guide. + +Each section below will correspond to a section in the guide. Guide sections that do not have a corresponding section below may be followed as-is. + +# Release Notes + +## Configuring images for aarch64 + +An image must be configured specially in glance to be able to boot correctly on aarch64. +To attach the devices to the virtio bus (which does not allow hotplugging a volume, but will work if the image does not have SCSI support), the following properties must be set: + +```shell +--property hw_machine_type=virt +--property os_command_line='root=/dev/vda rw rootwait console=ttyAMA0' +--property hw_cdrom_bus=virtio +``` + +To attach the devices to the SCSI bus (which does allow hotplugging a volume, but might not be supported by the guest image), the following properties must be set: + +```shell +--property hw_scsi_model='virtio-scsi' +--property hw_disk_bus='scsi' +--property os_command_line='root=/dev/sda rw rootwait console=ttyAMA0' +``` + +You can set these properties when you are uploading the image into glance, or modify the image if you have already uploaded it. + + +# Pre-Installation + +## Verify/enable additional repositories + +Verify that the `linaro-overlay` and `jessie-backports` repositories are enabled. + +Check if they are available by checking `/etc/apt/sources.list` and `/etc/apt/sources.list.d`. + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://httpredir.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backports.list +``` + +## Modify repository priorities + +Create `/etc/apt/preferences.d/jessie-backports`: + +```shell +Package: * +Pin: release a=jessie-backports +Pin-Priority: 500 +``` + +Then, make sure to run apt-get update: + +```shell +$ sudo apt-get update +``` + +## Environment + +Update `/etc/hosts` to add “controller” as an alias for localhost. + +```shell +127.0.0.1 localhost controller +``` + +## Disable IPV6 + +Add the following to `/etc/sysctl.conf`: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +net.ipv6.conf.eth0.disable_ipv6 = 1 +``` + +Run sysctl to apply the changes: + +```shell +$ sudo sysctl -p +``` + +# Following the Openstack guide... + +OpenStack guide: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html + +## Environment + +### Openstack Packages + +Do not enable the `cloud-archive:liberty` repository. + +Install some dependencies: + +```shell +$ sudo apt-get install openstack-cloud-services python-pymysql +``` + +Answer the questions asked by debconf: + +* New password for the MySQL **root** user: \ + +Install the openstack client: + +```shell +$ sudo apt-get install python-openstackclient +``` + +### NoSQL Database + +The instructions in this section are not required, as Telemetry is not installed. + +## Add the Identity service (Keystone) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during meta package installation later. + +#### Install and configure components + +Install the apache and the keystone meta package: + +```shell +$ sudo apt-get install openstack-cloud-identity +``` + +Answer the questions asked by debconf: + +* Set up a database for Keystone: **Yes** +* Configure database for keystone with dbconfig-common: **Yes** +* Database type to be used by keystone: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for keystone: **\** +* Authentication server administration token: **\** +* Register administration tenants? **Yes** +* Password of the administrative user: **\** +* Register Keystone endpoint? **Yes** +* Keystone endpoint IP address: **\** + +#### Configure the Apache HTTP server + +Omit this section of the guide. + +#### Finalize the installation + +Omit this section of the guide. + +### Create the service entity and API endpoints + +Omit this section of the guide. + +### Create projects, users, and roles + +Omit this section of the guide. + + +## Add the Image service (Glance) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install glance +``` + +Answer the questions asked by debconf: + +* Set up a database for Glance: **Yes** +* Configure database for glance-common with dbconfig-common? **Yes** +* Database type to be used by glance-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for glance-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Pipeline flavor: **keystone** +* Authentication server hostname: **\** +* Authentication server password: **\** +* Register Glance in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Omit this section of the guide. + +### Verify operation + +The CirrOS image to run on aarch64 is the file that ends in `-uec.tar.gz`. It must be extracted and each file (kernel, initrd, disk image) uploaded to Glance separately. + +Download the CirrOS AArch64 UEC tarball and untar it: + +```shell +$ wget http://download.cirros-cloud.net/daily/20150923/cirros-d150923-aarch64-uec.tar.gz +$ tar xvf cirros-d150923-aarch64-uec.tar.gz +``` + +Upload the image parts into Glance. You will need to make note of the IDs assigned to the kernel and initrd and pass them on the command line when uploading the disk image: + +```shell +$ glance image-create --name "cirros-kernel" --visibility public --progress \ + --container-format aki --disk-format aki --file cirros-d150923-aarch64-vmlinuz + +$ glance image-create --name "cirros-initrd" --visibility public --progress \ + --container-format ari --disk-format ari --file cirros-d150923-aarch64-initrd + +$ glance image-create --name "cirros" --visibility public --progress \ + --property hw_machine_type=virt --property hw_cdrom_bus=virtio \ + -property os_command_line='console=ttyAMA0' \ + --property kernel_id=KERNEL_ID --property ramdisk_id=INITRD_ID \ + --container-format ami --disk-format ami --file cirros-d150923-aarch64-blank.img +``` + +## Add the Compute service (Nova) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install nova-api nova-cert nova-conductor \ + nova-consoleauth nova-scheduler nova-compute +``` + +Answer the questions asked by debconf: + +* Set up a database for Nova: **Yes** +* Configure database for nova-common with dbconfig-common? **Yes** +* Database type to be used by nova-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for nova-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Auth server hostname: **\** +* Auth server password: **\** +* Neutron server URL: **http://\:9696** +* Neutron administrator password: **\** +* Metadata proxy shared secret: **\** +* API to activate: choose **osapi_compute and metadata** +* Value for my_ip: **\** +* Register Nova in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Ensure that vnc and spice are disabled in `/etc/nova/nova.conf`. Look for the following keys in `nova.conf` and set them to False: + +```shell +vnc_enabled=false + +[spice] +enabled=false +``` + +Enable KVM by ensuring the following is in `nova-compute.conf`: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +virt_type=kvm +``` + +**NOTE: Until kernel support for KVM is properly enabled, instances can be run in emulation by ensuring the following is in `nova-compute.conf`**: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +cpu_mode = custom +virt_type = qemu +cpu_model = cortex-a57 +``` + +**IMPORTANT: If you make changes to `nova.conf`, or `nova-compute.conf`, restart the nova services:** + +```shell +$ sudo service nova-compute restart +``` + + +## Add the Networking service (Neutron) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install neutron-server neutron-plugin-ml2 \ + neutron-plugin-linuxbridge-agent neutron-dhcp-agent \ + neutron-metadata-agent +``` + +Answer the questions asked by debconf: + +* neutron-common + * Set up a database for Neutron: **Yes** + * Configure database for neutron-common with dbconfig-common? **Yes** + * Database type to be used by neutron-common: **mysql** + * Password of the database's administrative user: **\** + * MySQL application password for neutron-common: **\** + * IP address of your RabbitMQ host: **\** + * Username for connection to the RabbitMQ server: **guest** + * Password for connection to the RabbitMQ server: **guest** + * Authentication server hostname: **\** + * Authentication server password: **\** + * Neutron plugin: **ml2** +* neutron-metadata-agent + * Auth server hostname: **\** + * Auth server password: **\** + * Name of the region to be used by the metadata server: **\** + * Metadata proxy shared secret: **\** +* neutron-server + * Register Neutron in the Keystone endpoint catalog? **Yes** + * Keystone authentication token: **\** + +#### Configure networking options +Follow "Networking Option 1: Provider networks". + +#### Finalize installation + +Omit this section of the guide. + + +## Launch an instance + +### Create virtual networks + +Follow section “Public provider network” + +### Launch an instance + +Follow section “Launch an instance on the public network” + +NOTE: Accessing an image via the virtual console (VNC) will not work, as VNC is not supported. You may access the console log using the following command: + +```shell +$ nova console-log --length=10 INSTANCE_ID +``` diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md new file mode 100644 index 0000000..d65fbe0 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md @@ -0,0 +1,350 @@ +## UEFI/EDK2 + +EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. + +The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). + +Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. + +EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. + +This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) + +### Building + +#### Pre-Requisites + +Make sure the build dependencies are available at your host machine. + +On Debian/Ubuntu: + +```shell +sudo apt-get install uuid-dev build-essential aisle +``` + +On RHEL/CentOS/Fedora: + +```shell +sudo yum install uuid-devel libuuid-devel aisle +``` + +Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': + +```shell +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb +sudo dpkg -i --force-all *.deb +``` + +If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. + +Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +UEFI/EDK2: + +```shell +git clone https://github.com/tianocore/edk2.git +git clone https://git.linaro.org/uefi/OpenPlatformPkg.git +cd edk2 +git checkout -b stable-baseline 469e1e1e4203b5d369fdce790883cb0aa035a744 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git +ln -s ../OpenPlatformPkg +``` + +ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): + +```shell +git clone https://github.com/ARM-software/arm-trusted-firmware.git +cd arm-trusted-firmware +git checkout -b stable-baseline v1.2 # suggested latest stable release +``` + +UEFI Tools (helpers and scripts to make the build process easy): + +```shell +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building UEFI/EDK2 for Juno R0/R1 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +export ARMTF_DIR=${PWD}/arm-trusted-firmware +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno +``` + +The output files: + +- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` +- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` + +#### Building UEFI/EDK2 for D02 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 +``` + +The output file: + +- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` + +#### Building UEFI/EDK2 for D03 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d03 +``` + +The output file: + +- `Build/D03/DEBUG_GCC49/FV/D03.fd` + +#### Building UEFI/EDK2 for Overdrive + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive +``` + +The output file: + +- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` + +#### Building UEFI/EDK2 for HuskyBoard / Cello + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello +``` + +The output file: + +- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` + +### Flashing + +#### Juno R0/R1 + +##### Clean flash + +Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: + +```shell +Cmd> flash +Flash> eraseall +Flash> quit +Cmd> usb_on +``` + +This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. + +In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: + +```shell +git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git +``` + +Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE +``` + +Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): + +```shell +cp -rf vexpress-firmware/* /media/recovery +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. + +##### Upgrading UEFI/EDK2 + +If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). + +Export Juno's MMC as a usb storage device on your host machine: + +```shell +Cmd> usb_on +``` + +Then just copy over the UEFI/EDK2 files that were built in the previous steps: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Then just power cycle the Juno and the board should see and use the new firmware. + +#### D02 + +Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('PV660D02.fd'): + +```shell +cp PV660D02.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### D03 + +Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +To do a clean flash you will require access to the board's BMC. + +1. Make sure the board's BMC port is connected, and with a known IP address. +2. Login the BMC website, The username/passwd is root/Huawei12#$. Go to "System", "Firmware Upgrade", and "Browse" to select the UEFI file in hpm format. (Please contact support@open-estuary.org to get the hpm file). +3. Pull out the power cable to power off the board. Find the pin named "COM_SW" at J44. Then connect it with jump cap. +4. Power on the board and connect to the board's serial port. When the screen display message "You are trying to access a restricted zone. Only Authorized Users allowed.", type "Enter", input username/passwd (username/passwd is root/Huawei12#$). +5. After you login the BMC interface which start with "iBMC:/->", use command "ifconfig" to see the modified BMC IP. When you get the board's BMC IP, please visit the BMC website by "https://BMC IP ADDRESS/". +6. Go to "Start Update" (Do not power off during this period). +7. After updating the UEFI firmware, reboot the board to enter UEFI menu. + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('D03.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### AMD Overdrive / HuskyBoard / Cello + +##### Clean flash + +###### DediProg SF100 + +Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. + +First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: + +```shell +dpcmd --type MX25L12835F -e +``` + +Now just flash the new firmware: + +```shell +dpcmd --type MX25L12835F -p FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +###### SPI Hook + +Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) + +Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. + +Example for the 4.5M based firmware: + +```shell +dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc +``` + +Connect the SPI cable, unplug the power cord and flash SPI: + +```shell +sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +##### Upgrading firmware + +There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. + +### Links and References: + +- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) +- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Cello/README.md new file mode 100644 index 0000000..7fa5dc9 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Cello/README.md @@ -0,0 +1,58 @@ +### LeMaker Cello + +*** + +### Critical Bug List + +As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once the Realtek UEFI driver gets integrated as part of OpenPlatformPkg, it will also be possible to PXE boot the installer. + +Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Distro Installers + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D02/README.md new file mode 100644 index 0000000..43547db --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D02/README.md @@ -0,0 +1,59 @@ +### D02 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### D02 - QuickStart + +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D03/README.md new file mode 100644 index 0000000..5802a3c --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D03/README.md @@ -0,0 +1,59 @@ +### D03 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### D03 - QuickStart + +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md new file mode 100644 index 0000000..2b6ff67 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -0,0 +1,47 @@ +### HP ProLiant m400 + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Overdrive/README.md new file mode 100644 index 0000000..3b4fd01 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Overdrive/README.md @@ -0,0 +1,59 @@ +### Overdrive + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### AMD Overdrive + +UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md new file mode 100644 index 0000000..fc8e51e --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md @@ -0,0 +1,46 @@ +## Qualcomm QDF2432 Server Development Platform + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/ThunderX/README.md new file mode 100644 index 0000000..db5c79b --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/ThunderX/README.md @@ -0,0 +1,46 @@ +### Cavium ThunderX + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md new file mode 100644 index 0000000..bd2077f --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md @@ -0,0 +1,48 @@ +### X-Gene Mustang + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/Highlights.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/Highlights.md new file mode 100644 index 0000000..0f94f24 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/Highlights.md @@ -0,0 +1,96 @@ +### Highlights for 16.06 release: + +*** + +###### Consumer and Enterprise Edition: + +#### Kernel + +- Unified tree shared between the CE and EE builds. +- 4.4.11-based, including some under-review topic branches to extend the features and platform hardware support. +- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. +- Added OP-TEE support + - Enabled on HiKey and Juno-r1 +- Supports Reference HW platforms HiKey and Cello + - Other Test Platforms include: Dragonboard 410c, Hisilicon D02 and D03, APM X-Gene, HP Proliant m400, AMD Overdrive, Qualcomm QDF2432 Server Development Platform, and Cavium ThunderX. +- Single kernel config for all platforms in arch/arm64/configs/distro.config +- Single kernel binary (package) for all platforms + +#### Bootloader + +- UEFI OpenPlatformPkg (upstream) now contains reference implementations for Huawei D02/D03, AMD Overdrive and LeMaker Cello +- U-boot support in DB410c images to allow easier handling of images + +*** + +###### Consumer Edition: + +#### Reference hardware platform: +- LeMaker Hikey + +#### Other supported test platforms: +- Dragonboard 410c + +#### Overall CE Debian platform features, validated as part of the release: +- UEFI with DT +- Upgrade to Debian 8.5 "Jessie" +- Upgrade to the unified 4.4.11 Linux Kernel +- Upgrade graphics components: Mesa 11.1.2 and XServer 1.17.3a +- Rootfs automatically resized during the first boot + +#### CE Debian RPB for HiKey: +- OP-TEE integrated by default +- UEFI updated to use the latest development trees based on Tianocore + - OpenPlatformPkg + +#### CE Debian build for DragonBoard™ 410c: +- U-boot chain-loaded from LK + +#### CE OE/Yocto RPB: +- First OpenEmbedded-based RPB, including several changes and components merged from the LHG OE layers +- Dragonboard 410c and HiKey support +- HiKey features: + - OP-TEE initial support + - Mali support for HiKey +- Dragonboard 410c features: + - GPU, WLAN, BT, audio, LS I/O, camera and GPS + +*** + +###### Enterprise Edition + +#### Reference hardware platform: +- LeMaker Cello + +#### Other supported test platforms: +- AMD Overdrive A0 and B0 +- Hisilicon D02 +- Hisilicon D03 (new) +- APM X-Gene Mustang +- HP ProLiant m400 +- Qualcomm QDF2432 Server Development Platform (new) +- Cavium ThunderX (new) + +#### Overall platform features, validated as part of the release: +- UEFI with ACPI +- KVM +- PCIe + +#### Firmware: +- UEFI OpenPlatformPkg (upstream) now contains reference implementation for Huawei D02/D03, AMD Overdrive and LeMaker Cello + +#### Network Installers: +- Debian: + - Upgrade to Debian 8.5 "Jessie" + - Use the unified 4.4.11 kernel +- CentOS + - Based on CentOS 7.2 16.03 + - Use the unified 4.4.11 kernel + +#### Enterprise Components: +- Docker 1.9.1 +- OpenStack Liberty for Debian Jessie and CentOS +- ODPi 1.0.0 based Hadoop +- Spark 1.3.1 +- OpenJDK 8 +- QEMU 2.6 diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/Known-Issues.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/Known-Issues.md new file mode 100644 index 0000000..fb56320 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/Known-Issues.md @@ -0,0 +1,47 @@ +# Reference Platform Build - 16.06 Release - Known Issues + +## Fixed Issues + +These lists group all **fixed RPB issues** into their repective categories. Underlying Consumer and Enterprise Edition boards, and their bug fixes are grouped under a single page for convenience and quick reference. + +| Fixed Issues | | +|:---|:----| +| Enterprise | (Full List) | +| Conssumer | HiKey / DragonBoard 410c | + +[Report a bug](Report-a-bug.md) + +## Current Issues + +These lists group all **current and unfixed bugs** into their respective categories. Basic bug summaries and descriptions are available on Bugzilla, links to each full lists of bugs are available for convenience and quick reference. + +| Enterprise | Known Issues | +|:-----------|:---| +| Cello/Overdrive | (Full List) | +| APM/HP-m400 | (Full List) | +| D02 | (Full List) | +| D03 | (Full List) | +| Qualcomm QDF2432 Server Development Platform | (Full List) | +| ThunderX | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Consumer | Known Issues | +|:-----------|:---| +| HiKey | (Full List) | +| DragonBoard 410c | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Bug Legend | | +|:-----:|:-------| +| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | +| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | +| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | +| VERIFIED | A team has VERIFIED a working solution for a bug | + +*** diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/README.md b/Reference-Platform/Platforms/Enterprise/RPB_16.06/README.md new file mode 100644 index 0000000..1a9666f --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/RPB_16.06/README.md @@ -0,0 +1,24 @@ +# Reference Software Platform - 16.06 + +[RPB 16.06 Highlights](Highlights.md) | [RPB 16.06 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition + +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [LeMaker Cello](EnterpriseEdition/Cello/README.md) +- [D02](EnterpriseEdition/D02/README.md) +- [D03](EnterpriseEdition/D03/README.md) +- [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) +- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) +- [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) +- [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) +- [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) + +Visit our [Components Downloads Page](https://builds.96boards.org/releases/reference-platform/components/) + +*** diff --git a/Reference-Platform/Platforms/IoT/.DS_Store b/Reference-Platform/Platforms/IoT/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..11b39ced90e1864b583ba0d9b47a4c5b5d71f440 GIT binary patch literal 6148 zcmeHKO-sW-5PhRP6ujirP5IqA+MeFEiRGR}P3Lv$(C7~y0c_|wa-9clJgLulrDJEPt7w0w Q6XPL}1&JyY_yq;t0fLV=#sB~S literal 0 HcmV?d00001 diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md new file mode 100644 index 0000000..9db0980 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/README.md @@ -0,0 +1,37 @@ +# Reference Software Platform - Legacy + + + + +The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. +For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) + +**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) + +*** + +| | | | +|:---:|:---:|:---:| +| | | | + + + + + - **[16.06(Latest)](Releases/RPB_16.06/README.md)** + - [16.03](Releases/RPB_16.03/README.md) + - [15.12](Releases/RPB_15.12/README.md) + - [15.10(Alpha)](Releases/RPB_15.10/README.md) + +*** + +#### Resources + +| Extras and Support | Progress and Policy | +|:-----------------------------------------------------:|:-----------------------------------------:| +| [RPB CI](Extras/RPB-CI.md) | [Kernel Policy](Extras/KernelPolicy.md) | +| [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| +| [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | + +*** + +[Document Contribution Policy](../ContributionPolicy.md) diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md new file mode 100644 index 0000000..3087438 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md @@ -0,0 +1,122 @@ +### How to get and customize the kernel source code + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/rsalveti/linux) + +``` +git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.10-qcom +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the [Linaro GCC cross compiler (Aarch64 little-endian)](http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +``` +git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-qcom +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release +``` + +#### Building a boot image + +You now need to create a valid boot image with your own kernel build. + +On your host PC, we need to install the following tools: + +``` +sudo apt-get install device-tree-compiler +git clone git://codeaurora.org/quic/kernel/skales +``` + +The boot image consists of the table of device tree (`dt.img`), the kernel image (`Image`) and an init ramdisk image. + +The `dtbTool` is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. + +`./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/` + +To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. + +The tool `mkbootimg` (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: + +``` +./skales/mkbootimg --kernel arch/arm64/boot/Image \ + --ramdisk initrd.img \ + --output boot-db410c.img \ + --dt dt.img \ + --pagesize 2048 \ + --base 0x80000000 \ + --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" +``` + +#### Booting a custom boot image + +Assuming you have now built a valid boot image called `boot-db410c.img`, you can run the following `fastboot` command to boot it on the board: + +`sudo fastboot boot boot-db410c.img` + +If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the `boot` partition: + +`sudo fastboot flash boot boot-db410c.img` + +#### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +``` +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +``` +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `aboot` partition, you can now flash your board with: + +`sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +``` +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +``` +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md new file mode 100644 index 0000000..14f6bd8 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md @@ -0,0 +1,81 @@ +## Install Instructions - CE Debian RPB 15.10 - Dragonboard410c + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for Dragonboard410c. + +For more information about the Dragonboard410c development board, please check https://www.96boards.org/products/ce/dragonboard410c/ + +### Image Components + +The CE Debian RPB 15.10 - Dragonboard410c build is composed of the following artifacts: + +- Bootloader: + - [Qualcomm proprietary first stage bootloader](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip) + - [Little Kernel](https://git.linaro.org/landing-teams/working/qualcomm/lk.git) as second stage boot loader +- Linux Kernel: + - Upstream plus extra changes for a better hardware support + - Git: https://github.com/rsalveti/linux.git + - Branch: *reference-qcom-rebase* +- Debian "Jessie" + - ALIP (LXDE based) + - Custom 96Boards artworks and default settings + - Additional packages provided by [linaro-overlay](http://repo.linaro.org/ubuntu/linaro-overlay) + +#### Closed source binaries + +This release contains proprietary firmware. You can also download the proprietary firmware separately, from [here](https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin). All the required firmware files are pre-installed, and the image is bound to the following [license agreement](https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt). + +### Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +Download the latest bootloader zip from [http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux*.zip) + +*CE Debian RPB image:* + +``` +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-boot-linux-20151106-31.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz +gunzip dragonboard410c-* +``` + +### Flashing + +#### Bootloader + +Flash the eMMC with the bootloader: + +- Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. +- Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC +- Assure micro SD Card slot is empty on the DB410c +- Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} +- Power on the DB410c into fastboot mode + - Press and hold the Vol (-) button on the DB410c (S4) + - While pressing S4 button, power up the DB410c. It will come up in fastboot mode +- From the host PC terminal window, run the following commands: + +``` +# Check to make sure fastboot device connected. If not resolve +sudo fastboot devices +# cd to the directory the bootloader zip file was extracted +cd +sudo ./flashall +``` + +The bootloader is now installed on the DB410c. + +#### Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +*Flashing boot and rootfs:* + +``` +sudo fastboot flash boot dragonboard410c-boot-linux-20151106-31.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img +``` + +Once flashed just reboot the board and enjoy :-) diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..2f79a1c --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,15 @@ +## Dragonboard™ 410c - Reference Platform Build - 15.10 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 15.10** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-15.10.md) | +| [Build from Source](BFSDebianRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md new file mode 100644 index 0000000..d47aa23 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md @@ -0,0 +1,44 @@ +h4. Building AOSP from source + +*NOTE*: This build instructions are not yet reflecting the 15.10 image + +AOSP sources are hosted in these repositories: +* https://github.com/96boards/android_hardware_ti_wpan +* https://github.com/96boards/android_external_wpa_supplicant_8 +* https://github.com/96boards/android_device_linaro_hikey +* https://github.com/96boards/android_manifest + +*Build setup:* + +Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html + +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +bc. ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp + +*Download the code:* + +bc. $ mkdir android/ +$ cd android/ + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +*Build the image:* + +bc. $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1\ +> -g "default,-device,hikey" +$ cd .repo/ +$ git clone https://github.com/96boards/android_manifest -b android-5.0 local_manifests +$ cd - +$ repo sync -j8 +$ source build/envsetup.sh +$ lunch hikey-userdebug +$ make droidcore -j8 +$ cd out/target/product/hikey + +h4. TODO + +* Update to reflect the latest/current build diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md new file mode 100644 index 0000000..a8f9ccd --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md @@ -0,0 +1,53 @@ +h3. Boot Loader + +Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. + +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.10-hikey +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-hikey +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md new file mode 100644 index 0000000..ea36329 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md @@ -0,0 +1,88 @@ +h2. Install Instructions - CE AOSP RPB 15.10 - HiKey + +This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.10, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE AOSP RPB 15.10 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader +* Linux Kernel: +** Derived from Linux 3.18 kernel +** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git +** Branch: *hikey* +* AOSP Android Marshmallow 6.0 + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.5* +* Extra firmware files available from firmware-linux +* Mali (requires EULA) + +h3. Downloading the pre-built binaries + +The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/ptable-aosp.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/hisi-idt.py + +*CE AOSP RPB image:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/boot_fat.uefi.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/cache.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/userdata.img.tar.xz + +Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz and follow the instructions to download the file. + +Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: + +bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 +sudo fastboot flash ptable ptable-aosp.img +sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-aosp.img@), otherwise flashing the system image might fail. + +h4. Boot, System, Cache and Userdata + +Fastboot is required to flash boot, system, cache and userdata. + +Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash the images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot, cache, system and userdata:* + +bc. sudo fastboot flash boot boot_fat.uefi.img +sudo fastboot flash cache cache.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferencePlatform + diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md new file mode 100644 index 0000000..d94b908 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md @@ -0,0 +1,85 @@ +h2. Install Instructions - CE Debian RPB 15.10 - HiKey + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE Debian RPB 15.10 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-hikey-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay +** Kernel and initrd loaded from the rootfs (under /boot) + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.6* +* Extra firmware files available from firmware-linux +* Mali (not yet included by default) + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/ptable-linux.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/hisi-idt.py + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-boot-linux-20151106-31.uefi.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz +gunzip hikey-* + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 +sudo fastboot flash ptable ptable-linux.img +sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-linux.img@), otherwise flashing the rootfs might fail. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot hikey-boot-linux-20151106-31.uefi.img +sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferenceSoftware diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..a7f56c2 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/README.md @@ -0,0 +1,24 @@ +# HiKey Reference Platform Build - 15.10 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| [CE Debian RPB - 15.10](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/) | +|:------|:------| +| [Install instructions](InstallDebianRPB-15.10.md) | +| [Build from source](BFSDebianRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/CE-Debian-RPB-15.10-HiKey-TestReport.pdf) | + + + +| [CE AOSP RPB - 15.10](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/) | +|:------|:------| +| [Install instructions](InstallAOSP-15.10.md) | +| [Build from source](BFSAOSPRPB-15.10.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/CE-AOSP-RPB-15.10-HiKey-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/Highlights.md b/Reference-Platform/Platforms/IoT/RPB_15.10/Highlights.md new file mode 100644 index 0000000..52be04b --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/Highlights.md @@ -0,0 +1,16 @@ +# Highlights + +The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). + +While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at https://builds.96boards.org/releases/dragonboard410c/ and https://builds.96boards.org/releases/hikey/. + +##### Highlights for this release: + +- CE Debian RPBs: + - Debian 8.2 "Jessie" + - 4.3 kernel (with additional patches) + - OpenJDK 8 included by default + - 96Boards artworks and default settings +- CE AOSP RPB: + - AOSP Android Marshmallow 6.0 + - 3.18 based kernel diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/Known-Issues.md b/Reference-Platform/Platforms/IoT/RPB_15.10/Known-Issues.md new file mode 100644 index 0000000..03c5da1 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/Known-Issues.md @@ -0,0 +1,56 @@ +## Reference Platform Build - 15.10 Release - Known Issues + +### UEFI - HiKey + +- "Bug 117":https://bugs.96boards.org/show_bug.cgi?id=117 - UEFI fastboot uploads hangs for large images + - Workaround is to use the fastboot support provided by the ARM TF (@bl1.bin@, provided by the binary @l-loader.bin@) + +### Debian + +#### HiKey + +- Mali not supported, missing kernel and userspace support +- [Bug 20](https://bugs.96boards.org/show_bug.cgi?id=20) - USB kernel trace errors -22 +- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete +- [Bug 86](https://bugs.96boards.org/show_bug.cgi?id=86) - Debian ALIP: resize UI screen when underlying DRM resolution changed. +- [Bug 143](https://bugs.96boards.org/show_bug.cgi?id=143) - Mouse cursor invisible after boot (until you open an application) +- [Bug 144](https://bugs.96boards.org/show_bug.cgi?id=144) - Shutdown is not clean +- [Bug 145](https://bugs.96boards.org/show_bug.cgi?id=145) - Thermal sensor is not readable +- [Bug 147](https://bugs.96boards.org/show_bug.cgi?id=147) - Highest resolution of 1080p monitor cannot be detected +- [Bug 148](https://bugs.96boards.org/show_bug.cgi?id=148) - Bluetooth doesn't work +- [Bug 150](https://bugs.96boards.org/show_bug.cgi?id=150) - Cannot login when the screen is locked +- [Bug 151](https://bugs.96boards.org/show_bug.cgi?id=151) - glxgears: couldn't get an RGB, Double-buffered visual +- [Bug 152](https://bugs.96boards.org/show_bug.cgi?id=152) - SD-Card doesn't work +- [Bug 159](https://bugs.96boards.org/show_bug.cgi?id=159) - No sound cards found +- [Bug 160](https://bugs.96boards.org/show_bug.cgi?id=160) - Behaviors of power on button not following hardware user guide + +#### DragonBoard 410c + + - Freedreno graphics driver not provided by the image + -Newer mesa, libdrm and freedreno xorg driver is needed (to be available as part of the next release) + - Workaround is to enable the qcom overlay PPA, and install the required packages: + +``` +sudo su - +echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list +apt-get update +apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno +reboot +``` + +- Slow USB throughput: https://www.96boards.org/forums/topic/super-slow-usb/ +- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete +- [Bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) - Cannot soft power off or shutdown db410c +- [Bug 154](https://bugs.96boards.org/show_bug.cgi?id=154) - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) +- [Bug 156](https://bugs.96boards.org/show_bug.cgi?id=156) - HDMI resolution change not workin +- [Bug 157](https://bugs.96boards.org/show_bug.cgi?id=157) - HDMI audio not working (MIGHT NOT BE A BUG) +- [Bug 165](https://bugs.96boards.org/show_bug.cgi?id=165) - HDMI Display sleep - no way to wake back up + +### AOSP + +#### HiKey + +- [Bug 136](https://bugs.96boards.org/show_bug.cgi?id=136) - HDMI goes off while running CTS +- [Bug 161](https://bugs.96boards.org/show_bug.cgi?id=161) - Fails to enter sleep mode +- [Bug 163](https://bugs.96boards.org/show_bug.cgi?id=163) - HDMI audio not working +- [Bug 164](https://bugs.96boards.org/show_bug.cgi?id=164) - Behaviors of power on button not following hardware user guide diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/README.md b/Reference-Platform/Platforms/IoT/RPB_15.10/README.md new file mode 100644 index 0000000..7a92254 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.10/README.md @@ -0,0 +1,12 @@ +# Reference Platform Build - 15.10 + +[RPB 15.10 Highlights](Highlights.md) | [RPB 15.10 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +*** + diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md new file mode 100644 index 0000000..a5c3977 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md @@ -0,0 +1,104 @@ +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-qcom +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @boot@ image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-qcom +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +h4. Building a boot image + +You now need to create a valid boot image with your own kernel build. + +On your host PC, we need to install the following tools: + +bc. sudo apt-get install device-tree-compiler +git clone git://codeaurora.org/quic/kernel/skales + +The boot image consists of the table of device tree (@dt.img@), the kernel image (@Image@) and an init ramdisk image. + +The @dtbTool@ is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. + +bc. ./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/ + +To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. + +The tool @mkbootimg@ (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: + +bc. ./skales/mkbootimg --kernel arch/arm64/boot/Image \ + --ramdisk initrd.img \ + --output boot-db410c.img \ + --dt dt.img \ + --pagesize 2048 \ + --base 0x80000000 \ + --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" + +h4. Booting a custom boot image + +Assuming you have now built a valid boot image called @boot-db410c.img@, you can run the following @fastboot@ command to boot it on the board: + +bc. sudo fastboot boot boot-db410c.img + +If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the @boot@ partition: + +bc. sudo fastboot flash boot boot-db410c.img + +h4. How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on "Qualcomm Developer Network":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip, the second stage bootloader is @LK@ and is open source. + +The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the "Linaro Qualcomm Landing Team git repository":https://git.linaro.org/landing-teams/working/qualcomm/lk.git: + +bc. git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 + +To build the LK bootloader, you can use the following instructions: + +bc. git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- + +The second stage bootloader is flashed on the @aboot@ partition, you can now flash your board with: + +bc. sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md new file mode 100644 index 0000000..59fc76a --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md @@ -0,0 +1,81 @@ +h2. Install Instructions - CE Debian RPB 15.12 - Dragonboard410c + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for Dragonboard410c. + +For more information about the Dragonboard410c development board, please check "https://www.96boards.org/products/ce/dragonboard410c/":https://www.96boards.org/products/ce/dragonboard410c/ + +h3. Image Components + +The CE Debian RPB 15.12 - Dragonboard410c build is composed of the following artifacts: + +* Bootloader: +** "Qualcomm proprietary first stage bootloader":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip +** "Little Kernel":https://git.linaro.org/landing-teams/working/qualcomm/lk.git as second stage boot loader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-qcom-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay + +h4. Closed source binaries + +This release contains proprietary firmware. You can also download the proprietary firmware separately, from "here":https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin. All the required firmware files are pre-installed, and the image is bound to the following "license agreement":https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt. + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +Download the latest bootloader zip from "http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest":http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest (look for dragonboard410c_bootloader_emmc_linux*.zip) + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-boot-linux-20151214-35.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip dragonboard410c-* + +h3. Flashing + +h4. Bootloader + +Flash the eMMC with the bootloader: + +* Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. +* Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC +* Assure micro SD Card slot is empty on the DB410c +* Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} +* Power on the DB410c into fastboot mode +** Press and hold the Vol (-) button on the DB410c (S4) +** While pressing S4 button, power up the DB410c. It will come up in fastboot mode +* From the host PC terminal window, run the following commands: + +bc. # Check to make sure fastboot device connected. If not resolve +sudo fastboot devices +# cd to the directory the bootloader zip file was extracted +cd +sudo ./flashall + +The bootloader is now installed on the DB410c. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot dragonboard410c-boot-linux-20151214-35.img +sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform + +In the case that the board experiences an irrecoverable error and no longer function, please check the "rescue image guide":https://github.com/96boards/documentation/wiki/Dragonboard-410c-Installation-Guide-for-Linux-and-Android#create--install-a-rescue-image diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..4245bd0 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,14 @@ +## Dragonboard™ 410c - Reference Platform Build - 15.12 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 15.12** | +|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md new file mode 100644 index 0000000..0b74369 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md @@ -0,0 +1,37 @@ +h4. Building AOSP from source + +Additional AOSP repositories are hosted at: +* https://github.com/96boards/android_hardware_ti_wpan +* https://github.com/96boards/android_device_linaro_hikey +* https://github.com/96boards/android_manifest +* https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +*Build setup:* + +Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html + +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +bc. ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp + +*Download the code:* + +bc. mkdir android/ +cd android/ + +Download and extract the Mali vendor binaries in the above directory: "http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2":http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +*Build the image:* + +bc. repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hikey diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md new file mode 100644 index 0000000..f3a7c58 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md @@ -0,0 +1,53 @@ +h3. Boot Loader + +Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. + +h3. How to get and customize the kernel source code + +h4. Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux + +bc. git: https://github.com/rsalveti/linux +tag: 96boards-rpb-debian-15.12-hikey +defconfig: arch/arm64/defconfig kernel/configs/distro.config + +The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. + +To build the Linux kernel, you can use the following instructions: + +bc. git clone -n https://github.com/rsalveti/linux.git +cd linux +git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-hikey +export ARCH=arm64 +export CROSS_COMPILE=/aarch64-linux-gnu- +make defconfig distro.config +make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release + +To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. + +h4. How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +bc. sudo apt-get update +sudo apt-get upgrade + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +bc. sudo apt-get update +sudo apt-get build-dep +apt-get source + +Then you can rebuild the package locally with: + +bc. cd +dpkg-buildpackage -b -us -uc + +h4. TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md new file mode 100644 index 0000000..30edc3e --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md @@ -0,0 +1,112 @@ + +h2. Install Instructions - CE AOSP RPB 15.12 - HiKey + +This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE AOSP RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader +* Linux Kernel: +** Derived from Linux 4.1 kernel +** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git +** Branch: *android-hikey-linaro-4.1* +* AOSP Android Marshmallow 6.0 + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.5* +* Extra firmware files available from firmware-linux +* Mali (requires EULA) + +h3. Downloading the pre-built binaries + +The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-4g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-8g.img +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/hisi-idt.py + +*CE AOSP RPB image:* + +bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/boot_fat.uefi.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/cache.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata.img.tar.xz +wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata-8gb.img.tar.xz + +Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz and follow the instructions to download the file. + +Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: + +bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-aosp@ and @userdata@ files will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-aosp-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Change @ttyUSB0@ to the right interface name that gets exported to your host system. + +Make sure to reboot the board after updating the partition table (@ptable-aosp@), otherwise flashing the system image might fail. + +h4. Boot, System, Cache and Userdata + +Fastboot is required to flash boot, system, cache and userdata. + +*Flashing boot, cache, system and userdata:* + +Enable fastboot (either via recovery or by changing the boot jumpers), and then just flash the required files: + +bc. sudo fastboot flash boot boot_fat.uefi.img +sudo fastboot flash cache cache.img +sudo fastboot flash system system.img +sudo fastboot flash nvme nvme.img + +Then on a 4G compatible device: + +bc. sudo fastboot flash userdata userdata.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash userdata userdata-8gb.img + + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don't have any sd card in place (since it first tries to boot from sd card, boot order can be changed with @sudo fastboot oem bootdevice [emmc|sd]@), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md new file mode 100644 index 0000000..9ce2d83 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md @@ -0,0 +1,97 @@ +h2. Install Instructions - CE Debian RPB 15.12 - HiKey + +This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for HiKey. + +For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ + +h3. Image Components + +The CE Debian RPB 15.12 - HiKey build is composed of the following artifacts: + +* Bootloader: +** ARM Trusted Firmware, EDK2/UEFI and Grub2 +** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey +** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader +* Linux Kernel: +** Upstream plus extra changes for a better hardware support +** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git +** Branch: *reference-hikey-rebase* +* Debian "Jessie" +** ALIP (LXDE based) +** Custom 96Boards artworks and default settings +** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay +** Kernel and initrd loaded from the rootfs (under /boot) + +h4. Closed source binaries + +The following components requires a closed source binary for better hardware support: + +* TI wlan firmware (@wl18xx@) +** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw +** Branch: *R8.6* +* Extra firmware files available from firmware-linux +* Mali (not yet included by default) + +h3. Downloading the pre-built binaries + +The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. + +Flashing and booting from the external SD Card is not supported by this release. + +*Bootloader files:* + +bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/l-loader.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/nvme.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/fip.bin +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-4g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-8g.img +wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/hisi-idt.py + +*CE Debian RPB image:* + +bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-boot-linux-20151214-35.uefi.img.gz +wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz +gunzip hikey-* + +h3. Flashing + +h4. Bootloader + +To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode + +Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-linux@ file will differ depending on the board you have. + +On recovery mode, flash the bootloader with the following command: + +bc. sudo python hisi-idt.py --img1=l-loader.bin + +Then on a 4G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-4g.img + +Or the following on a 8G compatible device: + +bc. sudo fastboot flash ptable ptable-linux-8g.img + +Then flash UEFI: + +bc. sudo fastboot flash fastboot fip.bin + +Make sure to reboot the board after updating the partition table (@ptable-linux@), otherwise flashing the rootfs might fail. + +h4. Boot and Rootfs + +Fastboot is required to flash both the boot and rootfs images. + +To avoid bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). + +*Flashing boot and rootfs:* + +bc. sudo fastboot flash boot hikey-boot-linux-20151214-35.uefi.img +sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img + +Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don’t have any sd card in place (since it first tries to boot from sd card, boot order can be changed with sudo fastboot oem bootdevice [emmc|sd]), then just reboot the board and enjoy :-) + +h3. Additional resources + +For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..eff7304 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/README.md @@ -0,0 +1,18 @@ +# HiKey Reference Platform Build - 15.12 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +#### HiKey + +| **CE Debian RPB - 15.12** | **CE AOSP RPB - 15.12** | +|:------------------------------------------------------:|:---------------------------------------------------:| +| [Install Instructions](InstallDebianRPB-15.12.md) | [Install Instructions](InstallAOSPRPB-15.12.md) | +| [Build from Source](BFSDebianRPB-15.12.md) | [Build from Source](BFSAOSPRPB-15.12.md) | +| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | + +*** diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/RPB_15.12/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/Highlights.md b/Reference-Platform/Platforms/IoT/RPB_15.12/Highlights.md new file mode 100644 index 0000000..32a601c --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/Highlights.md @@ -0,0 +1,49 @@ +## Reference Platform Builds - 15.12 + +The *15.12* release is the second release for the Reference Software Platform project, and for the first time also including support for the Enterprise Edition. Since there is still no availability for the 96Boards HuskyBoard, the first EE RPB was produced using the current enterprise development boards that are available in Linaro, such as HiSilicon D02 and AMD Overdrive (same SoC from HuskyBoard, known as Seattle). Once HuskBoard is available, the work for making it supported by the EE RPB should be minimal. + +A lot of work was put in place for the EE RPB, covering firmware (UEFI/EDK2), Linux 4.4 (with ACPI), Debian Jessie/CentOS 7 network installers, OpenStack Liberty, Hadoop, Spark and a few others, consolidating the work from several other Linaro groups and teams as well as from community and members. + +For the Consumer Edition the CE AOSP RPB for Hikey is now using a 4.1 based kernel, closer to what is provided directly by AOSP. We decided to not push major updates and rebases for the CE Debian RPB kernel since we want the changes to follow the same [kernel policy](../../KernelPolicy.md) as used by the EE kernel. The goal of having one single tree for both CE and EE, with a strict upstream-based policy will continue, and we hope to have more news on that during the upcoming weeks. + +The work for the CE OE/Yocto RPB was also started, but unfortunately not yet covering a single machine (due lack of a single kernel). Please check [https://github.com/96boards/meta-rpb](https://github.com/96boards/meta-rpb) and https://github.com/96boards/oe-rpb-manifest to see what was already done for OpenEmbedded. + +##### Highlights for this release: + +###### Enterprise Edition + +- Firmware: + - UEFI/EDK2 support for D02, provided by OpenPlatformPkg +- Linux: + - 4.4-rc4 based, including support for D02 and Overdrive + - ACPI support for D02 and Overdrive (mandatory for the enterprise edition) +- Distributions: + - Debian Jessie network installer (using latest kernel) + - CentOS 7 network installer (alpha state) +- Enterprise Components: + - Docker 1.9.1 + - OpenStack Liberty + - ODPi BigTop (Hadoop, Spark, etc) + - OpenJDK 8 + +###### Consumer Edition + +- CE Debian RPB for DragonBoard410 and HiKey (including support for the LeMaker version): + - Debian 8.2 "Jessie" + - 4.3 kernel (with additional patches) + - OpenJDK 8 included by default + - 96Boards artwork and default settings +- CE AOSP RPB for HiKey (including support for the LeMaker version): + - AOSP Android Marshmallow 6.0 + - 4.1 based kernel + +The complete list of known issues for this release: [Known Issues](Known-Issues.md) + +##### Enterprise + +- [UEFI/EDK2](https://builds.96boards.org/releases/reference-platform/components/uefi/15.12/) for HiSilicon D02 +- [Kernel 4.4-rc4](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/) tested with D02 and Overdrive +- [Debian (Jessie) Installer](https://builds.96boards.org/releases/reference-platform/components/debian-installer/15.12/) tested with D02 and Overdrive (shipping kernel 4.4-rc4 by default) +- [OpenStack Liberty]() for Debian Jessie +- [ODPi Hadoop]() for Debian Jessie +- [EE Debian Test Report](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/EE-Debian-RPB-15.12-TestReport.pdf) diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/Known-Issues.md b/Reference-Platform/Platforms/IoT/RPB_15.12/Known-Issues.md new file mode 100644 index 0000000..c9025ff --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/Known-Issues.md @@ -0,0 +1,73 @@ +## Reference Platform Build - 15.12 Release - Known Issues + +### Enterprise + +#### Kernel + +- "Bug 1966":https://bugs.linaro.org/show_bug.cgi?id=1966 - KVM errors when booting on overdrive and d02 + +#### HiSilicon D02 + +- "Bug 1965":https://bugs.linaro.org/show_bug.cgi?id=1965 - D02: kernel unable to find valid mac for the network interfaces +- "Bug 1967":https://bugs.linaro.org/show_bug.cgi?id=1967 - D02: unhandled level 3 permission fault (11) +- "Bug 1975":https://bugs.linaro.org/show_bug.cgi?id=1975 - D02: Kernel can only see 2GB of memory (from 8GB) +- *SATA*: Due to bugs in the SATA controller, there is a risk of disk corruption when installing to a SATA disk. This is expected to be fixed in subsequent silicon revisions. +- *SAS*: not yet supported in EDK2. For it to work on linux only, this "patch":https://git.linaro.org/uefi/OpenPlatformPkg.git/commit/96d58c4318584f066b1bb7f1c48b72e7e25cf709 needs to be reverted on UEFI/EDK2, but then an alternative boot method needs to be used (since UEFI/EDK2 is unable to load grub/kernel from SAS). + +#### AMD Overdrive + +- UEFI/EDK2 is not yet supported + +### Debian + +#### HiKey + +- Mali not supported, missing kernel and userspace support +- "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 +- "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete +- "Bug 86":https://bugs.96boards.org/show_bug.cgi?id=86 - Debian ALIP: resize UI screen when underlying DRM resolution changed. +- "Bug 143":https://bugs.96boards.org/show_bug.cgi?id=143 - Mouse cursor invisible after boot (until you open an application) +- "Bug 144":https://bugs.96boards.org/show_bug.cgi?id=144 - Shutdown is not clean +- "Bug 145":https://bugs.96boards.org/show_bug.cgi?id=145 - Thermal sensor is not readable +- "Bug 147":https://bugs.96boards.org/show_bug.cgi?id=147 - Highest resolution of 1080p monitor cannot be detected +- "Bug 148":https://bugs.96boards.org/show_bug.cgi?id=148 - Bluetooth doesn't work +- "Bug 151":https://bugs.96boards.org/show_bug.cgi?id=151 - glxgears: couldn't get an RGB, Double-buffered visual +- "Bug 152":https://bugs.96boards.org/show_bug.cgi?id=152 - SD-Card doesn't work +- "Bug 159":https://bugs.96boards.org/show_bug.cgi?id=159 - No sound cards found +- "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide +- "Bug 166":https://bugs.96boards.org/show_bug.cgi?id=166 - Support 8GB emmc +- "Bug 211":https://bugs.96boards.org/show_bug.cgi?id=211 - Fails to enter fastboot mode from grub boot menu + +#### DragonBoard 410c + +- Freedreno graphics driver not provided by the image + - Newer mesa, libdrm and freedreno xorg driver is needed (work in progress to be included by default as part of the next release) + - Workaround is to enable the qcom overlay PPA, and install the required packages: + +```shell +sudo su - +echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list +apt-get update +apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno +reboot +``` + +* Slow USB throughput: "https://www.96boards.org/forums/topic/super-slow-usb/":https://www.96boards.org/forums/topic/super-slow-usb/ +* "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete +* "Bug 121":https://bugs.96boards.org/show_bug.cgi?id=121 - Cannot soft power off or shutdown db410c +* "Bug 154":https://bugs.96boards.org/show_bug.cgi?id=154 - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) +* "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide +* "Bug 207":https://bugs.96boards.org/show_bug.cgi?id=208 - Bluetooth does not work on Dragonboard debian +* "Bug 208":https://bugs.96boards.org/show_bug.cgi?id=208 - Real Time clock not working: due to /dev/rtc not found + +### AOSP + +#### HiKey + +* "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 +* "Bug 124":https://bugs.96boards.org/show_bug.cgi?id=124 - CPU frequency will be reset to lowest when it is heavily loaded +* "Bug 136":https://bugs.96boards.org/show_bug.cgi?id=136 - HDMI goes off while running CTS +* "Bug 163":https://bugs.96boards.org/show_bug.cgi?id=163 - HDMI audio not working +* "Bug 164":https://bugs.96boards.org/show_bug.cgi?id=164 - Behaviors of power on button not following hardware user guide +* "Bug 180":https://bugs.96boards.org/show_bug.cgi?id=180 - Shutdown cannot turn off HDMI monitor +* "Bug 204":https://bugs.96boards.org/show_bug.cgi?id=204 - File download crashes the build-in browser diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/README.md b/Reference-Platform/Platforms/IoT/RPB_15.12/README.md new file mode 100644 index 0000000..25ef139 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_15.12/README.md @@ -0,0 +1,13 @@ +# Reference Platform Build - 15.12 + +[RPB 15.12 Highlights](Highlights.md) | [RPB 15.12 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [D02](EnterpriseEdition/D02/README.md) +- [Overdrive](EnterpriseEdition/Overdrive/README.md) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..15f676d --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted at: +- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) +- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) +- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) +- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) +- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) +- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) + +*Build setup:* + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +Also install make sure to install the following packages: + +```shell +sudo apt-get install libfdt-dev python-mako get text +``` + +*Download the firmware blobs:* + +```shell +mkdir android/ +cd android/ +mkdir -p vendor/db410c +cd vendor/db410c +wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin +sh firmware-410c-1.2.0.bin +cd - +``` + +*Build the image:* + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 +cd .repo +git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch db410c-userdebug +make droidcore -j8 +cd out/target/product/db410c +``` + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md new file mode 100644 index 0000000..d0a3461 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md @@ -0,0 +1,280 @@ +## Debian RPB 16.03 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain and Skales Tool + - Step 3: Export path to cross compiler tool and confirm version + - Step 4: Clone the Reference Platform kernel + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target DragonBoard™ 410c + - [Step 12: Generate the initramfs + - [Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +tag: 96b-kernelci +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir` and call is something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir DB410c-16.03 +$ cd DB410c-16.03 +``` + +#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +``` + +###### Skales tool + +```shell +$ sudo apt-get install libfdt-dev +$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales +$ export PATH=$PATH:/tmp/skales +``` +>Skales will be used later when creating the device tree + + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes + +```shell +$ git clone -b 96b-kernelci http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- Once kernel source has been cloned cd into its directory + +```shell +$ cd kernel +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX +``` + +#### Step 7: Copy Modules + +- Modules must be local (host computer) before transferring to target device +- Still within linux directory +- Make temp folder +- Create modules + +```shell +$ mk tmp/modules +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 +``` + +#### Step 8: Find kernel release string + +- This was created during the kernel build +- In this example the kernel.release is 4.4.0+ + +```shell +$ cat include/config/kernel.release +#Output +$ 4.4.0+ +``` + +#### Step 9: Generate modules.dep and map files + +- Helps kernel find modules when system boots +- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 + +```shell +$ depmod -a -b /tmp/modules 4.4.0+ +``` + +#### Step 10: Find DragonBoard™ 410c IP Address + +- On your DragonBoard™ 410c +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 11: Transfer the modules to the target DragonBoard™ 410c + +- Using your board's IP Address for linaro@ + +```shell +$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules +$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#DragonBoard™ 410c shell +db410c $ tar -jxvf modules.tar.bz2 +db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ +``` + +#### Step 12: Generate the initramfs + +- You should still be in the DragonBoard™ 410c shell + +```shell +db410c $ sudo update-initramfs -k 4.4.0+ -c +``` + +- Copy back the new initramfs +- This will be used when creating the boot.mg + +#### Step 13: Create the device tree image and boot image + +###### Device tree + +```shell +$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom +``` + +###### Boot image + +```shell +$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" +``` + +Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. + +- Flashing the boot image can be done using fastboot +- Board must be booted into fastboot mode +- With USB to microUSB cable still connect execute the following: + +```shell +$ sudo fastboot flash boot boot.img +$ sudo fastboot reboot +``` + +*** + +### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +```shell +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +```shell +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `about` partition, you can now flash your board with: + +```shell +sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn +``` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TO-DO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..ef52214 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md @@ -0,0 +1,155 @@ +[]() +[]() +[]() +[]() +[]() + +>**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Android Bootloader and Boot file + +- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) +- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +#### Step 3: Download all remaining files + +- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) +- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) +- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Android using Fastboot with Linux host + +This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +fastboot devices +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +cd + +#Example: +cd dragonboard410c_bootloader_emmc_android +# = dragonboard410c_bootloader_emmc_android + +# This command will execute the flashall script within the bootloader folder +./flashall + +``` + +5 - **Recall location of all downloaded files from downloads page** + +This will include the files listed below: + +###### Reference Platform files + +- boot.img.tar.xz +- system.img.tar.xz +- userdata.img.tar.xz +- cache.img.tar.xz + +6 - **Unzip all files** + +7 - **Flash all files to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of all extracted(unzipped) files +- `cd` to the directory with your unzipped files +- From within extraction directory, execute the following commands: + +###### Reference Platform + +```shell +# (Once again) Check to make sure fastboot device connected +sudo fastboot devices + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the downloads +sudo fastboot flash boot boot.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img +sudo fastboot flash cache cache.img +``` + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into Android lock screen. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md new file mode 100644 index 0000000..56b81fd --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md @@ -0,0 +1,153 @@ +[]() +[]() +[]() +[]() +[]() + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian Bootloader and Boot file + +- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) +- Debian Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) + +#### Step 3: Download Root File System + +- Debian Rootfs (Desktop) ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Wait for about 20 seconds. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +$ fastboot devices +``` + +Typically it will show as bellow +```shell +de82318 fastboot +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` +- XX represents the release number of the Bootloader +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +$ cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +$ cd + +#Example: +cd dragonboard410c_bootloader_emmc_linux-40 +# = dragonboard410c_bootloader_emmc_linux-40 +#This example took place during release 40 + +# This command will execute the flashall script within the bootloader folder +$ ./flashall + +``` + +5 - **Recall location of `boot` and `rootfs` download from the downloads page** + +- You should have downloaded the `boot` file +- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) + +6 - **Unzip both 'boot' and 'rootfs' files** + +7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of extracted(unzipped) `boot` file +- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) +- `cd` to the directory with your unzipped `boot` and `rootfs` files +- From within extraction directory, execute the following commands: + +```shell +# (Once again) Check to make sure fastboot device connected +$ sudo fastboot devices +# It will show similar to bellow if the device is connected successfully +de82318 fastboot + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the boot and rootfs downloads +$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img +$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img +``` +**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into either command line or desktop depending on rootfs + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md new file mode 100644 index 0000000..d64f135 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md @@ -0,0 +1,212 @@ +## OpenEmbedded RPB 16.03 - Build from Source + +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +## OE Layers + +| Layer | Description | +|:-----------------------:|:----------------------| +| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | +| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | +| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | +| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | +| Meta-qt5 | This is a cross-platform toolkit. | +| Meta-linaro | This layer is used to get the Linaro toolchain. | +| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | +| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..cbabbe6 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,32 @@ +## Dragonboard™ 410c - Reference Platform Build - 16.03 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +| **CE Debian RPB - 16.03** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-16.03.md) | +| [Build from Source](BFSDebianRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | + +*** + +| **CE AOSP RPB - 16.03**
(Developer Preview) | +|:---------------------------:| +| [Install Instructions](InstallAOSPRPB-16.03.md) | +| [Build from Source](BFSAOSPRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/CE-AOSP-RPB-16.03-DB410c-TestReport.pdf) | + +*** + + +| **CE OpenEmbedded - 16.03** | +|:-----------------------------:| +| [Install Instructions](InstallOERPB-16.03.md) | + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..8823ad6 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted here: +- https://github.com/96boards/android_hardware_ti_wpan +- https://github.com/96boards/android_device_linaro_hikey +- https://github.com/96boards/android_manifest +- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +**Build setup:** + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +###### Out of date: +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +```shell + ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp +``` + +*** + +**Download the code:** + +```shell +mkdir android/ +cd android/ +``` + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +**Build the image:** + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hiked +``` diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md new file mode 100644 index 0000000..ee85550 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md @@ -0,0 +1,185 @@ +## Debian RPB 16.03 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain + - Step 3: Export path to cross compiler tool and confirm version + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image and debian package + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target HiKey + - Step 12: Generate the initramfs + - Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.03 +defconfig: arch/arm64/configs/distro.config +``` + +The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir`, name it something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir HiKey-16.03 +$ cd HiKey-16.03 +``` + +#### Step 2: Step 2: Download the Linaro cross compiler toolchain + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +``` + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=~/Desktop/HiKey-16.03/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes +- Use **96b/releases/2016.03** if you want the same version used by the 16.03 release + +```shell +$ git clone -b 96b/releases/2016.03 http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process +- Once kernel source has been cloned cd into its directory + +```shell +$ cd linux +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ cp arch/arm64/configs/distro.config .config +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image and debian package + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory +- Creating the kernel package is recommended for HiKey, as it supports Grub 2 + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag +``` + +#### Step 7: Find HiKey IP Address + +- On your HiKey board +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 8: Transfer the modules to the target HiKey + +- Using your board's IP Address for linaro@ + +```shell +$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#HiKey shell + +$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb +``` +Congratulations! Your new kernel is now ready to be used by your HiKey. + +- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel +- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated + +### Boot Loader + +Please see [https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source](https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source) for instructions on how to built the boot loader from source. + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +```shell +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md new file mode 100644 index 0000000..076028b --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md @@ -0,0 +1,83 @@ +## Building from source + +The source code is available from: +- [**l-loader**](https://github.com/96boards-hikey/l-loader) +- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) +- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) + +Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. + +### Build instructions + +Prerequisites: +- GCC 5.3 cross-toolchain for Aarch64 available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) +- GCC 5.3 cross-toolchain for gnueabihf available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) +- GPT fdisk (gdisk package from your favorite distribution). + +#### Installing pre-built toolchain(s) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +```shell +git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git +git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git +git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git +git clone https://github.com/96boards-hikey/l-loader.git +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building EDK2/UEFI for HiKey + +Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. + +To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export EDK2_DIR=${PWD}/edk2 +export ATF_DIR=${PWD}/arm-trusted-firmware +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${EDK2_DIR} +rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg +${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} hikey +``` + +And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): + +```shell +cd ../l-loader +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin +make # requires sudo for creating the partition tables +``` + +The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. + +#### EFI boot partition + +The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). + +```shell +wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi +mkdir boot-fat +dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 +sudo mkfs.fat -n "boot" boot-fat.uefi.img +sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat +sudo mkdir -p boot-fat/EFI/BOOT +sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi +sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi +sudo umount boot-fat +sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img +rm -rf boot-fat +``` + +Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..317256b --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md @@ -0,0 +1,126 @@ +#### Your Build Choice + +[]() +[]() +[]() +[]() +[]() + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download the following files + +>Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +Build Folders (**Binaries** / **Image**) + +- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) +- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) +- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) +- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) +- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) +- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) +- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) +- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) +- **system.img.tar.xz** (**Download**) + +*** + +#### Step 3: Install AOSP Using Fastboot with Linux host + +This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Set HiKey into Recovery Mode using J15 header** + +- Remove link between pins 5 and 6 +- Link pins 1 and 2 +- Link pins 3 and 4 + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | closed +GPIO3-1 | Link 5-6 | open + +4 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable ptable-aosp-8g.img +$ sudo fastboot reboot +$ sudo fastboot flash boot boot_fat.uefi.img +$ sudo fastboot flash cache cache.img +$ sudo fastboot flash system system.img +$ sudo fastboot flash userdata userdata-8gb.img +``` + +5 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 3-4 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md new file mode 100644 index 0000000..2928cb4 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md @@ -0,0 +1,111 @@ + + + + + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian partition table + +> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +**ptable-linux.img** ([**4G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-4g.img) / [**8G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-8g.img)) + +*** + +#### Step 3: Download Boot image and Root File System + +- **Debian Boot** ([**Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/hikey-boot-linux-*.uefi.img.gz)) +- **Debian Rootfs** (**Download**) + + +*** + +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. + + + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Wait for about 10 seconds +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable .img +$ sudo fastboot reboot +$ sudo fastboot flash boot .uefi.img +$ sudo fastboot flash system hikey-jessie_alip_2015MMDD-nnn-Xg.emmc.img +``` + +4 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 5-6 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..0761a72 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/README.md @@ -0,0 +1,24 @@ +# HiKey Reference Platform Build - 16.03 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. +- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. + +*** + +#### HiKey + + + +| **CE Debian RPB - 16.03** | **CE AOSP RPB - 16.03** | +|:-----------------------------:|:---------------------------:| +| [Install Instructions](InstallDebianRPB-16.03.md) | [Install Instructions](InstallAOSPRPB-16.03.md) | +| [Build from Source](BFSDebianRPB-16.03.md) | [Build from Source](BFSAOSPRPB-16.03.md) | +| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | +| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/CE-Debian-RPB-16.03-HiKey-TestReport.pdf) | [Test Report](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/CE-AOSP-RPB-16.03-HiKey-TestReport.pdf) | + + +*** + +Access **bootloader** build from source instructions [here](BuildSourceBL.md) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Cello/README.md new file mode 100644 index 0000000..3a63c2b --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Cello/README.md @@ -0,0 +1,60 @@ +### LeMaker Cello + +*** + +### Critical Bug List + +As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once we get a functional Realtek UEFI driver, it will also be possible to PXE boot the installer. + +Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (EDK2). + +Since the EDK2 based firmware is not yet public (work in progress), internal access to the tree/binary is required. Email your board point of contact for further information on how to download the required firmware. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +### Quick Start + +Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Distro Installers + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D02/README.md new file mode 100644 index 0000000..a126caa --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D02/README.md @@ -0,0 +1,64 @@ +### D02 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### D02 - QuickStart + +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.03 kernel **requires** the 16.03 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D03/README.md new file mode 100644 index 0000000..3529558 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D03/README.md @@ -0,0 +1,64 @@ +### D03 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.11*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### D03 - QuickStart + +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/](https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.06-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.06-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md new file mode 100644 index 0000000..ad1eadd --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md @@ -0,0 +1,44 @@ +## Setting up DHCP/TFTP server for UEFI distro network installers + +A simple way to install the major Linux Distributions (e.g. Debian, Fedora, CentOS, openSUSE, etc) is by booting the network installer via PXE. In order to have a working PXE environment, a DHCP and TFTP server is required, which is responsible for providing the target device a valid IP configuration and the required files to boot the system (usually Grub 2 + kernel + initrd). + +In order to simplify the setup, this document will use dnsmasq, which is a lightweight, easy to configure DNS forwarder and DHCP server with BOOTP/TFTP/PXE functionality. + +### Installing and configuring dnsmasq + +Debian/Ubuntu: + +```shell +sudo apt-get install dnsmasq +``` + +Fedora/CentOS/RHEL: + +```shell +yum install dnsmasq +``` + +This guide assumes you already know the network interface that will provide the DHCP/TFTP/PXE functionality for the target device. In this case, we are using _eth1_ as our secondary interface, with address _192.168.3.1_. + +Following is the /etc/dnsmasq.conf providing the required functionality for PXE: + +```shell +interface=eth1 +dhcp-range=192.168.3.10,192.168.3.100,255.255.255.0,1h +dhcp-boot=BOOTAA64.EFI +enable-tftp +tftp-root=/srv/tftp +``` + +Check [http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html) for more information and additional dnsmasq config options. + +Now make sure the tftp-root directory is available, and then start/restart the dnsmasq service: + +```shell +sudo mkdir -p /srv/tftp +sudo systemctl restart dnsmasq +``` + +Since we require UEFI support for the Reference Platform Software Enterprise Edition (EE-RPB), this document doesn't cover the traditional pxelinux specific configuration (used with the traditional BIOS setup). + +For UEFI, we only require DHCP to provide the UEFI binary name (retrieved via TFTP), which in this case is the Grub 2 bootloader (which then loads the kernel, initrd and other extra files from the TFTP server). diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md new file mode 100644 index 0000000..66581be --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -0,0 +1,52 @@ +### HP ProLiant m400 + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md new file mode 100644 index 0000000..985fb61 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md @@ -0,0 +1,216 @@ +## Installing CentOS 7.2 15.11 - Reference Platform Enterprise + +This guide is not to be a replacement of the official CentOS Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64](https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required CentOS 7 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +```shell +sudo su - +cd /srv/tftp/ +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/BOOTAA64.EFI +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/grubaa64.efi +``` + +#### Downloading the CentOS installer from the Reference Platform 16.03 release (4.4.0 RP Kernel): + +```shell +mkdir /srv/tftp/centos7 +cd /srv/tftp/centos7 +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/vmlinuz +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.repo=http://mirror.centos.org/altarch/7/os/aarch64/ inst.ks=file:/ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +**Note:** `inst.ks` is required because of the additional linaro-overlay repository (which contains the reference platform kernel rpm package), which is available inside the `initrd.img`. The `inst.ks` contains only one line, which is used by the installer to fetch and install the right kernel package. The content: `repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/`. + +Also check the [RHEL 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html) and the [anaconda documentation](https://rhinstaller.github.io/anaconda/boot-options.html) for additional boot options. One example is using **ip=eth1:dhcp** if you want to use the second network interface as default. + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── centos7 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 15:14:55, Feb 9 2016 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000e80000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 15:18:14 on Feb 9 2016) +Version 2.17.1249. Copyright (C) 2016 American Megatrends, Inc. +BIOS Date: 02/09/2016 15:15:23 Ver: ROD1001A00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install CentOS 7 ARM 64-bit - Reference Platform - 16.03 +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 +[ 0.000000] Boot CPU: AArch64 Processor [411fd072] +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 +... +Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! +... +dracut-initqueue[610]: RTNETLINK answers: File exists +dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current +dracut-initqueue[610]: Dload Upload Total Spent Left Speed +100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 +... +Welcome to CentOS Linux 7 (AltArch)! +... +Starting installer, one moment... +anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +21:06:29 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: 2 +[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. + +### Automating the installation with kickstart + +It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. + +Kickstart example: + +```shell +cmdline +url --url="http://mirror.centos.org/altarch/7/os/aarch64/" +repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ +repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ +repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ +lang en_US.UTF-8 +keyboard us +timezone --utc Etc/UTC +auth --useshadow --passalgo=sha512 +rootpw --lock --iscrypted locked +firewall --disabled +firstboot --disabled +selinux --disabled +reboot +network --bootproto=dhcp --device=eth0 --activate --onboot=on +ignoredisk --only-use=sda +bootloader --location=mbr +clearpart --drives=sda --all --initlabel +part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 +part /boot --fstype=ext4 --size=512 +part / --fstype=ext4 --size=10240 --grow +part swap --size=4000 +%packages +wget +net-tools +chrony +%end +%post +useradd -m -U -G wheel linaro +echo linaro | passwd linaro --stdin +%end +``` + +#### Setting up grub.cfg + +Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. + +#### Booting the system + +Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md new file mode 100644 index 0000000..cdea0fe --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md @@ -0,0 +1,522 @@ +## Installing Debian "Jessie" 8.4 + +This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) + +### Debian Installer + +The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. + +Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. + +## Loading debian-installer from the network +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. + +#### Downloading debian-installer: + +```shell +sudo su - +cd /srv/tftp/ +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz +tar -zxvf netboot.tar.gz +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── debian-installer +│   └── arm64 +│   ├── bootnetaa64.efi +│   ├── grub +│   │   ├── arm64-efi +│   │   │   ├── acpi.mod +│   │   │   ├── adler32.mod +│   │   │   ├── all_video.mod +│   │   │   ├── archelp.mod +│   │   │   ├── bfs.mod +│   │   │   ├── bitmap.mod +│   │   │   ├── bitmap_scale.mod +│   │   │   ├── blocklist.mod +│   │   │   ├── boot.mod +│   │   │   ├── btrfs.mod +│   │   │   ├── bufio.mod +│   │   │   ├── cat.mod +│   │   │   ├── cbfs.mod +│   │   │   ├── chain.mod +│   │   │   ├── cmdline_cat_test.mod +│   │   │   ├── cmp.mod +│   │   │   ├── command.lst +│   │   │   ├── cpio_be.mod +│   │   │   ├── cpio.mod +│   │   │   ├── crc64.mod +│   │   │   ├── cryptodisk.mod +│   │   │   ├── crypto.lst +│   │   │   ├── crypto.mod +│   │   │   ├── datehook.mod +│   │   │   ├── date.mod +│   │   │   ├── datetime.mod +│   │   │   ├── diskfilter.mod +│   │   │   ├── disk.mod +│   │   │   ├── div_test.mod +│   │   │   ├── dm_nv.mod +│   │   │   ├── echo.mod +│   │   │   ├── efifwsetup.mod +│   │   │   ├── efi_gop.mod +│   │   │   ├── efinet.mod +│   │   │   ├── elf.mod +│   │   │   ├── eval.mod +│   │   │   ├── exfat.mod +│   │   │   ├── exfctest.mod +│   │   │   ├── ext2.mod +│   │   │   ├── extcmd.mod +│   │   │   ├── fat.mod +│   │   │   ├── file.mod +│   │   │   ├── font.mod +│   │   │   ├── fs.lst +│   │   │   ├── gcry_arcfour.mod +│   │   │   ├── gcry_blowfish.mod +│   │   │   ├── gcry_camellia.mod +│   │   │   ├── gcry_cast5.mod +│   │   │   ├── gcry_crc.mod +│   │   │   ├── gcry_des.mod +│   │   │   ├── gcry_dsa.mod +│   │   │   ├── gcry_idea.mod +│   │   │   ├── gcry_md4.mod +│   │   │   ├── gcry_md5.mod +│   │   │   ├── gcry_rfc2268.mod +│   │   │   ├── gcry_rijndael.mod +│   │   │   ├── gcry_rmd160.mod +│   │   │   ├── gcry_rsa.mod +│   │   │   ├── gcry_seed.mod +│   │   │   ├── gcry_serpent.mod +│   │   │   ├── gcry_sha1.mod +│   │   │   ├── gcry_sha256.mod +│   │   │   ├── gcry_sha512.mod +│   │   │   ├── gcry_tiger.mod +│   │   │   ├── gcry_twofish.mod +│   │   │   ├── gcry_whirlpool.mod +│   │   │   ├── geli.mod +│   │   │   ├── gettext.mod +│   │   │   ├── gfxmenu.mod +│   │   │   ├── gfxterm_background.mod +│   │   │   ├── gfxterm_menu.mod +│   │   │   ├── gfxterm.mod +│   │   │   ├── gptsync.mod +│   │   │   ├── grub.cfg +│   │   │   ├── gzio.mod +│   │   │   ├── halt.mod +│   │   │   ├── hashsum.mod +│   │   │   ├── help.mod +│   │   │   ├── hexdump.mod +│   │   │   ├── hfs.mod +│   │   │   ├── hfspluscomp.mod +│   │   │   ├── hfsplus.mod +│   │   │   ├── http.mod +│   │   │   ├── jfs.mod +│   │   │   ├── jpeg.mod +│   │   │   ├── keystatus.mod +│   │   │   ├── ldm.mod +│   │   │   ├── linux.mod +│   │   │   ├── loadenv.mod +│   │   │   ├── loopback.mod +│   │   │   ├── lsacpi.mod +│   │   │   ├── lsefimmap.mod +│   │   │   ├── lsefi.mod +│   │   │   ├── lsefisystab.mod +│   │   │   ├── lsmmap.mod +│   │   │   ├── ls.mod +│   │   │   ├── lssal.mod +│   │   │   ├── luks.mod +│   │   │   ├── lvm.mod +│   │   │   ├── lzopio.mod +│   │   │   ├── macbless.mod +│   │   │   ├── macho.mod +│   │   │   ├── mdraid09_be.mod +│   │   │   ├── mdraid09.mod +│   │   │   ├── mdraid1x.mod +│   │   │   ├── memrw.mod +│   │   │   ├── minicmd.mod +│   │   │   ├── minix2_be.mod +│   │   │   ├── minix2.mod +│   │   │   ├── minix3_be.mod +│   │   │   ├── minix3.mod +│   │   │   ├── minix_be.mod +│   │   │   ├── mmap.mod +│   │   │   ├── moddep.lst +│   │   │   ├── mpi.mod +│   │   │   ├── msdospart.mod +│   │   │   ├── net.mod +│   │   │   ├── newc.mod +│   │   │   ├── normal.mod +│   │   │   ├── ntfscomp.mod +│   │   │   ├── ntfs.mod +│   │   │   ├── odc.mod +│   │   │   ├── offsetio.mod +│   │   │   ├── part_acorn.mod +│   │   │   ├── part_amiga.mod +│   │   │   ├── part_apple.mod +│   │   │   ├── part_bsd.mod +│   │   │   ├── part_dfly.mod +│   │   │   ├── part_dvh.mod +│   │   │   ├── part_gpt.mod +│   │   │   ├── partmap.lst +│   │   │   ├── part_msdos.mod +│   │   │   ├── part_plan.mod +│   │   │   ├── part_sun.mod +│   │   │   ├── part_sunpc.mod +│   │   │   ├── parttool.lst +│   │   │   ├── parttool.mod +│   │   │   ├── password.mod +│   │   │   ├── password_pbkdf2.mod +│   │   │   ├── pbkdf2.mod +│   │   │   ├── pbkdf2_test.mod +│   │   │   ├── png.mod +│   │   │   ├── priority_queue.mod +│   │   │   ├── probe.mod +│   │   │   ├── procfs.mod +│   │   │   ├── progress.mod +│   │   │   ├── raid5rec.mod +│   │   │   ├── raid6rec.mod +│   │   │   ├── read.mod +│   │   │   ├── reboot.mod +│   │   │   ├── regexp.mod +│   │   │   ├── reiserfs.mod +│   │   │   ├── romfs.mod +│   │   │   ├── scsi.mod +│   │   │   ├── serial.mod +│   │   │   ├── setjmp.mod +│   │   │   ├── setjmp_test.mod +│   │   │   ├── signature_test.mod +│   │   │   ├── sleep.mod +│   │   │   ├── sleep_test.mod +│   │   │   ├── squash4.mod +│   │   │   ├── syslinuxcfg.mod +│   │   │   ├── terminal.lst +│   │   │   ├── terminal.mod +│   │   │   ├── terminfo.mod +│   │   │   ├── test_blockarg.mod +│   │   │   ├── testload.mod +│   │   │   ├── test.mod +│   │   │   ├── testspeed.mod +│   │   │   ├── tftp.mod +│   │   │   ├── tga.mod +│   │   │   ├── time.mod +│   │   │   ├── trig.mod +│   │   │   ├── tr.mod +│   │   │   ├── true.mod +│   │   │   ├── udf.mod +│   │   │   ├── ufs1_be.mod +│   │   │   ├── ufs1.mod +│   │   │   ├── ufs2.mod +│   │   │   ├── verify.mod +│   │   │   ├── video_colors.mod +│   │   │   ├── video_fb.mod +│   │   │   ├── videoinfo.mod +│   │   │   ├── video.lst +│   │   │   ├── video.mod +│   │   │   ├── videotest_checksum.mod +│   │   │   ├── videotest.mod +│   │   │   ├── xfs.mod +│   │   │   ├── xnu_uuid.mod +│   │   │   ├── xnu_uuid_test.mod +│   │   │   ├── xzio.mod +│   │   │   └── zfscrypt.mod +│   │   ├── font.pf2 +│   │   └── grub.cfg +│   ├── initrd.gz +│   └── linux +├── netboot.tar.gz +└── version.info +``` + +Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: + +```shell +dhcp-boot=debian-installer/arm64/bootnetaa64.efi +``` +## Loading debian-installer from the minimal CD + +Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. + +Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): + +``` +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso +sudo cp mini.iso /dev/sdX +sync +``` + +Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. + +## Booting the installer + +If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install +Advanced options ... +Install with speech synthesis +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. + +**NOTE - Cello Only:** The network driver **r8169** needs an additional module parameter for a functional 64-bit DMA operation ([related kernel change](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4300e8c7f64d95a80ffa7d98d98738f41546bc30)), so please edit your grub boot parameter by pressing _e_ at the selected boot line, and add _r8169.use_dac=1_ in the end of the linux line. To boot, simply press _Control + x_. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND +[ 0.763784] kvm [1]: error: no compatible GIC node found +[ 0.763818] kvm [1]: error initializing Hyp mode: -19 +[ 0.886298] Failed to find cpu0 device node +[ 0.947082] zswap: default zpool zbud not available +[ 0.951959] zswap: pool creation failed +Starting system log daemon: syslogd, klogd. +... + ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ + │ │ + │ Choose the language to be used for the installation process. The │ + │ selected language will also be the default language for the installed │ + │ system. │ + │ │ + │ Language: │ + │ │ + │ C │ + │ English │ + │ │ + │ │ + │ │ + └─────────────────────────────────────────────────────────────────────────┘ + moves; selects; activates buttons +``` + +### Finishing the installation + +For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) + +**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. + +``` +~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f +~ # exit +``` + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. + +**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: + +``` +root@debian:~# cat /etc/network/interfaces +... +allow-hotplug enp1s0 +iface enp1s0 inet dhcp + hwaddress ether de:5e:60:e4:6b:1f +``` + +### Automating the installation using preseeding + +Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. + +This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) + +**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: + +```shell +d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands +``` + +#### Creating the preseed file + +Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. + +Once created, make sure the file gets published into a network address that can be reachable from your target device. + +Preseed example (`preseed.cfg`): + +```shell +d-i debian-installer/locale string en_US +d-i keyboard-configuration/xkb-keymap select us +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/get_hostname string unassigned-hostname +d-i netcfg/get_domain string unassigned-domain +d-i netcfg/hostname string debian +d-i mirror/country string manual +d-i mirror/http/hostname string httpredir.debian.org +d-i mirror/http/directory string /debian +d-i mirror/http/proxy string +d-i passwd/root-password password linaro123 +d-i passwd/root-password-again password linaro123 +d-i passwd/user-fullname string Linaro User +d-i passwd/username string linaro +d-i passwd/user-password password linaro +d-i passwd/user-password-again password linaro +d-i passwd/user-default-groups string audio cdrom video sudo +d-i time/zone string UTC +d-i clock-setup/ntp boolean true +d-i clock-setup/utc boolean true +d-i partman-auto/disk string /dev/sda +d-i partman-auto/method string regular +d-i partman-lvm/device_remove_lvm boolean true +d-i partman-md/device_remove_md boolean true +d-i partman-auto/choose_recipe select atomic +d-i partman/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true +popularity-contest popularity-contest/participate boolean false +tasksel tasksel/first multiselect standard, web-server +d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp +d-i pkgsel/upgrade select safe-upgrade +d-i finish-install/reboot_in_progress note +``` + +In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) + +#### Setting up grub.cfg + +Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: + +```shell +$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg +# Force grub to automatically load the first option +set default=0 +set timeout=1 +menuentry 'Install with preseeding' { + linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- + initrd /debian-installer/arm64/initrd.gz +} +``` + +The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. + +In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. + +#### Booting the system + +Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. + +Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. + +### Building debian-installer from source + +#### Build kernel package and udebs + +Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. + +You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) + +#### Rebuilding debian-installer with the new udebs + +To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. + +Download the installer (from jessie): + +```shell +sudo apt-get build-dep debian-installer +dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u2.dsc +``` + +Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): + +```shell +cd debian-installer-* +cd build +sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common +sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common +``` + +Download the kernel udebs that you created at the localudebs folder: + +```shell +cd localudebs +wget +cd .. +``` + +Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): + +```shell +cat < pkg-lists/local +ext4-modules-\${kernel:Version} +fat-modules-\${kernel:Version} +btrfs-modules-\${kernel:Version} +md-modules-\${kernel:Version} +efi-modules-\${kernel:Version} +scsi-modules-\${kernel:Version} +jfs-modules-\${kernel:Version} +xfs-modules-\${kernel:Version} +ata-modules-\${kernel:Version} +sata-modules-\${kernel:Version} +usb-storage-modules-\${kernel:Version} +EOF +``` + +Set up the local repo, so the installer can locate your udebs (from localudebs): + +```shell +cat < sources.list.udeb +deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ +deb http://httpredir.debian.org/debian jessie main/debian-installer +EOF +``` + +Default preseed to skip known errors (as the kernel provided by local udebs): + +``` +cat < default-preseed +# Continue install on "no kernel modules were found for this kernel" +d-i anna/no_kernel_modules boolean true +# Continue install on "no installable kernels found" +d-i base-installer/kernel/skip-install boolean true +d-i base-installer/kernel/no-kernels-found boolean true +d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb +EOF +``` + +Now just build the installer: + +```shell +fakeroot make build_netboot +``` + +You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md new file mode 100644 index 0000000..c625bdd --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md @@ -0,0 +1,164 @@ +## Installing Fedora 23 + +This guide is not to be a replacement of the official Fedora 23 Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation](https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Fedora 23 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +**Note:** Because of bug [1251600](https://bugzilla.redhat.com/show_bug.cgi?id=1251600), we need to use both `BOOTAA64.EFI` and `grubaa64.efi` from the Fedora 22 release. + +```shell +sudo su - +cd /srv/tftp/ +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/BOOTAA64.EFI +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/grubaa64.efi +``` + +Downloading upstream Kernel and Initrd + +```shell +mkdir /srv/tftp/f23 +cd /srv/tftp/f23 +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/vmlinuz +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install Fedora 23 ARM 64-bit' --class fedora --class gnu-linux --class gnu --class os { + linux (tftp)/f23/vmlinuz ip=dhcp inst.repo=http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/ + initrd (tftp)/f23/initrd.img +} +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── f23 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install Fedora 23 ARM 64-bit +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Fedora 23 (just make sure that target device has external network access, since the installer is downloaded automatically after booting the kernel). + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.2.3-300.fc23.aarch64 (mockbuild@aarch64-08a.arm.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Thu Oct 8 01:39:38 UTC 2015 +[ 0.000000] CPU: AArch64 Processor [411fd072] revision 2 +[ 0.000000] Detected PIPT I-cache on CPU0 +[ 0.000000] alternatives: enabling workaround for ARM erratum 832075 +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c6000 SMBIOS 3.0=0x83ff349718 +... +Welcome to Fedora 23 (Twenty Three) dracut-043-60.git20150811.fc23 (Initramfs)! +... +[ 23.105835] dracut-initqueue[685]: RTNETLINK answers: File exists +[ 23.756828] dracut-initqueue[685]: % Total % Received % Xferd Average Speed Time Time Time Current +[ 23.757345] dracut-initqueue[685]: Dload Upload Total Spent Left Speed +100 958 100 958 0 0 1514 0 --:--:-- --:--:-- --:--:-- 1513 0 --:--:-- --:--:-- --:--:-- 0 +... +Welcome to Fedora 23 (Twenty Three)! +... +Starting installer, one moment... +anaconda 23.19.10-1 for Fedora 23 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +00:29:26 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: +. +[anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1 +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the installation destination, the partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Fedora 23 system. + +### Automating the installation with kickstart + +TODO diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md new file mode 100644 index 0000000..5e134d1 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md @@ -0,0 +1,320 @@ +This post concentrates on Running Hadoop after [installing](ODPi-Hadoop-Installation.md) ODPi components built using Apache BigTop. These steps are only for configuring it on a single node and running them on a single node. + +# Add Hadoop User + We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop usergroup: + +```shell +sudo useradd -G hadoop hduser +``` + +give a password for hduser + +```shell +sudo passwd hduser +``` + +Add hduser to sudoers list +On Debian: + +```shell +sudo adduser hduser sudo +``` + +On Centos: + +```shell +sudo usermod -G wheel hduser +``` + +Switch to hduser: + +```shell +sudo su - hduser +``` + +# Generate ssh key for hduser + +```shell +ssh-keygen -t rsa -P "" +``` + +Press \ to leave to default file name. + +Enable ssh access to local machine: + +```shell +cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys +``` + +Test ssh setup, as hduser: + +```shell +ssh localhost +``` + +# Disabling IPv6 + +```shell +sudo nano /etc/sysctl.conf +``` + +Add the below lines to the end and save: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +``` + +Prefer IPv4 on Hadoop: + +```shell +sudo nano /etc/hadoop/conf/hadoop-env.sh +``` + +Uncomment line: + +```shell +# export HADOOP_OPTS=-Djava.net.preferIPV4stack=true +``` + +Run sysctl to apply the changes: + +```shell +sudo sysctl -p +``` + +# Configuring the app environment +Configure the app environment by following steps: + +```shell +sudo mkdir -p /app/hadoop/tmp +sudo chown hduser:hadoop /app/hadoop/tmp +sudo chmod 750 /app/hadoop/tmp +sudo chown hduser:hadoop /usr/lib/hadoop +sudo chmod 750 /usr/lib/hadoop +``` + +# Setting up Environment Variables +Follow the below steps to setup Environment Variables in bash file : + +```shell +sudo su - hduser +nano .bashrc +``` + +Add the following to the end and save: + +```shell +export HADOOP_HOME=/usr/lib/hadoop +export HADOOP_PREFIX=$HADOOP_HOME +export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" +export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec +export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop +export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native +export HADOOP_COMMON_HOME=$HADOOP_HOME +export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce +export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs +export YARN_HOME=/usr/lib/hadoop-yarn +export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ +export CLASSPATH=$CLASSPATH:. +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.6.0.jar +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/client/hadoop-hdfs-2.6.0.jar +export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") +export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH +``` + +Execute the terminal environment again (`bash`), or simply logout and change to `hduser` again. + +# Modifying config files +## core-site.xml + +```shell +sudo nano /etc/hadoop/conf/core-site.xml +``` + +And add/modify the following settings: +Look for property with fs.defaultFS and modify as below: + +```shell + + fs.default.name + hdfs://localhost:54310 + The name of the default file system. A URI whose + scheme and authority determine the FileSystem implementation. The + uri's scheme determines the config property (fs.SCHEME.impl) naming + the FileSystem implementation class. The uri's authority is used to + determine the host, port, etc. for a filesystem. + +``` + +Add this to the bottom before \ tag: + +```shell + + hadoop.tmp.dir + /app/hadoop/tmp + A base for other temporary directories. + +``` + +## mapred-site.xml + +```shell +sudo nano /etc/hadoop/conf/mapred-site.xml +``` + +Modify existing properties as follows: +Look for property tag with as mapred.job.tracker and modify as below: + +```shell + + mapred.job.tracker + localhost:54311 + The host and port that the MapReduce job tracker runs + at. If "local", then jobs are run in-process as a single map + and reduce task. + + +``` + +## hdfs-site.xml: + +```shell +sudo nano /etc/hadoop/conf/hdfs-site.xml +``` + +Modify existing property as below : + +```shell + + dfs.replication + 1 + Default block replication. + The actual number of replications can be specified when the file is created. + The default is used if replication is not specified in create time. + + +``` + +# Format Namenode +This step is needed for the first time. Doing it every time will result in loss of content on HDFS. + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init +``` + +# Start the YARN daemons + +```shell +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done +sudo /etc/init.d/hadoop-yarn-resourcemanager start +sudo /etc/init.d/hadoop-yarn-nodemanager start +``` + +# Validating Hadoop +Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux + +```shell +sudo jps +``` +or + +```shell +ps aux | grep java +``` + +Alternatively, check if yarn managers are running: + +```shell +sudo /etc/init.d/hadoop-yarn-resourcemanager status +sudo /etc/init.d/hadoop-yarn-nodemanager status +``` + +You would see like below: + +```shell +● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager + Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) + Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago + CGroup: /system.slice/hadoop-yarn-nodemanager.service + └─10366 /usr/lib/jvm/java-1.7.0-openjdk-arm64/bin/java -Dproc_node... + +Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root +Dec 22 18:24:57 debian su[10348]: + ??? root:yarn +Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) +Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... +Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn +Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... +``` + + +## Run teragen, terasort and teravalidate ## + +```shell +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate +``` + +## Stop the Hadoop services ## + +```shell +sudo /etc/init.d/hadoop-yarn-nodemanager stop + +sudo /etc/init.d/hadoop-yarn-resourcemanager stop + +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done +``` + +## Potential Errors / Issues and Resolutions ## +* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: + +```shell +sudo groupadd supergroup + +sudo usermod -g supergroup hduser +``` + +* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. + +```shell +You may have delete all the packages and re-run the steps of installation from scratch. +``` + +* Error while formatting namenode +With the following command: + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init + + +If you see the following error: + WARN net.DNS: Unable to determine local hostname -falling back to "localhost" + java.net.UnknownHostException: centos: centos + at java.net.InetAddress.getLocalHost(InetAddress.java:1496) + at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) + at org.apache.hadoop.net.DNS.(DNS.java:57) + +Something is wrong in the network setup. Please check /etc/hosts file. + +```shell +sudo nano /etc/hosts +``` + +The hosts file should like below: + +```shell +127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname +::1 localhost +``` + +Also try the following steps: + +```shell +sudo rm -Rf /app/hadoop/tmp + +hadoop namenode -format +``` diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md new file mode 100644 index 0000000..e810f26 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md @@ -0,0 +1,82 @@ +This post concentrates on installing ODPi components built using Apache BigTop. These steps configure and run the components on a single node. + +# Prerequisites: + +* Java 7 (e.g. openjdk-7-jre) + +# Repo: + +ODPi deb and rpm packages can be found on Linaro repositories: + +* Debian Jessie - http://repo.linaro.org/ubuntu/linaro-overlay/ +* CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/ + + +# Installation : + +### On Debian: + +Add to repo source list (**not required if you are using the installer from the Reference Platform**): + +```shell +echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +Update the source list and install the dependencies: + +```shell +sudo apt-get update +sudo apt-get install openssh-server rsync openjdk-7-jre openjdk-7-jdk +sudo apt-get build-dep build-essential +``` + +Install Hadoop packages: + +```shell +sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### On CentOS: + +```shell +sudo wget http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo -O /etc/yum.repos.d/linaro-overlay.repo +sudo yum update +sudo yum -y install openssh-server openssh-clients java-1.7.0-openjdk* +sudo yum install -y bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### Verifying Installation + +Packages would get installed in /usr/lib + +Type hadoop to check if hadoop is installed: + +```shell +hadoop +``` + +And you should see the following: + +```shell +linaro@debian:~$ hadoop +Usage: hadoop [--config confdir] COMMAND + where COMMAND is one of: + fs run a generic filesystem user client + version print the version + jar run a jar file + checknative [-a|-h] check native hadoop and compression libraries availability + distcp copy file or directories recursively + archive -archiveName NAME -p * create a hadoop archive + classpath prints the class path needed to get the + credential interact with credential providers + Hadoop jar and the required libraries + daemonlog get/set the log level for each daemon + trace view and modify Hadoop tracing settings + or + CLASSNAME run the class named CLASSNAME +``` + + Most commands print help when invoked w/o parameters. + +Next Step: [Setup, Configuration and Running Hadoop](ODPi-BigTop-Hadoop-Config-Run.md) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md new file mode 100644 index 0000000..d3b4cb9 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md @@ -0,0 +1,376 @@ +# OpenStack Liberty - Debian Jessie + +# Introduction + +In general, the instructions in the Liberty install guide should be followed: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html. This guide will describe changes to the documented procedures that should be kept in mind while going through the guide. + +Each section below will correspond to a section in the guide. Guide sections that do not have a corresponding section below may be followed as-is. + +# Release Notes + +## Configuring images for aarch64 + +An image must be configured specially in glance to be able to boot correctly on aarch64. +To attach the devices to the virtio bus (which does not allow hotplugging a volume, but will work if the image does not have SCSI support), the following properties must be set: + +```shell +--property hw_machine_type=virt +--property os_command_line='root=/dev/vda rw rootwait console=ttyAMA0' +--property hw_cdrom_bus=virtio +``` + +To attach the devices to the SCSI bus (which does allow hotplugging a volume, but might not be supported by the guest image), the following properties must be set: + +```shell +--property hw_scsi_model='virtio-scsi' +--property hw_disk_bus='scsi' +--property os_command_line='root=/dev/sda rw rootwait console=ttyAMA0' +``` + +You can set these properties when you are uploading the image into glance, or modify the image if you have already uploaded it. + + +# Pre-Installation + +## Verify/enable additional repositories + +Verify that the `linaro-overlay` and `jessie-backports` repositories are enabled. + +Check if they are available by checking `/etc/apt/sources.list` and `/etc/apt/sources.list.d`. + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://httpredir.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backports.list +``` + +## Modify repository priorities + +Create `/etc/apt/preferences.d/jessie-backports`: + +```shell +Package: * +Pin: release a=jessie-backports +Pin-Priority: 500 +``` + +Then, make sure to run apt-get update: + +```shell +$ sudo apt-get update +``` + +## Environment + +Update `/etc/hosts` to add “controller” as an alias for localhost. + +```shell +127.0.0.1 localhost controller +``` + +## Disable IPV6 + +Add the following to `/etc/sysctl.conf`: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +net.ipv6.conf.eth0.disable_ipv6 = 1 +``` + +Run sysctl to apply the changes: + +```shell +$ sudo sysctl -p +``` + +# Following the Openstack guide... + +OpenStack guide: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html + +## Environment + +### Openstack Packages + +Do not enable the `cloud-archive:liberty` repository. + +Install some dependencies: + +```shell +$ sudo apt-get install openstack-cloud-services python-pymysql +``` + +Answer the questions asked by debconf: + +* New password for the MySQL **root** user: \ + +Install the openstack client: + +```shell +$ sudo apt-get install python-openstackclient +``` + +### NoSQL Database + +The instructions in this section are not required, as Telemetry is not installed. + +## Add the Identity service (Keystone) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during meta package installation later. + +#### Install and configure components + +Install the apache and the keystone meta package: + +```shell +$ sudo apt-get install openstack-cloud-identity +``` + +Answer the questions asked by debconf: + +* Set up a database for Keystone: **Yes** +* Configure database for keystone with dbconfig-common: **Yes** +* Database type to be used by keystone: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for keystone: **\** +* Authentication server administration token: **\** +* Register administration tenants? **Yes** +* Password of the administrative user: **\** +* Register Keystone endpoint? **Yes** +* Keystone endpoint IP address: **\** + +#### Configure the Apache HTTP server + +Omit this section of the guide. + +#### Finalize the installation + +Omit this section of the guide. + +### Create the service entity and API endpoints + +Omit this section of the guide. + +### Create projects, users, and roles + +Omit this section of the guide. + + +## Add the Image service (Glance) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install glance +``` + +Answer the questions asked by debconf: + +* Set up a database for Glance: **Yes** +* Configure database for glance-common with dbconfig-common? **Yes** +* Database type to be used by glance-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for glance-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Pipeline flavor: **keystone** +* Authentication server hostname: **\** +* Authentication server password: **\** +* Register Glance in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Omit this section of the guide. + +### Verify operation + +The CirrOS image to run on aarch64 is the file that ends in `-uec.tar.gz`. It must be extracted and each file (kernel, initrd, disk image) uploaded to Glance separately. + +Download the CirrOS AArch64 UEC tarball and untar it: + +```shell +$ wget http://download.cirros-cloud.net/daily/20150923/cirros-d150923-aarch64-uec.tar.gz +$ tar xvf cirros-d150923-aarch64-uec.tar.gz +``` + +Upload the image parts into Glance. You will need to make note of the IDs assigned to the kernel and initrd and pass them on the command line when uploading the disk image: + +```shell +$ glance image-create --name "cirros-kernel" --visibility public --progress \ + --container-format aki --disk-format aki --file cirros-d150923-aarch64-vmlinuz + +$ glance image-create --name "cirros-initrd" --visibility public --progress \ + --container-format ari --disk-format ari --file cirros-d150923-aarch64-initrd + +$ glance image-create --name "cirros" --visibility public --progress \ + --property hw_machine_type=virt --property hw_cdrom_bus=virtio \ + -property os_command_line='console=ttyAMA0' \ + --property kernel_id=KERNEL_ID --property ramdisk_id=INITRD_ID \ + --container-format ami --disk-format ami --file cirros-d150923-aarch64-blank.img +``` + +## Add the Compute service (Nova) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install nova-api nova-cert nova-conductor \ + nova-consoleauth nova-scheduler nova-compute +``` + +Answer the questions asked by debconf: + +* Set up a database for Nova: **Yes** +* Configure database for nova-common with dbconfig-common? **Yes** +* Database type to be used by nova-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for nova-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Auth server hostname: **\** +* Auth server password: **\** +* Neutron server URL: **http://\:9696** +* Neutron administrator password: **\** +* Metadata proxy shared secret: **\** +* API to activate: choose **osapi_compute and metadata** +* Value for my_ip: **\** +* Register Nova in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Ensure that vnc and spice are disabled in `/etc/nova/nova.conf`. Look for the following keys in `nova.conf` and set them to False: + +```shell +vnc_enabled=false + +[spice] +enabled=false +``` + +Enable KVM by ensuring the following is in `nova-compute.conf`: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +virt_type=kvm +``` + +**NOTE: Until kernel support for KVM is properly enabled, instances can be run in emulation by ensuring the following is in `nova-compute.conf`**: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +cpu_mode = custom +virt_type = qemu +cpu_model = cortex-a57 +``` + +**IMPORTANT: If you make changes to `nova.conf`, or `nova-compute.conf`, restart the nova services:** + +```shell +$ sudo service nova-compute restart +``` + + +## Add the Networking service (Neutron) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install neutron-server neutron-plugin-ml2 \ + neutron-plugin-linuxbridge-agent neutron-dhcp-agent \ + neutron-metadata-agent +``` + +Answer the questions asked by debconf: + +* neutron-common + * Set up a database for Neutron: **Yes** + * Configure database for neutron-common with dbconfig-common? **Yes** + * Database type to be used by neutron-common: **mysql** + * Password of the database's administrative user: **\** + * MySQL application password for neutron-common: **\** + * IP address of your RabbitMQ host: **\** + * Username for connection to the RabbitMQ server: **guest** + * Password for connection to the RabbitMQ server: **guest** + * Authentication server hostname: **\** + * Authentication server password: **\** + * Neutron plugin: **ml2** +* neutron-metadata-agent + * Auth server hostname: **\** + * Auth server password: **\** + * Name of the region to be used by the metadata server: **\** + * Metadata proxy shared secret: **\** +* neutron-server + * Register Neutron in the Keystone endpoint catalog? **Yes** + * Keystone authentication token: **\** + +#### Configure networking options +Follow "Networking Option 1: Provider networks". + +#### Finalize installation + +Omit this section of the guide. + + +## Launch an instance + +### Create virtual networks + +Follow section “Public provider network” + +### Launch an instance + +Follow section “Launch an instance on the public network” + +NOTE: Accessing an image via the virtual console (VNC) will not work, as VNC is not supported. You may access the console log using the following command: + +```shell +$ nova console-log --length=10 INSTANCE_ID +``` diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Overdrive/README.md new file mode 100644 index 0000000..586bd01 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Overdrive/README.md @@ -0,0 +1,68 @@ +### Overdrive + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Quick Start + +#### AMD Overdrive + +Since the EDK2 based firmware is not yet supported (work in progress), the original AMI BIOS based firmware from AMD is required. + +At the time of the 16.03 release the latest firmware version for Overdrive (*B0*) is 1.0.0.1. Latest for *rev A* is still 0.0.7.4. + +*A* and *B0* are both supported by the 16.03 release (`A` requires an external PCIe NIC) + +After flashing/updating the firmware, proceed to the network installer instructions in order to install your favorite distribution. No special setup is required for Overdrive. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100), but a board like the [SPI Hook](http://www.tincantools.com/SPI_Hook.html) should also be compatible with it (not yet tested). + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md new file mode 100644 index 0000000..9ba1ff1 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md @@ -0,0 +1,367 @@ +## UEFI/EDK2 + +EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. + +The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). + +Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. + +EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. + +This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) + +### Building + +#### Pre-Requisites + +Make sure the build dependencies are available at your host machine. + +On Debian/Ubuntu: + +```shell +sudo apt-get install uuid-dev build-essential aisle +``` + +On RHEL/CentOS/Fedora: + +```shell +sudo yum install uuid-devel libuuid-devel aisle +``` + +Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': + +```shell +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb +sudo dpkg -i --force-all *.deb +``` + +If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. + +Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +UEFI/EDK2: + +```shell +git clone https://github.com/tianocore/edk2.git +git clone https://git.linaro.org/uefi/OpenPlatformPkg.git +cd edk2 +git checkout -b stable-baseline d0d34cdf1d2752f0d7c3ca41af7e7ed29c221d11 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git +ln -s ../OpenPlatformPkg +``` + +ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): + +```shell +git clone https://github.com/ARM-software/arm-trusted-firmware.git +cd arm-trusted-firmware +git checkout -b stable-baseline v1.2 # suggested latest stable release +``` + +UEFI Tools (helpers and scripts to make the build process easy): + +```shell +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building UEFI/EDK2 for Juno R0/R1 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +export ARMTF_DIR=${PWD}/arm-trusted-firmware +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno +``` + +The output files: + +- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` +- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` + +#### Building UEFI/EDK2 for D02 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since D02 support is not yet merged in OpenPlatformPkg, a specific branch needs to be used for it: + +```shell +cd OpenPlatformPkg +git checkout d02-release +``` + +Then just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 +``` + +The output file: + +- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` + +#### Building UEFI/EDK2 for Overdrive + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive +``` + +The output file: + +- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` + +#### Building UEFI/EDK2 for HuskyBoard / Cello + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +``` + +Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: + +```shel +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello +``` + +The output file: + +- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` + +### Flashing + +#### Juno R0/R1 + +##### Clean flash + +Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: + +```shell +Cmd> flash +Flash> eraseall +Flash> quit +Cmd> usb_on +``` + +This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. + +In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: + +```shell +git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git +``` + +Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE +``` + +Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): + +```shell +cp -rf vexpress-firmware/* /media/recovery +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. + +##### Upgrading UEFI/EDK2 + +If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). + +Export Juno's MMC as a usb storage device on your host machine: + +```shell +Cmd> usb_on +``` + +Then just copy over the UEFI/EDK2 files that were built in the previous steps: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Then just power cycle the Juno and the board should see and use the new firmware. + +#### D02 + +Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('PV660D02.fd'): + +```shell +cp PV660D02.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### D03 + +Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('D03.fd'): + +```shell +cp D03.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d03-2/](http://open-estuary.com/d03-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('D03.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### AMD Overdrive / HuskyBoard / Cello + +##### Clean flash + +###### DediProg SF100 + +Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. + +First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: + +```shell +dpcmd --type MX25L12835F -e +``` + +Now just flash the new firmware: + +```shell +dpcmd --type MX25L12835F -p FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +###### SPI Hook + +Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) + +Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. + +Example for the 4.5M based firmware: + +```shell +dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc +``` + +Connect the SPI cable, unplug the power cord and flash SPI: + +```shell +sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +##### Upgrading firmware + +There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. + +### Links and References: + +- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) +- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md new file mode 100644 index 0000000..9a9daea --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md @@ -0,0 +1,52 @@ +### X-Gene Mustang + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.03 release, the kernel is based on *4.4.0*. + +For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. + +The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) +* [CentOS 7](../Install-CentOS-7.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/Highlights.md b/Reference-Platform/Platforms/IoT/RPB_16.03/Highlights.md new file mode 100644 index 0000000..a7e8f79 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/Highlights.md @@ -0,0 +1,87 @@ +### Highlights for 16.03 release: + +*** + +###### Consumer and Enterprise Edition: +#### Kernel +- Unified tree shared between the CE and EE builds. Supports Hikey, Dragonboard, D02, APM X-Gene, HP Proliant m400 and AMD Overdrive. +- 4.4.0 based, including under-review topic branches to extend the hardware support for the platforms available. +- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. +- Single kernel config for all platforms in arch/arm64/configs/distro.config +- Single kernel binary (package) for all platforms + +*** + +###### Consumer Edition: + +#### CE Debian RPB (common): +- Upgrade to Debian 8.3 "Jessie" +- Upgrade to the unified 4.4.0 Linux Kernel +- Upgrade graphics components: Mesa 11.1.2 and Xserver 1.17.3 +- Rootfs automatically resized during the first boot + +#### CE Debian RPB for DragonBoard™ 410: +- Freedreno X11 video driver included by default (1.4.0) +- Analog audio playback and record support +- Upgrade Qualcomm Firmware Package to 1.2 + +#### CE Debian RPB for HiKey (CircuitCo & LeMaker): +- Default Grub 2 boot configuration updated, now supporting kernel package upgrades +- xserver-xorg-video-armsoc now included by default (still using software rendering, Mali integration expected as part of the next release)
 + +#### CE AOSP RPB (common): +- AOSP Android Marshmallow 6.0 (android-6.0.1_r16)
 + +#### CE AOSP RPB for DragonBoard™ 410: +- Initial build, available as Developer Preview (not suitable for end users). +- Mesa and Freedreno support +- Kernel 4.4.0 
 + +#### CE AOSP RPB for HiKey (CircuitCo & LeMaker): +- AOSP Android Marshmallow 6.0 (android-6.0.1_r16) +- 4.1 based kernel
 + +#### CE OE/Yocto RPB: +- Included the unified 4.4.0 kernel +- meta-backports created, to contain backported recipes used by the reference platform + +*** + +###### Enterprise Edition + +#### Supported platforms: + +- AMD Overdrive A0 (new) and B0 +- D02 +- APM X-Gene Mustang (new) +- HP ProLiant m400 (new)
 + +#### Overall platform features, validated as part of the release: + +- UEFI with ACPI +- KVM +- PCIe
 + +#### Firmware: + +- Updated UEFI/EDK2 for D02, including support for PCIe and SAS
 + +#### Network Installers: + +- Debian: + - Upgrade to Debian 8.3 "Jessie" + - Using the unified 4.4.0 kernel +- CentOS (Now officially supported): + - Based on CentOS 7.2 15.11 + - Using the consolidated 4.4 kernel + +#### Enterprise Components: + +- Docker 1.9.1 +- OpenStack Liberty for Debian Jessie + - CentOS to be supported as part of the next cycle +- ODPi based Hadoop +- Spark 1.6 +- OpenJDK 8 (Linaro 16.03) + +*** diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/Known-Issues.md b/Reference-Platform/Platforms/IoT/RPB_16.03/Known-Issues.md new file mode 100644 index 0000000..d66ba58 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/Known-Issues.md @@ -0,0 +1,100 @@ +## Reference Platform Build - 16.03 Release - Known Issues + +### Enterprise + +Fixed Issues +( Bugzilla ) + +| Enterprise Edition | Known Issues ( Bugzilla ) | +|:-----:|:-----| +|[bug 2079](https://bugs.linaro.org/show_bug.cgi?id=2079)| [RPB] D02- Sometimes root partition is missing when booting Debian/CentOS| +|[bug 2100](https://bugs.linaro.org/show_bug.cgi?id=2100)| [RPB] Placing D02 under major stress and SAS driver starts to have errors| +|[bug 2067](https://bugs.linaro.org/show_bug.cgi?id=2067)| [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system| +|[bug 2068](https://bugs.linaro.org/show_bug.cgi?id=2068)| [RPB] D02- Detailed information about firmware version is needed| +|[bug 2085](https://bugs.linaro.org/show_bug.cgi?id=2085)| [RPB] D02- CentOS installer fails to detect SATA drive| +|[bug 2106](https://bugs.linaro.org/show_bug.cgi?id=2206)| [RPB] D02- shutdown works as reboot| +|[bug 2097](https://bugs.linaro.org/show_bug.cgi?id=2097)| [RPB] kernel fails to build on amd64| +|[bug 2069](https://bugs.linaro.org/show_bug.cgi?id=2069)| [RPB] D02- Selected item in BIOS is not highlighted in minicom| +|[bug 2086](https://bugs.linaro.org/show_bug.cgi?id=2086)| [RPB] D02: Booting CentOS Linux failed| +|[bug 2066](https://bugs.linaro.org/show_bug.cgi?id=2066)| QEMU can't launch an instance with more than 30GB RAM| +|[bug 2075](https://bugs.linaro.org/show_bug.cgi?id=2075)| [RPB] D02: Latest EDK2 breaks network support in UEFI| + +*** + +### HiKey + +Fixed Issues ( Bugzilla ) + +| Debian | Known Issues ( Bugzilla ) | +|:-----:|:-----| +|[bug 187](https://bugs.96boards.org/show_bug.cgi?id=187)| Missing XWindows video acceleration - Weston (needs Mali r6p0)| +|[bug 262](https://bugs.96boards.org/show_bug.cgi?id=262)| [RPB] LG W2253V fails to work with 4.4.0-93-arm64| +|[bug 212](https://bugs.96boards.org/show_bug.cgi?id=212)| Suspend/resume support needed in 4.1/4.4| +[bug 223](https://bugs.96boards.org/show_bug.cgi?id=223)| **HiKey**: Linux 4.4: USB unstable with SMP| +|[bug 27](https://bugs.96boards.org/show_bug.cgi?id=27)| UEFI variable runtime service not working| +|[bug 222](https://bugs.96boards.org/show_bug.cgi?id=222)| **HiKey**: RTC RTS code accesses unrelocated address| +|[bug 267](https://bugs.96boards.org/show_bug.cgi?id=267)| [RPB] UEFI does not provide devicetree to OS| +|[bug 290](https://bugs.96boards.org/show_bug.cgi?id=290)| [RPB] fastboot erase/flash system is just too slow when flashing the Debian images| +|[bug 176](https://bugs.96boards.org/show_bug.cgi?id=176)| Upgrade HiKey Mali Lib to r6p0| +|[bug 205](https://bugs.96boards.org/show_bug.cgi?id=205)| [RPB] USB OTG fails after hot removal and reinsertion| +|[bug 286](https://bugs.96boards.org/show_bug.cgi?id=286)| [RPB] 4.4.0-102-arm64 - Bad mode in Synchronous Abort handler detected| +|[bug 20](https://bugs.96boards.org/show_bug.cgi?id=20)| [RPB] USB kernel trace errors -22| +|[bug 152](https://bugs.96boards.org/show_bug.cgi?id=152)| [RPB] SD-Card doesn't work| +|[bug 163](https://bugs.96boards.org/show_bug.cgi?id=163)| [RPB-AOSP] HDMI audio not working| +|[bug 233](https://bugs.96boards.org/show_bug.cgi?id=233)| [RPB] Bluetooth driver prevents board from rebooting| +|[bug 265](https://bugs.96boards.org/show_bug.cgi?id=265)| fastboot reboot-bootloader doesn't work| +|[bug 291](https://bugs.96boards.org/show_bug.cgi?id=291)| [RPB] fastboot erase not supported in l-loader (recovery)| +|[bug 282](https://bugs.96boards.org/show_bug.cgi?id=282)| [RPB] Missing wl18xx wlconf setup as part of the first boot process| +|[bug 145](https://bugs.96boards.org/show_bug.cgi?id=145)| [RPB] unable to read thermal sensors| +|[bug 151](https://bugs.96boards.org/show_bug.cgi?id=151)| [RPB] glxgears: couldn't get an RGB, Double-buffered visual| + +| AOSP | Known Issues ( Bugzilla ) | +|:-----:|:------| +|[bug 180](https://bugs.96boards.org/show_bug.cgi?id=180)| [RPB] Shutdown cannot turn off HDMI monitor| +|[bug 224](https://bugs.96boards.org/show_bug.cgi?id=224)| [RPB-AOSP] BT status LED doesn't blink when BT transfer is in progress| +|[bug 225](https://bugs.96boards.org/show_bug.cgi?id=225)| [RPB] User LED numbers on the board don't match the sysfs entries| +|[bug 228](https://bugs.96boards.org/show_bug.cgi?id=228)| [RPB] Bluetooth mice pair and connect but don't show input| + +*** + +### DragonBoard™ 410c + +Fixed Issues +( Bugzilla ) + +| Debian | Known Issues ( Bugzilla )| +|:-------:|:---------| +| [bug 285](https://bugs.96boards.org/show_bug.cgi?id=285) | USB host doesn't detect any plugged devices | +| [bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) | [RPB] Cannot soft power off or shutdown db410c | +| [bug 284](https://bugs.96boards.org/show_bug.cgi?id=284) | [RPB] Dragon board Display sleep not working | +| [bug 289](https://bugs.96boards.org/show_bug.cgi?id=289) | [RPB] USB devices don't work after reboot | +| [bug 207](https://bugs.96boards.org/show_bug.cgi?id=207) | [RPB] Bluetooth does not work on Dragon board debian | +| [bug 153](https://bugs.96boards.org/show_bug.cgi?id=153) | [RPB] Missing information about hwpack usage| + + +Fixed Issues +( Bugzilla ) + + +| AOSP | Known Issues ( Bugzilla ) | +|:----------:|:-----------| +| [bug 254](https://bugs.96boards.org/show_bug.cgi?id=254) | [RPB] wpa_supplicant crashes wcn36xx | +| [bug 276](https://bugs.96boards.org/show_bug.cgi?id=276) | [RPB-AOSP] USB-OTG doesn't work | +| [bug 278](https://bugs.96boards.org/show_bug.cgi?id=278) | [RPB-AOSP] Free internal disk space is too small | +| [bug 279](https://bugs.96boards.org/show_bug.cgi?id=279) | [RPB-AOSP] "x App has stopped" happens frequently | +| [bug 280](https://bugs.96boards.org/show_bug.cgi?id=280) | [RPB-AOSP] App crashes when SD card mounted manually | +| [bug 277](https://bugs.96boards.org/show_bug.cgi?id=277) | [RPB-AOSP] SD card auto mount from UI doesn't work | + + +*** + + + +| Bug Legend | | +|:-----:|:-------| +| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | +| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | +| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | +| VERIFIED | A team has VERIFIED a working solution for a bug | + +*** diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/README.md b/Reference-Platform/Platforms/IoT/RPB_16.03/README.md new file mode 100644 index 0000000..68d0477 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/README.md @@ -0,0 +1,18 @@ +# Reference Platform Build - 16.03 + +[RPB 16.03 Highlights](Highlights.md) | [RPB 16.03 Known Issues](Known-Issues.md) | [RPB 16.03 Release Status](ReleaseStatus-16.03.md) + +## Choose your Hardware + +#### Consumer Edition +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [D02](EnterpriseEdition/D02/README.md) +- [Overdrive](EnterpriseEdition/Overdrive/README.md) +- [Cello](EnterpriseEdition/Cello/README.md) +- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) +- [HP ProLiant m400](EnterpriseEdition/HP-Proliant-m400/README.md) + +Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ReleaseStatus-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.03/ReleaseStatus-16.03.md new file mode 100644 index 0000000..a3c91c1 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.03/ReleaseStatus-16.03.md @@ -0,0 +1,170 @@ +## Reference Platform Release Status + +- *Release:* 16.03 +- *Code/feature freeze:* February 22th / 2016 +- *RC1:* February 22th / 2016 +- *Release date:* March 3th / 2016 (originally March 1) + +### Release Candidates + +#### Final + +- *Debian Installer (118):* [mini.iso](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz) +- *CentOS Installer (36):* [16.03](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/) +- *Kernel (104):* [linux-image-4.4.0-104](https://builds.96boards.org/releases/reference-platform/components/linux/16.03/) +- *CE AOSP RPB HiKey (65)*: [16.03](https://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/) +- *CE AOSP RPB Dragonboard410c (45):* [16.03](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/) +- *CE Debian RPB HiKey (68)*: [16.03](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/) +- *CE Debian RPB Dragonboard410c (68):* [16.03](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/) + +#### RC5 + +- *Debian Installer (111):* [mini.iso](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/netboot.tar.gz) +- *CentOS Installer:* [34](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/34/) +- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) +- *UEFI*: [46](https://builds.96boards.org/snapshots/reference-platform/components/uefi/46/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/hikey/) +- *CE Debian RPB Dragonboard410c:* [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/dragonboard410c/) + +#### RC4 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [33](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/33/) +- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/hikey/) +- *CE Debian RPB Dragonboard410c:* [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/dragonboard410c/) + +#### RC3 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [31](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/31/) +- *Kernel:* [linux-image-4.4.0-93](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-93-arm64_4.4.0.linaro.93-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- - *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/hikey/) +- *CE Debian RPB Dragonboard410c:* [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/dragonboard410c/) + +#### RC2 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [30](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/30/) +- *Kernel:* [linux-image-4.4.0-91](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-91-arm64_4.4.0.linaro.91-1.linarojessie.1_arm64.deb) +- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) +- *CE Debian RPB HiKey*: [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/hikey/) +- *CE Debian RPB Dragonboard410c:* [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/dragonboard410c/) + +#### RC1 + +- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) +- *CentOS Installer:* [29](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/29/) +- *Kernel:* [linux-image-4.4.0-85](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-85-arm64_4.4.0.linaro.85-1.linarojessie.1_arm64.deb) +- *UEFI*: [43](https://builds.96boards.org/snapshots/reference-platform/components/uefi/43/) +- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) +- *CE AOSP RPB Dragonboard410c:* [43](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/43/) +- *CE Debian RPB HiKey*: [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/hikey/) +- *CE Debian RPB Dragonboard410c:* [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/dragonboard410c/) + +### Kernel + +Kernel is 4.4 based, unified and supporting the following boards by default: +* Dragonboard410c +* HiKey +* AMD Overdrive (A0 should also be supported, pending kernel update) +* D02 +* APM X-Gene/Moonshot m400 (supported with the final RC) + +Tree data: +* Git: https://github.com/96boards/linux/ +* Branch: *96b/releases/2016.03* +* Config: https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config + +### Remaining Work Activities + +* QA/Validation - QA Team +** Enterprise Debian Overdrive +** Enterprise Debian D02 +** Enterprise CentOS Overdrive +** Enterprise CentOS D02 +** -CE Debian DB410c - *Naresh*- +** -CE AOSP HiKey - *Chase Qi*- +** -CE AOSP DB410c (nice to have) - *Chase Qi*- +** -CE Debian HiKey - *Naresh*- +* Test/Validation of GPIO, I2C and SPI support on both HiKey and Dragonboard410c - *Grant* +* Release Documentation - *Robert* +* -Porting xorg-server into linaro-overlay - *Nicolas/Ricardo*- +* -Linaro-EDK2 February Release - *Leif*- +* D02 OpenPlatformPkg update - *Heyi/Leif* +* D02 EDK2 SAS support - *Zhangfei Gao* +* -Move unified kernel to https://github.com/96boards/linux - *Amit*- +* -Update CentOS installer to use the unified kernel - *Ricardo*- +* -Update default grub config used by HiKey (generic) - *Ricardo*- +* ROD Openstack support for CentOS - *Fathi* + +### Out of Scope / Next Release + +* Kernel Fragments - *Amit* +* Lack of a default device-tree for HiKey - *Ricardo/Guodong*: bugs [27](https://bugs.96boards.org/show_bug.cgi?id=27) and [267](https://bugs.96boards.org/show_bug.cgi?id=267) to cover the right implementation, postponed to *16.06*. +* [Bug 254 - [RPB] wpa_supplicant crashes wcn36xx](https://bugs.96boards.org/show_bug.cgi?id=254) +* [Bug 207 - [RPB] Bluetooth does not work on Dragonboard debian](https://bugs.96boards.org/show_bug.cgi?id=207) +* [Bug 262 - [RPB] LG W2253V fails to work with 4.4.0-93-arm64](https://bugs.96boards.org/show_bug.cgi?id=262) - *Amit* +* [Bug 2067 - [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system](https://bugs.linaro.org/show_bug.cgi?id=2067) - Amit/Hanjun + +### Current Issues / Bugs + +#### Kernel + +* -[Bug 1999 - RP Kernel doesn't boot on HP Moonshot m400 (APM X-Gene) cartridges (ACPI)](https://bugs.linaro.org/show_bug.cgi?id=1999) - *Ricardo/Amit*- +* -[Bug 2060 - [RPB] Missing support for APM XGENE / Moonshot m400](https://bugs.linaro.org/show_bug.cgi?id=2060) - *Amit*- + +###### HiKey + +* -[Bug 274 - [RPB] xserver armsoc driver fails to allocate buffer](https://bugs.96boards.org/show_bug.cgi?id=274) - *Amit/Guodong/Xinliang*- +* [Bug 281 - [RPB] regression - constant hangs with linux-image-4.4.0-99-arm64](https://bugs.96boards.org/show_bug.cgi?id=281) - *Amit/Guodong* + +###### Overdrive + +* -[Bug 2051 - RPB: Overdrive fails to find the SATA disks when booting with ACPI](https://bugs.linaro.org/show_bug.cgi?id=2051) - *Graeme*- + +###### Dragonboard410c + +* -[Bug 2061 - [RPB] CONFIG_QCOM_SCM breaks XGENE support](https://bugs.linaro.org/show_bug.cgi?id=2061) - *Amit/Nicolas*- + +###### D02 + +* -[Bug 2037 - D02: Unable to handle kernel paging request](https://bugs.linaro.org/show_bug.cgi?id=2037) - *Amit/Hanjun*- +* -[Bug 2063 - D02: No console unless you boot with console=ttyS0,115200](https://bugs.linaro.org/show_bug.cgi?id=2063) - *Amit/Hanjun*- +* -[Bug 2032 - ACPI NUMA Support crashes on D02](https://bugs.linaro.org/show_bug.cgi?id=2032) - *Hanjun*- + +#### UEFI + +###### D02 + +* -[Bug 2062 - EDK2 D02: "sas: realizing _RST replacing syscon" breaks SAS support in Linux](https://bugs.linaro.org/show_bug.cgi?id=2062) - *Heyi*- +* -Lack of PCIe support for D02 on Linux (missing tables) - *Hanjun/Heyi*- +* Lack of SAS support in EDK2/UEFI - *Zhangfei* +* -[Bug 2075 - [RPB] D02: Latest EDK2 breaks network support in UEFI](https://bugs.linaro.org/show_bug.cgi?id=2075)- + +###### HiKey + +#### Debian + +* -[Bug 2009 - Wrong network device name set after Debian install](https://bugs.linaro.org/show_bug.cgi?id=2009) - *Ricardo* +* -[ttyAMA2 (tty96B0) missing on HiKey with 16.03-rc4](https://bugs.96boards.org/show_bug.cgi?id=273) - *Amit* + +###### DB410c + +#### AOSP + +###### DB410c + +* -[Bug 253 - [RPB] Gallery fails to open due a fatal exception in GLThread](https://bugs.96boards.org/show_bug.cgi?id=253)- + +#### OE/Yocto diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md new file mode 100644 index 0000000..15f676d --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted at: +- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) +- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) +- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) +- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) +- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) +- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) + +*Build setup:* + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +Also install make sure to install the following packages: + +```shell +sudo apt-get install libfdt-dev python-mako get text +``` + +*Download the firmware blobs:* + +```shell +mkdir android/ +cd android/ +mkdir -p vendor/db410c +cd vendor/db410c +wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin +sh firmware-410c-1.2.0.bin +cd - +``` + +*Build the image:* + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 +cd .repo +git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch db410c-userdebug +make droidcore -j8 +cd out/target/product/db410c +``` + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md new file mode 100644 index 0000000..e8ed4bd --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md @@ -0,0 +1,281 @@ +## Debian RPB 16.06 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain and Skales Tool + - Step 3: Export path to cross compiler tool and confirm version + - Step 4: Clone the Reference Platform kernel + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image + - Step 7: Copy Modules + - Step 8: Find kernel release string + - Step 9: Generate modules.dep and map files + - Step 10: Find DragonBoard™ 410c IP Address + - Step 11: Transfer the modules to the target DragonBoard™ 410c + - Step 12: Generate the initramfs + - Step 13: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.06 +defconfig: arch/arm64/defconfig kernel/configs/distro.config +``` + +The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir` and call is something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir DB410c-16.06 +$ cd DB410c-16.06 +``` + +#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz +``` + +###### Skales tool + +```shell +$ sudo apt-get install libfdt-dev +$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales +$ export PATH=$PATH:/tmp/skales +``` +>Skales will be used later when creating the device tree + + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes + +```shell +$ git clone -b 96b-kernelci http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- Once kernel source has been cloned cd into its directory + +```shell +$ cd kernel +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX +``` + +#### Step 7: Copy Modules + +- Modules must be local (host computer) before transferring to target device +- Still within linux directory +- Make temp folder +- Create modules + +```shell +$ mk tmp/modules +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 +``` + +#### Step 8: Find kernel release string + +- This was created during the kernel build +- In this example the kernel.release is 4.4.0+ + +```shell +$ cat include/config/kernel.release +#Output +$ 4.4.0+ +``` + +#### Step 9: Generate modules.dep and map files + +- Helps kernel find modules when system boots +- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 + +```shell +$ depmod -a -b /tmp/modules 4.4.0+ +``` + +#### Step 10: Find DragonBoard™ 410c IP Address + +- On your DragonBoard™ 410c +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 11: Transfer the modules to the target DragonBoard™ 410c + +- Using your board's IP Address for linaro@ + +```shell +$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules +$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#DragonBoard™ 410c shell +db410c $ tar -jxvf modules.tar.bz2 +db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ +``` + +#### Step 12: Generate the initramfs + +- You should still be in the DragonBoard™ 410c shell + +```shell +db410c $ sudo update-initramfs -k 4.4.0+ -c +``` + +- Copy back the new initramfs +- This will be used when creating the boot.mg + +#### Step 13: Create the device tree image and boot image + +###### Device tree + +```shell +$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom +``` + +###### Boot image + +```shell +$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" +``` + +Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. + +- Flashing the boot image can be done using fastboot +- Board must be booted into fastboot mode +- With USB to microUSB cable still connect execute the following: + +```shell +$ sudo fastboot flash boot boot.img +$ sudo fastboot reboot +``` + +*** + +### How to get and customize the bootloader + +While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. + +The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): + +```shell +git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git +tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +``` + +To build the LK bootloader, you can use the following instructions: + +```shell +git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 +git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 +cd lk +make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- +``` + +The second stage bootloader is flashed on the `about` partition, you can now flash your board with: + +```shell +sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn +``` + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +``` +cd +dpkg-buildpackage -b -us -uc +``` + +#### TO-DO + +- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md new file mode 100644 index 0000000..66afe04 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md @@ -0,0 +1,196 @@ +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md new file mode 100644 index 0000000..ef52214 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md @@ -0,0 +1,155 @@ +[]() +[]() +[]() +[]() +[]() + +>**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Android Bootloader and Boot file + +- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) +- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +#### Step 3: Download all remaining files + +- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) +- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) +- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Android using Fastboot with Linux host + +This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +fastboot devices +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +cd + +#Example: +cd dragonboard410c_bootloader_emmc_android +# = dragonboard410c_bootloader_emmc_android + +# This command will execute the flashall script within the bootloader folder +./flashall + +``` + +5 - **Recall location of all downloaded files from downloads page** + +This will include the files listed below: + +###### Reference Platform files + +- boot.img.tar.xz +- system.img.tar.xz +- userdata.img.tar.xz +- cache.img.tar.xz + +6 - **Unzip all files** + +7 - **Flash all files to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of all extracted(unzipped) files +- `cd` to the directory with your unzipped files +- From within extraction directory, execute the following commands: + +###### Reference Platform + +```shell +# (Once again) Check to make sure fastboot device connected +sudo fastboot devices + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the downloads +sudo fastboot flash boot boot.img +sudo fastboot flash system system.img +sudo fastboot flash userdata userdata.img +sudo fastboot flash cache cache.img +``` + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into Android lock screen. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md new file mode 100644 index 0000000..f45ae71 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md @@ -0,0 +1,326 @@ +# Install Instructions - Reference Software Platform + +This page provides download and installation instructions inteded for those interested in flashing the DragonBoard 410c board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/). + +## Contents + +- [SD Card Method](#sd-card-method) +- [Fastboot Method](#fastboot-method) + +*** + +# SD Card Method + +#### Step 1: Read about the SD Card Method + +The SD card method allows you to place a microSD card into the DragonBoard™ 410c to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host machine (Linux, Mac OS X, or Windows) +- MicroSD card with 4GB or more of storage +- USB Mouse and/or keyboard +- HDMI Monitor with full size HDMI cable + + +*** + +#### Step 2: Download SD Card Image + +[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-debian-jessie-alip-sdcard-*.img.gz) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** + +#### Step 3: Prepare MicroSD card + +- Ensure data from mircoSD card is backed up +- Everything on microSD card will be lost by the end of this procedure. + +*** + +#### Step 4: Find SD Card Device name + +- Use host Linux computer +- Open "Terminal" application +- Remove SD card from host computer and run the following command: +```shell +$ lsblk +``` +- Note all recognized disk names +- **Insert SD card** and run the following command (again): +```shell +$ lsblk +``` +- Note the newly recognized disk. This will be your SD card. +- **Remember** your SD card device name for a later step + +*** + +#### Step 5: Recall Download Location + +- Locate SD card install file from Downloads page. +- This file will be needed for the next step. + +*** + +#### Step 6: Unzip _SD Card Install Image_ + +- When unzipped, you will have a folder with the following contents: + - Linaro/Debian Install Image (.img) + - Readme + + +*** + +#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal + +- Use host Linux computer +- Open "Terminal" application +- `cd` to the directory with your unzipped **Debian SD Card Install Image** + +```shell +$ cd + +#Example: +# = /home/YourUserName/Downloads +#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. +$ cd /home/YourUserName/Downloads +``` + + +*** + +#### Step 8: Locate SD Card Install Image + +- Make sure you are in the extraction directory + +**Unzipped Debian SD Card download will be a folder. This folder should be listed in your directory. Type `ls` from command line for a list of files that can be found in your current directory**: + +```shell +$ ls + +#output +dragonboard410c_sdcard_install_debian-XX +``` + +- Unzipped folder should be called dragonboard410c_sdcard_install_debian-XX, where XX represents the Debian release number +- `cd` into this directory + +```shell +$ cd dragonboard410c_sdcard_install_debian-XX +``` + +- Inside this folder you will find the install image + - `db410c_sd_install_debian.img` +- This `.img` file is what will be flashed to your SD Card. + + +*** + +#### Step 9: Install Image onto SD Card + +**Checklist:** + +- SD card inserted into host Linux computer +- Recall SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name) +- From within the dragonboard410c_sdcard_install_debian-XX folder, using the Terminal execute the following commands: + +**Execute:** + +```shell +$ sudo dd if=db410c_sd_install_debian.img of=/dev/XXX bs=4M oflag=sync status=noxfer +``` + +**Note:** + +- `if=db410c_sd_install_debian.img`: should match the name of the image that was downloaded. +- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name). Be sure to use the device name with out the partition. +- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. +- Once SD card is done flashing, remove from host computer and set aside for a later step + +*** + +#### Step 10: Prepare DragonBoard™ 410c with SD card + +- Make sure DragonBoard™ 410c is unplugged from power +- Set S6 switch on DragonBoard™ 410c to `0-1-0-0`, "SD Boot switch" should be set to "ON". + - Please see "1.1 Board Overview" on page 7 from [DragonBoard™ 410c Hardware Manual](http://linaro.co/96b-hwm-db) if you cannot find S6 +- Connect an HDMI monitor to the DragonBoard™ 410c with an HDMI cable, and power on the monitor +- Plug a USB keyboard and/or mouse into either of the two USB connectors on the DragonBoard™ 410c +- Insert the microSD card into the DragonBoard™ 410c +- Plug power adaptor into DragonBoard™ 410c, wait for board to boot up. + +*** + +#### Step 11: Install RPB Linaro/Debian onto DragonBoard™ 410c + + + +- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your DragonBoard™ 410c +- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory +- This process can take a few minutes to complete +- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. + +Before clicking "OK": + +- Remove the SD Card +- Set S6 switch on DragonBoard™ 410c to `0-0-0-0`, all switches should be set to "OFF" +- Now click "OK" button and allow DragonBoard™ 410c to reboot. + +**Congratulations! You are now booting your newly installed operating system directly from eMMC on the DragonBoard™ 410c!** + +[Back to top](#install-instructions---reference-software-platform) + +*** + +# Fastboot Method + + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- DragonBoard™ 410c with power supply +- Host Linux machine +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian Bootloader + +- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) + +#### Step 3: Download Boot image and Root file system + +- Debian Boot ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) +- Debian Rootfs (Desktop) ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) + +>Note the location of all downloads, they will be needed once you access your instruction set + +*** +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Connect host computer to DragonBoard™ 410c** + +- DragonBoard™ 410c must be powered off (unplugged from power) +- Make sure microSD card slot on DragonBoard™ 410c is empty +- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position +- Connect USB to microUSB cable from host computer to DragonBoard™ 410c + +3 - **Boot DragonBoard™ 410c into fastboot mode** + +**Please read all bullet points before attempting** + +- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on +- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in +- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. +- Wait for about 20 seconds. +- Board should boot into fastboot mode. + +From the connected host machine terminal window, run the following commands: + +```shell +# Check to make sure device is connected and in fastboot mode + +$ fastboot devices +``` + +Typically it will show as bellow +```shell +de82318 fastboot +``` + +**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** + +4 - **Flash Bootloader** + +- Use host computer +- Open "Terminal" application +- Recall location of Bootloader download. +- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` +- XX represents the release number of the Bootloader +- `cd` to the directory with your unzipped **Bootloader Folder** + +```shell +$ cd + +#Example: +cd /Users/YourUserName/Downloads +# = /Users/YourUserName/Downloads +#For this example we assume the "Bootloader" is in the Downloads folder. + + +$ cd + +#Example: +cd dragonboard410c_bootloader_emmc_linux-40 +# = dragonboard410c_bootloader_emmc_linux-40 +#This example took place during release 40 + +# This command will execute the flashall script within the bootloader folder +$ ./flashall + +``` + +5 - **Recall location of `boot` and `rootfs` download from the downloads page** + +- You should have downloaded the `boot` file +- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) + +6 - **Unzip both 'boot' and 'rootfs' files** + +7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** + +- Use host computer +- Use "Terminal" application +- Recall location of extracted(unzipped) `boot` file +- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) +- `cd` to the directory with your unzipped `boot` and `rootfs` files +- From within extraction directory, execute the following commands: + +```shell +# (Once again) Check to make sure fastboot device connected +$ sudo fastboot devices +# It will show similar to bellow if the device is connected successfully +de82318 fastboot + +# cd to the directory the boot image and were extracted +$ cd + +# Make sure you have properly unzipped the boot and rootfs downloads +$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img +$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img +``` +**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. + +8 - **Reboot DragonBoard™ 410c** + +- Unplug power to DragonBoard™ 410c +- Unplug micro USB cable from DragonBoard™ 410c +- Ensure HDMI connection to monitor +- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) +- Plug power back into DragonBoard™ 410c +- Wait for board to boot up +- Board will boot into either command line or desktop depending on rootfs + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the DragonBoard™ 410c!** + +[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md new file mode 100644 index 0000000..d64f135 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md @@ -0,0 +1,212 @@ +## OpenEmbedded RPB 16.03 - Build from Source + +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. + +# Introduction + +This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: +* http://openembedded.org/wiki/Main_Page +* http://yoctoproject.org/ +* https://www.yoctoproject.org/documentation + +In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. + +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. + +The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. + +## OE Layers + +| Layer | Description | +|:-----------------------:|:----------------------| +| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | +| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | +| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | +| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | +| Meta-qt5 | This is a cross-platform toolkit. | +| Meta-linaro | This layer is used to get the Linaro toolchain. | +| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | +| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | + +# Package Dependencies + +In order to successfully set up your build environment, you will need to install the following package dependencies. + +**Step 1**: You will need git installed on your Linux host machine + +`$ sudo apt-get install git` + +**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need + +http://www.openembedded.org/wiki/Getting_started + +**Step 3**: Install 96Boards specific dependencies (Case specific) + +Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: + + +`$ sudo apt-get install whiptail` + +or + +`$ sudo apt-get install dialog` + +**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` + +`deb http://archive.ubuntu.com/ubuntu/ xenial universe` + +```shell +$ cd /etc/apt/ +#vim text editor is used in this example +#sudo is used to allow editing, sources.list is set to read only +$ sudo vim sources.list +``` + +All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. + + +# Setup the build environment + +The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. + +To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): + + mkdir -p ${HOME}/bin + curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo + chmod a+x ${HOME}/bin/repo + export PATH=${HOME}/bin:${PATH} + +To initialize your build environment, you need to run: + + mkdir oe-qcom && cd oe-qcom + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro + repo sync + source setup-environment [] + +* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. +* you will be prompted to choose the target machine, pick `dragonboard-410c` +* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' +* is optional, if missing it will default to `build-$DISTRO` + +The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. + +# Build a minimal, console-only image + +To build a console image, you can run: + + $ bitbake rpb-console-image + +At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: +* `rpb-console-image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +# Bootloaders and eMMC partitions + +Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. + +Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: +* remove power from your DragonBoard +* plug a USB cable from your development host to your DragonBoard's J4 connector +* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter +* after a few seconds you can release S4 + +To verify your cables and that the above procedure worked, on your development host run: + + # sudo fastboot devices + +and you should get a non-empty response, e.g. + + # sudo fastboot devices + 83581d40 fastboot + +If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. + +The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: +* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) +* unzip its contents +* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package + +At this point your eMMC has the following partition layout: + +* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) +* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) +* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system + +# Flashing build artifacts + +In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. + +At the end of any successful build you will end up with the following artifacts (amongst others) +* `image-dragonboard-410c.ext4.gz` and +* `boot-dragonboard-410c.img` + +These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. + +To install these to your DragonBoard's eMMC from your development host: + + # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 + # fastboot flash rootfs image-dragonboard-410c.ext4 + # fastboot flash boot boot-dragonboard-410c.img + +# Proprietary firmware blob + +When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... + +If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. + +If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). + +# Build a simple X11 image + +To build an X11 image with GPU hardware accelerated support run: + + $ bitbake rpb-desktop-image + +At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. + +Then you can finally start the X server, and run any graphical application: + + X& + export DISPLAY=:0 + glxgears + +The default X11 image includes `openbox` window manager, to use it: + + X& + export DISPLAY=:0 + openbox & + glxgears + +Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: + + CORE_IMAGE_EXTRA_INSTALL += "metacity" + +and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: + + X& + export DISPLAY=:0 + metacity& + glxgears + +# Build a sample Wayland/Weston image + +For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: + + $ bitbake rpb-weston-image + +This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. + +If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: + + weston-launch + +And that should get you to the Weston desktop shell. + +# Support + +For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). + +For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md new file mode 100644 index 0000000..cb2b5f5 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md @@ -0,0 +1,17 @@ +## Dragonboard™ 410c - Reference Platform Build - 16.06 + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. + +*** + +| **CE Debian RPB - 16.06** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB-16.06.md) | +| [Build from Source](BFSDebianRPB-16.06.md) | +| [Known issues](../../../Known-Issues.md) | + +*** + +- Access generic **OpenEmbedded** build from source instructions [here](../../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md new file mode 100644 index 0000000..8823ad6 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md @@ -0,0 +1,46 @@ +## AOSP RPB 16.03 - Build from Source + +Additional AOSP repositories are hosted here: +- https://github.com/96boards/android_hardware_ti_wpan +- https://github.com/96boards/android_device_linaro_hikey +- https://github.com/96boards/android_manifest +- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) + +**Build setup:** + +Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) + +###### Out of date: +NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): + +```shell + ALL= NOPASSWD: /bin/mount + ALL= NOPASSWD: /bin/umount + ALL= NOPASSWD: /sbin/mkfs.fat + ALL= NOPASSWD: /bin/cp +``` + +*** + +**Download the code:** + +```shell +mkdir android/ +cd android/ +``` + +Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 + +**Build the image:** + +```shell +repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" +cd .repo/ +git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests +cd - +repo sync -j8 +source build/envsetup.sh +lunch hikey-userdebug +make droidcore -j8 +cd out/target/product/hiked +``` diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md new file mode 100644 index 0000000..6c74c11 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md @@ -0,0 +1,182 @@ +## Debian RPB 16.06 - Build from Source + +- Building Linux Kernel from Source + - Step 1: Setting up your environment on your host computer + - Step 2: Download the Linaro cross compiler toolchain + - Step 3: Export path to cross compiler tool and confirm version + - Step 5: Set the right kernel .config file + - Step 6: Build kernel image and debian package + - Step 7: Find HiKey IP Address + - Step 8: Transfer the modules to the target HiKey + - Step 9: Generate the initramfs + - Step 10: Create the device tree image and boot image +- Customize Bootloader +- Build Rootfs from source + +*** + +#### Building the Linux kernel from source + +The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) + +```shell +git: https://github.com/96boards/linux +Dynamic tag: 96b-kernelci +Fixed tag: 96b/releases/2016.06 +defconfig: arch/arm64/configs/distro.config +``` + +The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. + +The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) + +To build the Linux kernel, you can use the following instructions: + +#### Step 1: Setting up your environment on your host computer + +- Open your Terminal and cd into your desired directory +- Make a new folder using `mkdir`, name it something relevant + +```shell +#Example of desired directory +$ cd ~/Desktop + +#Example of relevant folder +$ mkdir HiKey-16.06 +$ cd HiKey-16.06 +``` + +#### Step 2: Step 2: Download the Linaro cross compiler toolchain + +- From within the directory you just made +- Download and unzip by executing the following commands + +###### Linaro Cross Compiler + +```shell +#Download +$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +#Unzip +$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz +``` + +#### Step 3: Export path to cross compiler tool and confirm version + +- Exporting path will allow build system can find and use the right kernel + +```shell +#Create path +$ export PATH=~/Desktop/HiKey-16.06/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH +#Check version +$ aarch64-linux-gnu-gcc --version +aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +``` + +#### Step 4: Clone the Reference Platform kernel + +- **96b-kernelci** is the development branch +- This branch will have the latest changes +- Use **96b/releases/2016.06** if you want the same version used by the 16.06 release + +```shell +$ git clone -b 96b/releases/2016.06 http://github.com/96boards/linux.git +``` + +- Cloning the kernel may take a few minutes +- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process +- Once kernel source has been cloned cd into its directory + +```shell +$ cd linux +``` + +#### Step 5: Set the right kernel .config file + +- This step creates the '.config' file +- The .config file is used by the build system when compiling the kernel +- Current Reference Platform config can be made by using distro.config +- From with in kernel directory execute the following command: + +```shell +$ cp arch/arm64/configs/distro.config .config +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig +``` + +- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder +- To view all current configuration the .config file can be opened with a text editor such a `vim` + +#### Step 6: Build kernel image and debian package + +- This step will take some time (~20-30 minutes or more), depending on your cpu/memory +- Creating the kernel package is recommended for HiKey, as it supports Grub 2 + +```shell +#Replace X from -jX with the number of cores on your host computer +$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag +``` + +#### Step 7: Find HiKey IP Address + +- On your HiKey board +- Connect to the internet through WIFI +- Open one of the Terminal applications + +```shell +$ /sbin/ifconfig +``` +- Look for your `wlan0` connection +- Here you will see an `inet addr` +- This is your board's IP address and should look something like this: `192.168.0.10` + +#### Step 8: Transfer the modules to the target HiKey + +- Using your board's IP Address for linaro@ + +```shell +$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ +$ ssh linaro@192.168.1.15 +#HiKey shell + +$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb +``` +Congratulations! Your new kernel is now ready to be used by your HiKey. + +- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel +- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated + +### Boot Loader + +Please see go [here](BuildSourceBL.md) for instructions on how to built the boot loader from source. + +#### How to get and customize Debian packages source code + +This release is based on Debian 8.2 "Jessie". + +Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: + +```shell +sudo apt-get update +sudo apt-get upgrade +``` + +All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: + +```shell +sudo apt-get update +sudo apt-get build-dep +apt-get source +``` + +Then you can rebuild the package locally with: + +```shell +cd +dpkg-buildpackage -b -us -uc +``` + +#### TODO + +* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md new file mode 100644 index 0000000..9dce74b --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md @@ -0,0 +1,86 @@ +## HiKey Bootloader - Building from source + +The source code is available from: +- [**l-loader**](https://github.com/96boards-hikey/l-loader) +- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) +- [**OP-TEE**](https://github.com/OP-TEE/optee_os) +- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) + +Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. + +### Build instructions + +Prerequisites: +- GCC 5.3 cross-toolchain for Aarch64 available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) +- GCC 5.3 cross-toolchain for gnueabihf available in your PATH + - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) +- GPT fdisk (gdisk package from your favorite distribution). + +#### Installing pre-built toolchain(s) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +```shell +git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git +git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git +git clone https://github.com/OP-TEE/optee_os.git +git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git +git clone https://github.com/96boards-hikey/l-loader.git +git clone -b hikey-aosp https://github.com/96boards-hikey/uefi-tools.git +``` + +#### Building EDK2/UEFI for HiKey + +Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. + +To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export EDK2_DIR=${PWD}/edk2 +export OPTEE_DIR=${PWD}/optee_os +export ATF_DIR=${PWD}/arm-trusted-firmware +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${EDK2_DIR} +rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg +${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} -s ${OPTEE_DIR} hikey +``` + +And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): + +```shell +cd ../l-loader +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin +ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin +make # requires sudo for creating the partition tables +``` + +The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. + +#### EFI boot partition + +The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). + +```shell +wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi +mkdir boot-fat +dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 +sudo mkfs.fat -n "boot" boot-fat.uefi.img +sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat +sudo mkdir -p boot-fat/EFI/BOOT +sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi +sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi +sudo umount boot-fat +sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img +rm -rf boot-fat +``` + +Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md new file mode 100644 index 0000000..317256b --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md @@ -0,0 +1,126 @@ +#### Your Build Choice + +[]() +[]() +[]() +[]() +[]() + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download the following files + +>Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +Build Folders (**Binaries** / **Image**) + +- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) +- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) +- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) +- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) +- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) +- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) +- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) +- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) +- **system.img.tar.xz** (**Download**) + +*** + +#### Step 3: Install AOSP Using Fastboot with Linux host + +This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready + +3 - **Set HiKey into Recovery Mode using J15 header** + +- Remove link between pins 5 and 6 +- Link pins 1 and 2 +- Link pins 3 and 4 + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | closed +GPIO3-1 | Link 5-6 | open + +4 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable ptable-aosp-8g.img +$ sudo fastboot reboot +$ sudo fastboot flash boot boot_fat.uefi.img +$ sudo fastboot flash cache cache.img +$ sudo fastboot flash system system.img +$ sudo fastboot flash userdata userdata-8gb.img +``` + +5 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 3-4 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md new file mode 100644 index 0000000..d14bb67 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -0,0 +1,265 @@ +# Install Instructions - Reference Software Platform + +This page provides download and installation instructions inteded for those interested in flashing the HiKey board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/). + +## Contents + +- [SD Card Method](#sd-card-method) +- [Fastboot Method](#fastboot-method) + +*** + +# SD Card Method + + + + + + + +#### Step 1: Read about the SD Card Method + +The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. + +This method requires the following hardware: +- HiKey with power supply +- Host Linux machine (Linux, Mac OS X, or Windows) +- MicroSD card with 4GB or more of storage +- USB Mouse and/or keyboard +- HDMI Monitor with full size HDMI cable + + +*** +#### Step 2: Download SD Card Image + +**Debian Linux Reference Software Platform - SD Card Image** + +[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-debian-jessie-alip-sdcard-*.img.gz) + +*** + +#### Step 3: Prepare MicroSD card + +- Ensure data from mircoSD card is backed up +- Everything on microSD card will be lost by the end of this procedure. + +*** + +#### Step 4: Find SD Card Device name + +- Use host Linux computer +- Open "Terminal" application +- Remove SD card from host computer and run the following command: +```shell +lsblk +``` +- Note all recognized disk names +- **Insert SD card** and run the following command (again): +```shell +lsblk +``` +- Note the newly recognized disk. This will be your SD card. +- You will need to remember this device name for a later step. + +*** + +#### Step 5: Recall Download Location + +- Locate SD card install file from Downloads page. +- This file will be needed for the next step. + +*** + +#### Step 6: Unzip _SD Card Install Image_ + +- When unzipped, you will have a folder with the following contents: + - Linaro/Debian Install Image (.img) + - Readme + +*** + +#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal + +- Use host Linux computer +- Open "Terminal" application +- `cd` to the directory with your unzipped **SD Card Install Image** + +```shell +cd + +#Example: +# = /home/YourUserName/Downloads +#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. +cd /home/YourUserName/Downloads +``` + +*** + +#### Step 8: Install Image onto SD Card + +**Checklist:** + +- SD card inserted into host Linux computer +- Recall SD Card device name **Step 4** +- From within the extraction folder, using the Terminal execute the following commands: + +**Execute:** + +```shell +sudo dd if=hikey-jessie_alip_2015MMDD-nnn.img of=/dev/XXX bs=4M oflag=sync status=noxfer +``` + +**Note:** + +- `if=hikey-jessie_alip_2015MMDD-nnn.img`: should match the name of the image that was downloaded. +- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](). Be sure to use the device name with out the partition. +- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. +- Once SD card is done flashing, remove from host computer and set aside for a later step + + +*** + +#### Step 9: Prepare HiKey with SD card + +- Make sure HiKey is unplugged from power +- Connect an HDMI monitor to the HiKey with an HDMI cable, and power on the monitor +- Plug a USB keyboard and/or mouse into either of the two USB connectors on the HiKey +- Insert the microSD card into the HiKey +- Plug power adaptor into HiKey, wait for board to boot up. + +*** + +#### Step 10: Install Linaro/Debian onto HiKey + + + +- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your HiKey +- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory +- This process can take a few minutes to complete +- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. + +Before clicking "OK": + +- Remove the SD Card +- Now click "OK" button and allow HiKey to reboot. + +**Congratulations! You are now booting your newly installed operating system directly from eMMC on the HiKey** + +[Back to top](#install-instructions---reference-software-platform) + +*** + +# Fastboot Method + + + + + + + +*** + +#### Step 1: Read about the Fastboot Method + +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. + +This method requires the following hardware: +- HiKey with power supply +- Host Linux machine (Linux, Mac OS X, or Windows) +- USB to microUSB cable +- USB Mouse and/or keyboard (not required to perform flash) +- HDMI Monitor with full size HDMI cable (not required to perform flash) + +*** + +#### Step 2: Download Debian partition table + +> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. + +- All HiKey **CircuitCo boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 2G boards** will use the **8G files** + +**ptable-linux.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-8g.img)) + +*** + +#### Step 3: Download Boot image and Root File System + +- **Debian Boot** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-boot-linux-*.uefi.img.gz)) +- **Debian Rootfs** (**Download**) + +*** + +#### Step 4: Install Debian Using Fastboot with Linux host + +This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. + + + +1 - **Make sure fastboot is set up on host computer** + +- Android SDK “Tools only” for Linux can be downloaded here +- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. +- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. + +If you are still having trouble setting up fastboot, click here for a short tutorial video + +2 - **Boot HiKey into Fastboot mode using J15 header** + +- Link pins 1 and 2 +- Link pins 5 and 6 +- Connect host computer to HiKey board using USB to microUSB cable + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | closed + +- Power on HiKey board by plugging in power adapter +- Esure HiKey is detected by host computere +- Wait for about 10 seconds +- Open Terminal application and execute the following: + +```shell +$ sudo fastboot devices +0123456789abcdef fastboot +``` + +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Installation/BoardRecovery.md) and return to this step once your board is ready + +3 - **Install Operating System update using downloaded files** + +>**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. + +```shell +$ sudo fastboot flash ptable .img +$ sudo fastboot reboot +$ sudo fastboot flash boot .uefi.img +$ sudo fastboot flash system hikey-rootfs-debian-jessie-alip-YYYYMMDD-nnn.emmc.img +``` + +4 - **Reboot HiKey into new OS** + +- Wait untill all files have been flashed onto HiKey board +- Power down HiKey by unplugging the power adapter +- Remove microUSB cable from HiKey +- Remove Link 5-6 from J15 header + +Name | Link | State +---- | ---- | ----- +Auto Power up | Link 1-2 | closed +Boot Select | Link 3-4 | open +GPIO3-1 | Link 5-6 | open + +- Plug mouse/keyboard USB into type A USB ports +- Power up HiKey by plugging in power adapter + + +**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. + +**Congratulations! You are now booting your newly installed OS directly +from eMMC on the HiKey!** + +[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/README.md new file mode 100644 index 0000000..7f936e4 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/README.md @@ -0,0 +1,31 @@ +## Reference Platform Build - 16.06 + + +- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. +- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. +- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. + +*** + +#### HiKey + + +| **CE Debian RPB - 16.06** | +|:-----------------------------:| +| [Install Instructions](InstallDebianRPB.md) | +| [Build from Source](BFSDebianRPB.md) | +| [Known issues](../../../Known-Issues.md) | + + + +| **CE AOSP** | +|:---------------------------:| +| [Install Instructions](https://source.android.com/source/devices.html) | +| [Known issues](../../../Known-Issues.md) | + + + +*** + +- Access **bootloader** build from source instructions [here](BuildSourceBL.md) +- Access **OpenEmbedded** build from source instructions [here](../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Cello/README.md new file mode 100644 index 0000000..7fa5dc9 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Cello/README.md @@ -0,0 +1,58 @@ +### LeMaker Cello + +*** + +### Critical Bug List + +As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once the Realtek UEFI driver gets integrated as part of OpenPlatformPkg, it will also be possible to PXE boot the installer. + +Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Distro Installers + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D02/README.md new file mode 100644 index 0000000..43547db --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D02/README.md @@ -0,0 +1,59 @@ +### D02 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### D02 - QuickStart + +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D03/README.md new file mode 100644 index 0000000..5802a3c --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D03/README.md @@ -0,0 +1,59 @@ +### D03 + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### D03 - QuickStart + +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md new file mode 100644 index 0000000..2b6ff67 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -0,0 +1,47 @@ +### HP ProLiant m400 + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Overdrive/README.md new file mode 100644 index 0000000..3b4fd01 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Overdrive/README.md @@ -0,0 +1,59 @@ +### Overdrive + +*** + +### Boot Firmware + +The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Quick Start + +#### AMD Overdrive + +UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). + +**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! + + +##### Flashing the firmware + +Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md new file mode 100644 index 0000000..fc8e51e --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md @@ -0,0 +1,46 @@ +## Qualcomm QDF2432 Server Development Platform + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/README.md @@ -0,0 +1 @@ + diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/ThunderX/README.md new file mode 100644 index 0000000..db5c79b --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/ThunderX/README.md @@ -0,0 +1,46 @@ +### Cavium ThunderX + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md new file mode 100644 index 0000000..bd2077f --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md @@ -0,0 +1,48 @@ +### X-Gene Mustang + +*** + +### Boot Firmware + +TBD + +### Reference Platform Kernel + +The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) + +Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). + +At the time of the 16.06 release, the kernel is based on *4.4.11*. + +### Network Installers + +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). + +Install instructions for the tested/supported distributions: +* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) + + + +#### Other distributions + +Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). + +Extra resources for other distributions: +* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) + +### Enterprise Software Components + +#### OpenStack + +Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. + +#### Hadoop (ODPi BigTop) + +##### Installation + +Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop + +##### Setup and Running Hadoop + +Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/Highlights.md b/Reference-Platform/Platforms/IoT/RPB_16.06/Highlights.md new file mode 100644 index 0000000..0f94f24 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/Highlights.md @@ -0,0 +1,96 @@ +### Highlights for 16.06 release: + +*** + +###### Consumer and Enterprise Edition: + +#### Kernel + +- Unified tree shared between the CE and EE builds. +- 4.4.11-based, including some under-review topic branches to extend the features and platform hardware support. +- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. +- Added OP-TEE support + - Enabled on HiKey and Juno-r1 +- Supports Reference HW platforms HiKey and Cello + - Other Test Platforms include: Dragonboard 410c, Hisilicon D02 and D03, APM X-Gene, HP Proliant m400, AMD Overdrive, Qualcomm QDF2432 Server Development Platform, and Cavium ThunderX. +- Single kernel config for all platforms in arch/arm64/configs/distro.config +- Single kernel binary (package) for all platforms + +#### Bootloader + +- UEFI OpenPlatformPkg (upstream) now contains reference implementations for Huawei D02/D03, AMD Overdrive and LeMaker Cello +- U-boot support in DB410c images to allow easier handling of images + +*** + +###### Consumer Edition: + +#### Reference hardware platform: +- LeMaker Hikey + +#### Other supported test platforms: +- Dragonboard 410c + +#### Overall CE Debian platform features, validated as part of the release: +- UEFI with DT +- Upgrade to Debian 8.5 "Jessie" +- Upgrade to the unified 4.4.11 Linux Kernel +- Upgrade graphics components: Mesa 11.1.2 and XServer 1.17.3a +- Rootfs automatically resized during the first boot + +#### CE Debian RPB for HiKey: +- OP-TEE integrated by default +- UEFI updated to use the latest development trees based on Tianocore + - OpenPlatformPkg + +#### CE Debian build for DragonBoard™ 410c: +- U-boot chain-loaded from LK + +#### CE OE/Yocto RPB: +- First OpenEmbedded-based RPB, including several changes and components merged from the LHG OE layers +- Dragonboard 410c and HiKey support +- HiKey features: + - OP-TEE initial support + - Mali support for HiKey +- Dragonboard 410c features: + - GPU, WLAN, BT, audio, LS I/O, camera and GPS + +*** + +###### Enterprise Edition + +#### Reference hardware platform: +- LeMaker Cello + +#### Other supported test platforms: +- AMD Overdrive A0 and B0 +- Hisilicon D02 +- Hisilicon D03 (new) +- APM X-Gene Mustang +- HP ProLiant m400 +- Qualcomm QDF2432 Server Development Platform (new) +- Cavium ThunderX (new) + +#### Overall platform features, validated as part of the release: +- UEFI with ACPI +- KVM +- PCIe + +#### Firmware: +- UEFI OpenPlatformPkg (upstream) now contains reference implementation for Huawei D02/D03, AMD Overdrive and LeMaker Cello + +#### Network Installers: +- Debian: + - Upgrade to Debian 8.5 "Jessie" + - Use the unified 4.4.11 kernel +- CentOS + - Based on CentOS 7.2 16.03 + - Use the unified 4.4.11 kernel + +#### Enterprise Components: +- Docker 1.9.1 +- OpenStack Liberty for Debian Jessie and CentOS +- ODPi 1.0.0 based Hadoop +- Spark 1.3.1 +- OpenJDK 8 +- QEMU 2.6 diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/Known-Issues.md b/Reference-Platform/Platforms/IoT/RPB_16.06/Known-Issues.md new file mode 100644 index 0000000..fb56320 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/Known-Issues.md @@ -0,0 +1,47 @@ +# Reference Platform Build - 16.06 Release - Known Issues + +## Fixed Issues + +These lists group all **fixed RPB issues** into their repective categories. Underlying Consumer and Enterprise Edition boards, and their bug fixes are grouped under a single page for convenience and quick reference. + +| Fixed Issues | | +|:---|:----| +| Enterprise | (Full List) | +| Conssumer | HiKey / DragonBoard 410c | + +[Report a bug](Report-a-bug.md) + +## Current Issues + +These lists group all **current and unfixed bugs** into their respective categories. Basic bug summaries and descriptions are available on Bugzilla, links to each full lists of bugs are available for convenience and quick reference. + +| Enterprise | Known Issues | +|:-----------|:---| +| Cello/Overdrive | (Full List) | +| APM/HP-m400 | (Full List) | +| D02 | (Full List) | +| D03 | (Full List) | +| Qualcomm QDF2432 Server Development Platform | (Full List) | +| ThunderX | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Consumer | Known Issues | +|:-----------|:---| +| HiKey | (Full List) | +| DragonBoard 410c | (Full List) | + +[Report a bug](Report-a-bug.md) + +*** + +| Bug Legend | | +|:-----:|:-------| +| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | +| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | +| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | +| VERIFIED | A team has VERIFIED a working solution for a bug | + +*** diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/README.md b/Reference-Platform/Platforms/IoT/RPB_16.06/README.md new file mode 100644 index 0000000..1a9666f --- /dev/null +++ b/Reference-Platform/Platforms/IoT/RPB_16.06/README.md @@ -0,0 +1,24 @@ +# Reference Software Platform - 16.06 + +[RPB 16.06 Highlights](Highlights.md) | [RPB 16.06 Known Issues](Known-Issues.md) + +## Choose your Hardware + +#### Consumer Edition + +- [HiKey](ConsumerEdition/HiKey/README.md) +- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) + +#### Enterprise Edition +- [LeMaker Cello](EnterpriseEdition/Cello/README.md) +- [D02](EnterpriseEdition/D02/README.md) +- [D03](EnterpriseEdition/D03/README.md) +- [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) +- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) +- [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) +- [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) +- [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) + +Visit our [Components Downloads Page](https://builds.96boards.org/releases/reference-platform/components/) + +*** diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index e586c7b..6edac6c 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -6,16 +6,15 @@ The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) -**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) +**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md) / [IoT](Extras/ReleaseStatus/RPB-IoT-Release.md)) *** -## Choose your Release +## Choose your Platform: - - **[16.06(Latest)](Releases/RPB_16.06/README.md)** - - [16.03](Releases/RPB_16.03/README.md) - - [15.12](Releases/RPB_15.12/README.md) - - [15.10(Alpha)](Releases/RPB_15.10/README.md) +- [Consumer](Platforms/Consumer/README.md) +- [Enterprise](Platforms/Enterprise/README.md) +- [IoT](Platforms/IoT/README.md) *** From d220bbdd1e9a96fc56d2a77362abb104859a4c5c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:36:52 -0800 Subject: [PATCH 080/268] First change, new CRP landing page Signed-off-by: Robert Wolff --- .../Platforms/Consumer/README.md | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 9db0980..5e05c7f 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -1,36 +1,35 @@ # Reference Software Platform - Legacy - +The Consumer Reference Platform aims to enable the latest software on a series of embedded hardware platforms. Open source boot firmware and a unified Linux kernel delivers an excellent starting point for your next embedded product. High level components such as ROS, and a standard GPIO library are included to help accelerate robotic enthusiasts and makers. The consumer software stack provides two builds based on Debian and OpenEmbedded. A graphic user interface is included for each variant, and both are validated to ensure quality and a great user experience. - -The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. -For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) - -**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) +## Features + - Unified Linux Kernel + - Open Boot Firmware + - Debian and OpenEmbedded Builds + - Desktop Enviroment + - ROS (Robot OS) + - Standard GPIO Library *** -| | | | -|:---:|:---:|:---:| -| | | | +## Contents - - - - - **[16.06(Latest)](Releases/RPB_16.06/README.md)** - - [16.03](Releases/RPB_16.03/README.md) - - [15.12](Releases/RPB_15.12/README.md) - - [15.10(Alpha)](Releases/RPB_15.10/README.md) +- [Getting Started](GettingStarted/README.md) + - Learn more about the Consumer Reference Platform, this is an ideal place to start. +- [Installation](Installation/README.md) + - Choose and install an operating system on your HiKey +- [Downloads](Downloads/README.md) + - Already familiar with your 96Boards? Skip the board bring up sections and go straight to your download! +- [Hardware](HardwareDocs/README.md) + - Explore the Reference Platform from the Hardware side +- [Troubleshooting](Troubleshooting/README.md) + - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers *** #### Resources -| Extras and Support | Progress and Policy | -|:-----------------------------------------------------:|:-----------------------------------------:| -| [RPB CI](Extras/RPB-CI.md) | [Kernel Policy](Extras/KernelPolicy.md) | -| [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| -| [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | +[Previous Releases](PreviousReleases/README.md) *** From d379380718cd31a6f100032af14f2824a88185a4 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:40:49 -0800 Subject: [PATCH 081/268] Adjustments made for RP descriptions Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 5e05c7f..11ce23c 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -17,11 +17,11 @@ The Consumer Reference Platform aims to enable the latest software on a series o - [Getting Started](GettingStarted/README.md) - Learn more about the Consumer Reference Platform, this is an ideal place to start. - [Installation](Installation/README.md) - - Choose and install an operating system on your HiKey + - Installation and build instructions for a variety of your Reference Platform components - [Downloads](Downloads/README.md) - - Already familiar with your 96Boards? Skip the board bring up sections and go straight to your download! + - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from the Hardware side + - Explore the Reference Platform from a Hardware - [Troubleshooting](Troubleshooting/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers @@ -29,8 +29,5 @@ The Consumer Reference Platform aims to enable the latest software on a series o #### Resources -[Previous Releases](PreviousReleases/README.md) - -*** - -[Document Contribution Policy](../ContributionPolicy.md) +- [Previous Releases](PreviousReleases/README.md) +- [Document Contribution Policy](../ContributionPolicy.md) From e625d34010e987eab64864a94f0a50f3cb0cf669 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:41:48 -0800 Subject: [PATCH 082/268] Changed title Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 11ce23c..3a5320c 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -1,4 +1,4 @@ -# Reference Software Platform - Legacy +# Consumer Reference Platform - Documentation The Consumer Reference Platform aims to enable the latest software on a series of embedded hardware platforms. Open source boot firmware and a unified Linux kernel delivers an excellent starting point for your next embedded product. High level components such as ROS, and a standard GPIO library are included to help accelerate robotic enthusiasts and makers. The consumer software stack provides two builds based on Debian and OpenEmbedded. A graphic user interface is included for each variant, and both are validated to ensure quality and a great user experience. From 8226efbbc61205e3803a8fec3e4081d2af322255 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:43:15 -0800 Subject: [PATCH 083/268] Landing page content for Enterprise RP Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/README.md | 48 +++++++++---------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 9db0980..0290b73 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -1,37 +1,33 @@ -# Reference Software Platform - Legacy +# Consumer Reference Platform - Documentation - +The Consumer Reference Platform aims to enable the latest software on a series of embedded hardware platforms. Open source boot firmware and a unified Linux kernel delivers an excellent starting point for your next embedded product. High level components such as ROS, and a standard GPIO library are included to help accelerate robotic enthusiasts and makers. The consumer software stack provides two builds based on Debian and OpenEmbedded. A graphic user interface is included for each variant, and both are validated to ensure quality and a great user experience. - -The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. -For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) - -**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) +## Features + - Unified Linux Kernel + - Open Boot Firmware + - Debian and OpenEmbedded Builds + - Desktop Enviroment + - ROS (Robot OS) + - Standard GPIO Library *** -| | | | -|:---:|:---:|:---:| -| | | | +## Contents - - - - - **[16.06(Latest)](Releases/RPB_16.06/README.md)** - - [16.03](Releases/RPB_16.03/README.md) - - [15.12](Releases/RPB_15.12/README.md) - - [15.10(Alpha)](Releases/RPB_15.10/README.md) +- [Getting Started](GettingStarted/README.md) + - Learn more about the Enterprise Reference Platform, this is an ideal place to start. +- [Installation](Installation/README.md) + - Installation and build instructions for a variety of your Reference Platform components +- [Downloads](Downloads/README.md) + - Skip straight to your Reference Platform downloads +- [Hardware](HardwareDocs/README.md) + - Explore the Reference Platform from the Hardware side +- [Troubleshooting](Troubleshooting/README.md) + - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers *** #### Resources -| Extras and Support | Progress and Policy | -|:-----------------------------------------------------:|:-----------------------------------------:| -| [RPB CI](Extras/RPB-CI.md) | [Kernel Policy](Extras/KernelPolicy.md) | -| [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| -| [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | - -*** - -[Document Contribution Policy](../ContributionPolicy.md) +- [Previous Releases](PreviousReleases/README.md) +- [Document Contribution Policy](../ContributionPolicy.md) From 5c65b7b40b245e5ea9bb3ac74f63eef2d11db44f Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:44:56 -0800 Subject: [PATCH 084/268] Changed some content to reflect ERP Added Enterprise description and title Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 0290b73..8c7ba44 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -1,14 +1,14 @@ -# Consumer Reference Platform - Documentation +# Enterprise Reference Platform - Documentation -The Consumer Reference Platform aims to enable the latest software on a series of embedded hardware platforms. Open source boot firmware and a unified Linux kernel delivers an excellent starting point for your next embedded product. High level components such as ROS, and a standard GPIO library are included to help accelerate robotic enthusiasts and makers. The consumer software stack provides two builds based on Debian and OpenEmbedded. A graphic user interface is included for each variant, and both are validated to ensure quality and a great user experience. +The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. ## Features - - Unified Linux Kernel - - Open Boot Firmware - - Debian and OpenEmbedded Builds - - Desktop Enviroment - - ROS (Robot OS) - - Standard GPIO Library +- Unified Linux Kernel +- Open Boot Firmware + - Compliant with ARM SBSA and SBBR specifications +- Debian and Centos Network Installers +- Openstack and Ceph Reference Deployments +- Built for Big Data Workloads *** From 4c8157067ffcc40b94c3809abf3894bdfde20acc Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:47:22 -0800 Subject: [PATCH 085/268] Added landing content for IoT RP Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 45 ++++++++++------------ 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index 9db0980..d707de6 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -1,37 +1,32 @@ -# Reference Software Platform - Legacy +# IoT Reference Platforms - Documentation - +The IoT reference platform’s goal is to provide an end to end open source secure pipeline from gateway devices to endpoints. For the deeply embedded use cases, a Zephyr RTOS baseline is provided to enable a series of hardware platforms, which ships with a rich developer SDK. The gateway is a variant of the Consumer reference platform based on Debian, leveraging the latest in cloud and container technology. Secure updates are not a mere afterthought, instead this software stack has been designed with security and maintainability in mind from day one. +## Features + - Zephyr RTOS with SDK for endpoints + - Open Boot Firmware for endpoints + - Debian builds for gateways + - Secure update pipeline for all devices -The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. -For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) - -**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) *** -| | | | -|:---:|:---:|:---:| -| | | | +## Contents - - - - - **[16.06(Latest)](Releases/RPB_16.06/README.md)** - - [16.03](Releases/RPB_16.03/README.md) - - [15.12](Releases/RPB_15.12/README.md) - - [15.10(Alpha)](Releases/RPB_15.10/README.md) +- [Getting Started](GettingStarted/README.md) + - Learn more about the IoT Reference Platform, this is an ideal place to start. +- [Installation](Installation/README.md) + - Installation and build instructions for a variety of your Reference Platform components +- [Downloads](Downloads/README.md) + - Skip straight to your Reference Platform downloads +- [Hardware](HardwareDocs/README.md) + - Explore the Reference Platform from the Hardware side +- [Troubleshooting](Troubleshooting/README.md) + - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers *** #### Resources -| Extras and Support | Progress and Policy | -|:-----------------------------------------------------:|:-----------------------------------------:| -| [RPB CI](Extras/RPB-CI.md) | [Kernel Policy](Extras/KernelPolicy.md) | -| [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| -| [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | - -*** - -[Document Contribution Policy](../ContributionPolicy.md) +- [Previous Releases](PreviousReleases/README.md) +- [Document Contribution Policy](../ContributionPolicy.md) From c77919ffcf7a9603a376d1982a9d75df78d74316 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:48:56 -0800 Subject: [PATCH 086/268] Small format fix Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 3a5320c..68af4ce 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -21,7 +21,7 @@ The Consumer Reference Platform aims to enable the latest software on a series o - [Downloads](Downloads/README.md) - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from a Hardware + - Explore the Reference Platform from the Hardware side - [Troubleshooting](Troubleshooting/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From e8981bb89af91e8a7ee339845742e50db00d8e60 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:53:04 -0800 Subject: [PATCH 087/268] small change for Hardware desc Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 68af4ce..5f2313f 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -21,7 +21,7 @@ The Consumer Reference Platform aims to enable the latest software on a series o - [Downloads](Downloads/README.md) - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from the Hardware side + - Explore the Reference Platform from a Hardware perspective - [Troubleshooting](Troubleshooting/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From 129d0c237f17ddb521d49169c54377cb98f69577 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:53:38 -0800 Subject: [PATCH 088/268] small change to Hardware desc Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 8c7ba44..185a660 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -21,7 +21,7 @@ The enterprise reference platform is targeted to accelerate the high powered ARM - [Downloads](Downloads/README.md) - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from the Hardware side + - Explore the Reference Platform from a Hardware perspective - [Troubleshooting](Troubleshooting/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From de424a167f42f78a3fd1cd23b6bc1fe2dda2bdbc Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:55:05 -0800 Subject: [PATCH 089/268] small fix to Hardware Desc Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index d707de6..440802e 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -20,7 +20,7 @@ The IoT reference platform’s goal is to provide an end to end open source secu - [Downloads](Downloads/README.md) - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from the Hardware side + - Explore the Reference Platform from a Hardware perspective - [Troubleshooting](Troubleshooting/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From 3061f152f879e3dcc64a112bb9f16ddbf186696c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 11:56:44 -0800 Subject: [PATCH 090/268] Many moves of core docs Many documents were moved from high level folder to new lower levels within each platform. These docs have been kept in both folder temporarily. Signed-off-by: Robert Wolff --- .../Platforms/Consumer/.DS_Store | Bin 6148 -> 6148 bytes .../Platforms/Consumer/CECommon/.DS_Store | Bin 0 -> 6148 bytes .../DragonBoard-410c/BFSDebianRPB-15.10.md | 0 .../InstallDebianRPB-15.10.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 0 .../HiKey/BFSDebianRPB-15.10.md | 0 .../HiKey/InstallAOSP-15.10.md | 0 .../HiKey/InstallDebianRPB-15.10.md | 0 .../RPB_15.10/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.10/ConsumerEdition/README.md | 0 .../RPB_15.10/Highlights.md | 0 .../RPB_15.10/Known-Issues.md | 0 .../RPB_15.10/README.md | 0 .../DragonBoard-410c/BFSDebianRPB-15.12.md | 0 .../InstallDebianRPB-15.12.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 0 .../HiKey/BFSDebianRPB-15.12.md | 0 .../HiKey/InstallAOSPRPB-15.12.md | 0 .../HiKey/InstallDebianRPB-15.12.md | 0 .../RPB_15.12/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.12/ConsumerEdition/README.md | 0 .../RPB_15.12/EnterpriseEdition/README.md | 0 .../RPB_15.12/Highlights.md | 0 .../RPB_15.12/Known-Issues.md | 0 .../RPB_15.12/README.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 0 .../HiKey/BFSDebianRPB-16.03.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../HiKey/InstallAOSPRPB-16.03.md | 0 .../HiKey/InstallDebianRPB-16.03.md | 0 .../RPB_16.03/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.03/ConsumerEdition/README.md | 0 .../EnterpriseEdition/Cello/README.md | 0 .../RPB_16.03/EnterpriseEdition/D02/README.md | 0 .../RPB_16.03/EnterpriseEdition/D03/README.md | 0 .../DHCP-TFTP-Server-UEFI.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Install-CentOS-7.md | 0 .../Install-Debian-Jessie.md | 0 .../EnterpriseEdition/Install-Fedora-23.md | 0 .../ODPi-BigTop-Hadoop-Config-Run.md | 0 .../ODPi-Hadoop-Installation.md | 0 .../EnterpriseEdition/OpenStack-Liberty.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../RPB_16.03/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 0 .../X-Gene-Mustang/README.md | 0 .../RPB_16.03/Highlights.md | 0 .../RPB_16.03/Known-Issues.md | 0 .../RPB_16.03/README.md | 0 .../RPB_16.03/ReleaseStatus-16.03.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.06.md | 0 .../DragonBoard-410c/BFSOERPB-16.03.md | 0 .../DragonBoard-410c/BFSOERPB.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.06.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 0 .../ConsumerEdition/HiKey/BFSDebianRPB.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 0 .../ConsumerEdition/HiKey/InstallDebianRPB.md | 0 .../ConsumerEdition/HiKey/InstallOERPB.md | 0 .../RPB_16.06/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.06/ConsumerEdition/README.md | 0 .../EnterpriseEdition/Cello/README.md | 0 .../RPB_16.06/EnterpriseEdition/D02/README.md | 0 .../RPB_16.06/EnterpriseEdition/D03/README.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../EnterpriseEdition/Q2432LZB/README.md | 0 .../RPB_16.06/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/ThunderX/README.md | 0 .../X-Gene-Mustang/README.md | 0 .../RPB_16.06/Highlights.md | 0 .../RPB_16.06/Known-Issues.md | 0 .../RPB_16.06/README.md | 0 .../Platforms/Enterprise/.DS_Store | Bin 6148 -> 6148 bytes .../DHCP-TFTP-Server-UEFI.md | 0 .../EECommon/Install-CentOS-7.md | 0 .../EECommon/Install-Debian-Jessie.md | 0 .../Install-Fedora-23.md | 0 .../ODPi-BigTop-Hadoop-Config-Run.md | 0 .../ODPi-Hadoop-Installation.md | 0 .../OpenStack-Liberty.md | 0 .../EECommon/UEFI-EDK2-Guide-EE.md | 0 .../DragonBoard-410c/BFSDebianRPB-15.10.md | 0 .../InstallDebianRPB-15.10.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 0 .../HiKey/BFSDebianRPB-15.10.md | 0 .../HiKey/InstallAOSP-15.10.md | 0 .../HiKey/InstallDebianRPB-15.10.md | 0 .../RPB_15.10/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.10/ConsumerEdition/README.md | 0 .../RPB_15.10/Highlights.md | 0 .../RPB_15.10/Known-Issues.md | 0 .../RPB_15.10/README.md | 0 .../DragonBoard-410c/BFSDebianRPB-15.12.md | 0 .../InstallDebianRPB-15.12.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 0 .../HiKey/BFSDebianRPB-15.12.md | 0 .../HiKey/InstallAOSPRPB-15.12.md | 0 .../HiKey/InstallDebianRPB-15.12.md | 0 .../RPB_15.12/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.12/ConsumerEdition/README.md | 0 .../RPB_15.12/EnterpriseEdition/README.md | 0 .../RPB_15.12/Highlights.md | 0 .../RPB_15.12/Known-Issues.md | 0 .../RPB_15.12/README.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 0 .../HiKey/BFSDebianRPB-16.03.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../HiKey/InstallAOSPRPB-16.03.md | 0 .../HiKey/InstallDebianRPB-16.03.md | 0 .../RPB_16.03/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.03/ConsumerEdition/README.md | 0 .../EnterpriseEdition/Cello/README.md | 0 .../RPB_16.03/EnterpriseEdition/D02/README.md | 0 .../RPB_16.03/EnterpriseEdition/D03/README.md | 0 .../DHCP-TFTP-Server-UEFI.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Install-CentOS-7.md | 0 .../Install-Debian-Jessie.md | 0 .../EnterpriseEdition}/Install-Fedora-23.md | 0 .../ODPi-BigTop-Hadoop-Config-Run.md | 0 .../ODPi-Hadoop-Installation.md | 0 .../EnterpriseEdition}/OpenStack-Liberty.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../RPB_16.03/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 0 .../X-Gene-Mustang/README.md | 0 .../RPB_16.03/Highlights.md | 0 .../RPB_16.03/Known-Issues.md | 0 .../RPB_16.03/README.md | 0 .../RPB_16.03/ReleaseStatus-16.03.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.06.md | 0 .../DragonBoard-410c/BFSOERPB-16.03.md | 0 .../DragonBoard-410c/BFSOERPB.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.06.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 0 .../ConsumerEdition/HiKey/BFSDebianRPB.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 0 .../ConsumerEdition/HiKey/InstallDebianRPB.md | 0 .../ConsumerEdition/HiKey/InstallOERPB.md | 0 .../RPB_16.06/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.06/ConsumerEdition/README.md | 0 .../EECommon}/DHCP-TFTP-Server-UEFI.md | 0 .../RPB_16.06/EECommon/Install-CentOS-7.md | 216 ++++++++++ .../EECommon/Install-Debian-Jessie.md | 342 ++++++++++++++++ .../RPB_16.06/EECommon}/Install-Fedora-23.md | 0 .../ODPi-BigTop-Hadoop-Config-Run.md | 0 .../EECommon}/ODPi-Hadoop-Installation.md | 0 .../RPB_16.06/EECommon}/OpenStack-Liberty.md | 0 .../RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md | 350 ++++++++++++++++ .../EnterpriseEdition/Cello/README.md | 0 .../RPB_16.06/EnterpriseEdition/D02/README.md | 0 .../RPB_16.06/EnterpriseEdition/D03/README.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../EnterpriseEdition/Q2432LZB/README.md | 0 .../RPB_16.06/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/ThunderX/README.md | 0 .../X-Gene-Mustang/README.md | 0 .../RPB_16.06/Highlights.md | 0 .../RPB_16.06/Known-Issues.md | 0 .../RPB_16.06/README.md | 0 Reference-Platform/Platforms/IoT/.DS_Store | Bin 6148 -> 6148 bytes .../DragonBoard-410c/BFSDebianRPB-15.10.md | 0 .../InstallDebianRPB-15.10.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 0 .../HiKey/BFSDebianRPB-15.10.md | 0 .../HiKey/InstallAOSP-15.10.md | 0 .../HiKey/InstallDebianRPB-15.10.md | 0 .../RPB_15.10/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.10/ConsumerEdition/README.md | 0 .../RPB_15.10/Highlights.md | 0 .../RPB_15.10/Known-Issues.md | 0 .../RPB_15.10/README.md | 0 .../DragonBoard-410c/BFSDebianRPB-15.12.md | 0 .../InstallDebianRPB-15.12.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 0 .../HiKey/BFSDebianRPB-15.12.md | 0 .../HiKey/InstallAOSPRPB-15.12.md | 0 .../HiKey/InstallDebianRPB-15.12.md | 0 .../RPB_15.12/ConsumerEdition/HiKey/README.md | 0 .../RPB_15.12/ConsumerEdition/README.md | 0 .../RPB_15.12/EnterpriseEdition/README.md | 0 .../RPB_15.12/Highlights.md | 0 .../RPB_15.12/Known-Issues.md | 0 .../RPB_15.12/README.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.03.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 0 .../HiKey/BFSDebianRPB-16.03.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../HiKey/InstallAOSPRPB-16.03.md | 0 .../HiKey/InstallDebianRPB-16.03.md | 0 .../RPB_16.03/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.03/ConsumerEdition/README.md | 0 .../EnterpriseEdition/Cello/README.md | 0 .../RPB_16.03/EnterpriseEdition/D02/README.md | 0 .../RPB_16.03/EnterpriseEdition/D03/README.md | 0 .../DHCP-TFTP-Server-UEFI.md | 44 ++ .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Install-CentOS-7.md | 0 .../Install-Debian-Jessie.md | 0 .../EnterpriseEdition/Install-Fedora-23.md | 164 ++++++++ .../ODPi-BigTop-Hadoop-Config-Run.md | 320 +++++++++++++++ .../ODPi-Hadoop-Installation.md | 82 ++++ .../EnterpriseEdition/OpenStack-Liberty.md | 376 ++++++++++++++++++ .../EnterpriseEdition/Overdrive/README.md | 0 .../RPB_16.03/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 0 .../X-Gene-Mustang/README.md | 0 .../RPB_16.03/Highlights.md | 0 .../RPB_16.03/Known-Issues.md | 0 .../RPB_16.03/README.md | 0 .../RPB_16.03/ReleaseStatus-16.03.md | 0 .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 0 .../DragonBoard-410c/BFSDebianRPB-16.06.md | 0 .../DragonBoard-410c/BFSOERPB-16.03.md | 0 .../DragonBoard-410c/BFSOERPB.md | 0 .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 0 .../InstallDebianRPB-16.06.md | 0 .../DragonBoard-410c/InstallOERPB-16.03.md | 0 .../DragonBoard-410c/README.md | 0 .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 0 .../ConsumerEdition/HiKey/BFSDebianRPB.md | 0 .../ConsumerEdition/HiKey/BuildSourceBL.md | 0 .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 0 .../ConsumerEdition/HiKey/InstallDebianRPB.md | 0 .../ConsumerEdition/HiKey/InstallOERPB.md | 0 .../RPB_16.06/ConsumerEdition/HiKey/README.md | 0 .../RPB_16.06/ConsumerEdition/README.md | 0 .../EnterpriseEdition/Cello/README.md | 0 .../RPB_16.06/EnterpriseEdition/D02/README.md | 0 .../RPB_16.06/EnterpriseEdition/D03/README.md | 0 .../HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../EnterpriseEdition/Q2432LZB/README.md | 0 .../RPB_16.06/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/ThunderX/README.md | 0 .../X-Gene-Mustang/README.md | 0 .../RPB_16.06/Highlights.md | 0 .../RPB_16.06/Known-Issues.md | 0 .../RPB_16.06/README.md | 0 275 files changed, 1894 insertions(+) create mode 100644 Reference-Platform/Platforms/Consumer/CECommon/.DS_Store rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/Highlights.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/Known-Issues.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.10/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/Highlights.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/Known-Issues.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_15.12/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/Highlights.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/Known-Issues.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.03/ReleaseStatus-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/ThunderX/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/Highlights.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/Known-Issues.md (100%) rename Reference-Platform/Platforms/Consumer/{ => PreviousReleases}/RPB_16.06/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.03/EnterpriseEdition => EECommon}/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06 => }/EECommon/Install-CentOS-7.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06 => }/EECommon/Install-Debian-Jessie.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.03/EnterpriseEdition => EECommon}/Install-Fedora-23.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.03/EnterpriseEdition => EECommon}/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.03/EnterpriseEdition => EECommon}/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.03/EnterpriseEdition => EECommon}/OpenStack-Liberty.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06 => }/EECommon/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/Highlights.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/Known-Issues.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.10/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/Highlights.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/Known-Issues.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_15.12/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06/EECommon => PreviousReleases/RPB_16.03/EnterpriseEdition}/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06/EECommon => PreviousReleases/RPB_16.03/EnterpriseEdition}/Install-Fedora-23.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06/EECommon => PreviousReleases/RPB_16.03/EnterpriseEdition}/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06/EECommon => PreviousReleases/RPB_16.03/EnterpriseEdition}/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/Platforms/Enterprise/{RPB_16.06/EECommon => PreviousReleases/RPB_16.03/EnterpriseEdition}/OpenStack-Liberty.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/Highlights.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/Known-Issues.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.03/ReleaseStatus-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/{IoT/RPB_16.03/EnterpriseEdition => Enterprise/PreviousReleases/RPB_16.06/EECommon}/DHCP-TFTP-Server-UEFI.md (100%) create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/Install-CentOS-7.md create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/Install-Debian-Jessie.md rename Reference-Platform/Platforms/{IoT/RPB_16.03/EnterpriseEdition => Enterprise/PreviousReleases/RPB_16.06/EECommon}/Install-Fedora-23.md (100%) rename Reference-Platform/Platforms/{IoT/RPB_16.03/EnterpriseEdition => Enterprise/PreviousReleases/RPB_16.06/EECommon}/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/Platforms/{IoT/RPB_16.03/EnterpriseEdition => Enterprise/PreviousReleases/RPB_16.06/EECommon}/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/Platforms/{IoT/RPB_16.03/EnterpriseEdition => Enterprise/PreviousReleases/RPB_16.06/EECommon}/OpenStack-Liberty.md (100%) create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/ThunderX/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/Highlights.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/Known-Issues.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => PreviousReleases}/RPB_16.06/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/Highlights.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/Known-Issues.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.10/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/Highlights.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/Known-Issues.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_15.12/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/D03/README.md (100%) create mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md (100%) create mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md create mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md create mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md create mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/Highlights.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/Known-Issues.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.03/ReleaseStatus-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/HiKey/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/ConsumerEdition/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/ThunderX/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/Highlights.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/Known-Issues.md (100%) rename Reference-Platform/Platforms/IoT/{ => PreviousReleases}/RPB_16.06/README.md (100%) diff --git a/Reference-Platform/Platforms/Consumer/.DS_Store b/Reference-Platform/Platforms/Consumer/.DS_Store index 11b39ced90e1864b583ba0d9b47a4c5b5d71f440..63f9aa988f9a5ffa587e980c573326c0e3caa758 100644 GIT binary patch delta 30 hcmZoMXffDOz{r$sFxie#WAZFUE(lX?^BG19F#wJu2)qCQ delta 30 hcmZoMXffDOz{nJnH`$I+WAZFUE(lX?^BG19F#wac2^s(Z diff --git a/Reference-Platform/Platforms/Consumer/CECommon/.DS_Store b/Reference-Platform/Platforms/Consumer/CECommon/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install CentOS 7 ARM 64-bit - Reference Platform +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 +[ 0.000000] Boot CPU: AArch64 Processor [411fd072] +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 +... +Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! +... +dracut-initqueue[610]: RTNETLINK answers: File exists +dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current +dracut-initqueue[610]: Dload Upload Total Spent Left Speed +100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 +... +Welcome to CentOS Linux 7 (AltArch)! +... +Starting installer, one moment... +anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +21:06:29 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: 2 +[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. + +### Automating the installation with kickstart + +It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. + +Kickstart example: + +```shell +cmdline +url --url="http://mirror.centos.org/altarch/7/os/aarch64/" +repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ +repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ +repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ +lang en_US.UTF-8 +keyboard us +timezone --utc Etc/UTC +auth --useshadow --passalgo=sha512 +rootpw --lock --iscrypted locked +firewall --disabled +firstboot --disabled +selinux --disabled +reboot +network --bootproto=dhcp --device=eth0 --activate --onboot=on +ignoredisk --only-use=sda +bootloader --location=mbr +clearpart --drives=sda --all --initlabel +part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 +part /boot --fstype=ext4 --size=512 +part / --fstype=ext4 --size=10240 --grow +part swap --size=4000 +%packages +wget +net-tools +chrony +%end +%post +useradd -m -U -G wheel linaro +echo linaro | passwd linaro --stdin +%end +``` + +#### Setting up grub.cfg + +Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. + +#### Booting the system + +Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/Install-Debian-Jessie.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/Install-Debian-Jessie.md new file mode 100644 index 0000000..c95ec87 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/Install-Debian-Jessie.md @@ -0,0 +1,342 @@ +## Installing Debian "Jessie" 8.5 + +This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) + +### Debian Installer + +The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. + +Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. + +## Loading debian-installer from the network +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. + +#### Downloading debian-installer: + +```shell +sudo su - +cd /srv/tftp/ +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.06/netboot.tar.gz +tar -zxvf netboot.tar.gz +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── debian-installer +│   └── arm64 +│   ├── bootnetaa64.efi +│   ├── grub +│   │   ├── arm64-efi +│   │   │   ├── acpi.mod +│   │   │   ├── adler32.mod +│   │   │   ├── all_video.mod +│   │   │   ├── archelp.mod +│   │   │   ├── bfs.mod +│   │   │   ├── bitmap.mod +│   │   │   ├── bitmap_scale.mod +│   │   │   ├── blocklist.mod +│   │   │   ├── boot.mod +│   │   │   ├── btrfs.mod +│   │   │   ├── bufio.mod +... +│   │   │   ├── xzio.mod +│   │   │   └── zfscrypt.mod +│   │   ├── font.pf2 +│   │   └── grub.cfg +│   ├── initrd.gz +│   └── linux +├── netboot.tar.gz +└── version.info +``` + +Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: + +```shell +dhcp-boot=debian-installer/arm64/bootnetaa64.efi +``` +## Loading debian-installer from the minimal CD + +Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. + +Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): + +``` +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.06/mini.iso +sudo cp mini.iso /dev/sdX +sync +``` + +Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. + +## Booting the installer + +If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install +Advanced options ... +Install with speech synthesis +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND +[ 0.763784] kvm [1]: error: no compatible GIC node found +[ 0.763818] kvm [1]: error initializing Hyp mode: -19 +[ 0.886298] Failed to find cpu0 device node +[ 0.947082] zswap: default zpool zbud not available +[ 0.951959] zswap: pool creation failed +Starting system log daemon: syslogd, klogd. +... + ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ + │ │ + │ Choose the language to be used for the installation process. The │ + │ selected language will also be the default language for the installed │ + │ system. │ + │ │ + │ Language: │ + │ │ + │ C │ + │ English │ + │ │ + │ │ + │ │ + └─────────────────────────────────────────────────────────────────────────┘ + moves; selects; activates buttons +``` + +### Finishing the installation + +For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) + +**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. + +``` +~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f +~ # exit +``` + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. + +**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: + +``` +root@debian:~# cat /etc/network/interfaces +... +allow-hotplug enp1s0 +iface enp1s0 inet dhcp + hwaddress ether de:5e:60:e4:6b:1f +``` + +### Automating the installation using preseeding + +Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. + +This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) + +**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: + +```shell +d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands +``` + +#### Creating the preseed file + +Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. + +Once created, make sure the file gets published into a network address that can be reachable from your target device. + +Preseed example (`preseed.cfg`): + +```shell +d-i debian-installer/locale string en_US +d-i keyboard-configuration/xkb-keymap select us +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/get_hostname string unassigned-hostname +d-i netcfg/get_domain string unassigned-domain +d-i netcfg/hostname string debian +d-i mirror/country string manual +d-i mirror/http/hostname string httpredir.debian.org +d-i mirror/http/directory string /debian +d-i mirror/http/proxy string +d-i passwd/root-password password linaro123 +d-i passwd/root-password-again password linaro123 +d-i passwd/user-fullname string Linaro User +d-i passwd/username string linaro +d-i passwd/user-password password linaro +d-i passwd/user-password-again password linaro +d-i passwd/user-default-groups string audio cdrom video sudo +d-i time/zone string UTC +d-i clock-setup/ntp boolean true +d-i clock-setup/utc boolean true +d-i partman-auto/disk string /dev/sda +d-i partman-auto/method string regular +d-i partman-lvm/device_remove_lvm boolean true +d-i partman-md/device_remove_md boolean true +d-i partman-auto/choose_recipe select atomic +d-i partman/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true +popularity-contest popularity-contest/participate boolean false +tasksel tasksel/first multiselect standard, web-server +d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp +d-i pkgsel/upgrade select safe-upgrade +d-i finish-install/reboot_in_progress note +``` + +In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) + +#### Setting up grub.cfg + +Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: + +```shell +$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg +# Force grub to automatically load the first option +set default=0 +set timeout=1 +menuentry 'Install with preseeding' { + linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- + initrd /debian-installer/arm64/initrd.gz +} +``` + +The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. + +In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. + +#### Booting the system + +Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. + +Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. + +### Building debian-installer from source + +#### Build kernel package and udebs + +Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. + +You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) + +#### Rebuilding debian-installer with the new udebs + +To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. + +Download the installer (from jessie): + +```shell +sudo apt-get build-dep debian-installer +dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u4.dsc +``` + +Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): + +```shell +cd debian-installer-* +cd build +sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common +sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common +``` + +Download the kernel udebs that you created at the localudebs folder: + +```shell +cd localudebs +wget +cd .. +``` + +Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): + +```shell +cat < pkg-lists/local +ext4-modules-\${kernel:Version} +fat-modules-\${kernel:Version} +btrfs-modules-\${kernel:Version} +md-modules-\${kernel:Version} +efi-modules-\${kernel:Version} +scsi-modules-\${kernel:Version} +jfs-modules-\${kernel:Version} +xfs-modules-\${kernel:Version} +ata-modules-\${kernel:Version} +sata-modules-\${kernel:Version} +usb-storage-modules-\${kernel:Version} +EOF +``` + +Set up the local repo, so the installer can locate your udebs (from localudebs): + +```shell +cat < sources.list.udeb +deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ +deb http://httpredir.debian.org/debian jessie main/debian-installer +EOF +``` + +Default preseed to skip known errors (as the kernel provided by local udebs): + +``` +cat < default-preseed +# Continue install on "no kernel modules were found for this kernel" +d-i anna/no_kernel_modules boolean true +# Continue install on "no installable kernels found" +d-i base-installer/kernel/skip-install boolean true +d-i base-installer/kernel/no-kernels-found boolean true +d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb +EOF +``` + +Now just build the installer: + +```shell +fakeroot make build_netboot +``` + +You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/Install-Fedora-23.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/Install-Fedora-23.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/ODPi-BigTop-Hadoop-Config-Run.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/ODPi-BigTop-Hadoop-Config-Run.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/ODPi-Hadoop-Installation.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/ODPi-Hadoop-Installation.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/OpenStack-Liberty.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/OpenStack-Liberty.md diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md new file mode 100644 index 0000000..d65fbe0 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md @@ -0,0 +1,350 @@ +## UEFI/EDK2 + +EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. + +The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). + +Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. + +EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. + +This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) + +### Building + +#### Pre-Requisites + +Make sure the build dependencies are available at your host machine. + +On Debian/Ubuntu: + +```shell +sudo apt-get install uuid-dev build-essential aisle +``` + +On RHEL/CentOS/Fedora: + +```shell +sudo yum install uuid-devel libuuid-devel aisle +``` + +Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': + +```shell +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb +sudo dpkg -i --force-all *.deb +``` + +If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. + +Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +#### Getting the source code + +UEFI/EDK2: + +```shell +git clone https://github.com/tianocore/edk2.git +git clone https://git.linaro.org/uefi/OpenPlatformPkg.git +cd edk2 +git checkout -b stable-baseline 469e1e1e4203b5d369fdce790883cb0aa035a744 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git +ln -s ../OpenPlatformPkg +``` + +ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): + +```shell +git clone https://github.com/ARM-software/arm-trusted-firmware.git +cd arm-trusted-firmware +git checkout -b stable-baseline v1.2 # suggested latest stable release +``` + +UEFI Tools (helpers and scripts to make the build process easy): + +```shell +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +#### Building UEFI/EDK2 for Juno R0/R1 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +export ARMTF_DIR=${PWD}/arm-trusted-firmware +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno +``` + +The output files: + +- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` +- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` + +#### Building UEFI/EDK2 for D02 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 +``` + +The output file: + +- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` + +#### Building UEFI/EDK2 for D03 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d03 +``` + +The output file: + +- `Build/D03/DEBUG_GCC49/FV/D03.fd` + +#### Building UEFI/EDK2 for Overdrive + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive +``` + +The output file: + +- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` + +#### Building UEFI/EDK2 for HuskyBoard / Cello + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello +``` + +The output file: + +- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` + +### Flashing + +#### Juno R0/R1 + +##### Clean flash + +Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: + +```shell +Cmd> flash +Flash> eraseall +Flash> quit +Cmd> usb_on +``` + +This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. + +In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: + +```shell +git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git +``` + +Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE +``` + +Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): + +```shell +cp -rf vexpress-firmware/* /media/recovery +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. + +##### Upgrading UEFI/EDK2 + +If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). + +Export Juno's MMC as a usb storage device on your host machine: + +```shell +Cmd> usb_on +``` + +Then just copy over the UEFI/EDK2 files that were built in the previous steps: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Then just power cycle the Juno and the board should see and use the new firmware. + +#### D02 + +Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +First make sure the built firmware is available in your FTP server ('PV660D02.fd'): + +```shell +cp PV660D02.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +6. Exit the EBL console and reboot the board + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### D03 + +Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +##### Clean flash + +To do a clean flash you will require access to the board's BMC. + +1. Make sure the board's BMC port is connected, and with a known IP address. +2. Login the BMC website, The username/passwd is root/Huawei12#$. Go to "System", "Firmware Upgrade", and "Browse" to select the UEFI file in hpm format. (Please contact support@open-estuary.org to get the hpm file). +3. Pull out the power cable to power off the board. Find the pin named "COM_SW" at J44. Then connect it with jump cap. +4. Power on the board and connect to the board's serial port. When the screen display message "You are trying to access a restricted zone. Only Authorized Users allowed.", type "Enter", input username/passwd (username/passwd is root/Huawei12#$). +5. After you login the BMC interface which start with "iBMC:/->", use command "ifconfig" to see the modified BMC IP. When you get the board's BMC IP, please visit the BMC website by "https://BMC IP ADDRESS/". +6. Go to "Start Update" (Do not power off during this period). +7. After updating the UEFI firmware, reboot the board to enter UEFI menu. + +##### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('D03.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +#### AMD Overdrive / HuskyBoard / Cello + +##### Clean flash + +###### DediProg SF100 + +Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. + +First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: + +```shell +dpcmd --type MX25L12835F -e +``` + +Now just flash the new firmware: + +```shell +dpcmd --type MX25L12835F -p FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +###### SPI Hook + +Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) + +Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. + +Example for the 4.5M based firmware: + +```shell +dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc +``` + +Connect the SPI cable, unplug the power cord and flash SPI: + +```shell +sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +##### Upgrading firmware + +There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. + +### Links and References: + +- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) +- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Cello/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D02/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/D03/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Overdrive/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/ThunderX/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/Highlights.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/Highlights.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/Highlights.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/Highlights.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/Known-Issues.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/Known-Issues.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/Known-Issues.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/Known-Issues.md diff --git a/Reference-Platform/Platforms/Enterprise/RPB_16.06/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/RPB_16.06/README.md rename to Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/README.md diff --git a/Reference-Platform/Platforms/IoT/.DS_Store b/Reference-Platform/Platforms/IoT/.DS_Store index 11b39ced90e1864b583ba0d9b47a4c5b5d71f440..19b1f5c63b085ac5b27efd6ac7eb0666f23f8717 100644 GIT binary patch delta 245 zcmZoMXfc=|#>B)qu~2NHo}wrR0|Nsi1A_nqLq0<;5au)F<)m+Z$he%b9wf!d;0Y88 zVQ@y4HVjVA&n*DT!T=Ukx%nj delta 105 zcmZoMXfc=|#>B`mu~2NHo}wrV0|Nsi1A_nqLncE$Ln%WsLl8si#KPr_ER!9WRVJTc za$t(dn{3CdHrarg2guxP$9$4ya|81X#?9;;{2V}oHWxB~XP(S2V#xtC3S<`3<^Yi` F%mC^^7r6ic diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/HiKey/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/ConsumerEdition/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Highlights.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/Highlights.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Highlights.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Known-Issues.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/Known-Issues.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Known-Issues.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.10/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.10/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/HiKey/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/ConsumerEdition/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/EnterpriseEdition/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Highlights.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/Highlights.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Highlights.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Known-Issues.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/Known-Issues.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Known-Issues.md diff --git a/Reference-Platform/Platforms/IoT/RPB_15.12/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_15.12/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/HiKey/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ConsumerEdition/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Cello/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D02/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/D03/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md new file mode 100644 index 0000000..ad1eadd --- /dev/null +++ b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md @@ -0,0 +1,44 @@ +## Setting up DHCP/TFTP server for UEFI distro network installers + +A simple way to install the major Linux Distributions (e.g. Debian, Fedora, CentOS, openSUSE, etc) is by booting the network installer via PXE. In order to have a working PXE environment, a DHCP and TFTP server is required, which is responsible for providing the target device a valid IP configuration and the required files to boot the system (usually Grub 2 + kernel + initrd). + +In order to simplify the setup, this document will use dnsmasq, which is a lightweight, easy to configure DNS forwarder and DHCP server with BOOTP/TFTP/PXE functionality. + +### Installing and configuring dnsmasq + +Debian/Ubuntu: + +```shell +sudo apt-get install dnsmasq +``` + +Fedora/CentOS/RHEL: + +```shell +yum install dnsmasq +``` + +This guide assumes you already know the network interface that will provide the DHCP/TFTP/PXE functionality for the target device. In this case, we are using _eth1_ as our secondary interface, with address _192.168.3.1_. + +Following is the /etc/dnsmasq.conf providing the required functionality for PXE: + +```shell +interface=eth1 +dhcp-range=192.168.3.10,192.168.3.100,255.255.255.0,1h +dhcp-boot=BOOTAA64.EFI +enable-tftp +tftp-root=/srv/tftp +``` + +Check [http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html) for more information and additional dnsmasq config options. + +Now make sure the tftp-root directory is available, and then start/restart the dnsmasq service: + +```shell +sudo mkdir -p /srv/tftp +sudo systemctl restart dnsmasq +``` + +Since we require UEFI support for the Reference Platform Software Enterprise Edition (EE-RPB), this document doesn't cover the traditional pxelinux specific configuration (used with the traditional BIOS setup). + +For UEFI, we only require DHCP to provide the UEFI binary name (retrieved via TFTP), which in this case is the Grub 2 bootloader (which then loads the kernel, initrd and other extra files from the TFTP server). diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md new file mode 100644 index 0000000..c625bdd --- /dev/null +++ b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md @@ -0,0 +1,164 @@ +## Installing Fedora 23 + +This guide is not to be a replacement of the official Fedora 23 Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation](https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Fedora 23 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +**Note:** Because of bug [1251600](https://bugzilla.redhat.com/show_bug.cgi?id=1251600), we need to use both `BOOTAA64.EFI` and `grubaa64.efi` from the Fedora 22 release. + +```shell +sudo su - +cd /srv/tftp/ +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/BOOTAA64.EFI +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/grubaa64.efi +``` + +Downloading upstream Kernel and Initrd + +```shell +mkdir /srv/tftp/f23 +cd /srv/tftp/f23 +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/vmlinuz +wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install Fedora 23 ARM 64-bit' --class fedora --class gnu-linux --class gnu --class os { + linux (tftp)/f23/vmlinuz ip=dhcp inst.repo=http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/ + initrd (tftp)/f23/initrd.img +} +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── f23 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install Fedora 23 ARM 64-bit +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Fedora 23 (just make sure that target device has external network access, since the installer is downloaded automatically after booting the kernel). + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.2.3-300.fc23.aarch64 (mockbuild@aarch64-08a.arm.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Thu Oct 8 01:39:38 UTC 2015 +[ 0.000000] CPU: AArch64 Processor [411fd072] revision 2 +[ 0.000000] Detected PIPT I-cache on CPU0 +[ 0.000000] alternatives: enabling workaround for ARM erratum 832075 +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c6000 SMBIOS 3.0=0x83ff349718 +... +Welcome to Fedora 23 (Twenty Three) dracut-043-60.git20150811.fc23 (Initramfs)! +... +[ 23.105835] dracut-initqueue[685]: RTNETLINK answers: File exists +[ 23.756828] dracut-initqueue[685]: % Total % Received % Xferd Average Speed Time Time Time Current +[ 23.757345] dracut-initqueue[685]: Dload Upload Total Spent Left Speed +100 958 100 958 0 0 1514 0 --:--:-- --:--:-- --:--:-- 1513 0 --:--:-- --:--:-- --:--:-- 0 +... +Welcome to Fedora 23 (Twenty Three)! +... +Starting installer, one moment... +anaconda 23.19.10-1 for Fedora 23 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +00:29:26 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: +. +[anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1 +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the installation destination, the partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Fedora 23 system. + +### Automating the installation with kickstart + +TODO diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md new file mode 100644 index 0000000..5e134d1 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md @@ -0,0 +1,320 @@ +This post concentrates on Running Hadoop after [installing](ODPi-Hadoop-Installation.md) ODPi components built using Apache BigTop. These steps are only for configuring it on a single node and running them on a single node. + +# Add Hadoop User + We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop usergroup: + +```shell +sudo useradd -G hadoop hduser +``` + +give a password for hduser + +```shell +sudo passwd hduser +``` + +Add hduser to sudoers list +On Debian: + +```shell +sudo adduser hduser sudo +``` + +On Centos: + +```shell +sudo usermod -G wheel hduser +``` + +Switch to hduser: + +```shell +sudo su - hduser +``` + +# Generate ssh key for hduser + +```shell +ssh-keygen -t rsa -P "" +``` + +Press \ to leave to default file name. + +Enable ssh access to local machine: + +```shell +cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys +``` + +Test ssh setup, as hduser: + +```shell +ssh localhost +``` + +# Disabling IPv6 + +```shell +sudo nano /etc/sysctl.conf +``` + +Add the below lines to the end and save: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +``` + +Prefer IPv4 on Hadoop: + +```shell +sudo nano /etc/hadoop/conf/hadoop-env.sh +``` + +Uncomment line: + +```shell +# export HADOOP_OPTS=-Djava.net.preferIPV4stack=true +``` + +Run sysctl to apply the changes: + +```shell +sudo sysctl -p +``` + +# Configuring the app environment +Configure the app environment by following steps: + +```shell +sudo mkdir -p /app/hadoop/tmp +sudo chown hduser:hadoop /app/hadoop/tmp +sudo chmod 750 /app/hadoop/tmp +sudo chown hduser:hadoop /usr/lib/hadoop +sudo chmod 750 /usr/lib/hadoop +``` + +# Setting up Environment Variables +Follow the below steps to setup Environment Variables in bash file : + +```shell +sudo su - hduser +nano .bashrc +``` + +Add the following to the end and save: + +```shell +export HADOOP_HOME=/usr/lib/hadoop +export HADOOP_PREFIX=$HADOOP_HOME +export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" +export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec +export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop +export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native +export HADOOP_COMMON_HOME=$HADOOP_HOME +export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce +export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs +export YARN_HOME=/usr/lib/hadoop-yarn +export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ +export CLASSPATH=$CLASSPATH:. +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.6.0.jar +export CLASSPATH=$CLASSPATH:$HADOOP_HOME/client/hadoop-hdfs-2.6.0.jar +export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") +export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH +``` + +Execute the terminal environment again (`bash`), or simply logout and change to `hduser` again. + +# Modifying config files +## core-site.xml + +```shell +sudo nano /etc/hadoop/conf/core-site.xml +``` + +And add/modify the following settings: +Look for property with fs.defaultFS and modify as below: + +```shell + + fs.default.name + hdfs://localhost:54310 + The name of the default file system. A URI whose + scheme and authority determine the FileSystem implementation. The + uri's scheme determines the config property (fs.SCHEME.impl) naming + the FileSystem implementation class. The uri's authority is used to + determine the host, port, etc. for a filesystem. + +``` + +Add this to the bottom before \ tag: + +```shell + + hadoop.tmp.dir + /app/hadoop/tmp + A base for other temporary directories. + +``` + +## mapred-site.xml + +```shell +sudo nano /etc/hadoop/conf/mapred-site.xml +``` + +Modify existing properties as follows: +Look for property tag with as mapred.job.tracker and modify as below: + +```shell + + mapred.job.tracker + localhost:54311 + The host and port that the MapReduce job tracker runs + at. If "local", then jobs are run in-process as a single map + and reduce task. + + +``` + +## hdfs-site.xml: + +```shell +sudo nano /etc/hadoop/conf/hdfs-site.xml +``` + +Modify existing property as below : + +```shell + + dfs.replication + 1 + Default block replication. + The actual number of replications can be specified when the file is created. + The default is used if replication is not specified in create time. + + +``` + +# Format Namenode +This step is needed for the first time. Doing it every time will result in loss of content on HDFS. + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init +``` + +# Start the YARN daemons + +```shell +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done +sudo /etc/init.d/hadoop-yarn-resourcemanager start +sudo /etc/init.d/hadoop-yarn-nodemanager start +``` + +# Validating Hadoop +Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux + +```shell +sudo jps +``` +or + +```shell +ps aux | grep java +``` + +Alternatively, check if yarn managers are running: + +```shell +sudo /etc/init.d/hadoop-yarn-resourcemanager status +sudo /etc/init.d/hadoop-yarn-nodemanager status +``` + +You would see like below: + +```shell +● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager + Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) + Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago + CGroup: /system.slice/hadoop-yarn-nodemanager.service + └─10366 /usr/lib/jvm/java-1.7.0-openjdk-arm64/bin/java -Dproc_node... + +Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root +Dec 22 18:24:57 debian su[10348]: + ??? root:yarn +Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) +Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... +Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn +Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... +``` + + +## Run teragen, terasort and teravalidate ## + +```shell +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput + +hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate +``` + +## Stop the Hadoop services ## + +```shell +sudo /etc/init.d/hadoop-yarn-nodemanager stop + +sudo /etc/init.d/hadoop-yarn-resourcemanager stop + +for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done +``` + +## Potential Errors / Issues and Resolutions ## +* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: + +```shell +sudo groupadd supergroup + +sudo usermod -g supergroup hduser +``` + +* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. + +```shell +You may have delete all the packages and re-run the steps of installation from scratch. +``` + +* Error while formatting namenode +With the following command: + +```shell +sudo /etc/init.d/hadoop-hdfs-namenode init + + +If you see the following error: + WARN net.DNS: Unable to determine local hostname -falling back to "localhost" + java.net.UnknownHostException: centos: centos + at java.net.InetAddress.getLocalHost(InetAddress.java:1496) + at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) + at org.apache.hadoop.net.DNS.(DNS.java:57) + +Something is wrong in the network setup. Please check /etc/hosts file. + +```shell +sudo nano /etc/hosts +``` + +The hosts file should like below: + +```shell +127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname +::1 localhost +``` + +Also try the following steps: + +```shell +sudo rm -Rf /app/hadoop/tmp + +hadoop namenode -format +``` diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md new file mode 100644 index 0000000..e810f26 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md @@ -0,0 +1,82 @@ +This post concentrates on installing ODPi components built using Apache BigTop. These steps configure and run the components on a single node. + +# Prerequisites: + +* Java 7 (e.g. openjdk-7-jre) + +# Repo: + +ODPi deb and rpm packages can be found on Linaro repositories: + +* Debian Jessie - http://repo.linaro.org/ubuntu/linaro-overlay/ +* CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/ + + +# Installation : + +### On Debian: + +Add to repo source list (**not required if you are using the installer from the Reference Platform**): + +```shell +echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +Update the source list and install the dependencies: + +```shell +sudo apt-get update +sudo apt-get install openssh-server rsync openjdk-7-jre openjdk-7-jdk +sudo apt-get build-dep build-essential +``` + +Install Hadoop packages: + +```shell +sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### On CentOS: + +```shell +sudo wget http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo -O /etc/yum.repos.d/linaro-overlay.repo +sudo yum update +sudo yum -y install openssh-server openssh-clients java-1.7.0-openjdk* +sudo yum install -y bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* +``` + +### Verifying Installation + +Packages would get installed in /usr/lib + +Type hadoop to check if hadoop is installed: + +```shell +hadoop +``` + +And you should see the following: + +```shell +linaro@debian:~$ hadoop +Usage: hadoop [--config confdir] COMMAND + where COMMAND is one of: + fs run a generic filesystem user client + version print the version + jar run a jar file + checknative [-a|-h] check native hadoop and compression libraries availability + distcp copy file or directories recursively + archive -archiveName NAME -p * create a hadoop archive + classpath prints the class path needed to get the + credential interact with credential providers + Hadoop jar and the required libraries + daemonlog get/set the log level for each daemon + trace view and modify Hadoop tracing settings + or + CLASSNAME run the class named CLASSNAME +``` + + Most commands print help when invoked w/o parameters. + +Next Step: [Setup, Configuration and Running Hadoop](ODPi-BigTop-Hadoop-Config-Run.md) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md new file mode 100644 index 0000000..d3b4cb9 --- /dev/null +++ b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md @@ -0,0 +1,376 @@ +# OpenStack Liberty - Debian Jessie + +# Introduction + +In general, the instructions in the Liberty install guide should be followed: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html. This guide will describe changes to the documented procedures that should be kept in mind while going through the guide. + +Each section below will correspond to a section in the guide. Guide sections that do not have a corresponding section below may be followed as-is. + +# Release Notes + +## Configuring images for aarch64 + +An image must be configured specially in glance to be able to boot correctly on aarch64. +To attach the devices to the virtio bus (which does not allow hotplugging a volume, but will work if the image does not have SCSI support), the following properties must be set: + +```shell +--property hw_machine_type=virt +--property os_command_line='root=/dev/vda rw rootwait console=ttyAMA0' +--property hw_cdrom_bus=virtio +``` + +To attach the devices to the SCSI bus (which does allow hotplugging a volume, but might not be supported by the guest image), the following properties must be set: + +```shell +--property hw_scsi_model='virtio-scsi' +--property hw_disk_bus='scsi' +--property os_command_line='root=/dev/sda rw rootwait console=ttyAMA0' +``` + +You can set these properties when you are uploading the image into glance, or modify the image if you have already uploaded it. + + +# Pre-Installation + +## Verify/enable additional repositories + +Verify that the `linaro-overlay` and `jessie-backports` repositories are enabled. + +Check if they are available by checking `/etc/apt/sources.list` and `/etc/apt/sources.list.d`. + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list +$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C +``` + +If missing, add the following to `/etc/apt/sources.list.d` directory: + +```shell +$ echo "deb http://httpredir.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backports.list +``` + +## Modify repository priorities + +Create `/etc/apt/preferences.d/jessie-backports`: + +```shell +Package: * +Pin: release a=jessie-backports +Pin-Priority: 500 +``` + +Then, make sure to run apt-get update: + +```shell +$ sudo apt-get update +``` + +## Environment + +Update `/etc/hosts` to add “controller” as an alias for localhost. + +```shell +127.0.0.1 localhost controller +``` + +## Disable IPV6 + +Add the following to `/etc/sysctl.conf`: + +```shell +net.ipv6.conf.all.disable_ipv6 = 1 +net.ipv6.conf.default.disable_ipv6 = 1 +net.ipv6.conf.lo.disable_ipv6 = 1 +net.ipv6.conf.eth0.disable_ipv6 = 1 +``` + +Run sysctl to apply the changes: + +```shell +$ sudo sysctl -p +``` + +# Following the Openstack guide... + +OpenStack guide: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html + +## Environment + +### Openstack Packages + +Do not enable the `cloud-archive:liberty` repository. + +Install some dependencies: + +```shell +$ sudo apt-get install openstack-cloud-services python-pymysql +``` + +Answer the questions asked by debconf: + +* New password for the MySQL **root** user: \ + +Install the openstack client: + +```shell +$ sudo apt-get install python-openstackclient +``` + +### NoSQL Database + +The instructions in this section are not required, as Telemetry is not installed. + +## Add the Identity service (Keystone) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during meta package installation later. + +#### Install and configure components + +Install the apache and the keystone meta package: + +```shell +$ sudo apt-get install openstack-cloud-identity +``` + +Answer the questions asked by debconf: + +* Set up a database for Keystone: **Yes** +* Configure database for keystone with dbconfig-common: **Yes** +* Database type to be used by keystone: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for keystone: **\** +* Authentication server administration token: **\** +* Register administration tenants? **Yes** +* Password of the administrative user: **\** +* Register Keystone endpoint? **Yes** +* Keystone endpoint IP address: **\** + +#### Configure the Apache HTTP server + +Omit this section of the guide. + +#### Finalize the installation + +Omit this section of the guide. + +### Create the service entity and API endpoints + +Omit this section of the guide. + +### Create projects, users, and roles + +Omit this section of the guide. + + +## Add the Image service (Glance) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install glance +``` + +Answer the questions asked by debconf: + +* Set up a database for Glance: **Yes** +* Configure database for glance-common with dbconfig-common? **Yes** +* Database type to be used by glance-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for glance-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Pipeline flavor: **keystone** +* Authentication server hostname: **\** +* Authentication server password: **\** +* Register Glance in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Omit this section of the guide. + +### Verify operation + +The CirrOS image to run on aarch64 is the file that ends in `-uec.tar.gz`. It must be extracted and each file (kernel, initrd, disk image) uploaded to Glance separately. + +Download the CirrOS AArch64 UEC tarball and untar it: + +```shell +$ wget http://download.cirros-cloud.net/daily/20150923/cirros-d150923-aarch64-uec.tar.gz +$ tar xvf cirros-d150923-aarch64-uec.tar.gz +``` + +Upload the image parts into Glance. You will need to make note of the IDs assigned to the kernel and initrd and pass them on the command line when uploading the disk image: + +```shell +$ glance image-create --name "cirros-kernel" --visibility public --progress \ + --container-format aki --disk-format aki --file cirros-d150923-aarch64-vmlinuz + +$ glance image-create --name "cirros-initrd" --visibility public --progress \ + --container-format ari --disk-format ari --file cirros-d150923-aarch64-initrd + +$ glance image-create --name "cirros" --visibility public --progress \ + --property hw_machine_type=virt --property hw_cdrom_bus=virtio \ + -property os_command_line='console=ttyAMA0' \ + --property kernel_id=KERNEL_ID --property ramdisk_id=INITRD_ID \ + --container-format ami --disk-format ami --file cirros-d150923-aarch64-blank.img +``` + +## Add the Compute service (Nova) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install nova-api nova-cert nova-conductor \ + nova-consoleauth nova-scheduler nova-compute +``` + +Answer the questions asked by debconf: + +* Set up a database for Nova: **Yes** +* Configure database for nova-common with dbconfig-common? **Yes** +* Database type to be used by nova-common: **mysql** +* Password of the database's administrative user: **\** +* MySQL application password for nova-common: **\** +* IP address of your RabbitMQ host: **\** +* Username for connection to the RabbitMQ server: **guest** +* Password for connection to the RabbitMQ server: **guest** +* Auth server hostname: **\** +* Auth server password: **\** +* Neutron server URL: **http://\:9696** +* Neutron administrator password: **\** +* Metadata proxy shared secret: **\** +* API to activate: choose **osapi_compute and metadata** +* Value for my_ip: **\** +* Register Nova in the Keystone endpoint catalog? **Yes** +* Keystone authentication token: **\** + +#### Finalize installation + +Ensure that vnc and spice are disabled in `/etc/nova/nova.conf`. Look for the following keys in `nova.conf` and set them to False: + +```shell +vnc_enabled=false + +[spice] +enabled=false +``` + +Enable KVM by ensuring the following is in `nova-compute.conf`: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +virt_type=kvm +``` + +**NOTE: Until kernel support for KVM is properly enabled, instances can be run in emulation by ensuring the following is in `nova-compute.conf`**: + +```shell +[DEFAULT] +compute_driver=libvirt.LibvirtDriver + +[libvirt] +cpu_mode = custom +virt_type = qemu +cpu_model = cortex-a57 +``` + +**IMPORTANT: If you make changes to `nova.conf`, or `nova-compute.conf`, restart the nova services:** + +```shell +$ sudo service nova-compute restart +``` + + +## Add the Networking service (Neutron) + +Follow the Openstack guide with the exception of the following changes documented here. + +### Install and configure + +#### Prerequisites + +Omit this section of the guide. These operations will be done during package installation later. + +#### Install and configure components + +```shell +$ sudo apt-get install neutron-server neutron-plugin-ml2 \ + neutron-plugin-linuxbridge-agent neutron-dhcp-agent \ + neutron-metadata-agent +``` + +Answer the questions asked by debconf: + +* neutron-common + * Set up a database for Neutron: **Yes** + * Configure database for neutron-common with dbconfig-common? **Yes** + * Database type to be used by neutron-common: **mysql** + * Password of the database's administrative user: **\** + * MySQL application password for neutron-common: **\** + * IP address of your RabbitMQ host: **\** + * Username for connection to the RabbitMQ server: **guest** + * Password for connection to the RabbitMQ server: **guest** + * Authentication server hostname: **\** + * Authentication server password: **\** + * Neutron plugin: **ml2** +* neutron-metadata-agent + * Auth server hostname: **\** + * Auth server password: **\** + * Name of the region to be used by the metadata server: **\** + * Metadata proxy shared secret: **\** +* neutron-server + * Register Neutron in the Keystone endpoint catalog? **Yes** + * Keystone authentication token: **\** + +#### Configure networking options +Follow "Networking Option 1: Provider networks". + +#### Finalize installation + +Omit this section of the guide. + + +## Launch an instance + +### Create virtual networks + +Follow section “Public provider network” + +### Launch an instance + +Follow section “Launch an instance on the public network” + +NOTE: Accessing an image via the virtual console (VNC) will not work, as VNC is not supported. You may access the console log using the following command: + +```shell +$ nova console-log --length=10 INSTANCE_ID +``` diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/Overdrive/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Highlights.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/Highlights.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Highlights.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Known-Issues.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/Known-Issues.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Known-Issues.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.03/ReleaseStatus-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.03/ReleaseStatus-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/HiKey/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/ConsumerEdition/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Cello/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D02/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/D03/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Overdrive/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/ThunderX/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Highlights.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/Highlights.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Highlights.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Known-Issues.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/Known-Issues.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Known-Issues.md diff --git a/Reference-Platform/Platforms/IoT/RPB_16.06/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/README.md similarity index 100% rename from Reference-Platform/Platforms/IoT/RPB_16.06/README.md rename to Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/README.md From bc63feebc85be8f4b134dd627f0019cfaea2354e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 12:15:46 -0800 Subject: [PATCH 091/268] Small format fix Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 6edac6c..cce4ea5 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -1,4 +1,4 @@ -# Reference Software Platform - Legacy +# Reference Software Platform @@ -26,6 +26,4 @@ For more information about the Reference Software Platform project please watch | [Feedback and Support](Extras/Feedback-and-Support.md)| [Kernel Roadmap](Extras/Kernel-Roadmap.md)| | [Report a bug](Extras/Report-a-bug.md) | [Contribute to RPB](Contribute/README.md) | -*** - [Document Contribution Policy](../ContributionPolicy.md) From 866911b6afdc87e3f97fc7e2eb38c0af3bc37f3e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 12:16:16 -0800 Subject: [PATCH 092/268] Delete .DS_Store --- Reference-Platform/Platforms/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/.DS_Store diff --git a/Reference-Platform/Platforms/.DS_Store b/Reference-Platform/Platforms/.DS_Store deleted file mode 100644 index 0e721867b4ac7c22324180ff96e3a01a47aad268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ5Iwu5S>j@gin!@(pT^etl$*X<^V`>1V}NqAntt{IvUQxS*UsQk!9oMQy_%U zj5Pb!vopKnXUpRuqOfkulxRgnODN;)2t!18opmBJvz!8h?9oz1JG$Rrr^UqE4S$gV zes)Vbr<(5Qfd;fYUG=Xu#4wnQ)c*GKV;_>^DzG&gDS?yO_lAe#ffNz_1Z zk=c&lsqgrW@_LfIqWe|#Ah%EaBKghf0(@OYGP0FX4$qQ9zcM&=v=TXIK)+9&0cXG& z_)!K>vssoWiat66&VVz}Gr-@61j?8hc8c=pz#uIEZ~?Oj=G;qgOk$WBc8XYm1Pujh zXs{L|XgKVN`DKQkqJ~qj<|Ek2!8(*6r(^#_+$m&=J~{)=z?gx#Uaq+QZ$9q-$3cGO z3^)V-ih;1mi+qh+vf4ViIj*${^a{$tew|_;f{B!3_;M*egNneO@C29{c8ah-{6|1& L@WC1QRR-Pw03>D% From a1d3075c964a292b111910ba989d216228b4291a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 12:16:24 -0800 Subject: [PATCH 093/268] Delete .DS_Store --- Reference-Platform/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/.DS_Store diff --git a/Reference-Platform/.DS_Store b/Reference-Platform/.DS_Store deleted file mode 100644 index f24b4c8a675df8f3424f5a32ecb5c91db6121dcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKF-`+95S)b+K{P2T{e}GC6kU3xd;pXaP~7PvNP547SMe5VX1xo#Q(RCWgwU>J z&)S}~eIuRi1t6PKw+2=KmMn^*PQ|plI&|UW1yRZz4;b-`0WbYyWum{>rF*}^EqdJJ zh{^ufyZtyECR?tshOuqC({T^H_3y8RTV-|MU>%;$R-7yzZYU56gaV;JDDYzn@Xl6S zUK>Uo3WNfoz?TAgJ|q^!#xWa~qk~mR0f_pHE=FH-35`jPjbk?C2u&=MXrbaMhFCcJ zlk*zKY-r&SPd>y~{!Ct^tj_sUp+g$Os6&BJV6MQWHCKB7Z~4nqll*x|v_gSU;GZcV zi+0y;_)&hho_(I)wTb19MNN5G9UA@FBY+J(M{dfXjVJZVYaFwo&Z7M#oEQ&*B1lxB Iz%MB90ofNWR{#J2 From b92986a8c770e010a45f927e4cceabb7a042552e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 15:08:55 -0800 Subject: [PATCH 094/268] Delete .DS_Store --- .../Platforms/Enterprise/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/.DS_Store diff --git a/Reference-Platform/Platforms/Enterprise/.DS_Store b/Reference-Platform/Platforms/Enterprise/.DS_Store deleted file mode 100644 index 63f9aa988f9a5ffa587e980c573326c0e3caa758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%TB{E5S)b`Dsjn?qd$TEK~#l1YJULKRDfueswJHBk^LZMy$ec|NWcXlv@6-O zevGpoDYh4YEZcek6aeNdilWYhY4_yNg-@OlC9m;}1}#olVLP$VU+mJ@3*6zzh~LnU zf5)B&?q!S9?s2i+H2Xtu17C9XO;y$H>jpSCFE^R_4Nm=I&f#ekTQAITLxE5r6bJ=E zfsq2dv(@HThEazCp+G3`seqmjiAAw=>;=X!Hk<05 Date: Thu, 8 Dec 2016 15:15:47 -0800 Subject: [PATCH 095/268] Added many low level folders and README.md files Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/Downloads/README.md | 0 Reference-Platform/Platforms/Consumer/GettingStarted/README.md | 0 Reference-Platform/Platforms/Consumer/Hardware/README.md | 0 Reference-Platform/Platforms/Consumer/Installation/README.md | 0 Reference-Platform/Platforms/Consumer/Support/README.md | 0 Reference-Platform/Platforms/Enterprise/Downloads/README.md | 0 Reference-Platform/Platforms/Enterprise/GettingStarted/README.md | 0 Reference-Platform/Platforms/Enterprise/Hardware/README.md | 0 Reference-Platform/Platforms/Enterprise/Installation/README.md | 0 Reference-Platform/Platforms/Enterprise/Support/README.md | 0 Reference-Platform/Platforms/IoT/Downloads/README.md | 0 Reference-Platform/Platforms/IoT/GettingStarted/README.md | 0 Reference-Platform/Platforms/IoT/Hardware/README.md | 0 Reference-Platform/Platforms/IoT/Installation/README.md | 0 Reference-Platform/Platforms/IoT/Support/README.md | 0 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Reference-Platform/Platforms/Consumer/Downloads/README.md create mode 100644 Reference-Platform/Platforms/Consumer/GettingStarted/README.md create mode 100644 Reference-Platform/Platforms/Consumer/Hardware/README.md create mode 100644 Reference-Platform/Platforms/Consumer/Installation/README.md create mode 100644 Reference-Platform/Platforms/Consumer/Support/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/Downloads/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/GettingStarted/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/Hardware/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/Support/README.md create mode 100644 Reference-Platform/Platforms/IoT/Downloads/README.md create mode 100644 Reference-Platform/Platforms/IoT/GettingStarted/README.md create mode 100644 Reference-Platform/Platforms/IoT/Hardware/README.md create mode 100644 Reference-Platform/Platforms/IoT/Installation/README.md create mode 100644 Reference-Platform/Platforms/IoT/Support/README.md diff --git a/Reference-Platform/Platforms/Consumer/Downloads/README.md b/Reference-Platform/Platforms/Consumer/Downloads/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Consumer/GettingStarted/README.md b/Reference-Platform/Platforms/Consumer/GettingStarted/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Consumer/Hardware/README.md b/Reference-Platform/Platforms/Consumer/Hardware/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Consumer/Installation/README.md b/Reference-Platform/Platforms/Consumer/Installation/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Consumer/Support/README.md b/Reference-Platform/Platforms/Consumer/Support/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Enterprise/Downloads/README.md b/Reference-Platform/Platforms/Enterprise/Downloads/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Hardware/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/Enterprise/Support/README.md b/Reference-Platform/Platforms/Enterprise/Support/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/IoT/Downloads/README.md b/Reference-Platform/Platforms/IoT/Downloads/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/IoT/GettingStarted/README.md b/Reference-Platform/Platforms/IoT/GettingStarted/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/IoT/Hardware/README.md b/Reference-Platform/Platforms/IoT/Hardware/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/IoT/Installation/README.md b/Reference-Platform/Platforms/IoT/Installation/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Reference-Platform/Platforms/IoT/Support/README.md b/Reference-Platform/Platforms/IoT/Support/README.md new file mode 100644 index 0000000..e69de29 From b50bf8d8c9e7803ce864a0b2814b27db6d1f5a74 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 8 Dec 2016 15:17:44 -0800 Subject: [PATCH 096/268] Delete .DS_Store Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Consumer/.DS_Store diff --git a/Reference-Platform/Platforms/Consumer/.DS_Store b/Reference-Platform/Platforms/Consumer/.DS_Store deleted file mode 100644 index 63f9aa988f9a5ffa587e980c573326c0e3caa758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%TB{E5S)b`Dsjn?qd$TEK~#l1YJULKRDfueswJHBk^LZMy$ec|NWcXlv@6-O zevGpoDYh4YEZcek6aeNdilWYhY4_yNg-@OlC9m;}1}#olVLP$VU+mJ@3*6zzh~LnU zf5)B&?q!S9?s2i+H2Xtu17C9XO;y$H>jpSCFE^R_4Nm=I&f#ekTQAITLxE5r6bJ=E zfsq2dv(@HThEazCp+G3`seqmjiAAw=>;=X!Hk<05 Date: Thu, 8 Dec 2016 15:18:09 -0800 Subject: [PATCH 097/268] Delete .DS_Store Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/IoT/.DS_Store diff --git a/Reference-Platform/Platforms/IoT/.DS_Store b/Reference-Platform/Platforms/IoT/.DS_Store deleted file mode 100644 index 19b1f5c63b085ac5b27efd6ac7eb0666f23f8717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!A`?441F0pY~s=*$9w|&0aT50;D#6<09vOp(b9=g&izO}i03$}TD6FA0fg+y zeyL+O$%|Ca0Nk?97eE4FMirdQX+}imMF%p89+`CE9TiIcDm)k4L9{vkA_H=Fb6oSz z?r=%l-rr)iuF8F9%Og=`m1TMTx(42>r;89f8kHXrwSOF}nBWF4*x(I2?ySZEw|pw7 z4;*iBD7N3v>FxPE?D@-e%BpjMBXdU1(;?G_#(*(k4E!nstl1*7Q$@4JfH7bUv<%4i z!BYj(h>c?SbkKwrfHN=aH5Zi)c>o``~QBDJsAVWz`tU^O|w Date: Mon, 12 Dec 2016 17:08:45 -0800 Subject: [PATCH 098/268] Many moves and changes to adjust new format. Signed-off-by: Robert Wolff --- .../Consumer/PreviousReleases/README.md | 8 + .../PreviousReleases/RPB_15.12/.DS_Store | Bin 0 -> 6148 bytes .../RPB_15.12/EnterpriseEdition/README.md | 1 - .../PreviousReleases/RPB_15.12/README.md | 4 - .../PreviousReleases/RPB_16.03/.DS_Store | Bin 0 -> 6148 bytes .../EnterpriseEdition/Cello/README.md | 60 -- .../RPB_16.03/EnterpriseEdition/D02/README.md | 64 --- .../RPB_16.03/EnterpriseEdition/D03/README.md | 64 --- .../DHCP-TFTP-Server-UEFI.md | 44 -- .../HP-ProLiant-m400/README.md | 52 -- .../EnterpriseEdition/Install-CentOS-7.md | 216 -------- .../Install-Debian-Jessie.md | 522 ------------------ .../EnterpriseEdition/Install-Fedora-23.md | 164 ------ .../ODPi-BigTop-Hadoop-Config-Run.md | 320 ----------- .../ODPi-Hadoop-Installation.md | 82 --- .../EnterpriseEdition/OpenStack-Liberty.md | 376 ------------- .../EnterpriseEdition/Overdrive/README.md | 68 --- .../RPB_16.03/EnterpriseEdition/README.md | 1 - .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 367 ------------ .../X-Gene-Mustang/README.md | 52 -- .../PreviousReleases/RPB_16.03/README.md | 9 - .../PreviousReleases/RPB_16.06/.DS_Store | Bin 0 -> 6148 bytes .../EnterpriseEdition/Cello/README.md | 58 -- .../RPB_16.06/EnterpriseEdition/D02/README.md | 59 -- .../RPB_16.06/EnterpriseEdition/D03/README.md | 59 -- .../HP-ProLiant-m400/README.md | 47 -- .../EnterpriseEdition/Overdrive/README.md | 59 -- .../EnterpriseEdition/Q2432LZB/README.md | 46 -- .../RPB_16.06/EnterpriseEdition/README.md | 1 - .../EnterpriseEdition/ThunderX/README.md | 46 -- .../X-Gene-Mustang/README.md | 48 -- .../PreviousReleases/RPB_16.06/README.md | 16 - .../Enterprise/PreviousReleases/.DS_Store | Bin 0 -> 6148 bytes .../Enterprise/PreviousReleases/README.md | 8 + .../DragonBoard-410c/BFSDebianRPB-15.10.md | 122 ---- .../InstallDebianRPB-15.10.md | 81 --- .../DragonBoard-410c/README.md | 15 - .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 44 -- .../HiKey/BFSDebianRPB-15.10.md | 53 -- .../HiKey/InstallAOSP-15.10.md | 88 --- .../HiKey/InstallDebianRPB-15.10.md | 85 --- .../RPB_15.10/ConsumerEdition/HiKey/README.md | 24 - .../RPB_15.10/ConsumerEdition/README.md | 1 - .../PreviousReleases/RPB_15.10/Highlights.md | 16 - .../RPB_15.10/Known-Issues.md | 56 -- .../PreviousReleases/RPB_15.10/README.md | 12 - .../PreviousReleases/RPB_15.12/.DS_Store | Bin 0 -> 6148 bytes .../DragonBoard-410c/BFSDebianRPB-15.12.md | 104 ---- .../InstallDebianRPB-15.12.md | 81 --- .../DragonBoard-410c/README.md | 14 - .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 37 -- .../HiKey/BFSDebianRPB-15.12.md | 53 -- .../HiKey/InstallAOSPRPB-15.12.md | 112 ---- .../HiKey/InstallDebianRPB-15.12.md | 97 ---- .../RPB_15.12/ConsumerEdition/HiKey/README.md | 18 - .../RPB_15.12/ConsumerEdition/README.md | 1 - .../PreviousReleases/RPB_16.03/.DS_Store | Bin 0 -> 6148 bytes .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 -- .../DragonBoard-410c/BFSDebianRPB-16.03.md | 280 ---------- .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ------ .../InstallDebianRPB-16.03.md | 153 ----- .../DragonBoard-410c/InstallOERPB-16.03.md | 212 ------- .../DragonBoard-410c/README.md | 32 -- .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 46 -- .../HiKey/BFSDebianRPB-16.03.md | 185 ------- .../ConsumerEdition/HiKey/BuildSourceBL.md | 83 --- .../HiKey/InstallAOSPRPB-16.03.md | 126 ----- .../HiKey/InstallDebianRPB-16.03.md | 111 ---- .../RPB_16.03/ConsumerEdition/HiKey/README.md | 24 - .../RPB_16.03/ConsumerEdition/README.md | 1 - .../PreviousReleases/RPB_16.03/README.md | 5 - .../PreviousReleases/RPB_16.06/.DS_Store | Bin 0 -> 6148 bytes .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 -- .../DragonBoard-410c/BFSDebianRPB-16.06.md | 281 ---------- .../DragonBoard-410c/BFSOERPB-16.03.md | 1 - .../DragonBoard-410c/BFSOERPB.md | 196 ------- .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ------ .../InstallDebianRPB-16.06.md | 326 ----------- .../DragonBoard-410c/InstallOERPB-16.03.md | 212 ------- .../DragonBoard-410c/README.md | 17 - .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 46 -- .../ConsumerEdition/HiKey/BFSDebianRPB.md | 182 ------ .../ConsumerEdition/HiKey/BuildSourceBL.md | 86 --- .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 126 ----- .../ConsumerEdition/HiKey/InstallDebianRPB.md | 265 --------- .../ConsumerEdition/HiKey/InstallOERPB.md | 1 - .../RPB_16.06/ConsumerEdition/HiKey/README.md | 31 -- .../RPB_16.06/ConsumerEdition/README.md | 1 - .../PreviousReleases/RPB_16.06/README.md | 6 - .../Platforms/IoT/PreviousReleases/.DS_Store | Bin 0 -> 6148 bytes .../Platforms/IoT/PreviousReleases/README.md | 5 + .../DragonBoard-410c/BFSDebianRPB-15.10.md | 122 ---- .../InstallDebianRPB-15.10.md | 81 --- .../DragonBoard-410c/README.md | 15 - .../ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md | 44 -- .../HiKey/BFSDebianRPB-15.10.md | 53 -- .../HiKey/InstallAOSP-15.10.md | 88 --- .../HiKey/InstallDebianRPB-15.10.md | 85 --- .../RPB_15.10/ConsumerEdition/HiKey/README.md | 24 - .../RPB_15.10/ConsumerEdition/README.md | 1 - .../PreviousReleases/RPB_15.10/Highlights.md | 16 - .../RPB_15.10/Known-Issues.md | 56 -- .../IoT/PreviousReleases/RPB_15.10/README.md | 12 - .../DragonBoard-410c/BFSDebianRPB-15.12.md | 104 ---- .../InstallDebianRPB-15.12.md | 81 --- .../DragonBoard-410c/README.md | 14 - .../ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md | 37 -- .../HiKey/BFSDebianRPB-15.12.md | 53 -- .../HiKey/InstallAOSPRPB-15.12.md | 112 ---- .../HiKey/InstallDebianRPB-15.12.md | 97 ---- .../RPB_15.12/ConsumerEdition/HiKey/README.md | 18 - .../RPB_15.12/ConsumerEdition/README.md | 1 - .../RPB_15.12/EnterpriseEdition/README.md | 1 - .../PreviousReleases/RPB_15.12/Highlights.md | 49 -- .../RPB_15.12/Known-Issues.md | 73 --- .../IoT/PreviousReleases/RPB_15.12/README.md | 13 - .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 -- .../DragonBoard-410c/BFSDebianRPB-16.03.md | 280 ---------- .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ------ .../InstallDebianRPB-16.03.md | 153 ----- .../DragonBoard-410c/InstallOERPB-16.03.md | 212 ------- .../DragonBoard-410c/README.md | 32 -- .../ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md | 46 -- .../HiKey/BFSDebianRPB-16.03.md | 185 ------- .../ConsumerEdition/HiKey/BuildSourceBL.md | 83 --- .../HiKey/InstallAOSPRPB-16.03.md | 126 ----- .../HiKey/InstallDebianRPB-16.03.md | 111 ---- .../RPB_16.03/ConsumerEdition/HiKey/README.md | 24 - .../RPB_16.03/ConsumerEdition/README.md | 1 - .../EnterpriseEdition/Cello/README.md | 60 -- .../RPB_16.03/EnterpriseEdition/D02/README.md | 64 --- .../RPB_16.03/EnterpriseEdition/D03/README.md | 64 --- .../DHCP-TFTP-Server-UEFI.md | 44 -- .../HP-ProLiant-m400/README.md | 52 -- .../EnterpriseEdition/Install-CentOS-7.md | 216 -------- .../Install-Debian-Jessie.md | 522 ------------------ .../EnterpriseEdition/Install-Fedora-23.md | 164 ------ .../ODPi-BigTop-Hadoop-Config-Run.md | 320 ----------- .../ODPi-Hadoop-Installation.md | 82 --- .../EnterpriseEdition/OpenStack-Liberty.md | 376 ------------- .../EnterpriseEdition/Overdrive/README.md | 68 --- .../RPB_16.03/EnterpriseEdition/README.md | 1 - .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 367 ------------ .../X-Gene-Mustang/README.md | 52 -- .../PreviousReleases/RPB_16.03/Highlights.md | 87 --- .../RPB_16.03/Known-Issues.md | 100 ---- .../IoT/PreviousReleases/RPB_16.03/README.md | 18 - .../RPB_16.03/ReleaseStatus-16.03.md | 170 ------ .../DragonBoard-410c/BFSAOSPRPB-16.03.md | 46 -- .../DragonBoard-410c/BFSDebianRPB-16.06.md | 281 ---------- .../DragonBoard-410c/BFSOERPB-16.03.md | 1 - .../DragonBoard-410c/BFSOERPB.md | 196 ------- .../DragonBoard-410c/InstallAOSPRPB-16.03.md | 155 ------ .../InstallDebianRPB-16.06.md | 326 ----------- .../DragonBoard-410c/InstallOERPB-16.03.md | 212 ------- .../DragonBoard-410c/README.md | 17 - .../ConsumerEdition/HiKey/BFSAOSPRPB.md | 46 -- .../ConsumerEdition/HiKey/BFSDebianRPB.md | 182 ------ .../ConsumerEdition/HiKey/BuildSourceBL.md | 86 --- .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 126 ----- .../ConsumerEdition/HiKey/InstallDebianRPB.md | 265 --------- .../ConsumerEdition/HiKey/InstallOERPB.md | 1 - .../RPB_16.06/ConsumerEdition/HiKey/README.md | 31 -- .../RPB_16.06/ConsumerEdition/README.md | 1 - .../EnterpriseEdition/Cello/README.md | 58 -- .../RPB_16.06/EnterpriseEdition/D02/README.md | 59 -- .../RPB_16.06/EnterpriseEdition/D03/README.md | 59 -- .../HP-ProLiant-m400/README.md | 47 -- .../EnterpriseEdition/Overdrive/README.md | 59 -- .../EnterpriseEdition/Q2432LZB/README.md | 46 -- .../RPB_16.06/EnterpriseEdition/README.md | 1 - .../EnterpriseEdition/ThunderX/README.md | 46 -- .../X-Gene-Mustang/README.md | 48 -- .../PreviousReleases/RPB_16.06/Highlights.md | 96 ---- .../RPB_16.06/Known-Issues.md | 47 -- .../IoT/PreviousReleases/RPB_16.06/README.md | 24 - 176 files changed, 21 insertions(+), 15549 deletions(-) create mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/README.md create mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_15.12/.DS_Store delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md create mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/.DS_Store delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/.DS_Store delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/.DS_Store create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Highlights.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Known-Issues.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/.DS_Store delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/.DS_Store delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/.DS_Store delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/README.md create mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/.DS_Store create mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Highlights.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Known-Issues.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Highlights.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Known-Issues.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Highlights.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Known-Issues.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Highlights.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Known-Issues.md delete mode 100644 Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/README.md diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/README.md new file mode 100644 index 0000000..7bbb42f --- /dev/null +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/README.md @@ -0,0 +1,8 @@ +# Previous Releases + +## Choose your Release + +- [16.06](RPB_16.06/README.md) +- [16.03](RPB_16.03/README.md) +- [15.12](RPB_15.12/README.md) +- [15.10(Alpha)](RPB_15.10/README.md) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_15.12/.DS_Store b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_15.12/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 or to enter setup. -. ->>Checking Media Presence...... ->>Media Present...... ->>Start PXE over IPv4. - Station IP address is 192.168.3.57 - Server IP address is 192.168.3.1 - NBP filename is BOOTAA64.EFI - NBP filesize is 885736 Bytes ->>Checking Media Presence...... ->>Media Present...... - Downloading NBP file... - Succeed to download NBP file. - Fetching Netboot Image -``` - -At this stage you should be able to see the Grub 2 menu, like: - -```shell -Install CentOS 7 ARM 64-bit - Reference Platform - 16.03 -. -Use the and keys to change the selection. -Press 'e' to edit the selected item, or 'c' for a command prompt. -``` - -Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. - -You should see the following: - -```shell -EFI stub: Booting Linux Kernel... -EFI stub: Using DTB from configuration table -EFI stub: Exiting boot services and installing virtual address map... -[ 0.000000] Booting Linux on physical CPU 0x0 -[ 0.000000] Initializing cgroup subsys cpuset -[ 0.000000] Initializing cgroup subsys cpu -[ 0.000000] Initializing cgroup subsys cpuacct -[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 -[ 0.000000] Boot CPU: AArch64 Processor [411fd072] -[ 0.000000] efi: Getting EFI parameters from FDT: -[ 0.000000] EFI v2.40 by American Megatrends -[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 -... -Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! -... -dracut-initqueue[610]: RTNETLINK answers: File exists -dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current -dracut-initqueue[610]: Dload Upload Total Spent Left Speed -100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 -... -Welcome to CentOS Linux 7 (AltArch)! -... -Starting installer, one moment... -anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. - * installation log files are stored in /tmp during the installation - * shell is available on TTY2 - * if the graphical installation interface fails to start, try again with the - inst.text bootoption to start text installation - * when reporting a bug add logs from /tmp as separate text/plain attachments -21:06:29 X startup failed, falling back to text mode -================================================================================ -================================================================================ -VNC -. -X was unable to start on your machine. Would you like to start VNC to connect t -o this computer from another computer and perform a graphical installation or co -ntinue with a text mode installation? -. - 1) Start VNC -. - 2) Use text mode -. - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: 2 -[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log -``` - -For the text mode installer, just enter `2` and follow the instructions available in the console. - -Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. - -### Finishing the installation - -After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. - -Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. - -### Automating the installation with kickstart - -It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. - -Kickstart example: - -```shell -cmdline -url --url="http://mirror.centos.org/altarch/7/os/aarch64/" -repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ -repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ -repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ -lang en_US.UTF-8 -keyboard us -timezone --utc Etc/UTC -auth --useshadow --passalgo=sha512 -rootpw --lock --iscrypted locked -firewall --disabled -firstboot --disabled -selinux --disabled -reboot -network --bootproto=dhcp --device=eth0 --activate --onboot=on -ignoredisk --only-use=sda -bootloader --location=mbr -clearpart --drives=sda --all --initlabel -part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 -part /boot --fstype=ext4 --size=512 -part / --fstype=ext4 --size=10240 --grow -part swap --size=4000 -%packages -wget -net-tools -chrony -%end -%post -useradd -m -U -G wheel linaro -echo linaro | passwd linaro --stdin -%end -``` - -#### Setting up grub.cfg - -Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: - -```shell -menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { - linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg - initrd (tftp)/centos7/initrd.img -} -``` - -In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. - -#### Booting the system - -Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md deleted file mode 100644 index cdea0fe..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md +++ /dev/null @@ -1,522 +0,0 @@ -## Installing Debian "Jessie" 8.4 - -This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) - -### Debian Installer - -The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. - -Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. - -## Loading debian-installer from the network -### Setting up the TFTP server - -Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. - -Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. - -#### Downloading debian-installer: - -```shell -sudo su - -cd /srv/tftp/ -wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz -tar -zxvf netboot.tar.gz -``` - -You should now have the following file tree structure: - -```shell -/srv/tftp/ -├── debian-installer -│   └── arm64 -│   ├── bootnetaa64.efi -│   ├── grub -│   │   ├── arm64-efi -│   │   │   ├── acpi.mod -│   │   │   ├── adler32.mod -│   │   │   ├── all_video.mod -│   │   │   ├── archelp.mod -│   │   │   ├── bfs.mod -│   │   │   ├── bitmap.mod -│   │   │   ├── bitmap_scale.mod -│   │   │   ├── blocklist.mod -│   │   │   ├── boot.mod -│   │   │   ├── btrfs.mod -│   │   │   ├── bufio.mod -│   │   │   ├── cat.mod -│   │   │   ├── cbfs.mod -│   │   │   ├── chain.mod -│   │   │   ├── cmdline_cat_test.mod -│   │   │   ├── cmp.mod -│   │   │   ├── command.lst -│   │   │   ├── cpio_be.mod -│   │   │   ├── cpio.mod -│   │   │   ├── crc64.mod -│   │   │   ├── cryptodisk.mod -│   │   │   ├── crypto.lst -│   │   │   ├── crypto.mod -│   │   │   ├── datehook.mod -│   │   │   ├── date.mod -│   │   │   ├── datetime.mod -│   │   │   ├── diskfilter.mod -│   │   │   ├── disk.mod -│   │   │   ├── div_test.mod -│   │   │   ├── dm_nv.mod -│   │   │   ├── echo.mod -│   │   │   ├── efifwsetup.mod -│   │   │   ├── efi_gop.mod -│   │   │   ├── efinet.mod -│   │   │   ├── elf.mod -│   │   │   ├── eval.mod -│   │   │   ├── exfat.mod -│   │   │   ├── exfctest.mod -│   │   │   ├── ext2.mod -│   │   │   ├── extcmd.mod -│   │   │   ├── fat.mod -│   │   │   ├── file.mod -│   │   │   ├── font.mod -│   │   │   ├── fs.lst -│   │   │   ├── gcry_arcfour.mod -│   │   │   ├── gcry_blowfish.mod -│   │   │   ├── gcry_camellia.mod -│   │   │   ├── gcry_cast5.mod -│   │   │   ├── gcry_crc.mod -│   │   │   ├── gcry_des.mod -│   │   │   ├── gcry_dsa.mod -│   │   │   ├── gcry_idea.mod -│   │   │   ├── gcry_md4.mod -│   │   │   ├── gcry_md5.mod -│   │   │   ├── gcry_rfc2268.mod -│   │   │   ├── gcry_rijndael.mod -│   │   │   ├── gcry_rmd160.mod -│   │   │   ├── gcry_rsa.mod -│   │   │   ├── gcry_seed.mod -│   │   │   ├── gcry_serpent.mod -│   │   │   ├── gcry_sha1.mod -│   │   │   ├── gcry_sha256.mod -│   │   │   ├── gcry_sha512.mod -│   │   │   ├── gcry_tiger.mod -│   │   │   ├── gcry_twofish.mod -│   │   │   ├── gcry_whirlpool.mod -│   │   │   ├── geli.mod -│   │   │   ├── gettext.mod -│   │   │   ├── gfxmenu.mod -│   │   │   ├── gfxterm_background.mod -│   │   │   ├── gfxterm_menu.mod -│   │   │   ├── gfxterm.mod -│   │   │   ├── gptsync.mod -│   │   │   ├── grub.cfg -│   │   │   ├── gzio.mod -│   │   │   ├── halt.mod -│   │   │   ├── hashsum.mod -│   │   │   ├── help.mod -│   │   │   ├── hexdump.mod -│   │   │   ├── hfs.mod -│   │   │   ├── hfspluscomp.mod -│   │   │   ├── hfsplus.mod -│   │   │   ├── http.mod -│   │   │   ├── jfs.mod -│   │   │   ├── jpeg.mod -│   │   │   ├── keystatus.mod -│   │   │   ├── ldm.mod -│   │   │   ├── linux.mod -│   │   │   ├── loadenv.mod -│   │   │   ├── loopback.mod -│   │   │   ├── lsacpi.mod -│   │   │   ├── lsefimmap.mod -│   │   │   ├── lsefi.mod -│   │   │   ├── lsefisystab.mod -│   │   │   ├── lsmmap.mod -│   │   │   ├── ls.mod -│   │   │   ├── lssal.mod -│   │   │   ├── luks.mod -│   │   │   ├── lvm.mod -│   │   │   ├── lzopio.mod -│   │   │   ├── macbless.mod -│   │   │   ├── macho.mod -│   │   │   ├── mdraid09_be.mod -│   │   │   ├── mdraid09.mod -│   │   │   ├── mdraid1x.mod -│   │   │   ├── memrw.mod -│   │   │   ├── minicmd.mod -│   │   │   ├── minix2_be.mod -│   │   │   ├── minix2.mod -│   │   │   ├── minix3_be.mod -│   │   │   ├── minix3.mod -│   │   │   ├── minix_be.mod -│   │   │   ├── mmap.mod -│   │   │   ├── moddep.lst -│   │   │   ├── mpi.mod -│   │   │   ├── msdospart.mod -│   │   │   ├── net.mod -│   │   │   ├── newc.mod -│   │   │   ├── normal.mod -│   │   │   ├── ntfscomp.mod -│   │   │   ├── ntfs.mod -│   │   │   ├── odc.mod -│   │   │   ├── offsetio.mod -│   │   │   ├── part_acorn.mod -│   │   │   ├── part_amiga.mod -│   │   │   ├── part_apple.mod -│   │   │   ├── part_bsd.mod -│   │   │   ├── part_dfly.mod -│   │   │   ├── part_dvh.mod -│   │   │   ├── part_gpt.mod -│   │   │   ├── partmap.lst -│   │   │   ├── part_msdos.mod -│   │   │   ├── part_plan.mod -│   │   │   ├── part_sun.mod -│   │   │   ├── part_sunpc.mod -│   │   │   ├── parttool.lst -│   │   │   ├── parttool.mod -│   │   │   ├── password.mod -│   │   │   ├── password_pbkdf2.mod -│   │   │   ├── pbkdf2.mod -│   │   │   ├── pbkdf2_test.mod -│   │   │   ├── png.mod -│   │   │   ├── priority_queue.mod -│   │   │   ├── probe.mod -│   │   │   ├── procfs.mod -│   │   │   ├── progress.mod -│   │   │   ├── raid5rec.mod -│   │   │   ├── raid6rec.mod -│   │   │   ├── read.mod -│   │   │   ├── reboot.mod -│   │   │   ├── regexp.mod -│   │   │   ├── reiserfs.mod -│   │   │   ├── romfs.mod -│   │   │   ├── scsi.mod -│   │   │   ├── serial.mod -│   │   │   ├── setjmp.mod -│   │   │   ├── setjmp_test.mod -│   │   │   ├── signature_test.mod -│   │   │   ├── sleep.mod -│   │   │   ├── sleep_test.mod -│   │   │   ├── squash4.mod -│   │   │   ├── syslinuxcfg.mod -│   │   │   ├── terminal.lst -│   │   │   ├── terminal.mod -│   │   │   ├── terminfo.mod -│   │   │   ├── test_blockarg.mod -│   │   │   ├── testload.mod -│   │   │   ├── test.mod -│   │   │   ├── testspeed.mod -│   │   │   ├── tftp.mod -│   │   │   ├── tga.mod -│   │   │   ├── time.mod -│   │   │   ├── trig.mod -│   │   │   ├── tr.mod -│   │   │   ├── true.mod -│   │   │   ├── udf.mod -│   │   │   ├── ufs1_be.mod -│   │   │   ├── ufs1.mod -│   │   │   ├── ufs2.mod -│   │   │   ├── verify.mod -│   │   │   ├── video_colors.mod -│   │   │   ├── video_fb.mod -│   │   │   ├── videoinfo.mod -│   │   │   ├── video.lst -│   │   │   ├── video.mod -│   │   │   ├── videotest_checksum.mod -│   │   │   ├── videotest.mod -│   │   │   ├── xfs.mod -│   │   │   ├── xnu_uuid.mod -│   │   │   ├── xnu_uuid_test.mod -│   │   │   ├── xzio.mod -│   │   │   └── zfscrypt.mod -│   │   ├── font.pf2 -│   │   └── grub.cfg -│   ├── initrd.gz -│   └── linux -├── netboot.tar.gz -└── version.info -``` - -Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: - -```shell -dhcp-boot=debian-installer/arm64/bootnetaa64.efi -``` -## Loading debian-installer from the minimal CD - -Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. - -Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): - -``` -wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso -sudo cp mini.iso /dev/sdX -sync -``` - -Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. - -## Booting the installer - -If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. - -You should see the following (using AMD Seattle's Overdrive as example): - -```shell -NOTICE: BL3-1: -NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 -INFO: BL3-1: Initializing runtime services -INFO: BL3-1: Preparing for EL3 exit to normal world -INFO: BL3-1: Next image address = 0x8000000000 -INFO: BL3-1: Next image spsr = 0x3c9 -Boot firmware (version built at 18:27:24 on Nov 23 2015) -Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. -BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 -Press or to enter setup. -. ->>Checking Media Presence...... ->>Media Present...... ->>Start PXE over IPv4. - Station IP address is 192.168.3.57 - Server IP address is 192.168.3.1 - NBP filename is BOOTAA64.EFI - NBP filesize is 885736 Bytes ->>Checking Media Presence...... ->>Media Present...... - Downloading NBP file... - Succeed to download NBP file. - Fetching Netboot Image -``` - -At this stage you should be able to see the Grub 2 menu, like: - -```shell -Install -Advanced options ... -Install with speech synthesis -. -Use the and keys to change the selection. -Press 'e' to edit the selected item, or 'c' for a command prompt. -``` - -Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. - -**NOTE - Cello Only:** The network driver **r8169** needs an additional module parameter for a functional 64-bit DMA operation ([related kernel change](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4300e8c7f64d95a80ffa7d98d98738f41546bc30)), so please edit your grub boot parameter by pressing _e_ at the selected boot line, and add _r8169.use_dac=1_ in the end of the linux line. To boot, simply press _Control + x_. - -You should see the following: - -```shell -EFI stub: Booting Linux Kernel... -EFI stub: Using DTB from configuration table -EFI stub: Exiting boot services and installing virtual address map... -[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND -[ 0.763784] kvm [1]: error: no compatible GIC node found -[ 0.763818] kvm [1]: error initializing Hyp mode: -19 -[ 0.886298] Failed to find cpu0 device node -[ 0.947082] zswap: default zpool zbud not available -[ 0.951959] zswap: pool creation failed -Starting system log daemon: syslogd, klogd. -... - ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ - │ │ - │ Choose the language to be used for the installation process. The │ - │ selected language will also be the default language for the installed │ - │ system. │ - │ │ - │ Language: │ - │ │ - │ C │ - │ English │ - │ │ - │ │ - │ │ - └─────────────────────────────────────────────────────────────────────────┘ - moves; selects; activates buttons -``` - -### Finishing the installation - -For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) - -**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. - -``` -~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f -~ # exit -``` - -Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. - -**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: - -``` -root@debian:~# cat /etc/network/interfaces -... -allow-hotplug enp1s0 -iface enp1s0 inet dhcp - hwaddress ether de:5e:60:e4:6b:1f -``` - -### Automating the installation using preseeding - -Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. - -This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) - -**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: - -```shell -d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands -``` - -#### Creating the preseed file - -Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. - -Once created, make sure the file gets published into a network address that can be reachable from your target device. - -Preseed example (`preseed.cfg`): - -```shell -d-i debian-installer/locale string en_US -d-i keyboard-configuration/xkb-keymap select us -d-i netcfg/dhcp_timeout string 60 -d-i netcfg/get_hostname string unassigned-hostname -d-i netcfg/get_domain string unassigned-domain -d-i netcfg/hostname string debian -d-i mirror/country string manual -d-i mirror/http/hostname string httpredir.debian.org -d-i mirror/http/directory string /debian -d-i mirror/http/proxy string -d-i passwd/root-password password linaro123 -d-i passwd/root-password-again password linaro123 -d-i passwd/user-fullname string Linaro User -d-i passwd/username string linaro -d-i passwd/user-password password linaro -d-i passwd/user-password-again password linaro -d-i passwd/user-default-groups string audio cdrom video sudo -d-i time/zone string UTC -d-i clock-setup/ntp boolean true -d-i clock-setup/utc boolean true -d-i partman-auto/disk string /dev/sda -d-i partman-auto/method string regular -d-i partman-lvm/device_remove_lvm boolean true -d-i partman-md/device_remove_md boolean true -d-i partman-auto/choose_recipe select atomic -d-i partman/confirm_write_new_label boolean true -d-i partman/choose_partition select finish -d-i partman/confirm boolean true -d-i partman/confirm_nooverwrite boolean true -popularity-contest popularity-contest/participate boolean false -tasksel tasksel/first multiselect standard, web-server -d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp -d-i pkgsel/upgrade select safe-upgrade -d-i finish-install/reboot_in_progress note -``` - -In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) - -#### Setting up grub.cfg - -Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: - -```shell -$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg -# Force grub to automatically load the first option -set default=0 -set timeout=1 -menuentry 'Install with preseeding' { - linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- - initrd /debian-installer/arm64/initrd.gz -} -``` - -The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. - -In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. - -#### Booting the system - -Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. - -Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. - -### Building debian-installer from source - -#### Build kernel package and udebs - -Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. - -You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) - -#### Rebuilding debian-installer with the new udebs - -To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. - -Download the installer (from jessie): - -```shell -sudo apt-get build-dep debian-installer -dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u2.dsc -``` - -Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): - -```shell -cd debian-installer-* -cd build -sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common -sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common -``` - -Download the kernel udebs that you created at the localudebs folder: - -```shell -cd localudebs -wget -cd .. -``` - -Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): - -```shell -cat < pkg-lists/local -ext4-modules-\${kernel:Version} -fat-modules-\${kernel:Version} -btrfs-modules-\${kernel:Version} -md-modules-\${kernel:Version} -efi-modules-\${kernel:Version} -scsi-modules-\${kernel:Version} -jfs-modules-\${kernel:Version} -xfs-modules-\${kernel:Version} -ata-modules-\${kernel:Version} -sata-modules-\${kernel:Version} -usb-storage-modules-\${kernel:Version} -EOF -``` - -Set up the local repo, so the installer can locate your udebs (from localudebs): - -```shell -cat < sources.list.udeb -deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ -deb http://httpredir.debian.org/debian jessie main/debian-installer -EOF -``` - -Default preseed to skip known errors (as the kernel provided by local udebs): - -``` -cat < default-preseed -# Continue install on "no kernel modules were found for this kernel" -d-i anna/no_kernel_modules boolean true -# Continue install on "no installable kernels found" -d-i base-installer/kernel/skip-install boolean true -d-i base-installer/kernel/no-kernels-found boolean true -d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb -EOF -``` - -Now just build the installer: - -```shell -fakeroot make build_netboot -``` - -You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md deleted file mode 100644 index c625bdd..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md +++ /dev/null @@ -1,164 +0,0 @@ -## Installing Fedora 23 - -This guide is not to be a replacement of the official Fedora 23 Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation](https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation) - -### Setting up the TFTP server - -Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Fedora 23 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. - -Downloading required Grub 2 UEFI files: - -**Note:** Because of bug [1251600](https://bugzilla.redhat.com/show_bug.cgi?id=1251600), we need to use both `BOOTAA64.EFI` and `grubaa64.efi` from the Fedora 22 release. - -```shell -sudo su - -cd /srv/tftp/ -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/BOOTAA64.EFI -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/grubaa64.efi -``` - -Downloading upstream Kernel and Initrd - -```shell -mkdir /srv/tftp/f23 -cd /srv/tftp/f23 -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/vmlinuz -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/initrd.img -``` - -Creating the Grub 2 config file (`grub.cfg`): - -```shell -menuentry 'Install Fedora 23 ARM 64-bit' --class fedora --class gnu-linux --class gnu --class os { - linux (tftp)/f23/vmlinuz ip=dhcp inst.repo=http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/ - initrd (tftp)/f23/initrd.img -} -``` - -You should now have the following file tree structure: - -```shell -/srv/tftp/ -├── BOOTAA64.EFI -├── f23 -│   ├── initrd.img -│   └── vmlinuz -├── grubaa64.efi -└── grub.cfg -``` - -Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: - -```shell -dhcp-boot=BOOTAA64.EFI -``` - -### Booting the installer - -Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). - -You should see the following (using AMD Seattle's Overdrive as example): - -```shell -NOTICE: BL3-1: -NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 -INFO: BL3-1: Initializing runtime services -INFO: BL3-1: Preparing for EL3 exit to normal world -INFO: BL3-1: Next image address = 0x8000000000 -INFO: BL3-1: Next image spsr = 0x3c9 -Boot firmware (version built at 18:27:24 on Nov 23 2015) -Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. -BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 -Press or to enter setup. -. ->>Checking Media Presence...... ->>Media Present...... ->>Start PXE over IPv4. - Station IP address is 192.168.3.57 - Server IP address is 192.168.3.1 - NBP filename is BOOTAA64.EFI - NBP filesize is 885736 Bytes ->>Checking Media Presence...... ->>Media Present...... - Downloading NBP file... - Succeed to download NBP file. - Fetching Netboot Image -``` - -At this stage you should be able to see the Grub 2 menu, like: - -```shell -Install Fedora 23 ARM 64-bit -. -Use the and keys to change the selection. -Press 'e' to edit the selected item, or 'c' for a command prompt. -``` - -Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Fedora 23 (just make sure that target device has external network access, since the installer is downloaded automatically after booting the kernel). - -You should see the following: - -```shell -EFI stub: Booting Linux Kernel... -EFI stub: Using DTB from configuration table -EFI stub: Exiting boot services and installing virtual address map... -[ 0.000000] Booting Linux on physical CPU 0x0 -[ 0.000000] Initializing cgroup subsys cpuset -[ 0.000000] Initializing cgroup subsys cpu -[ 0.000000] Initializing cgroup subsys cpuacct -[ 0.000000] Linux version 4.2.3-300.fc23.aarch64 (mockbuild@aarch64-08a.arm.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Thu Oct 8 01:39:38 UTC 2015 -[ 0.000000] CPU: AArch64 Processor [411fd072] revision 2 -[ 0.000000] Detected PIPT I-cache on CPU0 -[ 0.000000] alternatives: enabling workaround for ARM erratum 832075 -[ 0.000000] efi: Getting EFI parameters from FDT: -[ 0.000000] EFI v2.40 by American Megatrends -[ 0.000000] efi: ACPI 2.0=0x83ff1c6000 SMBIOS 3.0=0x83ff349718 -... -Welcome to Fedora 23 (Twenty Three) dracut-043-60.git20150811.fc23 (Initramfs)! -... -[ 23.105835] dracut-initqueue[685]: RTNETLINK answers: File exists -[ 23.756828] dracut-initqueue[685]: % Total % Received % Xferd Average Speed Time Time Time Current -[ 23.757345] dracut-initqueue[685]: Dload Upload Total Spent Left Speed -100 958 100 958 0 0 1514 0 --:--:-- --:--:-- --:--:-- 1513 0 --:--:-- --:--:-- --:--:-- 0 -... -Welcome to Fedora 23 (Twenty Three)! -... -Starting installer, one moment... -anaconda 23.19.10-1 for Fedora 23 started. - * installation log files are stored in /tmp during the installation - * shell is available on TTY2 - * if the graphical installation interface fails to start, try again with the - inst.text bootoption to start text installation - * when reporting a bug add logs from /tmp as separate text/plain attachments -00:29:26 X startup failed, falling back to text mode -================================================================================ -================================================================================ -VNC -. -X was unable to start on your machine. Would you like to start VNC to connect t -o this computer from another computer and perform a graphical installation or co -ntinue with a text mode installation? -. - 1) Start VNC -. - 2) Use text mode -. - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: -. -[anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1 -``` - -For the text mode installer, just enter `2` and follow the instructions available in the console. - -Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. - -### Finishing the installation - -After selecting the installation destination, the partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. - -Once the installation is completed, you should be able to simply reboot the system in order to boot your new Fedora 23 system. - -### Automating the installation with kickstart - -TODO diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md deleted file mode 100644 index 5e134d1..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md +++ /dev/null @@ -1,320 +0,0 @@ -This post concentrates on Running Hadoop after [installing](ODPi-Hadoop-Installation.md) ODPi components built using Apache BigTop. These steps are only for configuring it on a single node and running them on a single node. - -# Add Hadoop User - We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop usergroup: - -```shell -sudo useradd -G hadoop hduser -``` - -give a password for hduser - -```shell -sudo passwd hduser -``` - -Add hduser to sudoers list -On Debian: - -```shell -sudo adduser hduser sudo -``` - -On Centos: - -```shell -sudo usermod -G wheel hduser -``` - -Switch to hduser: - -```shell -sudo su - hduser -``` - -# Generate ssh key for hduser - -```shell -ssh-keygen -t rsa -P "" -``` - -Press \ to leave to default file name. - -Enable ssh access to local machine: - -```shell -cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys -``` - -Test ssh setup, as hduser: - -```shell -ssh localhost -``` - -# Disabling IPv6 - -```shell -sudo nano /etc/sysctl.conf -``` - -Add the below lines to the end and save: - -```shell -net.ipv6.conf.all.disable_ipv6 = 1 -net.ipv6.conf.default.disable_ipv6 = 1 -net.ipv6.conf.lo.disable_ipv6 = 1 -``` - -Prefer IPv4 on Hadoop: - -```shell -sudo nano /etc/hadoop/conf/hadoop-env.sh -``` - -Uncomment line: - -```shell -# export HADOOP_OPTS=-Djava.net.preferIPV4stack=true -``` - -Run sysctl to apply the changes: - -```shell -sudo sysctl -p -``` - -# Configuring the app environment -Configure the app environment by following steps: - -```shell -sudo mkdir -p /app/hadoop/tmp -sudo chown hduser:hadoop /app/hadoop/tmp -sudo chmod 750 /app/hadoop/tmp -sudo chown hduser:hadoop /usr/lib/hadoop -sudo chmod 750 /usr/lib/hadoop -``` - -# Setting up Environment Variables -Follow the below steps to setup Environment Variables in bash file : - -```shell -sudo su - hduser -nano .bashrc -``` - -Add the following to the end and save: - -```shell -export HADOOP_HOME=/usr/lib/hadoop -export HADOOP_PREFIX=$HADOOP_HOME -export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" -export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec -export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop -export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native -export HADOOP_COMMON_HOME=$HADOOP_HOME -export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce -export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs -export YARN_HOME=/usr/lib/hadoop-yarn -export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ -export CLASSPATH=$CLASSPATH:. -export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.6.0.jar -export CLASSPATH=$CLASSPATH:$HADOOP_HOME/client/hadoop-hdfs-2.6.0.jar -export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") -export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH -``` - -Execute the terminal environment again (`bash`), or simply logout and change to `hduser` again. - -# Modifying config files -## core-site.xml - -```shell -sudo nano /etc/hadoop/conf/core-site.xml -``` - -And add/modify the following settings: -Look for property with fs.defaultFS and modify as below: - -```shell - - fs.default.name - hdfs://localhost:54310 - The name of the default file system. A URI whose - scheme and authority determine the FileSystem implementation. The - uri's scheme determines the config property (fs.SCHEME.impl) naming - the FileSystem implementation class. The uri's authority is used to - determine the host, port, etc. for a filesystem. - -``` - -Add this to the bottom before \ tag: - -```shell - - hadoop.tmp.dir - /app/hadoop/tmp - A base for other temporary directories. - -``` - -## mapred-site.xml - -```shell -sudo nano /etc/hadoop/conf/mapred-site.xml -``` - -Modify existing properties as follows: -Look for property tag with as mapred.job.tracker and modify as below: - -```shell - - mapred.job.tracker - localhost:54311 - The host and port that the MapReduce job tracker runs - at. If "local", then jobs are run in-process as a single map - and reduce task. - - -``` - -## hdfs-site.xml: - -```shell -sudo nano /etc/hadoop/conf/hdfs-site.xml -``` - -Modify existing property as below : - -```shell - - dfs.replication - 1 - Default block replication. - The actual number of replications can be specified when the file is created. - The default is used if replication is not specified in create time. - - -``` - -# Format Namenode -This step is needed for the first time. Doing it every time will result in loss of content on HDFS. - -```shell -sudo /etc/init.d/hadoop-hdfs-namenode init -``` - -# Start the YARN daemons - -```shell -for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done -sudo /etc/init.d/hadoop-yarn-resourcemanager start -sudo /etc/init.d/hadoop-yarn-nodemanager start -``` - -# Validating Hadoop -Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux - -```shell -sudo jps -``` -or - -```shell -ps aux | grep java -``` - -Alternatively, check if yarn managers are running: - -```shell -sudo /etc/init.d/hadoop-yarn-resourcemanager status -sudo /etc/init.d/hadoop-yarn-nodemanager status -``` - -You would see like below: - -```shell -● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager - Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) - Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago - CGroup: /system.slice/hadoop-yarn-nodemanager.service - └─10366 /usr/lib/jvm/java-1.7.0-openjdk-arm64/bin/java -Dproc_node... - -Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root -Dec 22 18:24:57 debian su[10348]: + ??? root:yarn -Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) -Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... -Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn -Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... -``` - - -## Run teragen, terasort and teravalidate ## - -```shell -hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput - -hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput - -hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate -``` - -## Stop the Hadoop services ## - -```shell -sudo /etc/init.d/hadoop-yarn-nodemanager stop - -sudo /etc/init.d/hadoop-yarn-resourcemanager stop - -for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done -``` - -## Potential Errors / Issues and Resolutions ## -* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: - -```shell -sudo groupadd supergroup - -sudo usermod -g supergroup hduser -``` - -* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. - -```shell -You may have delete all the packages and re-run the steps of installation from scratch. -``` - -* Error while formatting namenode -With the following command: - -```shell -sudo /etc/init.d/hadoop-hdfs-namenode init - - -If you see the following error: - WARN net.DNS: Unable to determine local hostname -falling back to "localhost" - java.net.UnknownHostException: centos: centos - at java.net.InetAddress.getLocalHost(InetAddress.java:1496) - at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) - at org.apache.hadoop.net.DNS.(DNS.java:57) - -Something is wrong in the network setup. Please check /etc/hosts file. - -```shell -sudo nano /etc/hosts -``` - -The hosts file should like below: - -```shell -127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname -::1 localhost -``` - -Also try the following steps: - -```shell -sudo rm -Rf /app/hadoop/tmp - -hadoop namenode -format -``` diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md deleted file mode 100644 index e810f26..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md +++ /dev/null @@ -1,82 +0,0 @@ -This post concentrates on installing ODPi components built using Apache BigTop. These steps configure and run the components on a single node. - -# Prerequisites: - -* Java 7 (e.g. openjdk-7-jre) - -# Repo: - -ODPi deb and rpm packages can be found on Linaro repositories: - -* Debian Jessie - http://repo.linaro.org/ubuntu/linaro-overlay/ -* CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/ - - -# Installation : - -### On Debian: - -Add to repo source list (**not required if you are using the installer from the Reference Platform**): - -```shell -echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list -sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C -``` - -Update the source list and install the dependencies: - -```shell -sudo apt-get update -sudo apt-get install openssh-server rsync openjdk-7-jre openjdk-7-jdk -sudo apt-get build-dep build-essential -``` - -Install Hadoop packages: - -```shell -sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* -``` - -### On CentOS: - -```shell -sudo wget http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo -O /etc/yum.repos.d/linaro-overlay.repo -sudo yum update -sudo yum -y install openssh-server openssh-clients java-1.7.0-openjdk* -sudo yum install -y bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* -``` - -### Verifying Installation - -Packages would get installed in /usr/lib - -Type hadoop to check if hadoop is installed: - -```shell -hadoop -``` - -And you should see the following: - -```shell -linaro@debian:~$ hadoop -Usage: hadoop [--config confdir] COMMAND - where COMMAND is one of: - fs run a generic filesystem user client - version print the version - jar run a jar file - checknative [-a|-h] check native hadoop and compression libraries availability - distcp copy file or directories recursively - archive -archiveName NAME -p * create a hadoop archive - classpath prints the class path needed to get the - credential interact with credential providers - Hadoop jar and the required libraries - daemonlog get/set the log level for each daemon - trace view and modify Hadoop tracing settings - or - CLASSNAME run the class named CLASSNAME -``` - - Most commands print help when invoked w/o parameters. - -Next Step: [Setup, Configuration and Running Hadoop](ODPi-BigTop-Hadoop-Config-Run.md) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md deleted file mode 100644 index d3b4cb9..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md +++ /dev/null @@ -1,376 +0,0 @@ -# OpenStack Liberty - Debian Jessie - -# Introduction - -In general, the instructions in the Liberty install guide should be followed: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html. This guide will describe changes to the documented procedures that should be kept in mind while going through the guide. - -Each section below will correspond to a section in the guide. Guide sections that do not have a corresponding section below may be followed as-is. - -# Release Notes - -## Configuring images for aarch64 - -An image must be configured specially in glance to be able to boot correctly on aarch64. -To attach the devices to the virtio bus (which does not allow hotplugging a volume, but will work if the image does not have SCSI support), the following properties must be set: - -```shell ---property hw_machine_type=virt ---property os_command_line='root=/dev/vda rw rootwait console=ttyAMA0' ---property hw_cdrom_bus=virtio -``` - -To attach the devices to the SCSI bus (which does allow hotplugging a volume, but might not be supported by the guest image), the following properties must be set: - -```shell ---property hw_scsi_model='virtio-scsi' ---property hw_disk_bus='scsi' ---property os_command_line='root=/dev/sda rw rootwait console=ttyAMA0' -``` - -You can set these properties when you are uploading the image into glance, or modify the image if you have already uploaded it. - - -# Pre-Installation - -## Verify/enable additional repositories - -Verify that the `linaro-overlay` and `jessie-backports` repositories are enabled. - -Check if they are available by checking `/etc/apt/sources.list` and `/etc/apt/sources.list.d`. - -If missing, add the following to `/etc/apt/sources.list.d` directory: - -```shell -$ echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list -$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C -``` - -If missing, add the following to `/etc/apt/sources.list.d` directory: - -```shell -$ echo "deb http://httpredir.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backports.list -``` - -## Modify repository priorities - -Create `/etc/apt/preferences.d/jessie-backports`: - -```shell -Package: * -Pin: release a=jessie-backports -Pin-Priority: 500 -``` - -Then, make sure to run apt-get update: - -```shell -$ sudo apt-get update -``` - -## Environment - -Update `/etc/hosts` to add “controller” as an alias for localhost. - -```shell -127.0.0.1 localhost controller -``` - -## Disable IPV6 - -Add the following to `/etc/sysctl.conf`: - -```shell -net.ipv6.conf.all.disable_ipv6 = 1 -net.ipv6.conf.default.disable_ipv6 = 1 -net.ipv6.conf.lo.disable_ipv6 = 1 -net.ipv6.conf.eth0.disable_ipv6 = 1 -``` - -Run sysctl to apply the changes: - -```shell -$ sudo sysctl -p -``` - -# Following the Openstack guide... - -OpenStack guide: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html - -## Environment - -### Openstack Packages - -Do not enable the `cloud-archive:liberty` repository. - -Install some dependencies: - -```shell -$ sudo apt-get install openstack-cloud-services python-pymysql -``` - -Answer the questions asked by debconf: - -* New password for the MySQL **root** user: \ - -Install the openstack client: - -```shell -$ sudo apt-get install python-openstackclient -``` - -### NoSQL Database - -The instructions in this section are not required, as Telemetry is not installed. - -## Add the Identity service (Keystone) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during meta package installation later. - -#### Install and configure components - -Install the apache and the keystone meta package: - -```shell -$ sudo apt-get install openstack-cloud-identity -``` - -Answer the questions asked by debconf: - -* Set up a database for Keystone: **Yes** -* Configure database for keystone with dbconfig-common: **Yes** -* Database type to be used by keystone: **mysql** -* Password of the database's administrative user: **\** -* MySQL application password for keystone: **\** -* Authentication server administration token: **\** -* Register administration tenants? **Yes** -* Password of the administrative user: **\** -* Register Keystone endpoint? **Yes** -* Keystone endpoint IP address: **\** - -#### Configure the Apache HTTP server - -Omit this section of the guide. - -#### Finalize the installation - -Omit this section of the guide. - -### Create the service entity and API endpoints - -Omit this section of the guide. - -### Create projects, users, and roles - -Omit this section of the guide. - - -## Add the Image service (Glance) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during package installation later. - -#### Install and configure components - -```shell -$ sudo apt-get install glance -``` - -Answer the questions asked by debconf: - -* Set up a database for Glance: **Yes** -* Configure database for glance-common with dbconfig-common? **Yes** -* Database type to be used by glance-common: **mysql** -* Password of the database's administrative user: **\** -* MySQL application password for glance-common: **\** -* IP address of your RabbitMQ host: **\** -* Username for connection to the RabbitMQ server: **guest** -* Password for connection to the RabbitMQ server: **guest** -* Pipeline flavor: **keystone** -* Authentication server hostname: **\** -* Authentication server password: **\** -* Register Glance in the Keystone endpoint catalog? **Yes** -* Keystone authentication token: **\** - -#### Finalize installation - -Omit this section of the guide. - -### Verify operation - -The CirrOS image to run on aarch64 is the file that ends in `-uec.tar.gz`. It must be extracted and each file (kernel, initrd, disk image) uploaded to Glance separately. - -Download the CirrOS AArch64 UEC tarball and untar it: - -```shell -$ wget http://download.cirros-cloud.net/daily/20150923/cirros-d150923-aarch64-uec.tar.gz -$ tar xvf cirros-d150923-aarch64-uec.tar.gz -``` - -Upload the image parts into Glance. You will need to make note of the IDs assigned to the kernel and initrd and pass them on the command line when uploading the disk image: - -```shell -$ glance image-create --name "cirros-kernel" --visibility public --progress \ - --container-format aki --disk-format aki --file cirros-d150923-aarch64-vmlinuz - -$ glance image-create --name "cirros-initrd" --visibility public --progress \ - --container-format ari --disk-format ari --file cirros-d150923-aarch64-initrd - -$ glance image-create --name "cirros" --visibility public --progress \ - --property hw_machine_type=virt --property hw_cdrom_bus=virtio \ - -property os_command_line='console=ttyAMA0' \ - --property kernel_id=KERNEL_ID --property ramdisk_id=INITRD_ID \ - --container-format ami --disk-format ami --file cirros-d150923-aarch64-blank.img -``` - -## Add the Compute service (Nova) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during package installation later. - -#### Install and configure components - -```shell -$ sudo apt-get install nova-api nova-cert nova-conductor \ - nova-consoleauth nova-scheduler nova-compute -``` - -Answer the questions asked by debconf: - -* Set up a database for Nova: **Yes** -* Configure database for nova-common with dbconfig-common? **Yes** -* Database type to be used by nova-common: **mysql** -* Password of the database's administrative user: **\** -* MySQL application password for nova-common: **\** -* IP address of your RabbitMQ host: **\** -* Username for connection to the RabbitMQ server: **guest** -* Password for connection to the RabbitMQ server: **guest** -* Auth server hostname: **\** -* Auth server password: **\** -* Neutron server URL: **http://\:9696** -* Neutron administrator password: **\** -* Metadata proxy shared secret: **\** -* API to activate: choose **osapi_compute and metadata** -* Value for my_ip: **\** -* Register Nova in the Keystone endpoint catalog? **Yes** -* Keystone authentication token: **\** - -#### Finalize installation - -Ensure that vnc and spice are disabled in `/etc/nova/nova.conf`. Look for the following keys in `nova.conf` and set them to False: - -```shell -vnc_enabled=false - -[spice] -enabled=false -``` - -Enable KVM by ensuring the following is in `nova-compute.conf`: - -```shell -[DEFAULT] -compute_driver=libvirt.LibvirtDriver - -[libvirt] -virt_type=kvm -``` - -**NOTE: Until kernel support for KVM is properly enabled, instances can be run in emulation by ensuring the following is in `nova-compute.conf`**: - -```shell -[DEFAULT] -compute_driver=libvirt.LibvirtDriver - -[libvirt] -cpu_mode = custom -virt_type = qemu -cpu_model = cortex-a57 -``` - -**IMPORTANT: If you make changes to `nova.conf`, or `nova-compute.conf`, restart the nova services:** - -```shell -$ sudo service nova-compute restart -``` - - -## Add the Networking service (Neutron) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during package installation later. - -#### Install and configure components - -```shell -$ sudo apt-get install neutron-server neutron-plugin-ml2 \ - neutron-plugin-linuxbridge-agent neutron-dhcp-agent \ - neutron-metadata-agent -``` - -Answer the questions asked by debconf: - -* neutron-common - * Set up a database for Neutron: **Yes** - * Configure database for neutron-common with dbconfig-common? **Yes** - * Database type to be used by neutron-common: **mysql** - * Password of the database's administrative user: **\** - * MySQL application password for neutron-common: **\** - * IP address of your RabbitMQ host: **\** - * Username for connection to the RabbitMQ server: **guest** - * Password for connection to the RabbitMQ server: **guest** - * Authentication server hostname: **\** - * Authentication server password: **\** - * Neutron plugin: **ml2** -* neutron-metadata-agent - * Auth server hostname: **\** - * Auth server password: **\** - * Name of the region to be used by the metadata server: **\** - * Metadata proxy shared secret: **\** -* neutron-server - * Register Neutron in the Keystone endpoint catalog? **Yes** - * Keystone authentication token: **\** - -#### Configure networking options -Follow "Networking Option 1: Provider networks". - -#### Finalize installation - -Omit this section of the guide. - - -## Launch an instance - -### Create virtual networks - -Follow section “Public provider network” - -### Launch an instance - -Follow section “Launch an instance on the public network” - -NOTE: Accessing an image via the virtual console (VNC) will not work, as VNC is not supported. You may access the console log using the following command: - -```shell -$ nova console-log --length=10 INSTANCE_ID -``` diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md deleted file mode 100644 index 586bd01..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md +++ /dev/null @@ -1,68 +0,0 @@ -### Overdrive - -*** - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.0*. - -For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. - -The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. - -### Quick Start - -#### AMD Overdrive - -Since the EDK2 based firmware is not yet supported (work in progress), the original AMI BIOS based firmware from AMD is required. - -At the time of the 16.03 release the latest firmware version for Overdrive (*B0*) is 1.0.0.1. Latest for *rev A* is still 0.0.7.4. - -*A* and *B0* are both supported by the 16.03 release (`A` requires an external PCIe NIC) - -After flashing/updating the firmware, proceed to the network installer instructions in order to install your favorite distribution. No special setup is required for Overdrive. - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100), but a board like the [SPI Hook](http://www.tincantools.com/SPI_Hook.html) should also be compatible with it (not yet tested). - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) -* [CentOS 7](../Install-CentOS-7.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md deleted file mode 100644 index 9ba1ff1..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md +++ /dev/null @@ -1,367 +0,0 @@ -## UEFI/EDK2 - -EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. - -The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). - -Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. - -EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. - -This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) - -### Building - -#### Pre-Requisites - -Make sure the build dependencies are available at your host machine. - -On Debian/Ubuntu: - -```shell -sudo apt-get install uuid-dev build-essential aisle -``` - -On RHEL/CentOS/Fedora: - -```shell -sudo yum install uuid-devel libuuid-devel aisle -``` - -Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': - -```shell -wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb -wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb -wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb -sudo dpkg -i --force-all *.deb -``` - -If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. - -Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) - -```shell -mkdir arm-tc arm64-tc -tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz -tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz -export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" -``` - -#### Getting the source code - -UEFI/EDK2: - -```shell -git clone https://github.com/tianocore/edk2.git -git clone https://git.linaro.org/uefi/OpenPlatformPkg.git -cd edk2 -git checkout -b stable-baseline d0d34cdf1d2752f0d7c3ca41af7e7ed29c221d11 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git -ln -s ../OpenPlatformPkg -``` - -ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): - -```shell -git clone https://github.com/ARM-software/arm-trusted-firmware.git -cd arm-trusted-firmware -git checkout -b stable-baseline v1.2 # suggested latest stable release -``` - -UEFI Tools (helpers and scripts to make the build process easy): - -```shell -git clone git://git.linaro.org/uefi/uefi-tools.git -``` - -#### Building UEFI/EDK2 for Juno R0/R1 - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -export ARMTF_DIR=${PWD}/arm-trusted-firmware -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno -``` - -The output files: - -- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` -- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` - -#### Building UEFI/EDK2 for D02 - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -``` - -Since D02 support is not yet merged in OpenPlatformPkg, a specific branch needs to be used for it: - -```shell -cd OpenPlatformPkg -git checkout d02-release -``` - -Then just proceed with the build: - -```shel -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 -``` - -The output file: - -- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` - -#### Building UEFI/EDK2 for Overdrive - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -``` - -Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: - -```shel -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive -``` - -The output file: - -- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` - -#### Building UEFI/EDK2 for HuskyBoard / Cello - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -``` - -Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: - -```shel -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello -``` - -The output file: - -- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` - -### Flashing - -#### Juno R0/R1 - -##### Clean flash - -Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: - -```shell -Cmd> flash -Flash> eraseall -Flash> quit -Cmd> usb_on -``` - -This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. - -In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: - -```shell -git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git -``` - -Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: - -```shell -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE -``` - -Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): - -```shell -cp -rf vexpress-firmware/* /media/recovery -``` - -Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: - -```shell -sync -``` - -Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. - -##### Upgrading UEFI/EDK2 - -If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). - -Export Juno's MMC as a usb storage device on your host machine: - -```shell -Cmd> usb_on -``` - -Then just copy over the UEFI/EDK2 files that were built in the previous steps: - -```shell -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE -``` - -Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: - -```shell -sync -``` - -Then just power cycle the Juno and the board should see and use the new firmware. - -#### D02 - -Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. - -##### Clean flash - -First make sure the built firmware is available in your FTP server ('PV660D02.fd'): - -```shell -cp PV660D02.fd /srv/tftp/ -``` - -Now follow the steps below in order to fetch and flash the new firmware: - -1. Power off the board and unplug the power supply. -2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) - - The board has two SPI flash chips, and this switch selects which one to boot from. -3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell -4. Push the dial switch **3. CPU0_SPI_SEL** to **on** - - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). -5. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master' like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' -6. Exit the EBL console and reboot the board - -##### Upgrading firmware - -There are 2 options for updating the firmware, first via network and the second via USB storage. - -Network upgrade: - -1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') -2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' -3. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master', like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' -4. Exit the EBL console and reboot the board - -USB storage upgrade: -- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): -'newbios fs1:\' - -On EBL fs1 is for USB first partition, while fs0 the ramdisk. - -#### D03 - -Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. - -##### Clean flash - -First make sure the built firmware is available in your FTP server ('D03.fd'): - -```shell -cp D03.fd /srv/tftp/ -``` - -Now follow the steps below in order to fetch and flash the new firmware: - -1. Power off the board and unplug the power supply. -2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d03-2/](http://open-estuary.com/d03-2/) for the board picture) - - The board has two SPI flash chips, and this switch selects which one to boot from. -3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell -4. Push the dial switch **3. CPU0_SPI_SEL** to **on** - - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). -5. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master' like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' -6. Exit the EBL console and reboot the board - -##### Upgrading firmware - -There are 2 options for updating the firmware, first via network and the second via USB storage. - -Network upgrade: - -1. Make sure the built firmware is available in your FTP server ('D03.fd') -2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' -3. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master', like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' -4. Exit the EBL console and reboot the board - -USB storage upgrade: -- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): -'newbios fs1:\' - -On EBL fs1 is for USB first partition, while fs0 the ramdisk. - -#### AMD Overdrive / HuskyBoard / Cello - -##### Clean flash - -###### DediProg SF100 - -Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). - -The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. - -First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: - -```shell -dpcmd --type MX25L12835F -e -``` - -Now just flash the new firmware: - -```shell -dpcmd --type MX25L12835F -p FIRMWARE.rom -``` - -Then just power cycle the board, and it should boot with the new firmware. - -###### SPI Hook - -Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). - -In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) - -Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. - -Example for the 4.5M based firmware: - -```shell -dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc -``` - -Connect the SPI cable, unplug the power cord and flash SPI: - -```shell -sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom -``` - -Then just power cycle the board, and it should boot with the new firmware. - -##### Upgrading firmware - -There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. - -### Links and References: - -- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) -- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md deleted file mode 100644 index 9a9daea..0000000 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md +++ /dev/null @@ -1,52 +0,0 @@ -### X-Gene Mustang - -*** - -### Boot Firmware - -TBD - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.0*. - -For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. - -The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) -* [CentOS 7](../Install-CentOS-7.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/README.md index 68d0477..da29e2f 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/README.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/README.md @@ -4,15 +4,6 @@ ## Choose your Hardware -#### Consumer Edition - [HiKey](ConsumerEdition/HiKey/README.md) - [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) -#### Enterprise Edition -- [D02](EnterpriseEdition/D02/README.md) -- [Overdrive](EnterpriseEdition/Overdrive/README.md) -- [Cello](EnterpriseEdition/Cello/README.md) -- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) -- [HP ProLiant m400](EnterpriseEdition/HP-Proliant-m400/README.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/.DS_Store b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release -``` - -#### Building a boot image - -You now need to create a valid boot image with your own kernel build. - -On your host PC, we need to install the following tools: - -``` -sudo apt-get install device-tree-compiler -git clone git://codeaurora.org/quic/kernel/skales -``` - -The boot image consists of the table of device tree (`dt.img`), the kernel image (`Image`) and an init ramdisk image. - -The `dtbTool` is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. - -`./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/` - -To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. - -The tool `mkbootimg` (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: - -``` -./skales/mkbootimg --kernel arch/arm64/boot/Image \ - --ramdisk initrd.img \ - --output boot-db410c.img \ - --dt dt.img \ - --pagesize 2048 \ - --base 0x80000000 \ - --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" -``` - -#### Booting a custom boot image - -Assuming you have now built a valid boot image called `boot-db410c.img`, you can run the following `fastboot` command to boot it on the board: - -`sudo fastboot boot boot-db410c.img` - -If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the `boot` partition: - -`sudo fastboot flash boot boot-db410c.img` - -#### How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. - -The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): - -``` -git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -``` - -To build the LK bootloader, you can use the following instructions: - -``` -git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- -``` - -The second stage bootloader is flashed on the `aboot` partition, you can now flash your board with: - -`sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn` - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -``` -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -``` -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -``` -cd -dpkg-buildpackage -b -us -uc -``` - -#### TODO - -- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md deleted file mode 100644 index 14f6bd8..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md +++ /dev/null @@ -1,81 +0,0 @@ -## Install Instructions - CE Debian RPB 15.10 - Dragonboard410c - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for Dragonboard410c. - -For more information about the Dragonboard410c development board, please check https://www.96boards.org/products/ce/dragonboard410c/ - -### Image Components - -The CE Debian RPB 15.10 - Dragonboard410c build is composed of the following artifacts: - -- Bootloader: - - [Qualcomm proprietary first stage bootloader](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip) - - [Little Kernel](https://git.linaro.org/landing-teams/working/qualcomm/lk.git) as second stage boot loader -- Linux Kernel: - - Upstream plus extra changes for a better hardware support - - Git: https://github.com/rsalveti/linux.git - - Branch: *reference-qcom-rebase* -- Debian "Jessie" - - ALIP (LXDE based) - - Custom 96Boards artworks and default settings - - Additional packages provided by [linaro-overlay](http://repo.linaro.org/ubuntu/linaro-overlay) - -#### Closed source binaries - -This release contains proprietary firmware. You can also download the proprietary firmware separately, from [here](https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin). All the required firmware files are pre-installed, and the image is bound to the following [license agreement](https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt). - -### Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -Download the latest bootloader zip from [http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux*.zip) - -*CE Debian RPB image:* - -``` -wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-boot-linux-20151106-31.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz -gunzip dragonboard410c-* -``` - -### Flashing - -#### Bootloader - -Flash the eMMC with the bootloader: - -- Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. -- Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC -- Assure micro SD Card slot is empty on the DB410c -- Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} -- Power on the DB410c into fastboot mode - - Press and hold the Vol (-) button on the DB410c (S4) - - While pressing S4 button, power up the DB410c. It will come up in fastboot mode -- From the host PC terminal window, run the following commands: - -``` -# Check to make sure fastboot device connected. If not resolve -sudo fastboot devices -# cd to the directory the bootloader zip file was extracted -cd -sudo ./flashall -``` - -The bootloader is now installed on the DB410c. - -#### Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -*Flashing boot and rootfs:* - -``` -sudo fastboot flash boot dragonboard410c-boot-linux-20151106-31.img -sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img -``` - -Once flashed just reboot the board and enjoy :-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index 2f79a1c..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 15.10 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| **CE Debian RPB - 15.10** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB-15.10.md) | -| [Build from Source](BFSDebianRPB-15.10.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md deleted file mode 100644 index d47aa23..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md +++ /dev/null @@ -1,44 +0,0 @@ -h4. Building AOSP from source - -*NOTE*: This build instructions are not yet reflecting the 15.10 image - -AOSP sources are hosted in these repositories: -* https://github.com/96boards/android_hardware_ti_wpan -* https://github.com/96boards/android_external_wpa_supplicant_8 -* https://github.com/96boards/android_device_linaro_hikey -* https://github.com/96boards/android_manifest - -*Build setup:* - -Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html - -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -bc. ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp - -*Download the code:* - -bc. $ mkdir android/ -$ cd android/ - -Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -*Build the image:* - -bc. $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1\ -> -g "default,-device,hikey" -$ cd .repo/ -$ git clone https://github.com/96boards/android_manifest -b android-5.0 local_manifests -$ cd - -$ repo sync -j8 -$ source build/envsetup.sh -$ lunch hikey-userdebug -$ make droidcore -j8 -$ cd out/target/product/hikey - -h4. TODO - -* Update to reflect the latest/current build diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md deleted file mode 100644 index a8f9ccd..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md +++ /dev/null @@ -1,53 +0,0 @@ -h3. Boot Loader - -Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. - -h3. How to get and customize the kernel source code - -h4. Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux - -bc. git: https://github.com/rsalveti/linux -tag: 96boards-rpb-debian-15.10-hikey -defconfig: arch/arm64/defconfig kernel/configs/distro.config - -The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. - -To build the Linux kernel, you can use the following instructions: - -bc. git clone -n https://github.com/rsalveti/linux.git -cd linux -git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-hikey -export ARCH=arm64 -export CROSS_COMPILE=/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release - -To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. - -h4. How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -bc. sudo apt-get update -sudo apt-get upgrade - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -bc. sudo apt-get update -sudo apt-get build-dep -apt-get source - -Then you can rebuild the package locally with: - -bc. cd -dpkg-buildpackage -b -us -uc - -h4. TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md deleted file mode 100644 index ea36329..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md +++ /dev/null @@ -1,88 +0,0 @@ -h2. Install Instructions - CE AOSP RPB 15.10 - HiKey - -This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.10, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE AOSP RPB 15.10 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader -* Linux Kernel: -** Derived from Linux 3.18 kernel -** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git -** Branch: *hikey* -* AOSP Android Marshmallow 6.0 - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.5* -* Extra firmware files available from firmware-linux -* Mali (requires EULA) - -h3. Downloading the pre-built binaries - -The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/ptable-aosp.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/hisi-idt.py - -*CE AOSP RPB image:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/boot_fat.uefi.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/cache.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/userdata.img.tar.xz - -Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz and follow the instructions to download the file. - -Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: - -bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 -sudo fastboot flash ptable ptable-aosp.img -sudo fastboot flash fastboot fip.bin - -Change @ttyUSB0@ to the right interface name that gets exported to your host system. - -Make sure to reboot the board after updating the partition table (@ptable-aosp.img@), otherwise flashing the system image might fail. - -h4. Boot, System, Cache and Userdata - -Fastboot is required to flash boot, system, cache and userdata. - -Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash the images via recovery mode (after running @hisi-idt.py@). - -*Flashing boot, cache, system and userdata:* - -bc. sudo fastboot flash boot boot_fat.uefi.img -sudo fastboot flash cache cache.img -sudo fastboot flash system system.img -sudo fastboot flash userdata userdata.img - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferencePlatform - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md deleted file mode 100644 index d94b908..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md +++ /dev/null @@ -1,85 +0,0 @@ -h2. Install Instructions - CE Debian RPB 15.10 - HiKey - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE Debian RPB 15.10 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader -* Linux Kernel: -** Upstream plus extra changes for a better hardware support -** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git -** Branch: *reference-hikey-rebase* -* Debian "Jessie" -** ALIP (LXDE based) -** Custom 96Boards artworks and default settings -** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay -** Kernel and initrd loaded from the rootfs (under /boot) - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.6* -* Extra firmware files available from firmware-linux -* Mali (not yet included by default) - -h3. Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/ptable-linux.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/hisi-idt.py - -*CE Debian RPB image:* - -bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-boot-linux-20151106-31.uefi.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz -gunzip hikey-* - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 -sudo fastboot flash ptable ptable-linux.img -sudo fastboot flash fastboot fip.bin - -Change @ttyUSB0@ to the right interface name that gets exported to your host system. - -Make sure to reboot the board after updating the partition table (@ptable-linux.img@), otherwise flashing the rootfs might fail. - -h4. Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). - -*Flashing boot and rootfs:* - -bc. sudo fastboot flash boot hikey-boot-linux-20151106-31.uefi.img -sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferenceSoftware diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md deleted file mode 100644 index a7f56c2..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# HiKey Reference Platform Build - 15.10 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| [CE Debian RPB - 15.10](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/) | -|:------|:------| -| [Install instructions](InstallDebianRPB-15.10.md) | -| [Build from source](BFSDebianRPB-15.10.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/CE-Debian-RPB-15.10-HiKey-TestReport.pdf) | - - - -| [CE AOSP RPB - 15.10](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/) | -|:------|:------| -| [Install instructions](InstallAOSP-15.10.md) | -| [Build from source](BFSAOSPRPB-15.10.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/CE-AOSP-RPB-15.10-HiKey-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Highlights.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Highlights.md deleted file mode 100644 index 52be04b..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Highlights.md +++ /dev/null @@ -1,16 +0,0 @@ -# Highlights - -The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). - -While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at https://builds.96boards.org/releases/dragonboard410c/ and https://builds.96boards.org/releases/hikey/. - -##### Highlights for this release: - -- CE Debian RPBs: - - Debian 8.2 "Jessie" - - 4.3 kernel (with additional patches) - - OpenJDK 8 included by default - - 96Boards artworks and default settings -- CE AOSP RPB: - - AOSP Android Marshmallow 6.0 - - 3.18 based kernel diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Known-Issues.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Known-Issues.md deleted file mode 100644 index 03c5da1..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/Known-Issues.md +++ /dev/null @@ -1,56 +0,0 @@ -## Reference Platform Build - 15.10 Release - Known Issues - -### UEFI - HiKey - -- "Bug 117":https://bugs.96boards.org/show_bug.cgi?id=117 - UEFI fastboot uploads hangs for large images - - Workaround is to use the fastboot support provided by the ARM TF (@bl1.bin@, provided by the binary @l-loader.bin@) - -### Debian - -#### HiKey - -- Mali not supported, missing kernel and userspace support -- [Bug 20](https://bugs.96boards.org/show_bug.cgi?id=20) - USB kernel trace errors -22 -- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete -- [Bug 86](https://bugs.96boards.org/show_bug.cgi?id=86) - Debian ALIP: resize UI screen when underlying DRM resolution changed. -- [Bug 143](https://bugs.96boards.org/show_bug.cgi?id=143) - Mouse cursor invisible after boot (until you open an application) -- [Bug 144](https://bugs.96boards.org/show_bug.cgi?id=144) - Shutdown is not clean -- [Bug 145](https://bugs.96boards.org/show_bug.cgi?id=145) - Thermal sensor is not readable -- [Bug 147](https://bugs.96boards.org/show_bug.cgi?id=147) - Highest resolution of 1080p monitor cannot be detected -- [Bug 148](https://bugs.96boards.org/show_bug.cgi?id=148) - Bluetooth doesn't work -- [Bug 150](https://bugs.96boards.org/show_bug.cgi?id=150) - Cannot login when the screen is locked -- [Bug 151](https://bugs.96boards.org/show_bug.cgi?id=151) - glxgears: couldn't get an RGB, Double-buffered visual -- [Bug 152](https://bugs.96boards.org/show_bug.cgi?id=152) - SD-Card doesn't work -- [Bug 159](https://bugs.96boards.org/show_bug.cgi?id=159) - No sound cards found -- [Bug 160](https://bugs.96boards.org/show_bug.cgi?id=160) - Behaviors of power on button not following hardware user guide - -#### DragonBoard 410c - - - Freedreno graphics driver not provided by the image - -Newer mesa, libdrm and freedreno xorg driver is needed (to be available as part of the next release) - - Workaround is to enable the qcom overlay PPA, and install the required packages: - -``` -sudo su - -echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list -apt-get update -apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno -reboot -``` - -- Slow USB throughput: https://www.96boards.org/forums/topic/super-slow-usb/ -- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete -- [Bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) - Cannot soft power off or shutdown db410c -- [Bug 154](https://bugs.96boards.org/show_bug.cgi?id=154) - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) -- [Bug 156](https://bugs.96boards.org/show_bug.cgi?id=156) - HDMI resolution change not workin -- [Bug 157](https://bugs.96boards.org/show_bug.cgi?id=157) - HDMI audio not working (MIGHT NOT BE A BUG) -- [Bug 165](https://bugs.96boards.org/show_bug.cgi?id=165) - HDMI Display sleep - no way to wake back up - -### AOSP - -#### HiKey - -- [Bug 136](https://bugs.96boards.org/show_bug.cgi?id=136) - HDMI goes off while running CTS -- [Bug 161](https://bugs.96boards.org/show_bug.cgi?id=161) - Fails to enter sleep mode -- [Bug 163](https://bugs.96boards.org/show_bug.cgi?id=163) - HDMI audio not working -- [Bug 164](https://bugs.96boards.org/show_bug.cgi?id=164) - Behaviors of power on button not following hardware user guide diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/README.md deleted file mode 100644 index 7a92254..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.10/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Reference Platform Build - 15.10 - -[RPB 15.10 Highlights](Highlights.md) | [RPB 15.10 Known Issues](Known-Issues.md) - -## Choose your Hardware - -#### Consumer Edition -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -*** - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/.DS_Store b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release - -h4. Building a boot image - -You now need to create a valid boot image with your own kernel build. - -On your host PC, we need to install the following tools: - -bc. sudo apt-get install device-tree-compiler -git clone git://codeaurora.org/quic/kernel/skales - -The boot image consists of the table of device tree (@dt.img@), the kernel image (@Image@) and an init ramdisk image. - -The @dtbTool@ is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. - -bc. ./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/ - -To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. - -The tool @mkbootimg@ (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: - -bc. ./skales/mkbootimg --kernel arch/arm64/boot/Image \ - --ramdisk initrd.img \ - --output boot-db410c.img \ - --dt dt.img \ - --pagesize 2048 \ - --base 0x80000000 \ - --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" - -h4. Booting a custom boot image - -Assuming you have now built a valid boot image called @boot-db410c.img@, you can run the following @fastboot@ command to boot it on the board: - -bc. sudo fastboot boot boot-db410c.img - -If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the @boot@ partition: - -bc. sudo fastboot flash boot boot-db410c.img - -h4. How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on "Qualcomm Developer Network":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip, the second stage bootloader is @LK@ and is open source. - -The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the "Linaro Qualcomm Landing Team git repository":https://git.linaro.org/landing-teams/working/qualcomm/lk.git: - -bc. git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 - -To build the LK bootloader, you can use the following instructions: - -bc. git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- - -The second stage bootloader is flashed on the @aboot@ partition, you can now flash your board with: - -bc. sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn - -h4. How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -bc. sudo apt-get update -sudo apt-get upgrade - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -bc. sudo apt-get update -sudo apt-get build-dep -apt-get source - -Then you can rebuild the package locally with: - -bc. cd -dpkg-buildpackage -b -us -uc - -h4. TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md deleted file mode 100644 index 59fc76a..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md +++ /dev/null @@ -1,81 +0,0 @@ -h2. Install Instructions - CE Debian RPB 15.12 - Dragonboard410c - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for Dragonboard410c. - -For more information about the Dragonboard410c development board, please check "https://www.96boards.org/products/ce/dragonboard410c/":https://www.96boards.org/products/ce/dragonboard410c/ - -h3. Image Components - -The CE Debian RPB 15.12 - Dragonboard410c build is composed of the following artifacts: - -* Bootloader: -** "Qualcomm proprietary first stage bootloader":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip -** "Little Kernel":https://git.linaro.org/landing-teams/working/qualcomm/lk.git as second stage boot loader -* Linux Kernel: -** Upstream plus extra changes for a better hardware support -** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git -** Branch: *reference-qcom-rebase* -* Debian "Jessie" -** ALIP (LXDE based) -** Custom 96Boards artworks and default settings -** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay - -h4. Closed source binaries - -This release contains proprietary firmware. You can also download the proprietary firmware separately, from "here":https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin. All the required firmware files are pre-installed, and the image is bound to the following "license agreement":https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt. - -h3. Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -Download the latest bootloader zip from "http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest":http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest (look for dragonboard410c_bootloader_emmc_linux*.zip) - -*CE Debian RPB image:* - -bc. wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-boot-linux-20151214-35.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz -gunzip dragonboard410c-* - -h3. Flashing - -h4. Bootloader - -Flash the eMMC with the bootloader: - -* Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. -* Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC -* Assure micro SD Card slot is empty on the DB410c -* Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} -* Power on the DB410c into fastboot mode -** Press and hold the Vol (-) button on the DB410c (S4) -** While pressing S4 button, power up the DB410c. It will come up in fastboot mode -* From the host PC terminal window, run the following commands: - -bc. # Check to make sure fastboot device connected. If not resolve -sudo fastboot devices -# cd to the directory the bootloader zip file was extracted -cd -sudo ./flashall - -The bootloader is now installed on the DB410c. - -h4. Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -*Flashing boot and rootfs:* - -bc. sudo fastboot flash boot dragonboard410c-boot-linux-20151214-35.img -sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img - -Once flashed just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform - -In the case that the board experiences an irrecoverable error and no longer function, please check the "rescue image guide":https://github.com/96boards/documentation/wiki/Dragonboard-410c-Installation-Guide-for-Linux-and-Android#create--install-a-rescue-image diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index 4245bd0..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,14 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 15.12 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| **CE Debian RPB - 15.12** | -|:---------------------------------------------------:| -| [Install Instructions](InstallDebianRPB-15.12.md) | -| [Build from Source](BFSDebianRPB-15.12.md) | -| [Known issues](../../Known-Issues.md) | diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md deleted file mode 100644 index 0b74369..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md +++ /dev/null @@ -1,37 +0,0 @@ -h4. Building AOSP from source - -Additional AOSP repositories are hosted at: -* https://github.com/96boards/android_hardware_ti_wpan -* https://github.com/96boards/android_device_linaro_hikey -* https://github.com/96boards/android_manifest -* https://github.com/96boards/linux (branch android-hikey-linaro-4.1) - -*Build setup:* - -Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html - -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -bc. ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp - -*Download the code:* - -bc. mkdir android/ -cd android/ - -Download and extract the Mali vendor binaries in the above directory: "http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2":http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -*Build the image:* - -bc. repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" -cd .repo/ -git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch hikey-userdebug -make droidcore -j8 -cd out/target/product/hikey diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md deleted file mode 100644 index f3a7c58..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md +++ /dev/null @@ -1,53 +0,0 @@ -h3. Boot Loader - -Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. - -h3. How to get and customize the kernel source code - -h4. Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux - -bc. git: https://github.com/rsalveti/linux -tag: 96boards-rpb-debian-15.12-hikey -defconfig: arch/arm64/defconfig kernel/configs/distro.config - -The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. - -To build the Linux kernel, you can use the following instructions: - -bc. git clone -n https://github.com/rsalveti/linux.git -cd linux -git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-hikey -export ARCH=arm64 -export CROSS_COMPILE=/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release - -To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. - -h4. How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -bc. sudo apt-get update -sudo apt-get upgrade - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -bc. sudo apt-get update -sudo apt-get build-dep -apt-get source - -Then you can rebuild the package locally with: - -bc. cd -dpkg-buildpackage -b -us -uc - -h4. TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md deleted file mode 100644 index 30edc3e..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md +++ /dev/null @@ -1,112 +0,0 @@ - -h2. Install Instructions - CE AOSP RPB 15.12 - HiKey - -This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.12, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE AOSP RPB 15.12 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader -* Linux Kernel: -** Derived from Linux 4.1 kernel -** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git -** Branch: *android-hikey-linaro-4.1* -* AOSP Android Marshmallow 6.0 - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.5* -* Extra firmware files available from firmware-linux -* Mali (requires EULA) - -h3. Downloading the pre-built binaries - -The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/nvme.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-4g.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-8g.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/hisi-idt.py - -*CE AOSP RPB image:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/boot_fat.uefi.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/cache.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata-8gb.img.tar.xz - -Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz and follow the instructions to download the file. - -Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: - -bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-aosp@ and @userdata@ files will differ depending on the board you have. - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 - -Then on a 4G compatible device: - -bc. sudo fastboot flash ptable ptable-aosp-4g.img - -Or the following on a 8G compatible device: - -bc. sudo fastboot flash ptable ptable-aosp-8g.img - -Then flash UEFI: - -bc. sudo fastboot flash fastboot fip.bin - -Change @ttyUSB0@ to the right interface name that gets exported to your host system. - -Make sure to reboot the board after updating the partition table (@ptable-aosp@), otherwise flashing the system image might fail. - -h4. Boot, System, Cache and Userdata - -Fastboot is required to flash boot, system, cache and userdata. - -*Flashing boot, cache, system and userdata:* - -Enable fastboot (either via recovery or by changing the boot jumpers), and then just flash the required files: - -bc. sudo fastboot flash boot boot_fat.uefi.img -sudo fastboot flash cache cache.img -sudo fastboot flash system system.img -sudo fastboot flash nvme nvme.img - -Then on a 4G compatible device: - -bc. sudo fastboot flash userdata userdata.img - -Or the following on a 8G compatible device: - -bc. sudo fastboot flash userdata userdata-8gb.img - - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don't have any sd card in place (since it first tries to boot from sd card, boot order can be changed with @sudo fastboot oem bootdevice [emmc|sd]@), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md deleted file mode 100644 index 9ce2d83..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md +++ /dev/null @@ -1,97 +0,0 @@ -h2. Install Instructions - CE Debian RPB 15.12 - HiKey - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE Debian RPB 15.12 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader -* Linux Kernel: -** Upstream plus extra changes for a better hardware support -** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git -** Branch: *reference-hikey-rebase* -* Debian "Jessie" -** ALIP (LXDE based) -** Custom 96Boards artworks and default settings -** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay -** Kernel and initrd loaded from the rootfs (under /boot) - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.6* -* Extra firmware files available from firmware-linux -* Mali (not yet included by default) - -h3. Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/nvme.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-4g.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-8g.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/hisi-idt.py - -*CE Debian RPB image:* - -bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-boot-linux-20151214-35.uefi.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz -gunzip hikey-* - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-linux@ file will differ depending on the board you have. - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin - -Then on a 4G compatible device: - -bc. sudo fastboot flash ptable ptable-linux-4g.img - -Or the following on a 8G compatible device: - -bc. sudo fastboot flash ptable ptable-linux-8g.img - -Then flash UEFI: - -bc. sudo fastboot flash fastboot fip.bin - -Make sure to reboot the board after updating the partition table (@ptable-linux@), otherwise flashing the rootfs might fail. - -h4. Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -To avoid bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). - -*Flashing boot and rootfs:* - -bc. sudo fastboot flash boot hikey-boot-linux-20151214-35.uefi.img -sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don’t have any sd card in place (since it first tries to boot from sd card, boot order can be changed with sudo fastboot oem bootdevice [emmc|sd]), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md deleted file mode 100644 index eff7304..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# HiKey Reference Platform Build - 15.12 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -#### HiKey - -| **CE Debian RPB - 15.12** | **CE AOSP RPB - 15.12** | -|:------------------------------------------------------:|:---------------------------------------------------:| -| [Install Instructions](InstallDebianRPB-15.12.md) | [Install Instructions](InstallAOSPRPB-15.12.md) | -| [Build from Source](BFSDebianRPB-15.12.md) | [Build from Source](BFSAOSPRPB-15.12.md) | -| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | - -*** diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/.DS_Store b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0Skales will be used later when creating the device tree - - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes - -```shell -$ git clone -b 96b-kernelci http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- Once kernel source has been cloned cd into its directory - -```shell -$ cd kernel -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX -``` - -#### Step 7: Copy Modules - -- Modules must be local (host computer) before transferring to target device -- Still within linux directory -- Make temp folder -- Create modules - -```shell -$ mk tmp/modules -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 -``` - -#### Step 8: Find kernel release string - -- This was created during the kernel build -- In this example the kernel.release is 4.4.0+ - -```shell -$ cat include/config/kernel.release -#Output -$ 4.4.0+ -``` - -#### Step 9: Generate modules.dep and map files - -- Helps kernel find modules when system boots -- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 - -```shell -$ depmod -a -b /tmp/modules 4.4.0+ -``` - -#### Step 10: Find DragonBoard™ 410c IP Address - -- On your DragonBoard™ 410c -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 11: Transfer the modules to the target DragonBoard™ 410c - -- Using your board's IP Address for linaro@ - -```shell -$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules -$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#DragonBoard™ 410c shell -db410c $ tar -jxvf modules.tar.bz2 -db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ -``` - -#### Step 12: Generate the initramfs - -- You should still be in the DragonBoard™ 410c shell - -```shell -db410c $ sudo update-initramfs -k 4.4.0+ -c -``` - -- Copy back the new initramfs -- This will be used when creating the boot.mg - -#### Step 13: Create the device tree image and boot image - -###### Device tree - -```shell -$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom -``` - -###### Boot image - -```shell -$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" -``` - -Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. - -- Flashing the boot image can be done using fastboot -- Board must be booted into fastboot mode -- With USB to microUSB cable still connect execute the following: - -```shell -$ sudo fastboot flash boot boot.img -$ sudo fastboot reboot -``` - -*** - -### How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. - -The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): - -```shell -git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -``` - -To build the LK bootloader, you can use the following instructions: - -```shell -git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- -``` - -The second stage bootloader is flashed on the `about` partition, you can now flash your board with: - -```shell -sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn -``` - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -``` -cd -dpkg-buildpackage -b -us -uc -``` - -#### TO-DO - -- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md deleted file mode 100644 index ef52214..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md +++ /dev/null @@ -1,155 +0,0 @@ -[]() -[]() -[]() -[]() -[]() - ->**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Android Bootloader and Boot file - -- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) -- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -#### Step 3: Download all remaining files - -- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) -- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) -- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Android using Fastboot with Linux host - -This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -fastboot devices -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -cd - -#Example: -cd dragonboard410c_bootloader_emmc_android -# = dragonboard410c_bootloader_emmc_android - -# This command will execute the flashall script within the bootloader folder -./flashall - -``` - -5 - **Recall location of all downloaded files from downloads page** - -This will include the files listed below: - -###### Reference Platform files - -- boot.img.tar.xz -- system.img.tar.xz -- userdata.img.tar.xz -- cache.img.tar.xz - -6 - **Unzip all files** - -7 - **Flash all files to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of all extracted(unzipped) files -- `cd` to the directory with your unzipped files -- From within extraction directory, execute the following commands: - -###### Reference Platform - -```shell -# (Once again) Check to make sure fastboot device connected -sudo fastboot devices - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the downloads -sudo fastboot flash boot boot.img -sudo fastboot flash system system.img -sudo fastboot flash userdata userdata.img -sudo fastboot flash cache cache.img -``` - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into Android lock screen. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md deleted file mode 100644 index 56b81fd..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md +++ /dev/null @@ -1,153 +0,0 @@ -[]() -[]() -[]() -[]() -[]() - - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian Bootloader and Boot file - -- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) -- Debian Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) - -#### Step 3: Download Root File System - -- Debian Rootfs (Desktop) ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Wait for about 20 seconds. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -$ fastboot devices -``` - -Typically it will show as bellow -```shell -de82318 fastboot -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` -- XX represents the release number of the Bootloader -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -$ cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -$ cd - -#Example: -cd dragonboard410c_bootloader_emmc_linux-40 -# = dragonboard410c_bootloader_emmc_linux-40 -#This example took place during release 40 - -# This command will execute the flashall script within the bootloader folder -$ ./flashall - -``` - -5 - **Recall location of `boot` and `rootfs` download from the downloads page** - -- You should have downloaded the `boot` file -- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) - -6 - **Unzip both 'boot' and 'rootfs' files** - -7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of extracted(unzipped) `boot` file -- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) -- `cd` to the directory with your unzipped `boot` and `rootfs` files -- From within extraction directory, execute the following commands: - -```shell -# (Once again) Check to make sure fastboot device connected -$ sudo fastboot devices -# It will show similar to bellow if the device is connected successfully -de82318 fastboot - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the boot and rootfs downloads -$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img -$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img -``` -**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into either command line or desktop depending on rootfs - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md deleted file mode 100644 index d64f135..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md +++ /dev/null @@ -1,212 +0,0 @@ -## OpenEmbedded RPB 16.03 - Build from Source - -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. - -# Introduction - -This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: -* http://openembedded.org/wiki/Main_Page -* http://yoctoproject.org/ -* https://www.yoctoproject.org/documentation - -In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. - -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. - -The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. - -## OE Layers - -| Layer | Description | -|:-----------------------:|:----------------------| -| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | -| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | -| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | -| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | -| Meta-qt5 | This is a cross-platform toolkit. | -| Meta-linaro | This layer is used to get the Linaro toolchain. | -| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | -| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | -| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | - -# Package Dependencies - -In order to successfully set up your build environment, you will need to install the following package dependencies. - -**Step 1**: You will need git installed on your Linux host machine - -`$ sudo apt-get install git` - -**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need - -http://www.openembedded.org/wiki/Getting_started - -**Step 3**: Install 96Boards specific dependencies (Case specific) - -Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: - - -`$ sudo apt-get install whiptail` - -or - -`$ sudo apt-get install dialog` - -**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` - -`deb http://archive.ubuntu.com/ubuntu/ xenial universe` - -```shell -$ cd /etc/apt/ -#vim text editor is used in this example -#sudo is used to allow editing, sources.list is set to read only -$ sudo vim sources.list -``` - -All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. - - -# Setup the build environment - -The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. - -To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): - - mkdir -p ${HOME}/bin - curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo - chmod a+x ${HOME}/bin/repo - export PATH=${HOME}/bin:${PATH} - -To initialize your build environment, you need to run: - - mkdir oe-qcom && cd oe-qcom - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro - repo sync - source setup-environment [] - -* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. -* you will be prompted to choose the target machine, pick `dragonboard-410c` -* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' -* is optional, if missing it will default to `build-$DISTRO` - -The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. - -# Build a minimal, console-only image - -To build a console image, you can run: - - $ bitbake rpb-console-image - -At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: -* `rpb-console-image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -# Bootloaders and eMMC partitions - -Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. - -Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: -* remove power from your DragonBoard -* plug a USB cable from your development host to your DragonBoard's J4 connector -* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter -* after a few seconds you can release S4 - -To verify your cables and that the above procedure worked, on your development host run: - - # sudo fastboot devices - -and you should get a non-empty response, e.g. - - # sudo fastboot devices - 83581d40 fastboot - -If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. - -The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: -* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) -* unzip its contents -* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package - -At this point your eMMC has the following partition layout: - -* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) -* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) -* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system - -# Flashing build artifacts - -In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. - -At the end of any successful build you will end up with the following artifacts (amongst others) -* `image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. - -To install these to your DragonBoard's eMMC from your development host: - - # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 - # fastboot flash rootfs image-dragonboard-410c.ext4 - # fastboot flash boot boot-dragonboard-410c.img - -# Proprietary firmware blob - -When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... - -If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. - -If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). - -# Build a simple X11 image - -To build an X11 image with GPU hardware accelerated support run: - - $ bitbake rpb-desktop-image - -At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. - -Then you can finally start the X server, and run any graphical application: - - X& - export DISPLAY=:0 - glxgears - -The default X11 image includes `openbox` window manager, to use it: - - X& - export DISPLAY=:0 - openbox & - glxgears - -Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: - - CORE_IMAGE_EXTRA_INSTALL += "metacity" - -and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: - - X& - export DISPLAY=:0 - metacity& - glxgears - -# Build a sample Wayland/Weston image - -For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: - - $ bitbake rpb-weston-image - -This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. - -If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: - - weston-launch - -And that should get you to the Weston desktop shell. - -# Support - -For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). - -For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index cbabbe6..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 16.03 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| **CE Debian RPB - 16.03** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB-16.03.md) | -| [Build from Source](BFSDebianRPB-16.03.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | - -*** - -| **CE AOSP RPB - 16.03**
(Developer Preview) | -|:---------------------------:| -| [Install Instructions](InstallAOSPRPB-16.03.md) | -| [Build from Source](BFSAOSPRPB-16.03.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/CE-AOSP-RPB-16.03-DB410c-TestReport.pdf) | - -*** - - -| **CE OpenEmbedded - 16.03** | -|:-----------------------------:| -| [Install Instructions](InstallOERPB-16.03.md) | - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md deleted file mode 100644 index 8823ad6..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md +++ /dev/null @@ -1,46 +0,0 @@ -## AOSP RPB 16.03 - Build from Source - -Additional AOSP repositories are hosted here: -- https://github.com/96boards/android_hardware_ti_wpan -- https://github.com/96boards/android_device_linaro_hikey -- https://github.com/96boards/android_manifest -- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) - -**Build setup:** - -Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) - -###### Out of date: -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -```shell - ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp -``` - -*** - -**Download the code:** - -```shell -mkdir android/ -cd android/ -``` - -Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -**Build the image:** - -```shell -repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" -cd .repo/ -git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch hikey-userdebug -make droidcore -j8 -cd out/target/product/hiked -``` diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md deleted file mode 100644 index ee85550..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md +++ /dev/null @@ -1,185 +0,0 @@ -## Debian RPB 16.03 - Build from Source - -- Building Linux Kernel from Source - - Step 1: Setting up your environment on your host computer - - Step 2: Download the Linaro cross compiler toolchain - - Step 3: Export path to cross compiler tool and confirm version - - Step 5: Set the right kernel .config file - - Step 6: Build kernel image and debian package - - Step 7: Copy Modules - - Step 8: Find kernel release string - - Step 9: Generate modules.dep and map files - - Step 10: Find DragonBoard™ 410c IP Address - - Step 11: Transfer the modules to the target HiKey - - Step 12: Generate the initramfs - - Step 13: Create the device tree image and boot image -- Customize Bootloader -- Build Rootfs from source - -*** - -#### Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) - -```shell -git: https://github.com/96boards/linux -Dynamic tag: 96b-kernelci -Fixed tag: 96b/releases/2016.03 -defconfig: arch/arm64/configs/distro.config -``` - -The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) - -To build the Linux kernel, you can use the following instructions: - -#### Step 1: Setting up your environment on your host computer - -- Open your Terminal and cd into your desired directory -- Make a new folder using `mkdir`, name it something relevant - -```shell -#Example of desired directory -$ cd ~/Desktop - -#Example of relevant folder -$ mkdir HiKey-16.03 -$ cd HiKey-16.03 -``` - -#### Step 2: Step 2: Download the Linaro cross compiler toolchain - -- From within the directory you just made -- Download and unzip by executing the following commands - -###### Linaro Cross Compiler - -```shell -#Download -$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -#Unzip -$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -``` - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=~/Desktop/HiKey-16.03/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes -- Use **96b/releases/2016.03** if you want the same version used by the 16.03 release - -```shell -$ git clone -b 96b/releases/2016.03 http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process -- Once kernel source has been cloned cd into its directory - -```shell -$ cd linux -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ cp arch/arm64/configs/distro.config .config -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image and debian package - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory -- Creating the kernel package is recommended for HiKey, as it supports Grub 2 - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag -``` - -#### Step 7: Find HiKey IP Address - -- On your HiKey board -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 8: Transfer the modules to the target HiKey - -- Using your board's IP Address for linaro@ - -```shell -$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#HiKey shell - -$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb -``` -Congratulations! Your new kernel is now ready to be used by your HiKey. - -- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel -- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated - -### Boot Loader - -Please see [https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source](https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source) for instructions on how to built the boot loader from source. - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -```shell -cd -dpkg-buildpackage -b -us -uc -``` - -#### TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md deleted file mode 100644 index 076028b..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md +++ /dev/null @@ -1,83 +0,0 @@ -## Building from source - -The source code is available from: -- [**l-loader**](https://github.com/96boards-hikey/l-loader) -- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) -- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) - -Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. - -### Build instructions - -Prerequisites: -- GCC 5.3 cross-toolchain for Aarch64 available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) -- GCC 5.3 cross-toolchain for gnueabihf available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) -- GPT fdisk (gdisk package from your favorite distribution). - -#### Installing pre-built toolchain(s) - -```shell -mkdir arm-tc arm64-tc -tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz -tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz -export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" -``` - -#### Getting the source code - -```shell -git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git -git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git -git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git -git clone https://github.com/96boards-hikey/l-loader.git -git clone git://git.linaro.org/uefi/uefi-tools.git -``` - -#### Building EDK2/UEFI for HiKey - -Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. - -To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export EDK2_DIR=${PWD}/edk2 -export ATF_DIR=${PWD}/arm-trusted-firmware -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -cd ${EDK2_DIR} -rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg -${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} hikey -``` - -And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): - -```shell -cd ../l-loader -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin -make # requires sudo for creating the partition tables -``` - -The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. - -#### EFI boot partition - -The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). - -```shell -wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi -mkdir boot-fat -dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 -sudo mkfs.fat -n "boot" boot-fat.uefi.img -sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat -sudo mkdir -p boot-fat/EFI/BOOT -sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi -sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi -sudo umount boot-fat -sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img -rm -rf boot-fat -``` - -Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md deleted file mode 100644 index 317256b..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md +++ /dev/null @@ -1,126 +0,0 @@ -#### Your Build Choice - -[]() -[]() -[]() -[]() -[]() - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download the following files - ->Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -Build Folders (**Binaries** / **Image**) - -- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) -- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) -- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) -- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) -- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) -- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) -- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) -- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) -- **system.img.tar.xz** (**Download**) - -*** - -#### Step 3: Install AOSP Using Fastboot with Linux host - -This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready - -3 - **Set HiKey into Recovery Mode using J15 header** - -- Remove link between pins 5 and 6 -- Link pins 1 and 2 -- Link pins 3 and 4 - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | closed -GPIO3-1 | Link 5-6 | open - -4 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable ptable-aosp-8g.img -$ sudo fastboot reboot -$ sudo fastboot flash boot boot_fat.uefi.img -$ sudo fastboot flash cache cache.img -$ sudo fastboot flash system system.img -$ sudo fastboot flash userdata userdata-8gb.img -``` - -5 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 3-4 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md deleted file mode 100644 index 2928cb4..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian partition table - -> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -**ptable-linux.img** ([**4G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-4g.img) / [**8G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-8g.img)) - -*** - -#### Step 3: Download Boot image and Root File System - -- **Debian Boot** ([**Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/hikey-boot-linux-*.uefi.img.gz)) -- **Debian Rootfs** (**Download**) - - -*** - -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. - - - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Wait for about 10 seconds -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready - -3 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable .img -$ sudo fastboot reboot -$ sudo fastboot flash boot .uefi.img -$ sudo fastboot flash system hikey-jessie_alip_2015MMDD-nnn-Xg.emmc.img -``` - -4 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 5-6 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md deleted file mode 100644 index 0761a72..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# HiKey Reference Platform Build - 16.03 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -#### HiKey - - - -| **CE Debian RPB - 16.03** | **CE AOSP RPB - 16.03** | -|:-----------------------------:|:---------------------------:| -| [Install Instructions](InstallDebianRPB-16.03.md) | [Install Instructions](InstallAOSPRPB-16.03.md) | -| [Build from Source](BFSDebianRPB-16.03.md) | [Build from Source](BFSAOSPRPB-16.03.md) | -| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/CE-Debian-RPB-16.03-HiKey-TestReport.pdf) | [Test Report](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/CE-AOSP-RPB-16.03-HiKey-TestReport.pdf) | - - -*** - -Access **bootloader** build from source instructions [here](BuildSourceBL.md) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/README.md index 68d0477..e865f30 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/README.md @@ -4,11 +4,6 @@ ## Choose your Hardware -#### Consumer Edition -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition - [D02](EnterpriseEdition/D02/README.md) - [Overdrive](EnterpriseEdition/Overdrive/README.md) - [Cello](EnterpriseEdition/Cello/README.md) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/.DS_Store b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0Skales will be used later when creating the device tree - - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes - -```shell -$ git clone -b 96b-kernelci http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- Once kernel source has been cloned cd into its directory - -```shell -$ cd kernel -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX -``` - -#### Step 7: Copy Modules - -- Modules must be local (host computer) before transferring to target device -- Still within linux directory -- Make temp folder -- Create modules - -```shell -$ mk tmp/modules -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 -``` - -#### Step 8: Find kernel release string - -- This was created during the kernel build -- In this example the kernel.release is 4.4.0+ - -```shell -$ cat include/config/kernel.release -#Output -$ 4.4.0+ -``` - -#### Step 9: Generate modules.dep and map files - -- Helps kernel find modules when system boots -- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 - -```shell -$ depmod -a -b /tmp/modules 4.4.0+ -``` - -#### Step 10: Find DragonBoard™ 410c IP Address - -- On your DragonBoard™ 410c -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 11: Transfer the modules to the target DragonBoard™ 410c - -- Using your board's IP Address for linaro@ - -```shell -$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules -$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#DragonBoard™ 410c shell -db410c $ tar -jxvf modules.tar.bz2 -db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ -``` - -#### Step 12: Generate the initramfs - -- You should still be in the DragonBoard™ 410c shell - -```shell -db410c $ sudo update-initramfs -k 4.4.0+ -c -``` - -- Copy back the new initramfs -- This will be used when creating the boot.mg - -#### Step 13: Create the device tree image and boot image - -###### Device tree - -```shell -$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom -``` - -###### Boot image - -```shell -$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" -``` - -Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. - -- Flashing the boot image can be done using fastboot -- Board must be booted into fastboot mode -- With USB to microUSB cable still connect execute the following: - -```shell -$ sudo fastboot flash boot boot.img -$ sudo fastboot reboot -``` - -*** - -### How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. - -The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): - -```shell -git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -``` - -To build the LK bootloader, you can use the following instructions: - -```shell -git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- -``` - -The second stage bootloader is flashed on the `about` partition, you can now flash your board with: - -```shell -sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn -``` - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -``` -cd -dpkg-buildpackage -b -us -uc -``` - -#### TO-DO - -- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md deleted file mode 100644 index 66afe04..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md +++ /dev/null @@ -1,196 +0,0 @@ -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. - -# Introduction - -This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: -* http://openembedded.org/wiki/Main_Page -* http://yoctoproject.org/ -* https://www.yoctoproject.org/documentation - -In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. - -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. - -The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. - -# Package Dependencies - -In order to successfully set up your build environment, you will need to install the following package dependencies. - -**Step 1**: You will need git installed on your Linux host machine - -`$ sudo apt-get install git` - -**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need - -http://www.openembedded.org/wiki/Getting_started - -**Step 3**: Install 96Boards specific dependencies (Case specific) - -Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: - - -`$ sudo apt-get install whiptail` - -or - -`$ sudo apt-get install dialog` - -**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` - -`deb http://archive.ubuntu.com/ubuntu/ xenial universe` - -```shell -$ cd /etc/apt/ -#vim text editor is used in this example -#sudo is used to allow editing, sources.list is set to read only -$ sudo vim sources.list -``` - -All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. - - -# Setup the build environment - -The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. - -To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): - - mkdir -p ${HOME}/bin - curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo - chmod a+x ${HOME}/bin/repo - export PATH=${HOME}/bin:${PATH} - -To initialize your build environment, you need to run: - - mkdir oe-qcom && cd oe-qcom - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro - repo sync - source setup-environment [] - -* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. -* you will be prompted to choose the target machine, pick `dragonboard-410c` -* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' -* is optional, if missing it will default to `build-$DISTRO` - -The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. - -# Build a minimal, console-only image - -To build a console image, you can run: - - $ bitbake rpb-console-image - -At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: -* `rpb-console-image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -# Bootloaders and eMMC partitions - -Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. - -Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: -* remove power from your DragonBoard -* plug a USB cable from your development host to your DragonBoard's J4 connector -* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter -* after a few seconds you can release S4 - -To verify your cables and that the above procedure worked, on your development host run: - - # sudo fastboot devices - -and you should get a non-empty response, e.g. - - # sudo fastboot devices - 83581d40 fastboot - -If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. - -The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: -* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) -* unzip its contents -* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package - -At this point your eMMC has the following partition layout: - -* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) -* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) -* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system - -# Flashing build artifacts - -In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. - -At the end of any successful build you will end up with the following artifacts (amongst others) -* `image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. - -To install these to your DragonBoard's eMMC from your development host: - - # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 - # fastboot flash rootfs image-dragonboard-410c.ext4 - # fastboot flash boot boot-dragonboard-410c.img - -# Proprietary firmware blob - -When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... - -If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. - -If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). - -# Build a simple X11 image - -To build an X11 image with GPU hardware accelerated support run: - - $ bitbake rpb-desktop-image - -At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. - -Then you can finally start the X server, and run any graphical application: - - X& - export DISPLAY=:0 - glxgears - -The default X11 image includes `openbox` window manager, to use it: - - X& - export DISPLAY=:0 - openbox & - glxgears - -Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: - - CORE_IMAGE_EXTRA_INSTALL += "metacity" - -and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: - - X& - export DISPLAY=:0 - metacity& - glxgears - -# Build a sample Wayland/Weston image - -For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: - - $ bitbake rpb-weston-image - -This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. - -If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: - - weston-launch - -And that should get you to the Weston desktop shell. - -# Support - -For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). - -For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md deleted file mode 100644 index ef52214..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md +++ /dev/null @@ -1,155 +0,0 @@ -[]() -[]() -[]() -[]() -[]() - ->**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Android Bootloader and Boot file - -- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) -- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -#### Step 3: Download all remaining files - -- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) -- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) -- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Android using Fastboot with Linux host - -This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -fastboot devices -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -cd - -#Example: -cd dragonboard410c_bootloader_emmc_android -# = dragonboard410c_bootloader_emmc_android - -# This command will execute the flashall script within the bootloader folder -./flashall - -``` - -5 - **Recall location of all downloaded files from downloads page** - -This will include the files listed below: - -###### Reference Platform files - -- boot.img.tar.xz -- system.img.tar.xz -- userdata.img.tar.xz -- cache.img.tar.xz - -6 - **Unzip all files** - -7 - **Flash all files to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of all extracted(unzipped) files -- `cd` to the directory with your unzipped files -- From within extraction directory, execute the following commands: - -###### Reference Platform - -```shell -# (Once again) Check to make sure fastboot device connected -sudo fastboot devices - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the downloads -sudo fastboot flash boot boot.img -sudo fastboot flash system system.img -sudo fastboot flash userdata userdata.img -sudo fastboot flash cache cache.img -``` - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into Android lock screen. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md deleted file mode 100644 index f45ae71..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md +++ /dev/null @@ -1,326 +0,0 @@ -# Install Instructions - Reference Software Platform - -This page provides download and installation instructions inteded for those interested in flashing the DragonBoard 410c board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/). - -## Contents - -- [SD Card Method](#sd-card-method) -- [Fastboot Method](#fastboot-method) - -*** - -# SD Card Method - -#### Step 1: Read about the SD Card Method - -The SD card method allows you to place a microSD card into the DragonBoard™ 410c to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- MicroSD card with 4GB or more of storage -- USB Mouse and/or keyboard -- HDMI Monitor with full size HDMI cable - - -*** - -#### Step 2: Download SD Card Image - -[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-debian-jessie-alip-sdcard-*.img.gz) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** - -#### Step 3: Prepare MicroSD card - -- Ensure data from mircoSD card is backed up -- Everything on microSD card will be lost by the end of this procedure. - -*** - -#### Step 4: Find SD Card Device name - -- Use host Linux computer -- Open "Terminal" application -- Remove SD card from host computer and run the following command: -```shell -$ lsblk -``` -- Note all recognized disk names -- **Insert SD card** and run the following command (again): -```shell -$ lsblk -``` -- Note the newly recognized disk. This will be your SD card. -- **Remember** your SD card device name for a later step - -*** - -#### Step 5: Recall Download Location - -- Locate SD card install file from Downloads page. -- This file will be needed for the next step. - -*** - -#### Step 6: Unzip _SD Card Install Image_ - -- When unzipped, you will have a folder with the following contents: - - Linaro/Debian Install Image (.img) - - Readme - - -*** - -#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal - -- Use host Linux computer -- Open "Terminal" application -- `cd` to the directory with your unzipped **Debian SD Card Install Image** - -```shell -$ cd - -#Example: -# = /home/YourUserName/Downloads -#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. -$ cd /home/YourUserName/Downloads -``` - - -*** - -#### Step 8: Locate SD Card Install Image - -- Make sure you are in the extraction directory - -**Unzipped Debian SD Card download will be a folder. This folder should be listed in your directory. Type `ls` from command line for a list of files that can be found in your current directory**: - -```shell -$ ls - -#output -dragonboard410c_sdcard_install_debian-XX -``` - -- Unzipped folder should be called dragonboard410c_sdcard_install_debian-XX, where XX represents the Debian release number -- `cd` into this directory - -```shell -$ cd dragonboard410c_sdcard_install_debian-XX -``` - -- Inside this folder you will find the install image - - `db410c_sd_install_debian.img` -- This `.img` file is what will be flashed to your SD Card. - - -*** - -#### Step 9: Install Image onto SD Card - -**Checklist:** - -- SD card inserted into host Linux computer -- Recall SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name) -- From within the dragonboard410c_sdcard_install_debian-XX folder, using the Terminal execute the following commands: - -**Execute:** - -```shell -$ sudo dd if=db410c_sd_install_debian.img of=/dev/XXX bs=4M oflag=sync status=noxfer -``` - -**Note:** - -- `if=db410c_sd_install_debian.img`: should match the name of the image that was downloaded. -- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name). Be sure to use the device name with out the partition. -- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. -- Once SD card is done flashing, remove from host computer and set aside for a later step - -*** - -#### Step 10: Prepare DragonBoard™ 410c with SD card - -- Make sure DragonBoard™ 410c is unplugged from power -- Set S6 switch on DragonBoard™ 410c to `0-1-0-0`, "SD Boot switch" should be set to "ON". - - Please see "1.1 Board Overview" on page 7 from [DragonBoard™ 410c Hardware Manual](http://linaro.co/96b-hwm-db) if you cannot find S6 -- Connect an HDMI monitor to the DragonBoard™ 410c with an HDMI cable, and power on the monitor -- Plug a USB keyboard and/or mouse into either of the two USB connectors on the DragonBoard™ 410c -- Insert the microSD card into the DragonBoard™ 410c -- Plug power adaptor into DragonBoard™ 410c, wait for board to boot up. - -*** - -#### Step 11: Install RPB Linaro/Debian onto DragonBoard™ 410c - - - -- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your DragonBoard™ 410c -- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory -- This process can take a few minutes to complete -- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. - -Before clicking "OK": - -- Remove the SD Card -- Set S6 switch on DragonBoard™ 410c to `0-0-0-0`, all switches should be set to "OFF" -- Now click "OK" button and allow DragonBoard™ 410c to reboot. - -**Congratulations! You are now booting your newly installed operating system directly from eMMC on the DragonBoard™ 410c!** - -[Back to top](#install-instructions---reference-software-platform) - -*** - -# Fastboot Method - - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host Linux machine -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian Bootloader - -- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) - -#### Step 3: Download Boot image and Root file system - -- Debian Boot ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) -- Debian Rootfs (Desktop) ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Wait for about 20 seconds. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -$ fastboot devices -``` - -Typically it will show as bellow -```shell -de82318 fastboot -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` -- XX represents the release number of the Bootloader -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -$ cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -$ cd - -#Example: -cd dragonboard410c_bootloader_emmc_linux-40 -# = dragonboard410c_bootloader_emmc_linux-40 -#This example took place during release 40 - -# This command will execute the flashall script within the bootloader folder -$ ./flashall - -``` - -5 - **Recall location of `boot` and `rootfs` download from the downloads page** - -- You should have downloaded the `boot` file -- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) - -6 - **Unzip both 'boot' and 'rootfs' files** - -7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of extracted(unzipped) `boot` file -- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) -- `cd` to the directory with your unzipped `boot` and `rootfs` files -- From within extraction directory, execute the following commands: - -```shell -# (Once again) Check to make sure fastboot device connected -$ sudo fastboot devices -# It will show similar to bellow if the device is connected successfully -de82318 fastboot - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the boot and rootfs downloads -$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img -$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img -``` -**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into either command line or desktop depending on rootfs - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** - -[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md deleted file mode 100644 index d64f135..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md +++ /dev/null @@ -1,212 +0,0 @@ -## OpenEmbedded RPB 16.03 - Build from Source - -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. - -# Introduction - -This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: -* http://openembedded.org/wiki/Main_Page -* http://yoctoproject.org/ -* https://www.yoctoproject.org/documentation - -In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. - -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. - -The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. - -## OE Layers - -| Layer | Description | -|:-----------------------:|:----------------------| -| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | -| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | -| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | -| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | -| Meta-qt5 | This is a cross-platform toolkit. | -| Meta-linaro | This layer is used to get the Linaro toolchain. | -| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | -| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | -| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | - -# Package Dependencies - -In order to successfully set up your build environment, you will need to install the following package dependencies. - -**Step 1**: You will need git installed on your Linux host machine - -`$ sudo apt-get install git` - -**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need - -http://www.openembedded.org/wiki/Getting_started - -**Step 3**: Install 96Boards specific dependencies (Case specific) - -Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: - - -`$ sudo apt-get install whiptail` - -or - -`$ sudo apt-get install dialog` - -**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` - -`deb http://archive.ubuntu.com/ubuntu/ xenial universe` - -```shell -$ cd /etc/apt/ -#vim text editor is used in this example -#sudo is used to allow editing, sources.list is set to read only -$ sudo vim sources.list -``` - -All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. - - -# Setup the build environment - -The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. - -To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): - - mkdir -p ${HOME}/bin - curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo - chmod a+x ${HOME}/bin/repo - export PATH=${HOME}/bin:${PATH} - -To initialize your build environment, you need to run: - - mkdir oe-qcom && cd oe-qcom - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro - repo sync - source setup-environment [] - -* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. -* you will be prompted to choose the target machine, pick `dragonboard-410c` -* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' -* is optional, if missing it will default to `build-$DISTRO` - -The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. - -# Build a minimal, console-only image - -To build a console image, you can run: - - $ bitbake rpb-console-image - -At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: -* `rpb-console-image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -# Bootloaders and eMMC partitions - -Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. - -Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: -* remove power from your DragonBoard -* plug a USB cable from your development host to your DragonBoard's J4 connector -* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter -* after a few seconds you can release S4 - -To verify your cables and that the above procedure worked, on your development host run: - - # sudo fastboot devices - -and you should get a non-empty response, e.g. - - # sudo fastboot devices - 83581d40 fastboot - -If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. - -The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: -* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) -* unzip its contents -* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package - -At this point your eMMC has the following partition layout: - -* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) -* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) -* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system - -# Flashing build artifacts - -In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. - -At the end of any successful build you will end up with the following artifacts (amongst others) -* `image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. - -To install these to your DragonBoard's eMMC from your development host: - - # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 - # fastboot flash rootfs image-dragonboard-410c.ext4 - # fastboot flash boot boot-dragonboard-410c.img - -# Proprietary firmware blob - -When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... - -If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. - -If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). - -# Build a simple X11 image - -To build an X11 image with GPU hardware accelerated support run: - - $ bitbake rpb-desktop-image - -At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. - -Then you can finally start the X server, and run any graphical application: - - X& - export DISPLAY=:0 - glxgears - -The default X11 image includes `openbox` window manager, to use it: - - X& - export DISPLAY=:0 - openbox & - glxgears - -Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: - - CORE_IMAGE_EXTRA_INSTALL += "metacity" - -and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: - - X& - export DISPLAY=:0 - metacity& - glxgears - -# Build a sample Wayland/Weston image - -For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: - - $ bitbake rpb-weston-image - -This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. - -If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: - - weston-launch - -And that should get you to the Weston desktop shell. - -# Support - -For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). - -For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index cb2b5f5..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,17 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 16.06 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. - -*** - -| **CE Debian RPB - 16.06** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB-16.06.md) | -| [Build from Source](BFSDebianRPB-16.06.md) | -| [Known issues](../../../Known-Issues.md) | - -*** - -- Access generic **OpenEmbedded** build from source instructions [here](../../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md deleted file mode 100644 index 8823ad6..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md +++ /dev/null @@ -1,46 +0,0 @@ -## AOSP RPB 16.03 - Build from Source - -Additional AOSP repositories are hosted here: -- https://github.com/96boards/android_hardware_ti_wpan -- https://github.com/96boards/android_device_linaro_hikey -- https://github.com/96boards/android_manifest -- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) - -**Build setup:** - -Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) - -###### Out of date: -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -```shell - ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp -``` - -*** - -**Download the code:** - -```shell -mkdir android/ -cd android/ -``` - -Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -**Build the image:** - -```shell -repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" -cd .repo/ -git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch hikey-userdebug -make droidcore -j8 -cd out/target/product/hiked -``` diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md deleted file mode 100644 index 6c74c11..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md +++ /dev/null @@ -1,182 +0,0 @@ -## Debian RPB 16.06 - Build from Source - -- Building Linux Kernel from Source - - Step 1: Setting up your environment on your host computer - - Step 2: Download the Linaro cross compiler toolchain - - Step 3: Export path to cross compiler tool and confirm version - - Step 5: Set the right kernel .config file - - Step 6: Build kernel image and debian package - - Step 7: Find HiKey IP Address - - Step 8: Transfer the modules to the target HiKey - - Step 9: Generate the initramfs - - Step 10: Create the device tree image and boot image -- Customize Bootloader -- Build Rootfs from source - -*** - -#### Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) - -```shell -git: https://github.com/96boards/linux -Dynamic tag: 96b-kernelci -Fixed tag: 96b/releases/2016.06 -defconfig: arch/arm64/configs/distro.config -``` - -The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) - -To build the Linux kernel, you can use the following instructions: - -#### Step 1: Setting up your environment on your host computer - -- Open your Terminal and cd into your desired directory -- Make a new folder using `mkdir`, name it something relevant - -```shell -#Example of desired directory -$ cd ~/Desktop - -#Example of relevant folder -$ mkdir HiKey-16.06 -$ cd HiKey-16.06 -``` - -#### Step 2: Step 2: Download the Linaro cross compiler toolchain - -- From within the directory you just made -- Download and unzip by executing the following commands - -###### Linaro Cross Compiler - -```shell -#Download -$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -#Unzip -$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -``` - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=~/Desktop/HiKey-16.06/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes -- Use **96b/releases/2016.06** if you want the same version used by the 16.06 release - -```shell -$ git clone -b 96b/releases/2016.06 http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process -- Once kernel source has been cloned cd into its directory - -```shell -$ cd linux -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ cp arch/arm64/configs/distro.config .config -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image and debian package - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory -- Creating the kernel package is recommended for HiKey, as it supports Grub 2 - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag -``` - -#### Step 7: Find HiKey IP Address - -- On your HiKey board -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 8: Transfer the modules to the target HiKey - -- Using your board's IP Address for linaro@ - -```shell -$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#HiKey shell - -$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb -``` -Congratulations! Your new kernel is now ready to be used by your HiKey. - -- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel -- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated - -### Boot Loader - -Please see go [here](BuildSourceBL.md) for instructions on how to built the boot loader from source. - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -```shell -cd -dpkg-buildpackage -b -us -uc -``` - -#### TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md deleted file mode 100644 index 9dce74b..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md +++ /dev/null @@ -1,86 +0,0 @@ -## HiKey Bootloader - Building from source - -The source code is available from: -- [**l-loader**](https://github.com/96boards-hikey/l-loader) -- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) -- [**OP-TEE**](https://github.com/OP-TEE/optee_os) -- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) - -Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. - -### Build instructions - -Prerequisites: -- GCC 5.3 cross-toolchain for Aarch64 available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) -- GCC 5.3 cross-toolchain for gnueabihf available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) -- GPT fdisk (gdisk package from your favorite distribution). - -#### Installing pre-built toolchain(s) - -```shell -mkdir arm-tc arm64-tc -tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz -tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz -export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" -``` - -#### Getting the source code - -```shell -git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git -git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git -git clone https://github.com/OP-TEE/optee_os.git -git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git -git clone https://github.com/96boards-hikey/l-loader.git -git clone -b hikey-aosp https://github.com/96boards-hikey/uefi-tools.git -``` - -#### Building EDK2/UEFI for HiKey - -Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. - -To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export EDK2_DIR=${PWD}/edk2 -export OPTEE_DIR=${PWD}/optee_os -export ATF_DIR=${PWD}/arm-trusted-firmware -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -cd ${EDK2_DIR} -rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg -${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} -s ${OPTEE_DIR} hikey -``` - -And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): - -```shell -cd ../l-loader -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin -make # requires sudo for creating the partition tables -``` - -The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. - -#### EFI boot partition - -The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). - -```shell -wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi -mkdir boot-fat -dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 -sudo mkfs.fat -n "boot" boot-fat.uefi.img -sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat -sudo mkdir -p boot-fat/EFI/BOOT -sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi -sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi -sudo umount boot-fat -sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img -rm -rf boot-fat -``` - -Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md deleted file mode 100644 index 317256b..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md +++ /dev/null @@ -1,126 +0,0 @@ -#### Your Build Choice - -[]() -[]() -[]() -[]() -[]() - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download the following files - ->Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -Build Folders (**Binaries** / **Image**) - -- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) -- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) -- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) -- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) -- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) -- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) -- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) -- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) -- **system.img.tar.xz** (**Download**) - -*** - -#### Step 3: Install AOSP Using Fastboot with Linux host - -This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready - -3 - **Set HiKey into Recovery Mode using J15 header** - -- Remove link between pins 5 and 6 -- Link pins 1 and 2 -- Link pins 3 and 4 - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | closed -GPIO3-1 | Link 5-6 | open - -4 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable ptable-aosp-8g.img -$ sudo fastboot reboot -$ sudo fastboot flash boot boot_fat.uefi.img -$ sudo fastboot flash cache cache.img -$ sudo fastboot flash system system.img -$ sudo fastboot flash userdata userdata-8gb.img -``` - -5 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 3-4 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md deleted file mode 100644 index d14bb67..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md +++ /dev/null @@ -1,265 +0,0 @@ -# Install Instructions - Reference Software Platform - -This page provides download and installation instructions inteded for those interested in flashing the HiKey board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/). - -## Contents - -- [SD Card Method](#sd-card-method) -- [Fastboot Method](#fastboot-method) - -*** - -# SD Card Method - - - - - - - -#### Step 1: Read about the SD Card Method - -The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. - -This method requires the following hardware: -- HiKey with power supply -- Host Linux machine (Linux, Mac OS X, or Windows) -- MicroSD card with 4GB or more of storage -- USB Mouse and/or keyboard -- HDMI Monitor with full size HDMI cable - - -*** -#### Step 2: Download SD Card Image - -**Debian Linux Reference Software Platform - SD Card Image** - -[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-debian-jessie-alip-sdcard-*.img.gz) - -*** - -#### Step 3: Prepare MicroSD card - -- Ensure data from mircoSD card is backed up -- Everything on microSD card will be lost by the end of this procedure. - -*** - -#### Step 4: Find SD Card Device name - -- Use host Linux computer -- Open "Terminal" application -- Remove SD card from host computer and run the following command: -```shell -lsblk -``` -- Note all recognized disk names -- **Insert SD card** and run the following command (again): -```shell -lsblk -``` -- Note the newly recognized disk. This will be your SD card. -- You will need to remember this device name for a later step. - -*** - -#### Step 5: Recall Download Location - -- Locate SD card install file from Downloads page. -- This file will be needed for the next step. - -*** - -#### Step 6: Unzip _SD Card Install Image_ - -- When unzipped, you will have a folder with the following contents: - - Linaro/Debian Install Image (.img) - - Readme - -*** - -#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal - -- Use host Linux computer -- Open "Terminal" application -- `cd` to the directory with your unzipped **SD Card Install Image** - -```shell -cd - -#Example: -# = /home/YourUserName/Downloads -#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. -cd /home/YourUserName/Downloads -``` - -*** - -#### Step 8: Install Image onto SD Card - -**Checklist:** - -- SD card inserted into host Linux computer -- Recall SD Card device name **Step 4** -- From within the extraction folder, using the Terminal execute the following commands: - -**Execute:** - -```shell -sudo dd if=hikey-jessie_alip_2015MMDD-nnn.img of=/dev/XXX bs=4M oflag=sync status=noxfer -``` - -**Note:** - -- `if=hikey-jessie_alip_2015MMDD-nnn.img`: should match the name of the image that was downloaded. -- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](). Be sure to use the device name with out the partition. -- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. -- Once SD card is done flashing, remove from host computer and set aside for a later step - - -*** - -#### Step 9: Prepare HiKey with SD card - -- Make sure HiKey is unplugged from power -- Connect an HDMI monitor to the HiKey with an HDMI cable, and power on the monitor -- Plug a USB keyboard and/or mouse into either of the two USB connectors on the HiKey -- Insert the microSD card into the HiKey -- Plug power adaptor into HiKey, wait for board to boot up. - -*** - -#### Step 10: Install Linaro/Debian onto HiKey - - - -- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your HiKey -- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory -- This process can take a few minutes to complete -- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. - -Before clicking "OK": - -- Remove the SD Card -- Now click "OK" button and allow HiKey to reboot. - -**Congratulations! You are now booting your newly installed operating system directly from eMMC on the HiKey** - -[Back to top](#install-instructions---reference-software-platform) - -*** - -# Fastboot Method - - - - - - - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host Linux machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian partition table - -> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -**ptable-linux.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-8g.img)) - -*** - -#### Step 3: Download Boot image and Root File System - -- **Debian Boot** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-boot-linux-*.uefi.img.gz)) -- **Debian Rootfs** (**Download**) - -*** - -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. - - - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Wait for about 10 seconds -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Installation/BoardRecovery.md) and return to this step once your board is ready - -3 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable .img -$ sudo fastboot reboot -$ sudo fastboot flash boot .uefi.img -$ sudo fastboot flash system hikey-rootfs-debian-jessie-alip-YYYYMMDD-nnn.emmc.img -``` - -4 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 5-6 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** - -[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md deleted file mode 100644 index 7f936e4..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,31 +0,0 @@ -## Reference Platform Build - 16.06 - - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. - -*** - -#### HiKey - - -| **CE Debian RPB - 16.06** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB.md) | -| [Build from Source](BFSDebianRPB.md) | -| [Known issues](../../../Known-Issues.md) | - - - -| **CE AOSP** | -|:---------------------------:| -| [Install Instructions](https://source.android.com/source/devices.html) | -| [Known issues](../../../Known-Issues.md) | - - - -*** - -- Access **bootloader** build from source instructions [here](BuildSourceBL.md) -- Access **OpenEmbedded** build from source instructions [here](../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/README.md index 1a9666f..74af4b6 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/README.md @@ -4,12 +4,6 @@ ## Choose your Hardware -#### Consumer Edition - -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition - [LeMaker Cello](EnterpriseEdition/Cello/README.md) - [D02](EnterpriseEdition/D02/README.md) - [D03](EnterpriseEdition/D03/README.md) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/.DS_Store b/Reference-Platform/Platforms/IoT/PreviousReleases/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release -``` - -#### Building a boot image - -You now need to create a valid boot image with your own kernel build. - -On your host PC, we need to install the following tools: - -``` -sudo apt-get install device-tree-compiler -git clone git://codeaurora.org/quic/kernel/skales -``` - -The boot image consists of the table of device tree (`dt.img`), the kernel image (`Image`) and an init ramdisk image. - -The `dtbTool` is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. - -`./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/` - -To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. - -The tool `mkbootimg` (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: - -``` -./skales/mkbootimg --kernel arch/arm64/boot/Image \ - --ramdisk initrd.img \ - --output boot-db410c.img \ - --dt dt.img \ - --pagesize 2048 \ - --base 0x80000000 \ - --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" -``` - -#### Booting a custom boot image - -Assuming you have now built a valid boot image called `boot-db410c.img`, you can run the following `fastboot` command to boot it on the board: - -`sudo fastboot boot boot-db410c.img` - -If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the `boot` partition: - -`sudo fastboot flash boot boot-db410c.img` - -#### How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. - -The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): - -``` -git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -``` - -To build the LK bootloader, you can use the following instructions: - -``` -git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- -``` - -The second stage bootloader is flashed on the `aboot` partition, you can now flash your board with: - -`sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn` - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -``` -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -``` -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -``` -cd -dpkg-buildpackage -b -us -uc -``` - -#### TODO - -- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md deleted file mode 100644 index 14f6bd8..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.10.md +++ /dev/null @@ -1,81 +0,0 @@ -## Install Instructions - CE Debian RPB 15.10 - Dragonboard410c - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for Dragonboard410c. - -For more information about the Dragonboard410c development board, please check https://www.96boards.org/products/ce/dragonboard410c/ - -### Image Components - -The CE Debian RPB 15.10 - Dragonboard410c build is composed of the following artifacts: - -- Bootloader: - - [Qualcomm proprietary first stage bootloader](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip) - - [Little Kernel](https://git.linaro.org/landing-teams/working/qualcomm/lk.git) as second stage boot loader -- Linux Kernel: - - Upstream plus extra changes for a better hardware support - - Git: https://github.com/rsalveti/linux.git - - Branch: *reference-qcom-rebase* -- Debian "Jessie" - - ALIP (LXDE based) - - Custom 96Boards artworks and default settings - - Additional packages provided by [linaro-overlay](http://repo.linaro.org/ubuntu/linaro-overlay) - -#### Closed source binaries - -This release contains proprietary firmware. You can also download the proprietary firmware separately, from [here](https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin). All the required firmware files are pre-installed, and the image is bound to the following [license agreement](https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt). - -### Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -Download the latest bootloader zip from [http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux*.zip) - -*CE Debian RPB image:* - -``` -wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-boot-linux-20151106-31.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.10/dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz -gunzip dragonboard410c-* -``` - -### Flashing - -#### Bootloader - -Flash the eMMC with the bootloader: - -- Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. -- Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC -- Assure micro SD Card slot is empty on the DB410c -- Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} -- Power on the DB410c into fastboot mode - - Press and hold the Vol (-) button on the DB410c (S4) - - While pressing S4 button, power up the DB410c. It will come up in fastboot mode -- From the host PC terminal window, run the following commands: - -``` -# Check to make sure fastboot device connected. If not resolve -sudo fastboot devices -# cd to the directory the bootloader zip file was extracted -cd -sudo ./flashall -``` - -The bootloader is now installed on the DB410c. - -#### Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -*Flashing boot and rootfs:* - -``` -sudo fastboot flash boot dragonboard410c-boot-linux-20151106-31.img -sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151106-31.emmc.img -``` - -Once flashed just reboot the board and enjoy :-) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index 2f79a1c..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 15.10 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| **CE Debian RPB - 15.10** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB-15.10.md) | -| [Build from Source](BFSDebianRPB-15.10.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md deleted file mode 100644 index d47aa23..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSAOSPRPB-15.10.md +++ /dev/null @@ -1,44 +0,0 @@ -h4. Building AOSP from source - -*NOTE*: This build instructions are not yet reflecting the 15.10 image - -AOSP sources are hosted in these repositories: -* https://github.com/96boards/android_hardware_ti_wpan -* https://github.com/96boards/android_external_wpa_supplicant_8 -* https://github.com/96boards/android_device_linaro_hikey -* https://github.com/96boards/android_manifest - -*Build setup:* - -Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html - -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -bc. ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp - -*Download the code:* - -bc. $ mkdir android/ -$ cd android/ - -Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -*Build the image:* - -bc. $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1\ -> -g "default,-device,hikey" -$ cd .repo/ -$ git clone https://github.com/96boards/android_manifest -b android-5.0 local_manifests -$ cd - -$ repo sync -j8 -$ source build/envsetup.sh -$ lunch hikey-userdebug -$ make droidcore -j8 -$ cd out/target/product/hikey - -h4. TODO - -* Update to reflect the latest/current build diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md deleted file mode 100644 index a8f9ccd..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/BFSDebianRPB-15.10.md +++ /dev/null @@ -1,53 +0,0 @@ -h3. Boot Loader - -Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. - -h3. How to get and customize the kernel source code - -h4. Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux - -bc. git: https://github.com/rsalveti/linux -tag: 96boards-rpb-debian-15.10-hikey -defconfig: arch/arm64/defconfig kernel/configs/distro.config - -The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. - -To build the Linux kernel, you can use the following instructions: - -bc. git clone -n https://github.com/rsalveti/linux.git -cd linux -git checkout -b kernel-rpb-15.10 96boards-rpb-debian-15.10-hikey -export ARCH=arm64 -export CROSS_COMPILE=/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release - -To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. - -h4. How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -bc. sudo apt-get update -sudo apt-get upgrade - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -bc. sudo apt-get update -sudo apt-get build-dep -apt-get source - -Then you can rebuild the package locally with: - -bc. cd -dpkg-buildpackage -b -us -uc - -h4. TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md deleted file mode 100644 index ea36329..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallAOSP-15.10.md +++ /dev/null @@ -1,88 +0,0 @@ -h2. Install Instructions - CE AOSP RPB 15.10 - HiKey - -This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.10, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE AOSP RPB 15.10 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader -* Linux Kernel: -** Derived from Linux 3.18 kernel -** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git -** Branch: *hikey* -* AOSP Android Marshmallow 6.0 - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.5* -* Extra firmware files available from firmware-linux -* Mali (requires EULA) - -h3. Downloading the pre-built binaries - -The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/ptable-aosp.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/bootloader/hisi-idt.py - -*CE AOSP RPB image:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/boot_fat.uefi.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/cache.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/userdata.img.tar.xz - -Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/system.img.tar.xz and follow the instructions to download the file. - -Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: - -bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 -sudo fastboot flash ptable ptable-aosp.img -sudo fastboot flash fastboot fip.bin - -Change @ttyUSB0@ to the right interface name that gets exported to your host system. - -Make sure to reboot the board after updating the partition table (@ptable-aosp.img@), otherwise flashing the system image might fail. - -h4. Boot, System, Cache and Userdata - -Fastboot is required to flash boot, system, cache and userdata. - -Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash the images via recovery mode (after running @hisi-idt.py@). - -*Flashing boot, cache, system and userdata:* - -bc. sudo fastboot flash boot boot_fat.uefi.img -sudo fastboot flash cache cache.img -sudo fastboot flash system system.img -sudo fastboot flash userdata userdata.img - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferencePlatform - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md deleted file mode 100644 index d94b908..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/InstallDebianRPB-15.10.md +++ /dev/null @@ -1,85 +0,0 @@ -h2. Install Instructions - CE Debian RPB 15.10 - HiKey - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.10, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE Debian RPB 15.10 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader -* Linux Kernel: -** Upstream plus extra changes for a better hardware support -** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git -** Branch: *reference-hikey-rebase* -* Debian "Jessie" -** ALIP (LXDE based) -** Custom 96Boards artworks and default settings -** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay -** Kernel and initrd loaded from the rootfs (under /boot) - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.6* -* Extra firmware files available from firmware-linux -* Mali (not yet included by default) - -h3. Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/ptable-linux.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/bootloader/hisi-idt.py - -*CE Debian RPB image:* - -bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-boot-linux-20151106-31.uefi.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img.gz -gunzip hikey-* - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 -sudo fastboot flash ptable ptable-linux.img -sudo fastboot flash fastboot fip.bin - -Change @ttyUSB0@ to the right interface name that gets exported to your host system. - -Make sure to reboot the board after updating the partition table (@ptable-linux.img@), otherwise flashing the rootfs might fail. - -h4. Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -Due bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). - -*Flashing boot and rootfs:* - -bc. sudo fastboot flash boot hikey-boot-linux-20151106-31.uefi.img -sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151106-31.emmc.img - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferenceSoftware":https://github.com/96boards/documentation/wiki/ReferenceSoftware diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md deleted file mode 100644 index a7f56c2..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# HiKey Reference Platform Build - 15.10 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| [CE Debian RPB - 15.10](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/) | -|:------|:------| -| [Install instructions](InstallDebianRPB-15.10.md) | -| [Build from source](BFSDebianRPB-15.10.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/15.10/CE-Debian-RPB-15.10-HiKey-TestReport.pdf) | - - - -| [CE AOSP RPB - 15.10](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/) | -|:------|:------| -| [Install instructions](InstallAOSP-15.10.md) | -| [Build from source](BFSAOSPRPB-15.10.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/hikey/15.10/CE-AOSP-RPB-15.10-HiKey-TestReport.pdf) | diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Highlights.md deleted file mode 100644 index 52be04b..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Highlights.md +++ /dev/null @@ -1,16 +0,0 @@ -# Highlights - -The *15.10 Alpha* release is the first official release for the reference software platform project. It incorporates reference platform builds for both HiKey (Debian and AOSP) and Dragonboard410c (Debian). - -While the release supports many of the available hardware features for both Hikey and Dragonboard410c, it is in *ALPHA* state (used as a starting point for the reference software platform project), so bugs are expected. For a better user experience, please use the previous releases available at https://builds.96boards.org/releases/dragonboard410c/ and https://builds.96boards.org/releases/hikey/. - -##### Highlights for this release: - -- CE Debian RPBs: - - Debian 8.2 "Jessie" - - 4.3 kernel (with additional patches) - - OpenJDK 8 included by default - - 96Boards artworks and default settings -- CE AOSP RPB: - - AOSP Android Marshmallow 6.0 - - 3.18 based kernel diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Known-Issues.md deleted file mode 100644 index 03c5da1..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/Known-Issues.md +++ /dev/null @@ -1,56 +0,0 @@ -## Reference Platform Build - 15.10 Release - Known Issues - -### UEFI - HiKey - -- "Bug 117":https://bugs.96boards.org/show_bug.cgi?id=117 - UEFI fastboot uploads hangs for large images - - Workaround is to use the fastboot support provided by the ARM TF (@bl1.bin@, provided by the binary @l-loader.bin@) - -### Debian - -#### HiKey - -- Mali not supported, missing kernel and userspace support -- [Bug 20](https://bugs.96boards.org/show_bug.cgi?id=20) - USB kernel trace errors -22 -- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete -- [Bug 86](https://bugs.96boards.org/show_bug.cgi?id=86) - Debian ALIP: resize UI screen when underlying DRM resolution changed. -- [Bug 143](https://bugs.96boards.org/show_bug.cgi?id=143) - Mouse cursor invisible after boot (until you open an application) -- [Bug 144](https://bugs.96boards.org/show_bug.cgi?id=144) - Shutdown is not clean -- [Bug 145](https://bugs.96boards.org/show_bug.cgi?id=145) - Thermal sensor is not readable -- [Bug 147](https://bugs.96boards.org/show_bug.cgi?id=147) - Highest resolution of 1080p monitor cannot be detected -- [Bug 148](https://bugs.96boards.org/show_bug.cgi?id=148) - Bluetooth doesn't work -- [Bug 150](https://bugs.96boards.org/show_bug.cgi?id=150) - Cannot login when the screen is locked -- [Bug 151](https://bugs.96boards.org/show_bug.cgi?id=151) - glxgears: couldn't get an RGB, Double-buffered visual -- [Bug 152](https://bugs.96boards.org/show_bug.cgi?id=152) - SD-Card doesn't work -- [Bug 159](https://bugs.96boards.org/show_bug.cgi?id=159) - No sound cards found -- [Bug 160](https://bugs.96boards.org/show_bug.cgi?id=160) - Behaviors of power on button not following hardware user guide - -#### DragonBoard 410c - - - Freedreno graphics driver not provided by the image - -Newer mesa, libdrm and freedreno xorg driver is needed (to be available as part of the next release) - - Workaround is to enable the qcom overlay PPA, and install the required packages: - -``` -sudo su - -echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list -apt-get update -apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno -reboot -``` - -- Slow USB throughput: https://www.96boards.org/forums/topic/super-slow-usb/ -- [Bug 43](https://bugs.96boards.org/show_bug.cgi?id=43) - Iceweasel browser exits after file download complete -- [Bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) - Cannot soft power off or shutdown db410c -- [Bug 154](https://bugs.96boards.org/show_bug.cgi?id=154) - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) -- [Bug 156](https://bugs.96boards.org/show_bug.cgi?id=156) - HDMI resolution change not workin -- [Bug 157](https://bugs.96boards.org/show_bug.cgi?id=157) - HDMI audio not working (MIGHT NOT BE A BUG) -- [Bug 165](https://bugs.96boards.org/show_bug.cgi?id=165) - HDMI Display sleep - no way to wake back up - -### AOSP - -#### HiKey - -- [Bug 136](https://bugs.96boards.org/show_bug.cgi?id=136) - HDMI goes off while running CTS -- [Bug 161](https://bugs.96boards.org/show_bug.cgi?id=161) - Fails to enter sleep mode -- [Bug 163](https://bugs.96boards.org/show_bug.cgi?id=163) - HDMI audio not working -- [Bug 164](https://bugs.96boards.org/show_bug.cgi?id=164) - Behaviors of power on button not following hardware user guide diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/README.md deleted file mode 100644 index 7a92254..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.10/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Reference Platform Build - 15.10 - -[RPB 15.10 Highlights](Highlights.md) | [RPB 15.10 Known Issues](Known-Issues.md) - -## Choose your Hardware - -#### Consumer Edition -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -*** - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md deleted file mode 100644 index a5c3977..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-15.12.md +++ /dev/null @@ -1,104 +0,0 @@ -h3. How to get and customize the kernel source code - -h4. Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux - -bc. git: https://github.com/rsalveti/linux -tag: 96boards-rpb-debian-15.12-qcom -defconfig: arch/arm64/defconfig kernel/configs/distro.config - -The kernel image (@Image@) is located in the @boot@ image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. - -To build the Linux kernel, you can use the following instructions: - -bc. git clone -n https://github.com/rsalveti/linux.git -cd linux -git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-qcom -export ARCH=arm64 -export CROSS_COMPILE=/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release - -h4. Building a boot image - -You now need to create a valid boot image with your own kernel build. - -On your host PC, we need to install the following tools: - -bc. sudo apt-get install device-tree-compiler -git clone git://codeaurora.org/quic/kernel/skales - -The boot image consists of the table of device tree (@dt.img@), the kernel image (@Image@) and an init ramdisk image. - -The @dtbTool@ is a standalone application that will process the DTBs generated during the kernel build, to create the table of device tree image. This tool is included in the @skales@ git tree cloned above. - -bc. ./skales/dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom/ - -To create the boot image, you also need a ramdisk image, and you can use the one available at _/boot_ from the rootfs. - -The tool @mkbootimg@ (also in the git tree previously cloned) is a standalone application that will process all files and create the boot image that can then be booted on the target board, or flash into the on-board eMMC. The boot image also contains the kernel bootargs, which can be changed as needed in the next command: - -bc. ./skales/mkbootimg --kernel arch/arm64/boot/Image \ - --ramdisk initrd.img \ - --output boot-db410c.img \ - --dt dt.img \ - --pagesize 2048 \ - --base 0x80000000 \ - --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=ttyMSM0,115200n8" - -h4. Booting a custom boot image - -Assuming you have now built a valid boot image called @boot-db410c.img@, you can run the following @fastboot@ command to boot it on the board: - -bc. sudo fastboot boot boot-db410c.img - -If you want to permanently use a custom kernel image, you can update the boot image and reflash it into the @boot@ partition: - -bc. sudo fastboot flash boot boot-db410c.img - -h4. How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on "Qualcomm Developer Network":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip, the second stage bootloader is @LK@ and is open source. - -The original LK source code is available on "CodeAurora.org":https://www.codeaurora.org/cgit/quic/la/kernel/lk/, and the source code which is used in this release can be found in the "Linaro Qualcomm Landing Team git repository":https://git.linaro.org/landing-teams/working/qualcomm/lk.git: - -bc. git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 - -To build the LK bootloader, you can use the following instructions: - -bc. git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- - -The second stage bootloader is flashed on the @aboot@ partition, you can now flash your board with: - -bc. sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn - -h4. How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -bc. sudo apt-get update -sudo apt-get upgrade - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -bc. sudo apt-get update -sudo apt-get build-dep -apt-get source - -Then you can rebuild the package locally with: - -bc. cd -dpkg-buildpackage -b -us -uc - -h4. TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md deleted file mode 100644 index 59fc76a..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-15.12.md +++ /dev/null @@ -1,81 +0,0 @@ -h2. Install Instructions - CE Debian RPB 15.12 - Dragonboard410c - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for Dragonboard410c. - -For more information about the Dragonboard410c development board, please check "https://www.96boards.org/products/ce/dragonboard410c/":https://www.96boards.org/products/ce/dragonboard410c/ - -h3. Image Components - -The CE Debian RPB 15.12 - Dragonboard410c build is composed of the following artifacts: - -* Bootloader: -** "Qualcomm proprietary first stage bootloader":https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip -** "Little Kernel":https://git.linaro.org/landing-teams/working/qualcomm/lk.git as second stage boot loader -* Linux Kernel: -** Upstream plus extra changes for a better hardware support -** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git -** Branch: *reference-qcom-rebase* -* Debian "Jessie" -** ALIP (LXDE based) -** Custom 96Boards artworks and default settings -** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay - -h4. Closed source binaries - -This release contains proprietary firmware. You can also download the proprietary firmware separately, from "here":https://developer.qualcomm.com/download/db410c/firmware-410c-1.1.0.bin. All the required firmware files are pre-installed, and the image is bound to the following "license agreement":https://git.linaro.org/landing-teams/working/qualcomm/lt-docs.git/blob_plain/HEAD:/license/license.txt. - -h3. Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -Download the latest bootloader zip from "http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest":http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest (look for dragonboard410c_bootloader_emmc_linux*.zip) - -*CE Debian RPB image:* - -bc. wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-boot-linux-20151214-35.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/15.12/dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz -gunzip dragonboard410c-* - -h3. Flashing - -h4. Bootloader - -Flash the eMMC with the bootloader: - -* Unzip the bootloader that was downloaded in the previous step. Note the directory that is it located in. -* Assure that a micro USB cable is connected from the micro-USB port on the DB410c to the host PC -* Assure micro SD Card slot is empty on the DB410c -* Set the S6 switch on the DB410c to: 0-0-0-0 {SD Boot set to off} -* Power on the DB410c into fastboot mode -** Press and hold the Vol (-) button on the DB410c (S4) -** While pressing S4 button, power up the DB410c. It will come up in fastboot mode -* From the host PC terminal window, run the following commands: - -bc. # Check to make sure fastboot device connected. If not resolve -sudo fastboot devices -# cd to the directory the bootloader zip file was extracted -cd -sudo ./flashall - -The bootloader is now installed on the DB410c. - -h4. Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -*Flashing boot and rootfs:* - -bc. sudo fastboot flash boot dragonboard410c-boot-linux-20151214-35.img -sudo fastboot flash rootfs dragonboard410c-rootfs-debian-jessie-alip-20151214-35.emmc.img - -Once flashed just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform - -In the case that the board experiences an irrecoverable error and no longer function, please check the "rescue image guide":https://github.com/96boards/documentation/wiki/Dragonboard-410c-Installation-Guide-for-Linux-and-Android#create--install-a-rescue-image diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index 4245bd0..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,14 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 15.12 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| **CE Debian RPB - 15.12** | -|:---------------------------------------------------:| -| [Install Instructions](InstallDebianRPB-15.12.md) | -| [Build from Source](BFSDebianRPB-15.12.md) | -| [Known issues](../../Known-Issues.md) | diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md deleted file mode 100644 index 0b74369..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSAOSPRPB-15.12.md +++ /dev/null @@ -1,37 +0,0 @@ -h4. Building AOSP from source - -Additional AOSP repositories are hosted at: -* https://github.com/96boards/android_hardware_ti_wpan -* https://github.com/96boards/android_device_linaro_hikey -* https://github.com/96boards/android_manifest -* https://github.com/96boards/linux (branch android-hikey-linaro-4.1) - -*Build setup:* - -Please setup the host machine by following the instructions here: "http://source.android.com/source/initializing.html":http://source.android.com/source/initializing.html - -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -bc. ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp - -*Download the code:* - -bc. mkdir android/ -cd android/ - -Download and extract the Mali vendor binaries in the above directory: "http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2":http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -*Build the image:* - -bc. repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" -cd .repo/ -git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch hikey-userdebug -make droidcore -j8 -cd out/target/product/hikey diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md deleted file mode 100644 index f3a7c58..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/BFSDebianRPB-15.12.md +++ /dev/null @@ -1,53 +0,0 @@ -h3. Boot Loader - -Please see "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#building-from-source for instructions on how to built the boot loader from source. - -h3. How to get and customize the kernel source code - -h4. Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git "repository":https://github.com/rsalveti/linux - -bc. git: https://github.com/rsalveti/linux -tag: 96boards-rpb-debian-15.12-hikey -defconfig: arch/arm64/defconfig kernel/configs/distro.config - -The kernel image (@Image@) is located in the @/boot@ directory from the system partition (rootfs), with the modules also installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the "Linaro GCC cross compiler (Aarch64 little-endian)":http://releases.linaro.org/14.11/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2014.11-x86_64_aarch64-linux-gnu.tar.xz. - -To build the Linux kernel, you can use the following instructions: - -bc. git clone -n https://github.com/rsalveti/linux.git -cd linux -git checkout -b kernel-rpb-15.12 96boards-rpb-debian-15.12-hikey -export ARCH=arm64 -export CROSS_COMPILE=/aarch64-linux-gnu- -make defconfig distro.config -make -j4 Image dtbs KERNELRELEASE=4.3.0-your-custom-release - -To boot using your own kernel, simply copy the kernel, modules and device tree to the root file system (similar to desktops), and create your own grub entry at @/boot/grub/grub.cfg@. - -h4. How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -bc. sudo apt-get update -sudo apt-get upgrade - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -bc. sudo apt-get update -sudo apt-get build-dep -apt-get source - -Then you can rebuild the package locally with: - -bc. cd -dpkg-buildpackage -b -us -uc - -h4. TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md deleted file mode 100644 index 30edc3e..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallAOSPRPB-15.12.md +++ /dev/null @@ -1,112 +0,0 @@ - -h2. Install Instructions - CE AOSP RPB 15.12 - HiKey - -This guide describes how to get started with the CE AOSP Reference Platform Build, release 15.12, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE AOSP RPB 15.12 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader -* Linux Kernel: -** Derived from Linux 4.1 kernel -** Git: "https://github.com/96boards/linux.git":https://github.com/96boards/linux.git -** Branch: *android-hikey-linaro-4.1* -* AOSP Android Marshmallow 6.0 - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.5* -* Extra firmware files available from firmware-linux -* Mali (requires EULA) - -h3. Downloading the pre-built binaries - -The build is composed by the traditional Android image files (@boot@, @cache@, @system@ and @userdata@), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/nvme.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-4g.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/ptable-aosp-8g.img -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/bootloader/hisi-idt.py - -*CE AOSP RPB image:* - -bc. wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/boot_fat.uefi.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/cache.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata.img.tar.xz -wget http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/userdata-8gb.img.tar.xz - -Since @system.img@ requires the user to accept an End User License Agreement covering the rights to download and use the proprietary Mali userspace driver, it needs to be manually downloaded via browser. Please go to "http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz":http://builds.96boards.org/releases/reference-platform/aosp/hikey/15.12/system.img.tar.xz and follow the instructions to download the file. - -Uncompress the .tar.xz files using your operating system file manager, or with the following command, for each file: - -bc. xz --decompress [filename].tar.xz; tar -xvf [filename].tar - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please go to "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-aosp@ and @userdata@ files will differ depending on the board you have. - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin -d /dev/ttyUSB0 - -Then on a 4G compatible device: - -bc. sudo fastboot flash ptable ptable-aosp-4g.img - -Or the following on a 8G compatible device: - -bc. sudo fastboot flash ptable ptable-aosp-8g.img - -Then flash UEFI: - -bc. sudo fastboot flash fastboot fip.bin - -Change @ttyUSB0@ to the right interface name that gets exported to your host system. - -Make sure to reboot the board after updating the partition table (@ptable-aosp@), otherwise flashing the system image might fail. - -h4. Boot, System, Cache and Userdata - -Fastboot is required to flash boot, system, cache and userdata. - -*Flashing boot, cache, system and userdata:* - -Enable fastboot (either via recovery or by changing the boot jumpers), and then just flash the required files: - -bc. sudo fastboot flash boot boot_fat.uefi.img -sudo fastboot flash cache cache.img -sudo fastboot flash system system.img -sudo fastboot flash nvme nvme.img - -Then on a 4G compatible device: - -bc. sudo fastboot flash userdata userdata.img - -Or the following on a 8G compatible device: - -bc. sudo fastboot flash userdata userdata-8gb.img - - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don't have any sd card in place (since it first tries to boot from sd card, boot order can be changed with @sudo fastboot oem bootdevice [emmc|sd]@), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md deleted file mode 100644 index 9ce2d83..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/InstallDebianRPB-15.12.md +++ /dev/null @@ -1,97 +0,0 @@ -h2. Install Instructions - CE Debian RPB 15.12 - HiKey - -This guide describes how to get started with the CE Debian Reference Platform Build, release 15.12, for HiKey. - -For more information about the HiKey development board, please check "https://www.96boards.org/products/ce/hikey/":https://www.96boards.org/products/ce/hikey/ - -h3. Image Components - -The CE Debian RPB 15.12 - HiKey build is composed of the following artifacts: - -* Bootloader: -** ARM Trusted Firmware, EDK2/UEFI and Grub2 -** For more information about the reference bootloader used by HiKey, please check "Reference-Bootloader-Hikey":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey -** Pre-built files: "http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader":http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader -* Linux Kernel: -** Upstream plus extra changes for a better hardware support -** Git: "https://github.com/rsalveti/linux.git":https://github.com/rsalveti/linux.git -** Branch: *reference-hikey-rebase* -* Debian "Jessie" -** ALIP (LXDE based) -** Custom 96Boards artworks and default settings -** Additional packages provided by "linaro-overlay":http://repo.linaro.org/ubuntu/linaro-overlay -** Kernel and initrd loaded from the rootfs (under /boot) - -h4. Closed source binaries - -The following components requires a closed source binary for better hardware support: - -* TI wlan firmware (@wl18xx@) -** Git: "http://git.ti.com/wilink8-wlan/wl18xx_fw":http://git.ti.com/wilink8-wlan/wl18xx_fw -** Branch: *R8.6* -* Extra firmware files available from firmware-linux -* Mali (not yet included by default) - -h3. Downloading the pre-built binaries - -The build is mainly composed by two image files (boot and rootfs), but to avoid incompatibilities issues with older bootloaders, or different partition tables, it's also recommended to flash the bootloader. - -Flashing and booting from the external SD Card is not supported by this release. - -*Bootloader files:* - -bc. wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/l-loader.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/nvme.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/fip.bin -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-4g.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/ptable-linux-8g.img -wget http://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/bootloader/hisi-idt.py - -*CE Debian RPB image:* - -bc. wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-boot-linux-20151214-35.uefi.img.gz -wget https://builds.96boards.org/releases/reference-platform/debian/hikey/15.12/hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img.gz -gunzip hikey-* - -h3. Flashing - -h4. Bootloader - -To flash the bootloader the recovery mode is required. For more information about the recovery mode, how to enable and use, please check "https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode":https://github.com/96boards/documentation/wiki/Reference-Bootloader-Hikey#enabling-recovery-mode - -Now you need to identify if your device contains 4G or 8G of eMMC (LeMaker produces 2 HiKey versions, one with 4G and another with 8G of storage). The @ptable-linux@ file will differ depending on the board you have. - -On recovery mode, flash the bootloader with the following command: - -bc. sudo python hisi-idt.py --img1=l-loader.bin - -Then on a 4G compatible device: - -bc. sudo fastboot flash ptable ptable-linux-4g.img - -Or the following on a 8G compatible device: - -bc. sudo fastboot flash ptable ptable-linux-8g.img - -Then flash UEFI: - -bc. sudo fastboot flash fastboot fip.bin - -Make sure to reboot the board after updating the partition table (@ptable-linux@), otherwise flashing the rootfs might fail. - -h4. Boot and Rootfs - -Fastboot is required to flash both the boot and rootfs images. - -To avoid bug "117 (UEFI fastboot uploads hangs for large images)":https://bugs.96boards.org/show_bug.cgi?id=117, it's recommended to flash both the boot and rootfs images via recovery mode (after running @hisi-idt.py@). - -*Flashing boot and rootfs:* - -bc. sudo fastboot flash boot hikey-boot-linux-20151214-35.uefi.img -sudo fastboot flash system hikey-rootfs-debian-jessie-alip-20151214-35.emmc.img - -Once flashed, make sure recovery mode is not enabled (pin3-pin4 on J15), that you don’t have any sd card in place (since it first tries to boot from sd card, boot order can be changed with sudo fastboot oem bootdevice [emmc|sd]), then just reboot the board and enjoy :-) - -h3. Additional resources - -For known issues and more information about this release, please check "https://github.com/96boards/documentation/wiki/ReferencePlatform":https://github.com/96boards/documentation/wiki/ReferencePlatform diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md deleted file mode 100644 index eff7304..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# HiKey Reference Platform Build - 15.12 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -#### HiKey - -| **CE Debian RPB - 15.12** | **CE AOSP RPB - 15.12** | -|:------------------------------------------------------:|:---------------------------------------------------:| -| [Install Instructions](InstallDebianRPB-15.12.md) | [Install Instructions](InstallAOSPRPB-15.12.md) | -| [Build from Source](BFSDebianRPB-15.12.md) | [Build from Source](BFSAOSPRPB-15.12.md) | -| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | - -*** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Highlights.md deleted file mode 100644 index 32a601c..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Highlights.md +++ /dev/null @@ -1,49 +0,0 @@ -## Reference Platform Builds - 15.12 - -The *15.12* release is the second release for the Reference Software Platform project, and for the first time also including support for the Enterprise Edition. Since there is still no availability for the 96Boards HuskyBoard, the first EE RPB was produced using the current enterprise development boards that are available in Linaro, such as HiSilicon D02 and AMD Overdrive (same SoC from HuskyBoard, known as Seattle). Once HuskBoard is available, the work for making it supported by the EE RPB should be minimal. - -A lot of work was put in place for the EE RPB, covering firmware (UEFI/EDK2), Linux 4.4 (with ACPI), Debian Jessie/CentOS 7 network installers, OpenStack Liberty, Hadoop, Spark and a few others, consolidating the work from several other Linaro groups and teams as well as from community and members. - -For the Consumer Edition the CE AOSP RPB for Hikey is now using a 4.1 based kernel, closer to what is provided directly by AOSP. We decided to not push major updates and rebases for the CE Debian RPB kernel since we want the changes to follow the same [kernel policy](../../KernelPolicy.md) as used by the EE kernel. The goal of having one single tree for both CE and EE, with a strict upstream-based policy will continue, and we hope to have more news on that during the upcoming weeks. - -The work for the CE OE/Yocto RPB was also started, but unfortunately not yet covering a single machine (due lack of a single kernel). Please check [https://github.com/96boards/meta-rpb](https://github.com/96boards/meta-rpb) and https://github.com/96boards/oe-rpb-manifest to see what was already done for OpenEmbedded. - -##### Highlights for this release: - -###### Enterprise Edition - -- Firmware: - - UEFI/EDK2 support for D02, provided by OpenPlatformPkg -- Linux: - - 4.4-rc4 based, including support for D02 and Overdrive - - ACPI support for D02 and Overdrive (mandatory for the enterprise edition) -- Distributions: - - Debian Jessie network installer (using latest kernel) - - CentOS 7 network installer (alpha state) -- Enterprise Components: - - Docker 1.9.1 - - OpenStack Liberty - - ODPi BigTop (Hadoop, Spark, etc) - - OpenJDK 8 - -###### Consumer Edition - -- CE Debian RPB for DragonBoard410 and HiKey (including support for the LeMaker version): - - Debian 8.2 "Jessie" - - 4.3 kernel (with additional patches) - - OpenJDK 8 included by default - - 96Boards artwork and default settings -- CE AOSP RPB for HiKey (including support for the LeMaker version): - - AOSP Android Marshmallow 6.0 - - 4.1 based kernel - -The complete list of known issues for this release: [Known Issues](Known-Issues.md) - -##### Enterprise - -- [UEFI/EDK2](https://builds.96boards.org/releases/reference-platform/components/uefi/15.12/) for HiSilicon D02 -- [Kernel 4.4-rc4](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/) tested with D02 and Overdrive -- [Debian (Jessie) Installer](https://builds.96boards.org/releases/reference-platform/components/debian-installer/15.12/) tested with D02 and Overdrive (shipping kernel 4.4-rc4 by default) -- [OpenStack Liberty]() for Debian Jessie -- [ODPi Hadoop]() for Debian Jessie -- [EE Debian Test Report](https://builds.96boards.org/releases/reference-platform/components/linux/enterprise/15.12/EE-Debian-RPB-15.12-TestReport.pdf) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Known-Issues.md deleted file mode 100644 index c9025ff..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/Known-Issues.md +++ /dev/null @@ -1,73 +0,0 @@ -## Reference Platform Build - 15.12 Release - Known Issues - -### Enterprise - -#### Kernel - -- "Bug 1966":https://bugs.linaro.org/show_bug.cgi?id=1966 - KVM errors when booting on overdrive and d02 - -#### HiSilicon D02 - -- "Bug 1965":https://bugs.linaro.org/show_bug.cgi?id=1965 - D02: kernel unable to find valid mac for the network interfaces -- "Bug 1967":https://bugs.linaro.org/show_bug.cgi?id=1967 - D02: unhandled level 3 permission fault (11) -- "Bug 1975":https://bugs.linaro.org/show_bug.cgi?id=1975 - D02: Kernel can only see 2GB of memory (from 8GB) -- *SATA*: Due to bugs in the SATA controller, there is a risk of disk corruption when installing to a SATA disk. This is expected to be fixed in subsequent silicon revisions. -- *SAS*: not yet supported in EDK2. For it to work on linux only, this "patch":https://git.linaro.org/uefi/OpenPlatformPkg.git/commit/96d58c4318584f066b1bb7f1c48b72e7e25cf709 needs to be reverted on UEFI/EDK2, but then an alternative boot method needs to be used (since UEFI/EDK2 is unable to load grub/kernel from SAS). - -#### AMD Overdrive - -- UEFI/EDK2 is not yet supported - -### Debian - -#### HiKey - -- Mali not supported, missing kernel and userspace support -- "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 -- "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete -- "Bug 86":https://bugs.96boards.org/show_bug.cgi?id=86 - Debian ALIP: resize UI screen when underlying DRM resolution changed. -- "Bug 143":https://bugs.96boards.org/show_bug.cgi?id=143 - Mouse cursor invisible after boot (until you open an application) -- "Bug 144":https://bugs.96boards.org/show_bug.cgi?id=144 - Shutdown is not clean -- "Bug 145":https://bugs.96boards.org/show_bug.cgi?id=145 - Thermal sensor is not readable -- "Bug 147":https://bugs.96boards.org/show_bug.cgi?id=147 - Highest resolution of 1080p monitor cannot be detected -- "Bug 148":https://bugs.96boards.org/show_bug.cgi?id=148 - Bluetooth doesn't work -- "Bug 151":https://bugs.96boards.org/show_bug.cgi?id=151 - glxgears: couldn't get an RGB, Double-buffered visual -- "Bug 152":https://bugs.96boards.org/show_bug.cgi?id=152 - SD-Card doesn't work -- "Bug 159":https://bugs.96boards.org/show_bug.cgi?id=159 - No sound cards found -- "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide -- "Bug 166":https://bugs.96boards.org/show_bug.cgi?id=166 - Support 8GB emmc -- "Bug 211":https://bugs.96boards.org/show_bug.cgi?id=211 - Fails to enter fastboot mode from grub boot menu - -#### DragonBoard 410c - -- Freedreno graphics driver not provided by the image - - Newer mesa, libdrm and freedreno xorg driver is needed (work in progress to be included by default as part of the next release) - - Workaround is to enable the qcom overlay PPA, and install the required packages: - -```shell -sudo su - -echo "deb http://repo.linaro.org/ubuntu/qcom-overlay jessie main" > /etc/apt/sources.list.d/qcom-overlay-repo.list -apt-get update -apt-get install libdrm2 libdrm-freedreno1 libegl1-mesa libegl1-mesa-drivers libgbm1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgles1-mesa libgles2-mesa libosmesa6 libwayland-egl1-mesa libxatracker2 xserver-xorg-video-freedreno -reboot -``` - -* Slow USB throughput: "https://www.96boards.org/forums/topic/super-slow-usb/":https://www.96boards.org/forums/topic/super-slow-usb/ -* "Bug 43":https://bugs.96boards.org/show_bug.cgi?id=43 - Iceweasel browser exits after file download complete -* "Bug 121":https://bugs.96boards.org/show_bug.cgi?id=121 - Cannot soft power off or shutdown db410c -* "Bug 154":https://bugs.96boards.org/show_bug.cgi?id=154 - glxgears and tuxracer benchmarks failed to run (due to the missing freedreno driver) -* "Bug 160":https://bugs.96boards.org/show_bug.cgi?id=160 - Behaviors of power on button not following hardware user guide -* "Bug 207":https://bugs.96boards.org/show_bug.cgi?id=208 - Bluetooth does not work on Dragonboard debian -* "Bug 208":https://bugs.96boards.org/show_bug.cgi?id=208 - Real Time clock not working: due to /dev/rtc not found - -### AOSP - -#### HiKey - -* "Bug 20":https://bugs.96boards.org/show_bug.cgi?id=20 - USB kernel trace errors -22 -* "Bug 124":https://bugs.96boards.org/show_bug.cgi?id=124 - CPU frequency will be reset to lowest when it is heavily loaded -* "Bug 136":https://bugs.96boards.org/show_bug.cgi?id=136 - HDMI goes off while running CTS -* "Bug 163":https://bugs.96boards.org/show_bug.cgi?id=163 - HDMI audio not working -* "Bug 164":https://bugs.96boards.org/show_bug.cgi?id=164 - Behaviors of power on button not following hardware user guide -* "Bug 180":https://bugs.96boards.org/show_bug.cgi?id=180 - Shutdown cannot turn off HDMI monitor -* "Bug 204":https://bugs.96boards.org/show_bug.cgi?id=204 - File download crashes the build-in browser diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/README.md deleted file mode 100644 index 25ef139..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_15.12/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Reference Platform Build - 15.12 - -[RPB 15.12 Highlights](Highlights.md) | [RPB 15.12 Known Issues](Known-Issues.md) - -## Choose your Hardware - -#### Consumer Edition -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition -- [D02](EnterpriseEdition/D02/README.md) -- [Overdrive](EnterpriseEdition/Overdrive/README.md) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md deleted file mode 100644 index 15f676d..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md +++ /dev/null @@ -1,46 +0,0 @@ -## AOSP RPB 16.03 - Build from Source - -Additional AOSP repositories are hosted at: -- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) -- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) -- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) -- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) -- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) -- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) - -*Build setup:* - -Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) - -Also install make sure to install the following packages: - -```shell -sudo apt-get install libfdt-dev python-mako get text -``` - -*Download the firmware blobs:* - -```shell -mkdir android/ -cd android/ -mkdir -p vendor/db410c -cd vendor/db410c -wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin -sh firmware-410c-1.2.0.bin -cd - -``` - -*Build the image:* - -```shell -repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -cd .repo -git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch db410c-userdebug -make droidcore -j8 -cd out/target/product/db410c -``` - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md deleted file mode 100644 index d0a3461..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.03.md +++ /dev/null @@ -1,280 +0,0 @@ -## Debian RPB 16.03 - Build from Source - -- Building Linux Kernel from Source - - Step 1: Setting up your environment on your host computer - - Step 2: Download the Linaro cross compiler toolchain and Skales Tool - - Step 3: Export path to cross compiler tool and confirm version - - Step 4: Clone the Reference Platform kernel - - Step 5: Set the right kernel .config file - - Step 6: Build kernel image - - Step 7: Copy Modules - - Step 8: Find kernel release string - - Step 9: Generate modules.dep and map files - - Step 10: Find DragonBoard™ 410c IP Address - - Step 11: Transfer the modules to the target DragonBoard™ 410c - - [Step 12: Generate the initramfs - - [Step 13: Create the device tree image and boot image -- Customize Bootloader -- Build Rootfs from source - -*** - -#### Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) - -```shell -git: https://github.com/96boards/linux -tag: 96b-kernelci -defconfig: arch/arm64/defconfig kernel/configs/distro.config -``` - -The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). - -To build the Linux kernel, you can use the following instructions: - -#### Step 1: Setting up your environment on your host computer - -- Open your Terminal and cd into your desired directory -- Make a new folder using `mkdir` and call is something relevant - -```shell -#Example of desired directory -$ cd ~/Desktop - -#Example of relevant folder -$ mkdir DB410c-16.03 -$ cd DB410c-16.03 -``` - -#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool - -- From within the directory you just made -- Download and unzip by executing the following commands - -###### Linaro Cross Compiler - -```shell -#Download -$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz -#Unzip -$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz -``` - -###### Skales tool - -```shell -$ sudo apt-get install libfdt-dev -$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales -$ export PATH=$PATH:/tmp/skales -``` ->Skales will be used later when creating the device tree - - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes - -```shell -$ git clone -b 96b-kernelci http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- Once kernel source has been cloned cd into its directory - -```shell -$ cd kernel -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX -``` - -#### Step 7: Copy Modules - -- Modules must be local (host computer) before transferring to target device -- Still within linux directory -- Make temp folder -- Create modules - -```shell -$ mk tmp/modules -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 -``` - -#### Step 8: Find kernel release string - -- This was created during the kernel build -- In this example the kernel.release is 4.4.0+ - -```shell -$ cat include/config/kernel.release -#Output -$ 4.4.0+ -``` - -#### Step 9: Generate modules.dep and map files - -- Helps kernel find modules when system boots -- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 - -```shell -$ depmod -a -b /tmp/modules 4.4.0+ -``` - -#### Step 10: Find DragonBoard™ 410c IP Address - -- On your DragonBoard™ 410c -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 11: Transfer the modules to the target DragonBoard™ 410c - -- Using your board's IP Address for linaro@ - -```shell -$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules -$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#DragonBoard™ 410c shell -db410c $ tar -jxvf modules.tar.bz2 -db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ -``` - -#### Step 12: Generate the initramfs - -- You should still be in the DragonBoard™ 410c shell - -```shell -db410c $ sudo update-initramfs -k 4.4.0+ -c -``` - -- Copy back the new initramfs -- This will be used when creating the boot.mg - -#### Step 13: Create the device tree image and boot image - -###### Device tree - -```shell -$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom -``` - -###### Boot image - -```shell -$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" -``` - -Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. - -- Flashing the boot image can be done using fastboot -- Board must be booted into fastboot mode -- With USB to microUSB cable still connect execute the following: - -```shell -$ sudo fastboot flash boot boot.img -$ sudo fastboot reboot -``` - -*** - -### How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. - -The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): - -```shell -git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -``` - -To build the LK bootloader, you can use the following instructions: - -```shell -git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- -``` - -The second stage bootloader is flashed on the `about` partition, you can now flash your board with: - -```shell -sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn -``` - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -``` -cd -dpkg-buildpackage -b -us -uc -``` - -#### TO-DO - -- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md deleted file mode 100644 index ef52214..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md +++ /dev/null @@ -1,155 +0,0 @@ -[]() -[]() -[]() -[]() -[]() - ->**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Android Bootloader and Boot file - -- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) -- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -#### Step 3: Download all remaining files - -- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) -- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) -- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Android using Fastboot with Linux host - -This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -fastboot devices -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -cd - -#Example: -cd dragonboard410c_bootloader_emmc_android -# = dragonboard410c_bootloader_emmc_android - -# This command will execute the flashall script within the bootloader folder -./flashall - -``` - -5 - **Recall location of all downloaded files from downloads page** - -This will include the files listed below: - -###### Reference Platform files - -- boot.img.tar.xz -- system.img.tar.xz -- userdata.img.tar.xz -- cache.img.tar.xz - -6 - **Unzip all files** - -7 - **Flash all files to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of all extracted(unzipped) files -- `cd` to the directory with your unzipped files -- From within extraction directory, execute the following commands: - -###### Reference Platform - -```shell -# (Once again) Check to make sure fastboot device connected -sudo fastboot devices - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the downloads -sudo fastboot flash boot boot.img -sudo fastboot flash system system.img -sudo fastboot flash userdata userdata.img -sudo fastboot flash cache cache.img -``` - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into Android lock screen. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md deleted file mode 100644 index 56b81fd..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.03.md +++ /dev/null @@ -1,153 +0,0 @@ -[]() -[]() -[]() -[]() -[]() - - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian Bootloader and Boot file - -- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) -- Debian Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) - -#### Step 3: Download Root File System - -- Debian Rootfs (Desktop) ([Direct Download](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Wait for about 20 seconds. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -$ fastboot devices -``` - -Typically it will show as bellow -```shell -de82318 fastboot -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` -- XX represents the release number of the Bootloader -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -$ cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -$ cd - -#Example: -cd dragonboard410c_bootloader_emmc_linux-40 -# = dragonboard410c_bootloader_emmc_linux-40 -#This example took place during release 40 - -# This command will execute the flashall script within the bootloader folder -$ ./flashall - -``` - -5 - **Recall location of `boot` and `rootfs` download from the downloads page** - -- You should have downloaded the `boot` file -- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) - -6 - **Unzip both 'boot' and 'rootfs' files** - -7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of extracted(unzipped) `boot` file -- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) -- `cd` to the directory with your unzipped `boot` and `rootfs` files -- From within extraction directory, execute the following commands: - -```shell -# (Once again) Check to make sure fastboot device connected -$ sudo fastboot devices -# It will show similar to bellow if the device is connected successfully -de82318 fastboot - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the boot and rootfs downloads -$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img -$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img -``` -**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into either command line or desktop depending on rootfs - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md deleted file mode 100644 index d64f135..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md +++ /dev/null @@ -1,212 +0,0 @@ -## OpenEmbedded RPB 16.03 - Build from Source - -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. - -# Introduction - -This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: -* http://openembedded.org/wiki/Main_Page -* http://yoctoproject.org/ -* https://www.yoctoproject.org/documentation - -In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. - -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. - -The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. - -## OE Layers - -| Layer | Description | -|:-----------------------:|:----------------------| -| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | -| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | -| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | -| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | -| Meta-qt5 | This is a cross-platform toolkit. | -| Meta-linaro | This layer is used to get the Linaro toolchain. | -| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | -| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | -| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | - -# Package Dependencies - -In order to successfully set up your build environment, you will need to install the following package dependencies. - -**Step 1**: You will need git installed on your Linux host machine - -`$ sudo apt-get install git` - -**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need - -http://www.openembedded.org/wiki/Getting_started - -**Step 3**: Install 96Boards specific dependencies (Case specific) - -Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: - - -`$ sudo apt-get install whiptail` - -or - -`$ sudo apt-get install dialog` - -**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` - -`deb http://archive.ubuntu.com/ubuntu/ xenial universe` - -```shell -$ cd /etc/apt/ -#vim text editor is used in this example -#sudo is used to allow editing, sources.list is set to read only -$ sudo vim sources.list -``` - -All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. - - -# Setup the build environment - -The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. - -To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): - - mkdir -p ${HOME}/bin - curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo - chmod a+x ${HOME}/bin/repo - export PATH=${HOME}/bin:${PATH} - -To initialize your build environment, you need to run: - - mkdir oe-qcom && cd oe-qcom - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro - repo sync - source setup-environment [] - -* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. -* you will be prompted to choose the target machine, pick `dragonboard-410c` -* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' -* is optional, if missing it will default to `build-$DISTRO` - -The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. - -# Build a minimal, console-only image - -To build a console image, you can run: - - $ bitbake rpb-console-image - -At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: -* `rpb-console-image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -# Bootloaders and eMMC partitions - -Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. - -Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: -* remove power from your DragonBoard -* plug a USB cable from your development host to your DragonBoard's J4 connector -* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter -* after a few seconds you can release S4 - -To verify your cables and that the above procedure worked, on your development host run: - - # sudo fastboot devices - -and you should get a non-empty response, e.g. - - # sudo fastboot devices - 83581d40 fastboot - -If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. - -The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: -* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) -* unzip its contents -* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package - -At this point your eMMC has the following partition layout: - -* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) -* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) -* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system - -# Flashing build artifacts - -In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. - -At the end of any successful build you will end up with the following artifacts (amongst others) -* `image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. - -To install these to your DragonBoard's eMMC from your development host: - - # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 - # fastboot flash rootfs image-dragonboard-410c.ext4 - # fastboot flash boot boot-dragonboard-410c.img - -# Proprietary firmware blob - -When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... - -If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. - -If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). - -# Build a simple X11 image - -To build an X11 image with GPU hardware accelerated support run: - - $ bitbake rpb-desktop-image - -At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. - -Then you can finally start the X server, and run any graphical application: - - X& - export DISPLAY=:0 - glxgears - -The default X11 image includes `openbox` window manager, to use it: - - X& - export DISPLAY=:0 - openbox & - glxgears - -Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: - - CORE_IMAGE_EXTRA_INSTALL += "metacity" - -and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: - - X& - export DISPLAY=:0 - metacity& - glxgears - -# Build a sample Wayland/Weston image - -For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: - - $ bitbake rpb-weston-image - -This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. - -If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: - - weston-launch - -And that should get you to the Weston desktop shell. - -# Support - -For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). - -For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index cbabbe6..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,32 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 16.03 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -| **CE Debian RPB - 16.03** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB-16.03.md) | -| [Build from Source](BFSDebianRPB-16.03.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/CE-Debian-RPB-16.03-Dragonboard410c-TestReport.pdf) | - -*** - -| **CE AOSP RPB - 16.03**
(Developer Preview) | -|:---------------------------:| -| [Install Instructions](InstallAOSPRPB-16.03.md) | -| [Build from Source](BFSAOSPRPB-16.03.md) | -| [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/CE-AOSP-RPB-16.03-DB410c-TestReport.pdf) | - -*** - - -| **CE OpenEmbedded - 16.03** | -|:-----------------------------:| -| [Install Instructions](InstallOERPB-16.03.md) | - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md deleted file mode 100644 index 8823ad6..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSAOSPRPB-16.03.md +++ /dev/null @@ -1,46 +0,0 @@ -## AOSP RPB 16.03 - Build from Source - -Additional AOSP repositories are hosted here: -- https://github.com/96boards/android_hardware_ti_wpan -- https://github.com/96boards/android_device_linaro_hikey -- https://github.com/96boards/android_manifest -- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) - -**Build setup:** - -Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) - -###### Out of date: -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -```shell - ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp -``` - -*** - -**Download the code:** - -```shell -mkdir android/ -cd android/ -``` - -Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -**Build the image:** - -```shell -repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" -cd .repo/ -git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch hikey-userdebug -make droidcore -j8 -cd out/target/product/hiked -``` diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md deleted file mode 100644 index ee85550..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BFSDebianRPB-16.03.md +++ /dev/null @@ -1,185 +0,0 @@ -## Debian RPB 16.03 - Build from Source - -- Building Linux Kernel from Source - - Step 1: Setting up your environment on your host computer - - Step 2: Download the Linaro cross compiler toolchain - - Step 3: Export path to cross compiler tool and confirm version - - Step 5: Set the right kernel .config file - - Step 6: Build kernel image and debian package - - Step 7: Copy Modules - - Step 8: Find kernel release string - - Step 9: Generate modules.dep and map files - - Step 10: Find DragonBoard™ 410c IP Address - - Step 11: Transfer the modules to the target HiKey - - Step 12: Generate the initramfs - - Step 13: Create the device tree image and boot image -- Customize Bootloader -- Build Rootfs from source - -*** - -#### Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) - -```shell -git: https://github.com/96boards/linux -Dynamic tag: 96b-kernelci -Fixed tag: 96b/releases/2016.03 -defconfig: arch/arm64/configs/distro.config -``` - -The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) - -To build the Linux kernel, you can use the following instructions: - -#### Step 1: Setting up your environment on your host computer - -- Open your Terminal and cd into your desired directory -- Make a new folder using `mkdir`, name it something relevant - -```shell -#Example of desired directory -$ cd ~/Desktop - -#Example of relevant folder -$ mkdir HiKey-16.03 -$ cd HiKey-16.03 -``` - -#### Step 2: Step 2: Download the Linaro cross compiler toolchain - -- From within the directory you just made -- Download and unzip by executing the following commands - -###### Linaro Cross Compiler - -```shell -#Download -$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -#Unzip -$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -``` - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=~/Desktop/HiKey-16.03/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes -- Use **96b/releases/2016.03** if you want the same version used by the 16.03 release - -```shell -$ git clone -b 96b/releases/2016.03 http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process -- Once kernel source has been cloned cd into its directory - -```shell -$ cd linux -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ cp arch/arm64/configs/distro.config .config -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image and debian package - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory -- Creating the kernel package is recommended for HiKey, as it supports Grub 2 - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag -``` - -#### Step 7: Find HiKey IP Address - -- On your HiKey board -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 8: Transfer the modules to the target HiKey - -- Using your board's IP Address for linaro@ - -```shell -$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#HiKey shell - -$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb -``` -Congratulations! Your new kernel is now ready to be used by your HiKey. - -- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel -- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated - -### Boot Loader - -Please see [https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source](https://github.com/linaro/documentation/wiki/Reference-Platform-Bootloader-Hikey#building-from-source) for instructions on how to built the boot loader from source. - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -```shell -cd -dpkg-buildpackage -b -us -uc -``` - -#### TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md deleted file mode 100644 index 076028b..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/BuildSourceBL.md +++ /dev/null @@ -1,83 +0,0 @@ -## Building from source - -The source code is available from: -- [**l-loader**](https://github.com/96boards-hikey/l-loader) -- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) -- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) - -Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. - -### Build instructions - -Prerequisites: -- GCC 5.3 cross-toolchain for Aarch64 available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) -- GCC 5.3 cross-toolchain for gnueabihf available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) -- GPT fdisk (gdisk package from your favorite distribution). - -#### Installing pre-built toolchain(s) - -```shell -mkdir arm-tc arm64-tc -tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz -tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz -export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" -``` - -#### Getting the source code - -```shell -git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git -git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git -git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git -git clone https://github.com/96boards-hikey/l-loader.git -git clone git://git.linaro.org/uefi/uefi-tools.git -``` - -#### Building EDK2/UEFI for HiKey - -Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. - -To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export EDK2_DIR=${PWD}/edk2 -export ATF_DIR=${PWD}/arm-trusted-firmware -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -cd ${EDK2_DIR} -rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg -${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} hikey -``` - -And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): - -```shell -cd ../l-loader -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin -make # requires sudo for creating the partition tables -``` - -The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. - -#### EFI boot partition - -The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). - -```shell -wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi -mkdir boot-fat -dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 -sudo mkfs.fat -n "boot" boot-fat.uefi.img -sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat -sudo mkdir -p boot-fat/EFI/BOOT -sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi -sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi -sudo umount boot-fat -sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img -rm -rf boot-fat -``` - -Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md deleted file mode 100644 index 317256b..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md +++ /dev/null @@ -1,126 +0,0 @@ -#### Your Build Choice - -[]() -[]() -[]() -[]() -[]() - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download the following files - ->Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -Build Folders (**Binaries** / **Image**) - -- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) -- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) -- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) -- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) -- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) -- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) -- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) -- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) -- **system.img.tar.xz** (**Download**) - -*** - -#### Step 3: Install AOSP Using Fastboot with Linux host - -This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready - -3 - **Set HiKey into Recovery Mode using J15 header** - -- Remove link between pins 5 and 6 -- Link pins 1 and 2 -- Link pins 3 and 4 - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | closed -GPIO3-1 | Link 5-6 | open - -4 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable ptable-aosp-8g.img -$ sudo fastboot reboot -$ sudo fastboot flash boot boot_fat.uefi.img -$ sudo fastboot flash cache cache.img -$ sudo fastboot flash system system.img -$ sudo fastboot flash userdata userdata-8gb.img -``` - -5 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 3-4 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md deleted file mode 100644 index 2928cb4..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian partition table - -> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -**ptable-linux.img** ([**4G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-4g.img) / [**8G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-8g.img)) - -*** - -#### Step 3: Download Boot image and Root File System - -- **Debian Boot** ([**Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/hikey-boot-linux-*.uefi.img.gz)) -- **Debian Rootfs** (**Download**) - - -*** - -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. - - - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Wait for about 10 seconds -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready - -3 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable .img -$ sudo fastboot reboot -$ sudo fastboot flash boot .uefi.img -$ sudo fastboot flash system hikey-jessie_alip_2015MMDD-nnn-Xg.emmc.img -``` - -4 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 5-6 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md deleted file mode 100644 index 0761a72..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# HiKey Reference Platform Build - 16.03 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. -- **Test Report:** Provides test results and bug status for kernel, firmware, and images with a straight forward pass/fail legend. - -*** - -#### HiKey - - - -| **CE Debian RPB - 16.03** | **CE AOSP RPB - 16.03** | -|:-----------------------------:|:---------------------------:| -| [Install Instructions](InstallDebianRPB-16.03.md) | [Install Instructions](InstallAOSPRPB-16.03.md) | -| [Build from Source](BFSDebianRPB-16.03.md) | [Build from Source](BFSAOSPRPB-16.03.md) | -| [Known issues](../../Known-Issues.md) | [Known issues](../../Known-Issues.md) | -| [Test Report](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/CE-Debian-RPB-16.03-HiKey-TestReport.pdf) | [Test Report](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/CE-AOSP-RPB-16.03-HiKey-TestReport.pdf) | - - -*** - -Access **bootloader** build from source instructions [here](BuildSourceBL.md) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md deleted file mode 100644 index 3a63c2b..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md +++ /dev/null @@ -1,60 +0,0 @@ -### LeMaker Cello - -*** - -### Critical Bug List - -As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once we get a functional Realtek UEFI driver, it will also be possible to PXE boot the installer. - -Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (EDK2). - -Since the EDK2 based firmware is not yet public (work in progress), internal access to the tree/binary is required. Email your board point of contact for further information on how to download the required firmware. - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.0*. - -### Quick Start - -Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). - -### Distro Installers - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO -* [CentOS 7](../Install-CentOS-7.md) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md deleted file mode 100644 index a126caa..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md +++ /dev/null @@ -1,64 +0,0 @@ -### D02 - -*** - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.0*. - -For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. - -The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. - -### Quick Start - -#### D02 - QuickStart - -UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.03/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). - -**NOTE:** 16.03 kernel **requires** the 16.03 UEFI/EDK2 firmware release! - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) -* [CentOS 7](../Install-CentOS-7.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md deleted file mode 100644 index 3529558..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md +++ /dev/null @@ -1,64 +0,0 @@ -### D03 - -*** - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.11*. - -For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. - -The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. - -### Quick Start - -#### D03 - QuickStart - -UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/](https://builds.96boards.org/snapshots/reference-platform/components/uefi/latest/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). - -**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) -* [CentOS 7](../Install-CentOS-7.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.06-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.06-TestReport.pdf)) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md deleted file mode 100644 index ad1eadd..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md +++ /dev/null @@ -1,44 +0,0 @@ -## Setting up DHCP/TFTP server for UEFI distro network installers - -A simple way to install the major Linux Distributions (e.g. Debian, Fedora, CentOS, openSUSE, etc) is by booting the network installer via PXE. In order to have a working PXE environment, a DHCP and TFTP server is required, which is responsible for providing the target device a valid IP configuration and the required files to boot the system (usually Grub 2 + kernel + initrd). - -In order to simplify the setup, this document will use dnsmasq, which is a lightweight, easy to configure DNS forwarder and DHCP server with BOOTP/TFTP/PXE functionality. - -### Installing and configuring dnsmasq - -Debian/Ubuntu: - -```shell -sudo apt-get install dnsmasq -``` - -Fedora/CentOS/RHEL: - -```shell -yum install dnsmasq -``` - -This guide assumes you already know the network interface that will provide the DHCP/TFTP/PXE functionality for the target device. In this case, we are using _eth1_ as our secondary interface, with address _192.168.3.1_. - -Following is the /etc/dnsmasq.conf providing the required functionality for PXE: - -```shell -interface=eth1 -dhcp-range=192.168.3.10,192.168.3.100,255.255.255.0,1h -dhcp-boot=BOOTAA64.EFI -enable-tftp -tftp-root=/srv/tftp -``` - -Check [http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html) for more information and additional dnsmasq config options. - -Now make sure the tftp-root directory is available, and then start/restart the dnsmasq service: - -```shell -sudo mkdir -p /srv/tftp -sudo systemctl restart dnsmasq -``` - -Since we require UEFI support for the Reference Platform Software Enterprise Edition (EE-RPB), this document doesn't cover the traditional pxelinux specific configuration (used with the traditional BIOS setup). - -For UEFI, we only require DHCP to provide the UEFI binary name (retrieved via TFTP), which in this case is the Grub 2 bootloader (which then loads the kernel, initrd and other extra files from the TFTP server). diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md deleted file mode 100644 index 66581be..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md +++ /dev/null @@ -1,52 +0,0 @@ -### HP ProLiant m400 - -*** - -### Boot Firmware - -TBD - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.0*. - -For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. - -The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) -* [CentOS 7](../Install-CentOS-7.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md deleted file mode 100644 index 985fb61..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md +++ /dev/null @@ -1,216 +0,0 @@ -## Installing CentOS 7.2 15.11 - Reference Platform Enterprise - -This guide is not to be a replacement of the official CentOS Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64](https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64) - -### Setting up the TFTP server - -Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required CentOS 7 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. - -Downloading required Grub 2 UEFI files: - -```shell -sudo su - -cd /srv/tftp/ -wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/BOOTAA64.EFI -wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/grubaa64.efi -``` - -#### Downloading the CentOS installer from the Reference Platform 16.03 release (4.4.0 RP Kernel): - -```shell -mkdir /srv/tftp/centos7 -cd /srv/tftp/centos7 -wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/vmlinuz -wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/images/pxeboot/initrd.img -``` - -Creating the Grub 2 config file (`grub.cfg`): - -```shell -menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { - linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.repo=http://mirror.centos.org/altarch/7/os/aarch64/ inst.ks=file:/ks.cfg - initrd (tftp)/centos7/initrd.img -} -``` - -**Note:** `inst.ks` is required because of the additional linaro-overlay repository (which contains the reference platform kernel rpm package), which is available inside the `initrd.img`. The `inst.ks` contains only one line, which is used by the installer to fetch and install the right kernel package. The content: `repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/`. - -Also check the [RHEL 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html) and the [anaconda documentation](https://rhinstaller.github.io/anaconda/boot-options.html) for additional boot options. One example is using **ip=eth1:dhcp** if you want to use the second network interface as default. - -You should now have the following file tree structure: - -```shell -/srv/tftp/ -├── BOOTAA64.EFI -├── centos7 -│   ├── initrd.img -│   └── vmlinuz -├── grubaa64.efi -└── grub.cfg -``` - -Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: - -```shell -dhcp-boot=BOOTAA64.EFI -``` - -### Booting the installer - -Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). - -You should see the following (using AMD Seattle's Overdrive as example): - -```shell -NOTICE: BL3-1: -NOTICE: BL3-1: Built : 15:14:55, Feb 9 2016 -INFO: BL3-1: Initializing runtime services -INFO: BL3-1: Preparing for EL3 exit to normal world -INFO: BL3-1: Next image address = 0x8000e80000 -INFO: BL3-1: Next image spsr = 0x3c9 -Boot firmware (version built at 15:18:14 on Feb 9 2016) -Version 2.17.1249. Copyright (C) 2016 American Megatrends, Inc. -BIOS Date: 02/09/2016 15:15:23 Ver: ROD1001A00 -Press or to enter setup. -. ->>Checking Media Presence...... ->>Media Present...... ->>Start PXE over IPv4. - Station IP address is 192.168.3.57 - Server IP address is 192.168.3.1 - NBP filename is BOOTAA64.EFI - NBP filesize is 885736 Bytes ->>Checking Media Presence...... ->>Media Present...... - Downloading NBP file... - Succeed to download NBP file. - Fetching Netboot Image -``` - -At this stage you should be able to see the Grub 2 menu, like: - -```shell -Install CentOS 7 ARM 64-bit - Reference Platform - 16.03 -. -Use the and keys to change the selection. -Press 'e' to edit the selected item, or 'c' for a command prompt. -``` - -Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. - -You should see the following: - -```shell -EFI stub: Booting Linux Kernel... -EFI stub: Using DTB from configuration table -EFI stub: Exiting boot services and installing virtual address map... -[ 0.000000] Booting Linux on physical CPU 0x0 -[ 0.000000] Initializing cgroup subsys cpuset -[ 0.000000] Initializing cgroup subsys cpu -[ 0.000000] Initializing cgroup subsys cpuacct -[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 -[ 0.000000] Boot CPU: AArch64 Processor [411fd072] -[ 0.000000] efi: Getting EFI parameters from FDT: -[ 0.000000] EFI v2.40 by American Megatrends -[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 -... -Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! -... -dracut-initqueue[610]: RTNETLINK answers: File exists -dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current -dracut-initqueue[610]: Dload Upload Total Spent Left Speed -100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 -... -Welcome to CentOS Linux 7 (AltArch)! -... -Starting installer, one moment... -anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. - * installation log files are stored in /tmp during the installation - * shell is available on TTY2 - * if the graphical installation interface fails to start, try again with the - inst.text bootoption to start text installation - * when reporting a bug add logs from /tmp as separate text/plain attachments -21:06:29 X startup failed, falling back to text mode -================================================================================ -================================================================================ -VNC -. -X was unable to start on your machine. Would you like to start VNC to connect t -o this computer from another computer and perform a graphical installation or co -ntinue with a text mode installation? -. - 1) Start VNC -. - 2) Use text mode -. - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: 2 -[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log -``` - -For the text mode installer, just enter `2` and follow the instructions available in the console. - -Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. - -### Finishing the installation - -After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. - -Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. - -### Automating the installation with kickstart - -It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. - -Kickstart example: - -```shell -cmdline -url --url="http://mirror.centos.org/altarch/7/os/aarch64/" -repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ -repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ -repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ -lang en_US.UTF-8 -keyboard us -timezone --utc Etc/UTC -auth --useshadow --passalgo=sha512 -rootpw --lock --iscrypted locked -firewall --disabled -firstboot --disabled -selinux --disabled -reboot -network --bootproto=dhcp --device=eth0 --activate --onboot=on -ignoredisk --only-use=sda -bootloader --location=mbr -clearpart --drives=sda --all --initlabel -part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 -part /boot --fstype=ext4 --size=512 -part / --fstype=ext4 --size=10240 --grow -part swap --size=4000 -%packages -wget -net-tools -chrony -%end -%post -useradd -m -U -G wheel linaro -echo linaro | passwd linaro --stdin -%end -``` - -#### Setting up grub.cfg - -Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: - -```shell -menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform - 16.03' --class red --class gnu-linux --class gnu --class os { - linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg - initrd (tftp)/centos7/initrd.img -} -``` - -In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. - -#### Booting the system - -Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md deleted file mode 100644 index cdea0fe..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md +++ /dev/null @@ -1,522 +0,0 @@ -## Installing Debian "Jessie" 8.4 - -This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) - -### Debian Installer - -The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. - -Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. - -## Loading debian-installer from the network -### Setting up the TFTP server - -Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. - -Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. - -#### Downloading debian-installer: - -```shell -sudo su - -cd /srv/tftp/ -wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz -tar -zxvf netboot.tar.gz -``` - -You should now have the following file tree structure: - -```shell -/srv/tftp/ -├── debian-installer -│   └── arm64 -│   ├── bootnetaa64.efi -│   ├── grub -│   │   ├── arm64-efi -│   │   │   ├── acpi.mod -│   │   │   ├── adler32.mod -│   │   │   ├── all_video.mod -│   │   │   ├── archelp.mod -│   │   │   ├── bfs.mod -│   │   │   ├── bitmap.mod -│   │   │   ├── bitmap_scale.mod -│   │   │   ├── blocklist.mod -│   │   │   ├── boot.mod -│   │   │   ├── btrfs.mod -│   │   │   ├── bufio.mod -│   │   │   ├── cat.mod -│   │   │   ├── cbfs.mod -│   │   │   ├── chain.mod -│   │   │   ├── cmdline_cat_test.mod -│   │   │   ├── cmp.mod -│   │   │   ├── command.lst -│   │   │   ├── cpio_be.mod -│   │   │   ├── cpio.mod -│   │   │   ├── crc64.mod -│   │   │   ├── cryptodisk.mod -│   │   │   ├── crypto.lst -│   │   │   ├── crypto.mod -│   │   │   ├── datehook.mod -│   │   │   ├── date.mod -│   │   │   ├── datetime.mod -│   │   │   ├── diskfilter.mod -│   │   │   ├── disk.mod -│   │   │   ├── div_test.mod -│   │   │   ├── dm_nv.mod -│   │   │   ├── echo.mod -│   │   │   ├── efifwsetup.mod -│   │   │   ├── efi_gop.mod -│   │   │   ├── efinet.mod -│   │   │   ├── elf.mod -│   │   │   ├── eval.mod -│   │   │   ├── exfat.mod -│   │   │   ├── exfctest.mod -│   │   │   ├── ext2.mod -│   │   │   ├── extcmd.mod -│   │   │   ├── fat.mod -│   │   │   ├── file.mod -│   │   │   ├── font.mod -│   │   │   ├── fs.lst -│   │   │   ├── gcry_arcfour.mod -│   │   │   ├── gcry_blowfish.mod -│   │   │   ├── gcry_camellia.mod -│   │   │   ├── gcry_cast5.mod -│   │   │   ├── gcry_crc.mod -│   │   │   ├── gcry_des.mod -│   │   │   ├── gcry_dsa.mod -│   │   │   ├── gcry_idea.mod -│   │   │   ├── gcry_md4.mod -│   │   │   ├── gcry_md5.mod -│   │   │   ├── gcry_rfc2268.mod -│   │   │   ├── gcry_rijndael.mod -│   │   │   ├── gcry_rmd160.mod -│   │   │   ├── gcry_rsa.mod -│   │   │   ├── gcry_seed.mod -│   │   │   ├── gcry_serpent.mod -│   │   │   ├── gcry_sha1.mod -│   │   │   ├── gcry_sha256.mod -│   │   │   ├── gcry_sha512.mod -│   │   │   ├── gcry_tiger.mod -│   │   │   ├── gcry_twofish.mod -│   │   │   ├── gcry_whirlpool.mod -│   │   │   ├── geli.mod -│   │   │   ├── gettext.mod -│   │   │   ├── gfxmenu.mod -│   │   │   ├── gfxterm_background.mod -│   │   │   ├── gfxterm_menu.mod -│   │   │   ├── gfxterm.mod -│   │   │   ├── gptsync.mod -│   │   │   ├── grub.cfg -│   │   │   ├── gzio.mod -│   │   │   ├── halt.mod -│   │   │   ├── hashsum.mod -│   │   │   ├── help.mod -│   │   │   ├── hexdump.mod -│   │   │   ├── hfs.mod -│   │   │   ├── hfspluscomp.mod -│   │   │   ├── hfsplus.mod -│   │   │   ├── http.mod -│   │   │   ├── jfs.mod -│   │   │   ├── jpeg.mod -│   │   │   ├── keystatus.mod -│   │   │   ├── ldm.mod -│   │   │   ├── linux.mod -│   │   │   ├── loadenv.mod -│   │   │   ├── loopback.mod -│   │   │   ├── lsacpi.mod -│   │   │   ├── lsefimmap.mod -│   │   │   ├── lsefi.mod -│   │   │   ├── lsefisystab.mod -│   │   │   ├── lsmmap.mod -│   │   │   ├── ls.mod -│   │   │   ├── lssal.mod -│   │   │   ├── luks.mod -│   │   │   ├── lvm.mod -│   │   │   ├── lzopio.mod -│   │   │   ├── macbless.mod -│   │   │   ├── macho.mod -│   │   │   ├── mdraid09_be.mod -│   │   │   ├── mdraid09.mod -│   │   │   ├── mdraid1x.mod -│   │   │   ├── memrw.mod -│   │   │   ├── minicmd.mod -│   │   │   ├── minix2_be.mod -│   │   │   ├── minix2.mod -│   │   │   ├── minix3_be.mod -│   │   │   ├── minix3.mod -│   │   │   ├── minix_be.mod -│   │   │   ├── mmap.mod -│   │   │   ├── moddep.lst -│   │   │   ├── mpi.mod -│   │   │   ├── msdospart.mod -│   │   │   ├── net.mod -│   │   │   ├── newc.mod -│   │   │   ├── normal.mod -│   │   │   ├── ntfscomp.mod -│   │   │   ├── ntfs.mod -│   │   │   ├── odc.mod -│   │   │   ├── offsetio.mod -│   │   │   ├── part_acorn.mod -│   │   │   ├── part_amiga.mod -│   │   │   ├── part_apple.mod -│   │   │   ├── part_bsd.mod -│   │   │   ├── part_dfly.mod -│   │   │   ├── part_dvh.mod -│   │   │   ├── part_gpt.mod -│   │   │   ├── partmap.lst -│   │   │   ├── part_msdos.mod -│   │   │   ├── part_plan.mod -│   │   │   ├── part_sun.mod -│   │   │   ├── part_sunpc.mod -│   │   │   ├── parttool.lst -│   │   │   ├── parttool.mod -│   │   │   ├── password.mod -│   │   │   ├── password_pbkdf2.mod -│   │   │   ├── pbkdf2.mod -│   │   │   ├── pbkdf2_test.mod -│   │   │   ├── png.mod -│   │   │   ├── priority_queue.mod -│   │   │   ├── probe.mod -│   │   │   ├── procfs.mod -│   │   │   ├── progress.mod -│   │   │   ├── raid5rec.mod -│   │   │   ├── raid6rec.mod -│   │   │   ├── read.mod -│   │   │   ├── reboot.mod -│   │   │   ├── regexp.mod -│   │   │   ├── reiserfs.mod -│   │   │   ├── romfs.mod -│   │   │   ├── scsi.mod -│   │   │   ├── serial.mod -│   │   │   ├── setjmp.mod -│   │   │   ├── setjmp_test.mod -│   │   │   ├── signature_test.mod -│   │   │   ├── sleep.mod -│   │   │   ├── sleep_test.mod -│   │   │   ├── squash4.mod -│   │   │   ├── syslinuxcfg.mod -│   │   │   ├── terminal.lst -│   │   │   ├── terminal.mod -│   │   │   ├── terminfo.mod -│   │   │   ├── test_blockarg.mod -│   │   │   ├── testload.mod -│   │   │   ├── test.mod -│   │   │   ├── testspeed.mod -│   │   │   ├── tftp.mod -│   │   │   ├── tga.mod -│   │   │   ├── time.mod -│   │   │   ├── trig.mod -│   │   │   ├── tr.mod -│   │   │   ├── true.mod -│   │   │   ├── udf.mod -│   │   │   ├── ufs1_be.mod -│   │   │   ├── ufs1.mod -│   │   │   ├── ufs2.mod -│   │   │   ├── verify.mod -│   │   │   ├── video_colors.mod -│   │   │   ├── video_fb.mod -│   │   │   ├── videoinfo.mod -│   │   │   ├── video.lst -│   │   │   ├── video.mod -│   │   │   ├── videotest_checksum.mod -│   │   │   ├── videotest.mod -│   │   │   ├── xfs.mod -│   │   │   ├── xnu_uuid.mod -│   │   │   ├── xnu_uuid_test.mod -│   │   │   ├── xzio.mod -│   │   │   └── zfscrypt.mod -│   │   ├── font.pf2 -│   │   └── grub.cfg -│   ├── initrd.gz -│   └── linux -├── netboot.tar.gz -└── version.info -``` - -Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: - -```shell -dhcp-boot=debian-installer/arm64/bootnetaa64.efi -``` -## Loading debian-installer from the minimal CD - -Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. - -Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): - -``` -wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso -sudo cp mini.iso /dev/sdX -sync -``` - -Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. - -## Booting the installer - -If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. - -You should see the following (using AMD Seattle's Overdrive as example): - -```shell -NOTICE: BL3-1: -NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 -INFO: BL3-1: Initializing runtime services -INFO: BL3-1: Preparing for EL3 exit to normal world -INFO: BL3-1: Next image address = 0x8000000000 -INFO: BL3-1: Next image spsr = 0x3c9 -Boot firmware (version built at 18:27:24 on Nov 23 2015) -Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. -BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 -Press or to enter setup. -. ->>Checking Media Presence...... ->>Media Present...... ->>Start PXE over IPv4. - Station IP address is 192.168.3.57 - Server IP address is 192.168.3.1 - NBP filename is BOOTAA64.EFI - NBP filesize is 885736 Bytes ->>Checking Media Presence...... ->>Media Present...... - Downloading NBP file... - Succeed to download NBP file. - Fetching Netboot Image -``` - -At this stage you should be able to see the Grub 2 menu, like: - -```shell -Install -Advanced options ... -Install with speech synthesis -. -Use the and keys to change the selection. -Press 'e' to edit the selected item, or 'c' for a command prompt. -``` - -Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. - -**NOTE - Cello Only:** The network driver **r8169** needs an additional module parameter for a functional 64-bit DMA operation ([related kernel change](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4300e8c7f64d95a80ffa7d98d98738f41546bc30)), so please edit your grub boot parameter by pressing _e_ at the selected boot line, and add _r8169.use_dac=1_ in the end of the linux line. To boot, simply press _Control + x_. - -You should see the following: - -```shell -EFI stub: Booting Linux Kernel... -EFI stub: Using DTB from configuration table -EFI stub: Exiting boot services and installing virtual address map... -[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND -[ 0.763784] kvm [1]: error: no compatible GIC node found -[ 0.763818] kvm [1]: error initializing Hyp mode: -19 -[ 0.886298] Failed to find cpu0 device node -[ 0.947082] zswap: default zpool zbud not available -[ 0.951959] zswap: pool creation failed -Starting system log daemon: syslogd, klogd. -... - ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ - │ │ - │ Choose the language to be used for the installation process. The │ - │ selected language will also be the default language for the installed │ - │ system. │ - │ │ - │ Language: │ - │ │ - │ C │ - │ English │ - │ │ - │ │ - │ │ - └─────────────────────────────────────────────────────────────────────────┘ - moves; selects; activates buttons -``` - -### Finishing the installation - -For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) - -**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. - -``` -~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f -~ # exit -``` - -Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. - -**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: - -``` -root@debian:~# cat /etc/network/interfaces -... -allow-hotplug enp1s0 -iface enp1s0 inet dhcp - hwaddress ether de:5e:60:e4:6b:1f -``` - -### Automating the installation using preseeding - -Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. - -This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) - -**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: - -```shell -d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands -``` - -#### Creating the preseed file - -Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. - -Once created, make sure the file gets published into a network address that can be reachable from your target device. - -Preseed example (`preseed.cfg`): - -```shell -d-i debian-installer/locale string en_US -d-i keyboard-configuration/xkb-keymap select us -d-i netcfg/dhcp_timeout string 60 -d-i netcfg/get_hostname string unassigned-hostname -d-i netcfg/get_domain string unassigned-domain -d-i netcfg/hostname string debian -d-i mirror/country string manual -d-i mirror/http/hostname string httpredir.debian.org -d-i mirror/http/directory string /debian -d-i mirror/http/proxy string -d-i passwd/root-password password linaro123 -d-i passwd/root-password-again password linaro123 -d-i passwd/user-fullname string Linaro User -d-i passwd/username string linaro -d-i passwd/user-password password linaro -d-i passwd/user-password-again password linaro -d-i passwd/user-default-groups string audio cdrom video sudo -d-i time/zone string UTC -d-i clock-setup/ntp boolean true -d-i clock-setup/utc boolean true -d-i partman-auto/disk string /dev/sda -d-i partman-auto/method string regular -d-i partman-lvm/device_remove_lvm boolean true -d-i partman-md/device_remove_md boolean true -d-i partman-auto/choose_recipe select atomic -d-i partman/confirm_write_new_label boolean true -d-i partman/choose_partition select finish -d-i partman/confirm boolean true -d-i partman/confirm_nooverwrite boolean true -popularity-contest popularity-contest/participate boolean false -tasksel tasksel/first multiselect standard, web-server -d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp -d-i pkgsel/upgrade select safe-upgrade -d-i finish-install/reboot_in_progress note -``` - -In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) - -#### Setting up grub.cfg - -Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: - -```shell -$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg -# Force grub to automatically load the first option -set default=0 -set timeout=1 -menuentry 'Install with preseeding' { - linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- - initrd /debian-installer/arm64/initrd.gz -} -``` - -The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. - -In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. - -#### Booting the system - -Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. - -Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. - -### Building debian-installer from source - -#### Build kernel package and udebs - -Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. - -You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) - -#### Rebuilding debian-installer with the new udebs - -To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. - -Download the installer (from jessie): - -```shell -sudo apt-get build-dep debian-installer -dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u2.dsc -``` - -Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): - -```shell -cd debian-installer-* -cd build -sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common -sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common -``` - -Download the kernel udebs that you created at the localudebs folder: - -```shell -cd localudebs -wget -cd .. -``` - -Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): - -```shell -cat < pkg-lists/local -ext4-modules-\${kernel:Version} -fat-modules-\${kernel:Version} -btrfs-modules-\${kernel:Version} -md-modules-\${kernel:Version} -efi-modules-\${kernel:Version} -scsi-modules-\${kernel:Version} -jfs-modules-\${kernel:Version} -xfs-modules-\${kernel:Version} -ata-modules-\${kernel:Version} -sata-modules-\${kernel:Version} -usb-storage-modules-\${kernel:Version} -EOF -``` - -Set up the local repo, so the installer can locate your udebs (from localudebs): - -```shell -cat < sources.list.udeb -deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ -deb http://httpredir.debian.org/debian jessie main/debian-installer -EOF -``` - -Default preseed to skip known errors (as the kernel provided by local udebs): - -``` -cat < default-preseed -# Continue install on "no kernel modules were found for this kernel" -d-i anna/no_kernel_modules boolean true -# Continue install on "no installable kernels found" -d-i base-installer/kernel/skip-install boolean true -d-i base-installer/kernel/no-kernels-found boolean true -d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb -EOF -``` - -Now just build the installer: - -```shell -fakeroot make build_netboot -``` - -You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md deleted file mode 100644 index c625bdd..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md +++ /dev/null @@ -1,164 +0,0 @@ -## Installing Fedora 23 - -This guide is not to be a replacement of the official Fedora 23 Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation](https://fedoraproject.org/wiki/Architectures/AArch64/F23/Installation) - -### Setting up the TFTP server - -Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Fedora 23 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. - -Downloading required Grub 2 UEFI files: - -**Note:** Because of bug [1251600](https://bugzilla.redhat.com/show_bug.cgi?id=1251600), we need to use both `BOOTAA64.EFI` and `grubaa64.efi` from the Fedora 22 release. - -```shell -sudo su - -cd /srv/tftp/ -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/BOOTAA64.EFI -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/22/Server/aarch64/os/EFI/BOOT/grubaa64.efi -``` - -Downloading upstream Kernel and Initrd - -```shell -mkdir /srv/tftp/f23 -cd /srv/tftp/f23 -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/vmlinuz -wget http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/images/pxeboot/initrd.img -``` - -Creating the Grub 2 config file (`grub.cfg`): - -```shell -menuentry 'Install Fedora 23 ARM 64-bit' --class fedora --class gnu-linux --class gnu --class os { - linux (tftp)/f23/vmlinuz ip=dhcp inst.repo=http://dl.fedoraproject.org/pub/fedora-secondary/releases/23/Server/aarch64/os/ - initrd (tftp)/f23/initrd.img -} -``` - -You should now have the following file tree structure: - -```shell -/srv/tftp/ -├── BOOTAA64.EFI -├── f23 -│   ├── initrd.img -│   └── vmlinuz -├── grubaa64.efi -└── grub.cfg -``` - -Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: - -```shell -dhcp-boot=BOOTAA64.EFI -``` - -### Booting the installer - -Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). - -You should see the following (using AMD Seattle's Overdrive as example): - -```shell -NOTICE: BL3-1: -NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 -INFO: BL3-1: Initializing runtime services -INFO: BL3-1: Preparing for EL3 exit to normal world -INFO: BL3-1: Next image address = 0x8000000000 -INFO: BL3-1: Next image spsr = 0x3c9 -Boot firmware (version built at 18:27:24 on Nov 23 2015) -Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. -BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 -Press or to enter setup. -. ->>Checking Media Presence...... ->>Media Present...... ->>Start PXE over IPv4. - Station IP address is 192.168.3.57 - Server IP address is 192.168.3.1 - NBP filename is BOOTAA64.EFI - NBP filesize is 885736 Bytes ->>Checking Media Presence...... ->>Media Present...... - Downloading NBP file... - Succeed to download NBP file. - Fetching Netboot Image -``` - -At this stage you should be able to see the Grub 2 menu, like: - -```shell -Install Fedora 23 ARM 64-bit -. -Use the and keys to change the selection. -Press 'e' to edit the selected item, or 'c' for a command prompt. -``` - -Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Fedora 23 (just make sure that target device has external network access, since the installer is downloaded automatically after booting the kernel). - -You should see the following: - -```shell -EFI stub: Booting Linux Kernel... -EFI stub: Using DTB from configuration table -EFI stub: Exiting boot services and installing virtual address map... -[ 0.000000] Booting Linux on physical CPU 0x0 -[ 0.000000] Initializing cgroup subsys cpuset -[ 0.000000] Initializing cgroup subsys cpu -[ 0.000000] Initializing cgroup subsys cpuacct -[ 0.000000] Linux version 4.2.3-300.fc23.aarch64 (mockbuild@aarch64-08a.arm.fedoraproject.org) (gcc version 5.1.1 20150618 (Red Hat 5.1.1-4) (GCC) ) #1 SMP Thu Oct 8 01:39:38 UTC 2015 -[ 0.000000] CPU: AArch64 Processor [411fd072] revision 2 -[ 0.000000] Detected PIPT I-cache on CPU0 -[ 0.000000] alternatives: enabling workaround for ARM erratum 832075 -[ 0.000000] efi: Getting EFI parameters from FDT: -[ 0.000000] EFI v2.40 by American Megatrends -[ 0.000000] efi: ACPI 2.0=0x83ff1c6000 SMBIOS 3.0=0x83ff349718 -... -Welcome to Fedora 23 (Twenty Three) dracut-043-60.git20150811.fc23 (Initramfs)! -... -[ 23.105835] dracut-initqueue[685]: RTNETLINK answers: File exists -[ 23.756828] dracut-initqueue[685]: % Total % Received % Xferd Average Speed Time Time Time Current -[ 23.757345] dracut-initqueue[685]: Dload Upload Total Spent Left Speed -100 958 100 958 0 0 1514 0 --:--:-- --:--:-- --:--:-- 1513 0 --:--:-- --:--:-- --:--:-- 0 -... -Welcome to Fedora 23 (Twenty Three)! -... -Starting installer, one moment... -anaconda 23.19.10-1 for Fedora 23 started. - * installation log files are stored in /tmp during the installation - * shell is available on TTY2 - * if the graphical installation interface fails to start, try again with the - inst.text bootoption to start text installation - * when reporting a bug add logs from /tmp as separate text/plain attachments -00:29:26 X startup failed, falling back to text mode -================================================================================ -================================================================================ -VNC -. -X was unable to start on your machine. Would you like to start VNC to connect t -o this computer from another computer and perform a graphical installation or co -ntinue with a text mode installation? -. - 1) Start VNC -. - 2) Use text mode -. - Please make your choice from above ['q' to quit | 'c' to continue | - 'r' to refresh]: -. -[anaconda]1:main* 2:shell 3:log 4:storage-log >Switch tab: Alt+Tab | Help: F1 -``` - -For the text mode installer, just enter `2` and follow the instructions available in the console. - -Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. - -### Finishing the installation - -After selecting the installation destination, the partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. - -Once the installation is completed, you should be able to simply reboot the system in order to boot your new Fedora 23 system. - -### Automating the installation with kickstart - -TODO diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md deleted file mode 100644 index 5e134d1..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md +++ /dev/null @@ -1,320 +0,0 @@ -This post concentrates on Running Hadoop after [installing](ODPi-Hadoop-Installation.md) ODPi components built using Apache BigTop. These steps are only for configuring it on a single node and running them on a single node. - -# Add Hadoop User - We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop usergroup: - -```shell -sudo useradd -G hadoop hduser -``` - -give a password for hduser - -```shell -sudo passwd hduser -``` - -Add hduser to sudoers list -On Debian: - -```shell -sudo adduser hduser sudo -``` - -On Centos: - -```shell -sudo usermod -G wheel hduser -``` - -Switch to hduser: - -```shell -sudo su - hduser -``` - -# Generate ssh key for hduser - -```shell -ssh-keygen -t rsa -P "" -``` - -Press \ to leave to default file name. - -Enable ssh access to local machine: - -```shell -cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys -``` - -Test ssh setup, as hduser: - -```shell -ssh localhost -``` - -# Disabling IPv6 - -```shell -sudo nano /etc/sysctl.conf -``` - -Add the below lines to the end and save: - -```shell -net.ipv6.conf.all.disable_ipv6 = 1 -net.ipv6.conf.default.disable_ipv6 = 1 -net.ipv6.conf.lo.disable_ipv6 = 1 -``` - -Prefer IPv4 on Hadoop: - -```shell -sudo nano /etc/hadoop/conf/hadoop-env.sh -``` - -Uncomment line: - -```shell -# export HADOOP_OPTS=-Djava.net.preferIPV4stack=true -``` - -Run sysctl to apply the changes: - -```shell -sudo sysctl -p -``` - -# Configuring the app environment -Configure the app environment by following steps: - -```shell -sudo mkdir -p /app/hadoop/tmp -sudo chown hduser:hadoop /app/hadoop/tmp -sudo chmod 750 /app/hadoop/tmp -sudo chown hduser:hadoop /usr/lib/hadoop -sudo chmod 750 /usr/lib/hadoop -``` - -# Setting up Environment Variables -Follow the below steps to setup Environment Variables in bash file : - -```shell -sudo su - hduser -nano .bashrc -``` - -Add the following to the end and save: - -```shell -export HADOOP_HOME=/usr/lib/hadoop -export HADOOP_PREFIX=$HADOOP_HOME -export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" -export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec -export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop -export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native -export HADOOP_COMMON_HOME=$HADOOP_HOME -export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce -export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs -export YARN_HOME=/usr/lib/hadoop-yarn -export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ -export CLASSPATH=$CLASSPATH:. -export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.6.0.jar -export CLASSPATH=$CLASSPATH:$HADOOP_HOME/client/hadoop-hdfs-2.6.0.jar -export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") -export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH -``` - -Execute the terminal environment again (`bash`), or simply logout and change to `hduser` again. - -# Modifying config files -## core-site.xml - -```shell -sudo nano /etc/hadoop/conf/core-site.xml -``` - -And add/modify the following settings: -Look for property with fs.defaultFS and modify as below: - -```shell - - fs.default.name - hdfs://localhost:54310 - The name of the default file system. A URI whose - scheme and authority determine the FileSystem implementation. The - uri's scheme determines the config property (fs.SCHEME.impl) naming - the FileSystem implementation class. The uri's authority is used to - determine the host, port, etc. for a filesystem. - -``` - -Add this to the bottom before \ tag: - -```shell - - hadoop.tmp.dir - /app/hadoop/tmp - A base for other temporary directories. - -``` - -## mapred-site.xml - -```shell -sudo nano /etc/hadoop/conf/mapred-site.xml -``` - -Modify existing properties as follows: -Look for property tag with as mapred.job.tracker and modify as below: - -```shell - - mapred.job.tracker - localhost:54311 - The host and port that the MapReduce job tracker runs - at. If "local", then jobs are run in-process as a single map - and reduce task. - - -``` - -## hdfs-site.xml: - -```shell -sudo nano /etc/hadoop/conf/hdfs-site.xml -``` - -Modify existing property as below : - -```shell - - dfs.replication - 1 - Default block replication. - The actual number of replications can be specified when the file is created. - The default is used if replication is not specified in create time. - - -``` - -# Format Namenode -This step is needed for the first time. Doing it every time will result in loss of content on HDFS. - -```shell -sudo /etc/init.d/hadoop-hdfs-namenode init -``` - -# Start the YARN daemons - -```shell -for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done -sudo /etc/init.d/hadoop-yarn-resourcemanager start -sudo /etc/init.d/hadoop-yarn-nodemanager start -``` - -# Validating Hadoop -Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux - -```shell -sudo jps -``` -or - -```shell -ps aux | grep java -``` - -Alternatively, check if yarn managers are running: - -```shell -sudo /etc/init.d/hadoop-yarn-resourcemanager status -sudo /etc/init.d/hadoop-yarn-nodemanager status -``` - -You would see like below: - -```shell -● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager - Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) - Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago - CGroup: /system.slice/hadoop-yarn-nodemanager.service - └─10366 /usr/lib/jvm/java-1.7.0-openjdk-arm64/bin/java -Dproc_node... - -Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root -Dec 22 18:24:57 debian su[10348]: + ??? root:yarn -Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) -Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... -Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn -Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... -``` - - -## Run teragen, terasort and teravalidate ## - -```shell -hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput - -hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput - -hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate -``` - -## Stop the Hadoop services ## - -```shell -sudo /etc/init.d/hadoop-yarn-nodemanager stop - -sudo /etc/init.d/hadoop-yarn-resourcemanager stop - -for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done -``` - -## Potential Errors / Issues and Resolutions ## -* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: - -```shell -sudo groupadd supergroup - -sudo usermod -g supergroup hduser -``` - -* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. - -```shell -You may have delete all the packages and re-run the steps of installation from scratch. -``` - -* Error while formatting namenode -With the following command: - -```shell -sudo /etc/init.d/hadoop-hdfs-namenode init - - -If you see the following error: - WARN net.DNS: Unable to determine local hostname -falling back to "localhost" - java.net.UnknownHostException: centos: centos - at java.net.InetAddress.getLocalHost(InetAddress.java:1496) - at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) - at org.apache.hadoop.net.DNS.(DNS.java:57) - -Something is wrong in the network setup. Please check /etc/hosts file. - -```shell -sudo nano /etc/hosts -``` - -The hosts file should like below: - -```shell -127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname -::1 localhost -``` - -Also try the following steps: - -```shell -sudo rm -Rf /app/hadoop/tmp - -hadoop namenode -format -``` diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md deleted file mode 100644 index e810f26..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md +++ /dev/null @@ -1,82 +0,0 @@ -This post concentrates on installing ODPi components built using Apache BigTop. These steps configure and run the components on a single node. - -# Prerequisites: - -* Java 7 (e.g. openjdk-7-jre) - -# Repo: - -ODPi deb and rpm packages can be found on Linaro repositories: - -* Debian Jessie - http://repo.linaro.org/ubuntu/linaro-overlay/ -* CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/ - - -# Installation : - -### On Debian: - -Add to repo source list (**not required if you are using the installer from the Reference Platform**): - -```shell -echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list -sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C -``` - -Update the source list and install the dependencies: - -```shell -sudo apt-get update -sudo apt-get install openssh-server rsync openjdk-7-jre openjdk-7-jdk -sudo apt-get build-dep build-essential -``` - -Install Hadoop packages: - -```shell -sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* -``` - -### On CentOS: - -```shell -sudo wget http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo -O /etc/yum.repos.d/linaro-overlay.repo -sudo yum update -sudo yum -y install openssh-server openssh-clients java-1.7.0-openjdk* -sudo yum install -y bigtop-tomcat bigtop-utils hadoop* spark* hue* zookeeper* hive* hbase* oozie* pig* mahout* -``` - -### Verifying Installation - -Packages would get installed in /usr/lib - -Type hadoop to check if hadoop is installed: - -```shell -hadoop -``` - -And you should see the following: - -```shell -linaro@debian:~$ hadoop -Usage: hadoop [--config confdir] COMMAND - where COMMAND is one of: - fs run a generic filesystem user client - version print the version - jar run a jar file - checknative [-a|-h] check native hadoop and compression libraries availability - distcp copy file or directories recursively - archive -archiveName NAME -p * create a hadoop archive - classpath prints the class path needed to get the - credential interact with credential providers - Hadoop jar and the required libraries - daemonlog get/set the log level for each daemon - trace view and modify Hadoop tracing settings - or - CLASSNAME run the class named CLASSNAME -``` - - Most commands print help when invoked w/o parameters. - -Next Step: [Setup, Configuration and Running Hadoop](ODPi-BigTop-Hadoop-Config-Run.md) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md deleted file mode 100644 index d3b4cb9..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md +++ /dev/null @@ -1,376 +0,0 @@ -# OpenStack Liberty - Debian Jessie - -# Introduction - -In general, the instructions in the Liberty install guide should be followed: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html. This guide will describe changes to the documented procedures that should be kept in mind while going through the guide. - -Each section below will correspond to a section in the guide. Guide sections that do not have a corresponding section below may be followed as-is. - -# Release Notes - -## Configuring images for aarch64 - -An image must be configured specially in glance to be able to boot correctly on aarch64. -To attach the devices to the virtio bus (which does not allow hotplugging a volume, but will work if the image does not have SCSI support), the following properties must be set: - -```shell ---property hw_machine_type=virt ---property os_command_line='root=/dev/vda rw rootwait console=ttyAMA0' ---property hw_cdrom_bus=virtio -``` - -To attach the devices to the SCSI bus (which does allow hotplugging a volume, but might not be supported by the guest image), the following properties must be set: - -```shell ---property hw_scsi_model='virtio-scsi' ---property hw_disk_bus='scsi' ---property os_command_line='root=/dev/sda rw rootwait console=ttyAMA0' -``` - -You can set these properties when you are uploading the image into glance, or modify the image if you have already uploaded it. - - -# Pre-Installation - -## Verify/enable additional repositories - -Verify that the `linaro-overlay` and `jessie-backports` repositories are enabled. - -Check if they are available by checking `/etc/apt/sources.list` and `/etc/apt/sources.list.d`. - -If missing, add the following to `/etc/apt/sources.list.d` directory: - -```shell -$ echo "deb http://repo.linaro.org/ubuntu/linaro-overlay jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list -$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E13D88F7E3C1D56C -``` - -If missing, add the following to `/etc/apt/sources.list.d` directory: - -```shell -$ echo "deb http://httpredir.debian.org/debian jessie-backports main" | sudo tee /etc/apt/sources.list.d/jessie-backports.list -``` - -## Modify repository priorities - -Create `/etc/apt/preferences.d/jessie-backports`: - -```shell -Package: * -Pin: release a=jessie-backports -Pin-Priority: 500 -``` - -Then, make sure to run apt-get update: - -```shell -$ sudo apt-get update -``` - -## Environment - -Update `/etc/hosts` to add “controller” as an alias for localhost. - -```shell -127.0.0.1 localhost controller -``` - -## Disable IPV6 - -Add the following to `/etc/sysctl.conf`: - -```shell -net.ipv6.conf.all.disable_ipv6 = 1 -net.ipv6.conf.default.disable_ipv6 = 1 -net.ipv6.conf.lo.disable_ipv6 = 1 -net.ipv6.conf.eth0.disable_ipv6 = 1 -``` - -Run sysctl to apply the changes: - -```shell -$ sudo sysctl -p -``` - -# Following the Openstack guide... - -OpenStack guide: http://docs.openstack.org/liberty/install-guide-ubuntu/overview.html - -## Environment - -### Openstack Packages - -Do not enable the `cloud-archive:liberty` repository. - -Install some dependencies: - -```shell -$ sudo apt-get install openstack-cloud-services python-pymysql -``` - -Answer the questions asked by debconf: - -* New password for the MySQL **root** user: \ - -Install the openstack client: - -```shell -$ sudo apt-get install python-openstackclient -``` - -### NoSQL Database - -The instructions in this section are not required, as Telemetry is not installed. - -## Add the Identity service (Keystone) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during meta package installation later. - -#### Install and configure components - -Install the apache and the keystone meta package: - -```shell -$ sudo apt-get install openstack-cloud-identity -``` - -Answer the questions asked by debconf: - -* Set up a database for Keystone: **Yes** -* Configure database for keystone with dbconfig-common: **Yes** -* Database type to be used by keystone: **mysql** -* Password of the database's administrative user: **\** -* MySQL application password for keystone: **\** -* Authentication server administration token: **\** -* Register administration tenants? **Yes** -* Password of the administrative user: **\** -* Register Keystone endpoint? **Yes** -* Keystone endpoint IP address: **\** - -#### Configure the Apache HTTP server - -Omit this section of the guide. - -#### Finalize the installation - -Omit this section of the guide. - -### Create the service entity and API endpoints - -Omit this section of the guide. - -### Create projects, users, and roles - -Omit this section of the guide. - - -## Add the Image service (Glance) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during package installation later. - -#### Install and configure components - -```shell -$ sudo apt-get install glance -``` - -Answer the questions asked by debconf: - -* Set up a database for Glance: **Yes** -* Configure database for glance-common with dbconfig-common? **Yes** -* Database type to be used by glance-common: **mysql** -* Password of the database's administrative user: **\** -* MySQL application password for glance-common: **\** -* IP address of your RabbitMQ host: **\** -* Username for connection to the RabbitMQ server: **guest** -* Password for connection to the RabbitMQ server: **guest** -* Pipeline flavor: **keystone** -* Authentication server hostname: **\** -* Authentication server password: **\** -* Register Glance in the Keystone endpoint catalog? **Yes** -* Keystone authentication token: **\** - -#### Finalize installation - -Omit this section of the guide. - -### Verify operation - -The CirrOS image to run on aarch64 is the file that ends in `-uec.tar.gz`. It must be extracted and each file (kernel, initrd, disk image) uploaded to Glance separately. - -Download the CirrOS AArch64 UEC tarball and untar it: - -```shell -$ wget http://download.cirros-cloud.net/daily/20150923/cirros-d150923-aarch64-uec.tar.gz -$ tar xvf cirros-d150923-aarch64-uec.tar.gz -``` - -Upload the image parts into Glance. You will need to make note of the IDs assigned to the kernel and initrd and pass them on the command line when uploading the disk image: - -```shell -$ glance image-create --name "cirros-kernel" --visibility public --progress \ - --container-format aki --disk-format aki --file cirros-d150923-aarch64-vmlinuz - -$ glance image-create --name "cirros-initrd" --visibility public --progress \ - --container-format ari --disk-format ari --file cirros-d150923-aarch64-initrd - -$ glance image-create --name "cirros" --visibility public --progress \ - --property hw_machine_type=virt --property hw_cdrom_bus=virtio \ - -property os_command_line='console=ttyAMA0' \ - --property kernel_id=KERNEL_ID --property ramdisk_id=INITRD_ID \ - --container-format ami --disk-format ami --file cirros-d150923-aarch64-blank.img -``` - -## Add the Compute service (Nova) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during package installation later. - -#### Install and configure components - -```shell -$ sudo apt-get install nova-api nova-cert nova-conductor \ - nova-consoleauth nova-scheduler nova-compute -``` - -Answer the questions asked by debconf: - -* Set up a database for Nova: **Yes** -* Configure database for nova-common with dbconfig-common? **Yes** -* Database type to be used by nova-common: **mysql** -* Password of the database's administrative user: **\** -* MySQL application password for nova-common: **\** -* IP address of your RabbitMQ host: **\** -* Username for connection to the RabbitMQ server: **guest** -* Password for connection to the RabbitMQ server: **guest** -* Auth server hostname: **\** -* Auth server password: **\** -* Neutron server URL: **http://\:9696** -* Neutron administrator password: **\** -* Metadata proxy shared secret: **\** -* API to activate: choose **osapi_compute and metadata** -* Value for my_ip: **\** -* Register Nova in the Keystone endpoint catalog? **Yes** -* Keystone authentication token: **\** - -#### Finalize installation - -Ensure that vnc and spice are disabled in `/etc/nova/nova.conf`. Look for the following keys in `nova.conf` and set them to False: - -```shell -vnc_enabled=false - -[spice] -enabled=false -``` - -Enable KVM by ensuring the following is in `nova-compute.conf`: - -```shell -[DEFAULT] -compute_driver=libvirt.LibvirtDriver - -[libvirt] -virt_type=kvm -``` - -**NOTE: Until kernel support for KVM is properly enabled, instances can be run in emulation by ensuring the following is in `nova-compute.conf`**: - -```shell -[DEFAULT] -compute_driver=libvirt.LibvirtDriver - -[libvirt] -cpu_mode = custom -virt_type = qemu -cpu_model = cortex-a57 -``` - -**IMPORTANT: If you make changes to `nova.conf`, or `nova-compute.conf`, restart the nova services:** - -```shell -$ sudo service nova-compute restart -``` - - -## Add the Networking service (Neutron) - -Follow the Openstack guide with the exception of the following changes documented here. - -### Install and configure - -#### Prerequisites - -Omit this section of the guide. These operations will be done during package installation later. - -#### Install and configure components - -```shell -$ sudo apt-get install neutron-server neutron-plugin-ml2 \ - neutron-plugin-linuxbridge-agent neutron-dhcp-agent \ - neutron-metadata-agent -``` - -Answer the questions asked by debconf: - -* neutron-common - * Set up a database for Neutron: **Yes** - * Configure database for neutron-common with dbconfig-common? **Yes** - * Database type to be used by neutron-common: **mysql** - * Password of the database's administrative user: **\** - * MySQL application password for neutron-common: **\** - * IP address of your RabbitMQ host: **\** - * Username for connection to the RabbitMQ server: **guest** - * Password for connection to the RabbitMQ server: **guest** - * Authentication server hostname: **\** - * Authentication server password: **\** - * Neutron plugin: **ml2** -* neutron-metadata-agent - * Auth server hostname: **\** - * Auth server password: **\** - * Name of the region to be used by the metadata server: **\** - * Metadata proxy shared secret: **\** -* neutron-server - * Register Neutron in the Keystone endpoint catalog? **Yes** - * Keystone authentication token: **\** - -#### Configure networking options -Follow "Networking Option 1: Provider networks". - -#### Finalize installation - -Omit this section of the guide. - - -## Launch an instance - -### Create virtual networks - -Follow section “Public provider network” - -### Launch an instance - -Follow section “Launch an instance on the public network” - -NOTE: Accessing an image via the virtual console (VNC) will not work, as VNC is not supported. You may access the console log using the following command: - -```shell -$ nova console-log --length=10 INSTANCE_ID -``` diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md deleted file mode 100644 index 586bd01..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md +++ /dev/null @@ -1,68 +0,0 @@ -### Overdrive - -*** - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.0*. - -For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. - -The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. - -### Quick Start - -#### AMD Overdrive - -Since the EDK2 based firmware is not yet supported (work in progress), the original AMI BIOS based firmware from AMD is required. - -At the time of the 16.03 release the latest firmware version for Overdrive (*B0*) is 1.0.0.1. Latest for *rev A* is still 0.0.7.4. - -*A* and *B0* are both supported by the 16.03 release (`A` requires an external PCIe NIC) - -After flashing/updating the firmware, proceed to the network installer instructions in order to install your favorite distribution. No special setup is required for Overdrive. - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100), but a board like the [SPI Hook](http://www.tincantools.com/SPI_Hook.html) should also be compatible with it (not yet tested). - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) -* [CentOS 7](../Install-CentOS-7.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md deleted file mode 100644 index 9ba1ff1..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md +++ /dev/null @@ -1,367 +0,0 @@ -## UEFI/EDK2 - -EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. - -The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). - -Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. - -EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. - -This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) - -### Building - -#### Pre-Requisites - -Make sure the build dependencies are available at your host machine. - -On Debian/Ubuntu: - -```shell -sudo apt-get install uuid-dev build-essential aisle -``` - -On RHEL/CentOS/Fedora: - -```shell -sudo yum install uuid-devel libuuid-devel aisle -``` - -Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': - -```shell -wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb -wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb -wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb -sudo dpkg -i --force-all *.deb -``` - -If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. - -Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) - -```shell -mkdir arm-tc arm64-tc -tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz -tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz -export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" -``` - -#### Getting the source code - -UEFI/EDK2: - -```shell -git clone https://github.com/tianocore/edk2.git -git clone https://git.linaro.org/uefi/OpenPlatformPkg.git -cd edk2 -git checkout -b stable-baseline d0d34cdf1d2752f0d7c3ca41af7e7ed29c221d11 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git -ln -s ../OpenPlatformPkg -``` - -ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): - -```shell -git clone https://github.com/ARM-software/arm-trusted-firmware.git -cd arm-trusted-firmware -git checkout -b stable-baseline v1.2 # suggested latest stable release -``` - -UEFI Tools (helpers and scripts to make the build process easy): - -```shell -git clone git://git.linaro.org/uefi/uefi-tools.git -``` - -#### Building UEFI/EDK2 for Juno R0/R1 - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -export ARMTF_DIR=${PWD}/arm-trusted-firmware -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno -``` - -The output files: - -- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` -- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` - -#### Building UEFI/EDK2 for D02 - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -``` - -Since D02 support is not yet merged in OpenPlatformPkg, a specific branch needs to be used for it: - -```shell -cd OpenPlatformPkg -git checkout d02-release -``` - -Then just proceed with the build: - -```shel -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 -``` - -The output file: - -- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` - -#### Building UEFI/EDK2 for Overdrive - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -``` - -Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: - -```shel -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive -``` - -The output file: - -- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` - -#### Building UEFI/EDK2 for HuskyBoard / Cello - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -``` - -Since support is now available in the OpenPlatformPkg upstream tree, just proceed with the build: - -```shel -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello -``` - -The output file: - -- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` - -### Flashing - -#### Juno R0/R1 - -##### Clean flash - -Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: - -```shell -Cmd> flash -Flash> eraseall -Flash> quit -Cmd> usb_on -``` - -This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. - -In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: - -```shell -git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git -``` - -Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: - -```shell -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE -``` - -Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): - -```shell -cp -rf vexpress-firmware/* /media/recovery -``` - -Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: - -```shell -sync -``` - -Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. - -##### Upgrading UEFI/EDK2 - -If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). - -Export Juno's MMC as a usb storage device on your host machine: - -```shell -Cmd> usb_on -``` - -Then just copy over the UEFI/EDK2 files that were built in the previous steps: - -```shell -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE -``` - -Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: - -```shell -sync -``` - -Then just power cycle the Juno and the board should see and use the new firmware. - -#### D02 - -Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. - -##### Clean flash - -First make sure the built firmware is available in your FTP server ('PV660D02.fd'): - -```shell -cp PV660D02.fd /srv/tftp/ -``` - -Now follow the steps below in order to fetch and flash the new firmware: - -1. Power off the board and unplug the power supply. -2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) - - The board has two SPI flash chips, and this switch selects which one to boot from. -3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell -4. Push the dial switch **3. CPU0_SPI_SEL** to **on** - - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). -5. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master' like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' -6. Exit the EBL console and reboot the board - -##### Upgrading firmware - -There are 2 options for updating the firmware, first via network and the second via USB storage. - -Network upgrade: - -1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') -2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' -3. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master', like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' -4. Exit the EBL console and reboot the board - -USB storage upgrade: -- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): -'newbios fs1:\' - -On EBL fs1 is for USB first partition, while fs0 the ramdisk. - -#### D03 - -Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. - -##### Clean flash - -First make sure the built firmware is available in your FTP server ('D03.fd'): - -```shell -cp D03.fd /srv/tftp/ -``` - -Now follow the steps below in order to fetch and flash the new firmware: - -1. Power off the board and unplug the power supply. -2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d03-2/](http://open-estuary.com/d03-2/) for the board picture) - - The board has two SPI flash chips, and this switch selects which one to boot from. -3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell -4. Push the dial switch **3. CPU0_SPI_SEL** to **on** - - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). -5. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master' like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' -6. Exit the EBL console and reboot the board - -##### Upgrading firmware - -There are 2 options for updating the firmware, first via network and the second via USB storage. - -Network upgrade: - -1. Make sure the built firmware is available in your FTP server ('D03.fd') -2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' -3. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master', like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' -4. Exit the EBL console and reboot the board - -USB storage upgrade: -- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): -'newbios fs1:\' - -On EBL fs1 is for USB first partition, while fs0 the ramdisk. - -#### AMD Overdrive / HuskyBoard / Cello - -##### Clean flash - -###### DediProg SF100 - -Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). - -The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. - -First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: - -```shell -dpcmd --type MX25L12835F -e -``` - -Now just flash the new firmware: - -```shell -dpcmd --type MX25L12835F -p FIRMWARE.rom -``` - -Then just power cycle the board, and it should boot with the new firmware. - -###### SPI Hook - -Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). - -In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) - -Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. - -Example for the 4.5M based firmware: - -```shell -dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc -``` - -Connect the SPI cable, unplug the power cord and flash SPI: - -```shell -sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom -``` - -Then just power cycle the board, and it should boot with the new firmware. - -##### Upgrading firmware - -There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. - -### Links and References: - -- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) -- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md deleted file mode 100644 index 9a9daea..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md +++ /dev/null @@ -1,52 +0,0 @@ -### X-Gene Mustang - -*** - -### Boot Firmware - -TBD - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.03) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.03 release, the kernel is based on *4.4.0*. - -For future releases we will also have kernel config fragments for key functionality that will make it easier for other projects and distributions to consume. - -The Reference Platform kernel will act as an integration point (very similar to linux-next) for various upstream-targeted features and platform-enablement code on the latest kernel. Please read the [kernel policy](../../KernelPolicy.md) on how this kernel will be maintained. It is not meant to be a stable kernel - the [LSK](https://wiki.linaro.org/LSK) is already available for that. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../Install-Debian-Jessie.md) -* [CentOS 7](../Install-CentOS-7.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Highlights.md deleted file mode 100644 index a7e8f79..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Highlights.md +++ /dev/null @@ -1,87 +0,0 @@ -### Highlights for 16.03 release: - -*** - -###### Consumer and Enterprise Edition: -#### Kernel -- Unified tree shared between the CE and EE builds. Supports Hikey, Dragonboard, D02, APM X-Gene, HP Proliant m400 and AMD Overdrive. -- 4.4.0 based, including under-review topic branches to extend the hardware support for the platforms available. -- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. -- Single kernel config for all platforms in arch/arm64/configs/distro.config -- Single kernel binary (package) for all platforms - -*** - -###### Consumer Edition: - -#### CE Debian RPB (common): -- Upgrade to Debian 8.3 "Jessie" -- Upgrade to the unified 4.4.0 Linux Kernel -- Upgrade graphics components: Mesa 11.1.2 and Xserver 1.17.3 -- Rootfs automatically resized during the first boot - -#### CE Debian RPB for DragonBoard™ 410: -- Freedreno X11 video driver included by default (1.4.0) -- Analog audio playback and record support -- Upgrade Qualcomm Firmware Package to 1.2 - -#### CE Debian RPB for HiKey (CircuitCo & LeMaker): -- Default Grub 2 boot configuration updated, now supporting kernel package upgrades -- xserver-xorg-video-armsoc now included by default (still using software rendering, Mali integration expected as part of the next release)
 - -#### CE AOSP RPB (common): -- AOSP Android Marshmallow 6.0 (android-6.0.1_r16)
 - -#### CE AOSP RPB for DragonBoard™ 410: -- Initial build, available as Developer Preview (not suitable for end users). -- Mesa and Freedreno support -- Kernel 4.4.0 
 - -#### CE AOSP RPB for HiKey (CircuitCo & LeMaker): -- AOSP Android Marshmallow 6.0 (android-6.0.1_r16) -- 4.1 based kernel
 - -#### CE OE/Yocto RPB: -- Included the unified 4.4.0 kernel -- meta-backports created, to contain backported recipes used by the reference platform - -*** - -###### Enterprise Edition - -#### Supported platforms: - -- AMD Overdrive A0 (new) and B0 -- D02 -- APM X-Gene Mustang (new) -- HP ProLiant m400 (new)
 - -#### Overall platform features, validated as part of the release: - -- UEFI with ACPI -- KVM -- PCIe
 - -#### Firmware: - -- Updated UEFI/EDK2 for D02, including support for PCIe and SAS
 - -#### Network Installers: - -- Debian: - - Upgrade to Debian 8.3 "Jessie" - - Using the unified 4.4.0 kernel -- CentOS (Now officially supported): - - Based on CentOS 7.2 15.11 - - Using the consolidated 4.4 kernel - -#### Enterprise Components: - -- Docker 1.9.1 -- OpenStack Liberty for Debian Jessie - - CentOS to be supported as part of the next cycle -- ODPi based Hadoop -- Spark 1.6 -- OpenJDK 8 (Linaro 16.03) - -*** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Known-Issues.md deleted file mode 100644 index d66ba58..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/Known-Issues.md +++ /dev/null @@ -1,100 +0,0 @@ -## Reference Platform Build - 16.03 Release - Known Issues - -### Enterprise - -Fixed Issues -( Bugzilla ) - -| Enterprise Edition | Known Issues ( Bugzilla ) | -|:-----:|:-----| -|[bug 2079](https://bugs.linaro.org/show_bug.cgi?id=2079)| [RPB] D02- Sometimes root partition is missing when booting Debian/CentOS| -|[bug 2100](https://bugs.linaro.org/show_bug.cgi?id=2100)| [RPB] Placing D02 under major stress and SAS driver starts to have errors| -|[bug 2067](https://bugs.linaro.org/show_bug.cgi?id=2067)| [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system| -|[bug 2068](https://bugs.linaro.org/show_bug.cgi?id=2068)| [RPB] D02- Detailed information about firmware version is needed| -|[bug 2085](https://bugs.linaro.org/show_bug.cgi?id=2085)| [RPB] D02- CentOS installer fails to detect SATA drive| -|[bug 2106](https://bugs.linaro.org/show_bug.cgi?id=2206)| [RPB] D02- shutdown works as reboot| -|[bug 2097](https://bugs.linaro.org/show_bug.cgi?id=2097)| [RPB] kernel fails to build on amd64| -|[bug 2069](https://bugs.linaro.org/show_bug.cgi?id=2069)| [RPB] D02- Selected item in BIOS is not highlighted in minicom| -|[bug 2086](https://bugs.linaro.org/show_bug.cgi?id=2086)| [RPB] D02: Booting CentOS Linux failed| -|[bug 2066](https://bugs.linaro.org/show_bug.cgi?id=2066)| QEMU can't launch an instance with more than 30GB RAM| -|[bug 2075](https://bugs.linaro.org/show_bug.cgi?id=2075)| [RPB] D02: Latest EDK2 breaks network support in UEFI| - -*** - -### HiKey - -Fixed Issues ( Bugzilla ) - -| Debian | Known Issues ( Bugzilla ) | -|:-----:|:-----| -|[bug 187](https://bugs.96boards.org/show_bug.cgi?id=187)| Missing XWindows video acceleration - Weston (needs Mali r6p0)| -|[bug 262](https://bugs.96boards.org/show_bug.cgi?id=262)| [RPB] LG W2253V fails to work with 4.4.0-93-arm64| -|[bug 212](https://bugs.96boards.org/show_bug.cgi?id=212)| Suspend/resume support needed in 4.1/4.4| -[bug 223](https://bugs.96boards.org/show_bug.cgi?id=223)| **HiKey**: Linux 4.4: USB unstable with SMP| -|[bug 27](https://bugs.96boards.org/show_bug.cgi?id=27)| UEFI variable runtime service not working| -|[bug 222](https://bugs.96boards.org/show_bug.cgi?id=222)| **HiKey**: RTC RTS code accesses unrelocated address| -|[bug 267](https://bugs.96boards.org/show_bug.cgi?id=267)| [RPB] UEFI does not provide devicetree to OS| -|[bug 290](https://bugs.96boards.org/show_bug.cgi?id=290)| [RPB] fastboot erase/flash system is just too slow when flashing the Debian images| -|[bug 176](https://bugs.96boards.org/show_bug.cgi?id=176)| Upgrade HiKey Mali Lib to r6p0| -|[bug 205](https://bugs.96boards.org/show_bug.cgi?id=205)| [RPB] USB OTG fails after hot removal and reinsertion| -|[bug 286](https://bugs.96boards.org/show_bug.cgi?id=286)| [RPB] 4.4.0-102-arm64 - Bad mode in Synchronous Abort handler detected| -|[bug 20](https://bugs.96boards.org/show_bug.cgi?id=20)| [RPB] USB kernel trace errors -22| -|[bug 152](https://bugs.96boards.org/show_bug.cgi?id=152)| [RPB] SD-Card doesn't work| -|[bug 163](https://bugs.96boards.org/show_bug.cgi?id=163)| [RPB-AOSP] HDMI audio not working| -|[bug 233](https://bugs.96boards.org/show_bug.cgi?id=233)| [RPB] Bluetooth driver prevents board from rebooting| -|[bug 265](https://bugs.96boards.org/show_bug.cgi?id=265)| fastboot reboot-bootloader doesn't work| -|[bug 291](https://bugs.96boards.org/show_bug.cgi?id=291)| [RPB] fastboot erase not supported in l-loader (recovery)| -|[bug 282](https://bugs.96boards.org/show_bug.cgi?id=282)| [RPB] Missing wl18xx wlconf setup as part of the first boot process| -|[bug 145](https://bugs.96boards.org/show_bug.cgi?id=145)| [RPB] unable to read thermal sensors| -|[bug 151](https://bugs.96boards.org/show_bug.cgi?id=151)| [RPB] glxgears: couldn't get an RGB, Double-buffered visual| - -| AOSP | Known Issues ( Bugzilla ) | -|:-----:|:------| -|[bug 180](https://bugs.96boards.org/show_bug.cgi?id=180)| [RPB] Shutdown cannot turn off HDMI monitor| -|[bug 224](https://bugs.96boards.org/show_bug.cgi?id=224)| [RPB-AOSP] BT status LED doesn't blink when BT transfer is in progress| -|[bug 225](https://bugs.96boards.org/show_bug.cgi?id=225)| [RPB] User LED numbers on the board don't match the sysfs entries| -|[bug 228](https://bugs.96boards.org/show_bug.cgi?id=228)| [RPB] Bluetooth mice pair and connect but don't show input| - -*** - -### DragonBoard™ 410c - -Fixed Issues -( Bugzilla ) - -| Debian | Known Issues ( Bugzilla )| -|:-------:|:---------| -| [bug 285](https://bugs.96boards.org/show_bug.cgi?id=285) | USB host doesn't detect any plugged devices | -| [bug 121](https://bugs.96boards.org/show_bug.cgi?id=121) | [RPB] Cannot soft power off or shutdown db410c | -| [bug 284](https://bugs.96boards.org/show_bug.cgi?id=284) | [RPB] Dragon board Display sleep not working | -| [bug 289](https://bugs.96boards.org/show_bug.cgi?id=289) | [RPB] USB devices don't work after reboot | -| [bug 207](https://bugs.96boards.org/show_bug.cgi?id=207) | [RPB] Bluetooth does not work on Dragon board debian | -| [bug 153](https://bugs.96boards.org/show_bug.cgi?id=153) | [RPB] Missing information about hwpack usage| - - -Fixed Issues -( Bugzilla ) - - -| AOSP | Known Issues ( Bugzilla ) | -|:----------:|:-----------| -| [bug 254](https://bugs.96boards.org/show_bug.cgi?id=254) | [RPB] wpa_supplicant crashes wcn36xx | -| [bug 276](https://bugs.96boards.org/show_bug.cgi?id=276) | [RPB-AOSP] USB-OTG doesn't work | -| [bug 278](https://bugs.96boards.org/show_bug.cgi?id=278) | [RPB-AOSP] Free internal disk space is too small | -| [bug 279](https://bugs.96boards.org/show_bug.cgi?id=279) | [RPB-AOSP] "x App has stopped" happens frequently | -| [bug 280](https://bugs.96boards.org/show_bug.cgi?id=280) | [RPB-AOSP] App crashes when SD card mounted manually | -| [bug 277](https://bugs.96boards.org/show_bug.cgi?id=277) | [RPB-AOSP] SD card auto mount from UI doesn't work | - - -*** - - - -| Bug Legend | | -|:-----:|:-------| -| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | -| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | -| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | -| VERIFIED | A team has VERIFIED a working solution for a bug | - -*** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/README.md deleted file mode 100644 index 68d0477..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Reference Platform Build - 16.03 - -[RPB 16.03 Highlights](Highlights.md) | [RPB 16.03 Known Issues](Known-Issues.md) | [RPB 16.03 Release Status](ReleaseStatus-16.03.md) - -## Choose your Hardware - -#### Consumer Edition -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition -- [D02](EnterpriseEdition/D02/README.md) -- [Overdrive](EnterpriseEdition/Overdrive/README.md) -- [Cello](EnterpriseEdition/Cello/README.md) -- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) -- [HP ProLiant m400](EnterpriseEdition/HP-Proliant-m400/README.md) - -Enterprise Test Reports: ([Debian](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/EE-Debian-RPB-16.03-TestReport.pdf) / [CentOS](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/EE-CentOS-RPB-16.03-TestReport.pdf)) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md deleted file mode 100644 index a3c91c1..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md +++ /dev/null @@ -1,170 +0,0 @@ -## Reference Platform Release Status - -- *Release:* 16.03 -- *Code/feature freeze:* February 22th / 2016 -- *RC1:* February 22th / 2016 -- *Release date:* March 3th / 2016 (originally March 1) - -### Release Candidates - -#### Final - -- *Debian Installer (118):* [mini.iso](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.03/netboot.tar.gz) -- *CentOS Installer (36):* [16.03](https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.03/) -- *Kernel (104):* [linux-image-4.4.0-104](https://builds.96boards.org/releases/reference-platform/components/linux/16.03/) -- *CE AOSP RPB HiKey (65)*: [16.03](https://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/) -- *CE AOSP RPB Dragonboard410c (45):* [16.03](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/) -- *CE Debian RPB HiKey (68)*: [16.03](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/) -- *CE Debian RPB Dragonboard410c (68):* [16.03](https://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.03/) - -#### RC5 - -- *Debian Installer (111):* [mini.iso](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/mini.iso) and [netboot.tar.gz](https://builds.96boards.org/snapshots/reference-platform/components/debian-installer/111/netboot.tar.gz) -- *CentOS Installer:* [34](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/34/) -- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) -- *UEFI*: [46](https://builds.96boards.org/snapshots/reference-platform/components/uefi/46/) -- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) -- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) -- *CE Debian RPB HiKey*: [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/hikey/) -- *CE Debian RPB Dragonboard410c:* [66](https://builds.96boards.org/snapshots/reference-platform/debian/66/dragonboard410c/) - -#### RC4 - -- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) -- *CentOS Installer:* [33](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/33/) -- *Kernel:* [linux-image-4.4.0-97](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-97-arm64_4.4.0.linaro.97-1.linarojessie.1_arm64.deb) -- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) -- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) -- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) -- *CE Debian RPB HiKey*: [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/hikey/) -- *CE Debian RPB Dragonboard410c:* [58](https://builds.96boards.org/snapshots/reference-platform/debian/58/dragonboard410c/) - -#### RC3 - -- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) -- *CentOS Installer:* [31](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/31/) -- *Kernel:* [linux-image-4.4.0-93](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-93-arm64_4.4.0.linaro.93-1.linarojessie.1_arm64.deb) -- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) -- - *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) -- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) -- *CE Debian RPB HiKey*: [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/hikey/) -- *CE Debian RPB Dragonboard410c:* [56](https://builds.96boards.org/snapshots/reference-platform/debian/56/dragonboard410c/) - -#### RC2 - -- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) -- *CentOS Installer:* [30](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/30/) -- *Kernel:* [linux-image-4.4.0-91](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-91-arm64_4.4.0.linaro.91-1.linarojessie.1_arm64.deb) -- *UEFI*: [44](https://builds.96boards.org/snapshots/reference-platform/components/uefi/44/) -- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) -- *CE AOSP RPB Dragonboard410c:* [45](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/45/) -- *CE Debian RPB HiKey*: [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/hikey/) -- *CE Debian RPB Dragonboard410c:* [55](https://builds.96boards.org/snapshots/reference-platform/debian/55/dragonboard410c/) - -#### RC1 - -- *Debian Installer:* [mini.iso](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/mini.iso) and [netboot.tar.gz](https://ci.linaro.org/view/96boards/job/96boards-reference-debian-installer-staging/lastSuccessfulBuild/artifact/netboot.tar.gz) -- *CentOS Installer:* [29](https://builds.96boards.org/snapshots/reference-platform/components/centos-installer/29/) -- *Kernel:* [linux-image-4.4.0-85](http://repo.linaro.org/ubuntu/linaro-staging/pool/main/l/linux/linux-image-4.4.0-85-arm64_4.4.0.linaro.85-1.linarojessie.1_arm64.deb) -- *UEFI*: [43](https://builds.96boards.org/snapshots/reference-platform/components/uefi/43/) -- *CE AOSP RPB HiKey*: [65](https://builds.96boards.org/snapshots/reference-platform/aosp/hikey/65/) -- *CE AOSP RPB Dragonboard410c:* [43](https://builds.96boards.org/snapshots/reference-platform/aosp/db410c/43/) -- *CE Debian RPB HiKey*: [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/hikey/) -- *CE Debian RPB Dragonboard410c:* [54](https://builds.96boards.org/snapshots/reference-platform/debian/54/dragonboard410c/) - -### Kernel - -Kernel is 4.4 based, unified and supporting the following boards by default: -* Dragonboard410c -* HiKey -* AMD Overdrive (A0 should also be supported, pending kernel update) -* D02 -* APM X-Gene/Moonshot m400 (supported with the final RC) - -Tree data: -* Git: https://github.com/96boards/linux/ -* Branch: *96b/releases/2016.03* -* Config: https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config - -### Remaining Work Activities - -* QA/Validation - QA Team -** Enterprise Debian Overdrive -** Enterprise Debian D02 -** Enterprise CentOS Overdrive -** Enterprise CentOS D02 -** -CE Debian DB410c - *Naresh*- -** -CE AOSP HiKey - *Chase Qi*- -** -CE AOSP DB410c (nice to have) - *Chase Qi*- -** -CE Debian HiKey - *Naresh*- -* Test/Validation of GPIO, I2C and SPI support on both HiKey and Dragonboard410c - *Grant* -* Release Documentation - *Robert* -* -Porting xorg-server into linaro-overlay - *Nicolas/Ricardo*- -* -Linaro-EDK2 February Release - *Leif*- -* D02 OpenPlatformPkg update - *Heyi/Leif* -* D02 EDK2 SAS support - *Zhangfei Gao* -* -Move unified kernel to https://github.com/96boards/linux - *Amit*- -* -Update CentOS installer to use the unified kernel - *Ricardo*- -* -Update default grub config used by HiKey (generic) - *Ricardo*- -* ROD Openstack support for CentOS - *Fathi* - -### Out of Scope / Next Release - -* Kernel Fragments - *Amit* -* Lack of a default device-tree for HiKey - *Ricardo/Guodong*: bugs [27](https://bugs.96boards.org/show_bug.cgi?id=27) and [267](https://bugs.96boards.org/show_bug.cgi?id=267) to cover the right implementation, postponed to *16.06*. -* [Bug 254 - [RPB] wpa_supplicant crashes wcn36xx](https://bugs.96boards.org/show_bug.cgi?id=254) -* [Bug 207 - [RPB] Bluetooth does not work on Dragonboard debian](https://bugs.96boards.org/show_bug.cgi?id=207) -* [Bug 262 - [RPB] LG W2253V fails to work with 4.4.0-93-arm64](https://bugs.96boards.org/show_bug.cgi?id=262) - *Amit* -* [Bug 2067 - [RPB] irq 5: nobody cared (try booting with the "irqpoll" option when rebooting the system](https://bugs.linaro.org/show_bug.cgi?id=2067) - Amit/Hanjun - -### Current Issues / Bugs - -#### Kernel - -* -[Bug 1999 - RP Kernel doesn't boot on HP Moonshot m400 (APM X-Gene) cartridges (ACPI)](https://bugs.linaro.org/show_bug.cgi?id=1999) - *Ricardo/Amit*- -* -[Bug 2060 - [RPB] Missing support for APM XGENE / Moonshot m400](https://bugs.linaro.org/show_bug.cgi?id=2060) - *Amit*- - -###### HiKey - -* -[Bug 274 - [RPB] xserver armsoc driver fails to allocate buffer](https://bugs.96boards.org/show_bug.cgi?id=274) - *Amit/Guodong/Xinliang*- -* [Bug 281 - [RPB] regression - constant hangs with linux-image-4.4.0-99-arm64](https://bugs.96boards.org/show_bug.cgi?id=281) - *Amit/Guodong* - -###### Overdrive - -* -[Bug 2051 - RPB: Overdrive fails to find the SATA disks when booting with ACPI](https://bugs.linaro.org/show_bug.cgi?id=2051) - *Graeme*- - -###### Dragonboard410c - -* -[Bug 2061 - [RPB] CONFIG_QCOM_SCM breaks XGENE support](https://bugs.linaro.org/show_bug.cgi?id=2061) - *Amit/Nicolas*- - -###### D02 - -* -[Bug 2037 - D02: Unable to handle kernel paging request](https://bugs.linaro.org/show_bug.cgi?id=2037) - *Amit/Hanjun*- -* -[Bug 2063 - D02: No console unless you boot with console=ttyS0,115200](https://bugs.linaro.org/show_bug.cgi?id=2063) - *Amit/Hanjun*- -* -[Bug 2032 - ACPI NUMA Support crashes on D02](https://bugs.linaro.org/show_bug.cgi?id=2032) - *Hanjun*- - -#### UEFI - -###### D02 - -* -[Bug 2062 - EDK2 D02: "sas: realizing _RST replacing syscon" breaks SAS support in Linux](https://bugs.linaro.org/show_bug.cgi?id=2062) - *Heyi*- -* -Lack of PCIe support for D02 on Linux (missing tables) - *Hanjun/Heyi*- -* Lack of SAS support in EDK2/UEFI - *Zhangfei* -* -[Bug 2075 - [RPB] D02: Latest EDK2 breaks network support in UEFI](https://bugs.linaro.org/show_bug.cgi?id=2075)- - -###### HiKey - -#### Debian - -* -[Bug 2009 - Wrong network device name set after Debian install](https://bugs.linaro.org/show_bug.cgi?id=2009) - *Ricardo* -* -[ttyAMA2 (tty96B0) missing on HiKey with 16.03-rc4](https://bugs.96boards.org/show_bug.cgi?id=273) - *Amit* - -###### DB410c - -#### AOSP - -###### DB410c - -* -[Bug 253 - [RPB] Gallery fails to open due a fatal exception in GLThread](https://bugs.96boards.org/show_bug.cgi?id=253)- - -#### OE/Yocto diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md deleted file mode 100644 index 15f676d..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSAOSPRPB-16.03.md +++ /dev/null @@ -1,46 +0,0 @@ -## AOSP RPB 16.03 - Build from Source - -Additional AOSP repositories are hosted at: -- [https://github.com/96boards/android_device_linaro_db410c](https://github.com/96boards/android_device_linaro_db410c) -- [https://github.com/96boards/android_manifest](https://github.com/96boards/android_manifest) -- [https://github.com/rsalveti/linux (branch qcomlt-4.4)](https://github.com/rsalveti/linux) -- [https://github.com/robherring/mesa](https://github.com/robherring/mesa) -- [https://github.com/robherring/drm_gralloc](https://github.com/robherring/drm_gralloc) -- https://github.com/robherring/drm_hwcomposer](https://github.com/robherring/drm_hwcomposer) - -*Build setup:* - -Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) - -Also install make sure to install the following packages: - -```shell -sudo apt-get install libfdt-dev python-mako get text -``` - -*Download the firmware blobs:* - -```shell -mkdir android/ -cd android/ -mkdir -p vendor/db410c -cd vendor/db410c -wget http://developer.qualcomm.com/download/db410c/firmware-410c-1.2.0.bin -sh firmware-410c-1.2.0.bin -cd - -``` - -*Build the image:* - -```shell -repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -cd .repo -git clone https://github.com/96boards/android_manifest -b android-6.0-db410c local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch db410c-userdebug -make droidcore -j8 -cd out/target/product/db410c -``` - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md deleted file mode 100644 index e8ed4bd..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSDebianRPB-16.06.md +++ /dev/null @@ -1,281 +0,0 @@ -## Debian RPB 16.06 - Build from Source - -- Building Linux Kernel from Source - - Step 1: Setting up your environment on your host computer - - Step 2: Download the Linaro cross compiler toolchain and Skales Tool - - Step 3: Export path to cross compiler tool and confirm version - - Step 4: Clone the Reference Platform kernel - - Step 5: Set the right kernel .config file - - Step 6: Build kernel image - - Step 7: Copy Modules - - Step 8: Find kernel release string - - Step 9: Generate modules.dep and map files - - Step 10: Find DragonBoard™ 410c IP Address - - Step 11: Transfer the modules to the target DragonBoard™ 410c - - Step 12: Generate the initramfs - - Step 13: Create the device tree image and boot image -- Customize Bootloader -- Build Rootfs from source - -*** - -#### Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) - -```shell -git: https://github.com/96boards/linux -Dynamic tag: 96b-kernelci -Fixed tag: 96b/releases/2016.06 -defconfig: arch/arm64/defconfig kernel/configs/distro.config -``` - -The kernel image (`Image`) is located in the `boot` image and partition and the kernel modules are installed in the root file system. It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The DragonBoard 410c is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz). - -To build the Linux kernel, you can use the following instructions: - -#### Step 1: Setting up your environment on your host computer - -- Open your Terminal and cd into your desired directory -- Make a new folder using `mkdir` and call is something relevant - -```shell -#Example of desired directory -$ cd ~/Desktop - -#Example of relevant folder -$ mkdir DB410c-16.06 -$ cd DB410c-16.06 -``` - -#### Step 2: Download the Linaro cross compiler toolchain and Skales Tool - -- From within the directory you just made -- Download and unzip by executing the following commands - -###### Linaro Cross Compiler - -```shell -#Download -$ wget http://releases.linaro.org/components/toolchain/binaries/latest-5.1/aarch64-linux-gnu/gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz -#Unzip -$ tar -Jxvf gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu.tar.xz -``` - -###### Skales tool - -```shell -$ sudo apt-get install libfdt-dev -$ git clone git://codeaurora.org/quic/kernel/skales /tmp/skales -$ export PATH=$PATH:/tmp/skales -``` ->Skales will be used later when creating the device tree - - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=gcc-linaro-5.1-2015.08-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.1-2015.08) 5.1.1 20150608 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes - -```shell -$ git clone -b 96b-kernelci http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- Once kernel source has been cloned cd into its directory - -```shell -$ cd kernel -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig distro.config -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX -``` - -#### Step 7: Copy Modules - -- Modules must be local (host computer) before transferring to target device -- Still within linux directory -- Make temp folder -- Create modules - -```shell -$ mk tmp/modules -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/tmp/modules INSTALL_MOD_STRIP=1 -``` - -#### Step 8: Find kernel release string - -- This was created during the kernel build -- In this example the kernel.release is 4.4.0+ - -```shell -$ cat include/config/kernel.release -#Output -$ 4.4.0+ -``` - -#### Step 9: Generate modules.dep and map files - -- Helps kernel find modules when system boots -- Note: `4.4.0+` was the output from `cat include/config/kernel.release` in Step 8 - -```shell -$ depmod -a -b /tmp/modules 4.4.0+ -``` - -#### Step 10: Find DragonBoard™ 410c IP Address - -- On your DragonBoard™ 410c -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 11: Transfer the modules to the target DragonBoard™ 410c - -- Using your board's IP Address for linaro@ - -```shell -$ tar -cjf /tmp/modules.tar.bz2 -C /tmp modules -$ scp /tmp/modules.tar.bz2 linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#DragonBoard™ 410c shell -db410c $ tar -jxvf modules.tar.bz2 -db410c $ sudo cp -r modules/lib/modules/4.4.0+ /lib/modules/ -``` - -#### Step 12: Generate the initramfs - -- You should still be in the DragonBoard™ 410c shell - -```shell -db410c $ sudo update-initramfs -k 4.4.0+ -c -``` - -- Copy back the new initramfs -- This will be used when creating the boot.mg - -#### Step 13: Create the device tree image and boot image - -###### Device tree - -```shell -$ dtbTool -o dt.img -s 2048 arch/arm64/boot/dts/qcom -``` - -###### Boot image - -```shell -$ mkbootimg --kernel arch/arm64/boot/Image --ramdisk initrd.img-4.4.0+ --output boot.img --dt dt.img --pagesize "2048" --base "0x80000000" --cmdline "root=/dev/disk/by-partlabel/rootfs rw rootwait console=tty0 console=ttyMSM0,115200n8" -``` - -Congratulations! Boot image is now ready to be flashed to your DragonBoard™ 410c. - -- Flashing the boot image can be done using fastboot -- Board must be booted into fastboot mode -- With USB to microUSB cable still connect execute the following: - -```shell -$ sudo fastboot flash boot boot.img -$ sudo fastboot reboot -``` - -*** - -### How to get and customize the bootloader - -While the first stage bootloader is proprietary and released as firmware blob available on [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.zip), the second stage bootloader is `LK` and is open source. - -The original LK source code is available on [CodeAurora.org](https://www.codeaurora.org/cgit/quic/la/kernel/lk/), and the source code which is used in this release can be found in the [Linaro Qualcomm Landing Team git repository](https://git.linaro.org/landing-teams/working/qualcomm/lk.git): - -```shell -git: http://git.linaro.org/landing-teams/working/qualcomm/lk.git -tag: ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -``` - -To build the LK bootloader, you can use the following instructions: - -```shell -git clone git://codeaurora.org/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8.git -b LA.BR.1.1.3.c4-01000-8x16.0 -git clone http://git.linaro.org/landing-teams/working/qualcomm/lk.git -b ubuntu-qcom-dragonboard410c-LA.BR.1.2.4-00310-8x16.0-linaro1 -cd lk -make -j4 msm8916 EMMC_BOOT=1 TOOLCHAIN_PREFIX=/bin/arm-eabi- -``` - -The second stage bootloader is flashed on the `about` partition, you can now flash your board with: - -```shell -sudo fastboot aboot ./build-msm8916/emmc_appsboot.mbn -``` - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -``` -cd -dpkg-buildpackage -b -us -uc -``` - -#### TO-DO - -- Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB-16.03.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md deleted file mode 100644 index 66afe04..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/BFSOERPB.md +++ /dev/null @@ -1,196 +0,0 @@ -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. - -# Introduction - -This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: -* http://openembedded.org/wiki/Main_Page -* http://yoctoproject.org/ -* https://www.yoctoproject.org/documentation - -In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. - -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. - -The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. - -# Package Dependencies - -In order to successfully set up your build environment, you will need to install the following package dependencies. - -**Step 1**: You will need git installed on your Linux host machine - -`$ sudo apt-get install git` - -**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need - -http://www.openembedded.org/wiki/Getting_started - -**Step 3**: Install 96Boards specific dependencies (Case specific) - -Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: - - -`$ sudo apt-get install whiptail` - -or - -`$ sudo apt-get install dialog` - -**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` - -`deb http://archive.ubuntu.com/ubuntu/ xenial universe` - -```shell -$ cd /etc/apt/ -#vim text editor is used in this example -#sudo is used to allow editing, sources.list is set to read only -$ sudo vim sources.list -``` - -All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. - - -# Setup the build environment - -The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. - -To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): - - mkdir -p ${HOME}/bin - curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo - chmod a+x ${HOME}/bin/repo - export PATH=${HOME}/bin:${PATH} - -To initialize your build environment, you need to run: - - mkdir oe-qcom && cd oe-qcom - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro - repo sync - source setup-environment [] - -* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. -* you will be prompted to choose the target machine, pick `dragonboard-410c` -* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' -* is optional, if missing it will default to `build-$DISTRO` - -The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. - -# Build a minimal, console-only image - -To build a console image, you can run: - - $ bitbake rpb-console-image - -At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: -* `rpb-console-image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -# Bootloaders and eMMC partitions - -Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. - -Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: -* remove power from your DragonBoard -* plug a USB cable from your development host to your DragonBoard's J4 connector -* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter -* after a few seconds you can release S4 - -To verify your cables and that the above procedure worked, on your development host run: - - # sudo fastboot devices - -and you should get a non-empty response, e.g. - - # sudo fastboot devices - 83581d40 fastboot - -If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. - -The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: -* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) -* unzip its contents -* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package - -At this point your eMMC has the following partition layout: - -* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) -* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) -* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system - -# Flashing build artifacts - -In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. - -At the end of any successful build you will end up with the following artifacts (amongst others) -* `image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. - -To install these to your DragonBoard's eMMC from your development host: - - # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 - # fastboot flash rootfs image-dragonboard-410c.ext4 - # fastboot flash boot boot-dragonboard-410c.img - -# Proprietary firmware blob - -When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... - -If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. - -If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). - -# Build a simple X11 image - -To build an X11 image with GPU hardware accelerated support run: - - $ bitbake rpb-desktop-image - -At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. - -Then you can finally start the X server, and run any graphical application: - - X& - export DISPLAY=:0 - glxgears - -The default X11 image includes `openbox` window manager, to use it: - - X& - export DISPLAY=:0 - openbox & - glxgears - -Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: - - CORE_IMAGE_EXTRA_INSTALL += "metacity" - -and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: - - X& - export DISPLAY=:0 - metacity& - glxgears - -# Build a sample Wayland/Weston image - -For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: - - $ bitbake rpb-weston-image - -This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. - -If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: - - weston-launch - -And that should get you to the Weston desktop shell. - -# Support - -For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). - -For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md deleted file mode 100644 index ef52214..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallAOSPRPB-16.03.md +++ /dev/null @@ -1,155 +0,0 @@ -[]() -[]() -[]() -[]() -[]() - ->**Note:** CE AOSP RPB - 16.03 is a Developer Preview operating system - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Android Bootloader and Boot file - -- Android Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_android-*.zip) / Build Folder ) -- Android Boot ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/boot-db410c.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -#### Step 3: Download all remaining files - -- system.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/system.img.xz) / Build Folder ) -- userdata.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/userdata.img.xz) / Build Folder ) -- cache.img ([Direct Download](https://builds.96boards.org/releases/reference-platform/aosp/dragonboard410c/16.03/cache.img.xz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Android using Fastboot with Linux host - -This section show how to install the Android operating system to your DragonBoard™ 410c using the fastboot method on a Mac OS X host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -fastboot devices -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_android` -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -cd - -#Example: -cd dragonboard410c_bootloader_emmc_android -# = dragonboard410c_bootloader_emmc_android - -# This command will execute the flashall script within the bootloader folder -./flashall - -``` - -5 - **Recall location of all downloaded files from downloads page** - -This will include the files listed below: - -###### Reference Platform files - -- boot.img.tar.xz -- system.img.tar.xz -- userdata.img.tar.xz -- cache.img.tar.xz - -6 - **Unzip all files** - -7 - **Flash all files to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of all extracted(unzipped) files -- `cd` to the directory with your unzipped files -- From within extraction directory, execute the following commands: - -###### Reference Platform - -```shell -# (Once again) Check to make sure fastboot device connected -sudo fastboot devices - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the downloads -sudo fastboot flash boot boot.img -sudo fastboot flash system system.img -sudo fastboot flash userdata userdata.img -sudo fastboot flash cache cache.img -``` - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into Android lock screen. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md deleted file mode 100644 index f45ae71..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallDebianRPB-16.06.md +++ /dev/null @@ -1,326 +0,0 @@ -# Install Instructions - Reference Software Platform - -This page provides download and installation instructions inteded for those interested in flashing the DragonBoard 410c board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/). - -## Contents - -- [SD Card Method](#sd-card-method) -- [Fastboot Method](#fastboot-method) - -*** - -# SD Card Method - -#### Step 1: Read about the SD Card Method - -The SD card method allows you to place a microSD card into the DragonBoard™ 410c to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host machine (Linux, Mac OS X, or Windows) -- MicroSD card with 4GB or more of storage -- USB Mouse and/or keyboard -- HDMI Monitor with full size HDMI cable - - -*** - -#### Step 2: Download SD Card Image - -[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-debian-jessie-alip-sdcard-*.img.gz) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** - -#### Step 3: Prepare MicroSD card - -- Ensure data from mircoSD card is backed up -- Everything on microSD card will be lost by the end of this procedure. - -*** - -#### Step 4: Find SD Card Device name - -- Use host Linux computer -- Open "Terminal" application -- Remove SD card from host computer and run the following command: -```shell -$ lsblk -``` -- Note all recognized disk names -- **Insert SD card** and run the following command (again): -```shell -$ lsblk -``` -- Note the newly recognized disk. This will be your SD card. -- **Remember** your SD card device name for a later step - -*** - -#### Step 5: Recall Download Location - -- Locate SD card install file from Downloads page. -- This file will be needed for the next step. - -*** - -#### Step 6: Unzip _SD Card Install Image_ - -- When unzipped, you will have a folder with the following contents: - - Linaro/Debian Install Image (.img) - - Readme - - -*** - -#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal - -- Use host Linux computer -- Open "Terminal" application -- `cd` to the directory with your unzipped **Debian SD Card Install Image** - -```shell -$ cd - -#Example: -# = /home/YourUserName/Downloads -#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. -$ cd /home/YourUserName/Downloads -``` - - -*** - -#### Step 8: Locate SD Card Install Image - -- Make sure you are in the extraction directory - -**Unzipped Debian SD Card download will be a folder. This folder should be listed in your directory. Type `ls` from command line for a list of files that can be found in your current directory**: - -```shell -$ ls - -#output -dragonboard410c_sdcard_install_debian-XX -``` - -- Unzipped folder should be called dragonboard410c_sdcard_install_debian-XX, where XX represents the Debian release number -- `cd` into this directory - -```shell -$ cd dragonboard410c_sdcard_install_debian-XX -``` - -- Inside this folder you will find the install image - - `db410c_sd_install_debian.img` -- This `.img` file is what will be flashed to your SD Card. - - -*** - -#### Step 9: Install Image onto SD Card - -**Checklist:** - -- SD card inserted into host Linux computer -- Recall SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name) -- From within the dragonboard410c_sdcard_install_debian-XX folder, using the Terminal execute the following commands: - -**Execute:** - -```shell -$ sudo dd if=db410c_sd_install_debian.img of=/dev/XXX bs=4M oflag=sync status=noxfer -``` - -**Note:** - -- `if=db410c_sd_install_debian.img`: should match the name of the image that was downloaded. -- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](https://github.com/sdrobertw/test-wiki-/wiki/Linux-host-SD-CARD#step-2-find-sd-card-device-name). Be sure to use the device name with out the partition. -- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. -- Once SD card is done flashing, remove from host computer and set aside for a later step - -*** - -#### Step 10: Prepare DragonBoard™ 410c with SD card - -- Make sure DragonBoard™ 410c is unplugged from power -- Set S6 switch on DragonBoard™ 410c to `0-1-0-0`, "SD Boot switch" should be set to "ON". - - Please see "1.1 Board Overview" on page 7 from [DragonBoard™ 410c Hardware Manual](http://linaro.co/96b-hwm-db) if you cannot find S6 -- Connect an HDMI monitor to the DragonBoard™ 410c with an HDMI cable, and power on the monitor -- Plug a USB keyboard and/or mouse into either of the two USB connectors on the DragonBoard™ 410c -- Insert the microSD card into the DragonBoard™ 410c -- Plug power adaptor into DragonBoard™ 410c, wait for board to boot up. - -*** - -#### Step 11: Install RPB Linaro/Debian onto DragonBoard™ 410c - - - -- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your DragonBoard™ 410c -- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory -- This process can take a few minutes to complete -- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. - -Before clicking "OK": - -- Remove the SD Card -- Set S6 switch on DragonBoard™ 410c to `0-0-0-0`, all switches should be set to "OFF" -- Now click "OK" button and allow DragonBoard™ 410c to reboot. - -**Congratulations! You are now booting your newly installed operating system directly from eMMC on the DragonBoard™ 410c!** - -[Back to top](#install-instructions---reference-software-platform) - -*** - -# Fastboot Method - - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- DragonBoard™ 410c with power supply -- Host Linux machine -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian Bootloader - -- Debian Bootloader ([Direct Download](https://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/dragonboard410c_bootloader_emmc_linux-*.zip) / Build Folder ) - -#### Step 3: Download Boot image and Root file system - -- Debian Boot ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-boot-linux-*.img.gz) / Build Folder ) -- Debian Rootfs (Desktop) ([Direct Download](http://builds.96boards.org/releases/reference-platform/debian/dragonboard410c/16.06/dragonboard410c-rootfs-debian-jessie-alip-*.emmc.img.gz) / Build Folder ) - ->Note the location of all downloads, they will be needed once you access your instruction set - -*** -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your DragonBoard™ 410c using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Connect host computer to DragonBoard™ 410c** - -- DragonBoard™ 410c must be powered off (unplugged from power) -- Make sure microSD card slot on DragonBoard™ 410c is empty -- S6 switch on DragonBoard™ 410c must be set to ‘0-0-0-0’. All switches should be in “off” position -- Connect USB to microUSB cable from host computer to DragonBoard™ 410c - -3 - **Boot DragonBoard™ 410c into fastboot mode** - -**Please read all bullet points before attempting** - -- Press and hold the Vol (-) button on the DragonBoard™ 410c, this is the S4 button. DragonBoard™ 410c should still NOT be powered on -- While holding the Vol (-) button, power on the DragonBoard™ 410c by plugging it in -- Once DragonBoard™ 410c is plugged into power, release your hold on the Vol (-) button. -- Wait for about 20 seconds. -- Board should boot into fastboot mode. - -From the connected host machine terminal window, run the following commands: - -```shell -# Check to make sure device is connected and in fastboot mode - -$ fastboot devices -``` - -Typically it will show as bellow -```shell -de82318 fastboot -``` - -**At this point you should be connected to your DragonBoard™ 410c with a USB to microUSB cable. Your DragonBoard™ 410c should be booted into fastboot mode and ready to be flashed with the appropriate images.** - -4 - **Flash Bootloader** - -- Use host computer -- Open "Terminal" application -- Recall location of Bootloader download. -- The bootloader file should be named `dragonboard410c_bootloader_emmc_linux-XX` -- XX represents the release number of the Bootloader -- `cd` to the directory with your unzipped **Bootloader Folder** - -```shell -$ cd - -#Example: -cd /Users/YourUserName/Downloads -# = /Users/YourUserName/Downloads -#For this example we assume the "Bootloader" is in the Downloads folder. - - -$ cd - -#Example: -cd dragonboard410c_bootloader_emmc_linux-40 -# = dragonboard410c_bootloader_emmc_linux-40 -#This example took place during release 40 - -# This command will execute the flashall script within the bootloader folder -$ ./flashall - -``` - -5 - **Recall location of `boot` and `rootfs` download from the downloads page** - -- You should have downloaded the `boot` file -- You should have downloaded ONE of rootfs` file (Either `Developer` or `Desktop - ALIP` version) - -6 - **Unzip both 'boot' and 'rootfs' files** - -7 - **Flash `boot` image and `rootfs` to the DragonBoard™ 410c** - -- Use host computer -- Use "Terminal" application -- Recall location of extracted(unzipped) `boot` file -- Recall location of extracted(unzipped) `rootfs` file (`Developer` or `Desktop - ALIP`) -- `cd` to the directory with your unzipped `boot` and `rootfs` files -- From within extraction directory, execute the following commands: - -```shell -# (Once again) Check to make sure fastboot device connected -$ sudo fastboot devices -# It will show similar to bellow if the device is connected successfully -de82318 fastboot - -# cd to the directory the boot image and were extracted -$ cd - -# Make sure you have properly unzipped the boot and rootfs downloads -$ sudo fastboot flash boot boot-linaro-jessie-qcom-snapdragon-arm64-**BUILD#**.img -$ sudo fastboot flash rootfs linaro-jessie-developer-qcom-snapdragon-arm64-**BUILD#**.img -``` -**Note**: Replace **BUILD#** in the above commands with the file-specific date/build stamp. - -8 - **Reboot DragonBoard™ 410c** - -- Unplug power to DragonBoard™ 410c -- Unplug micro USB cable from DragonBoard™ 410c -- Ensure HDMI connection to monitor -- Ensure keyboard and/or mouse connection (Depending on your rootfs selection) -- Plug power back into DragonBoard™ 410c -- Wait for board to boot up -- Board will boot into either command line or desktop depending on rootfs - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the DragonBoard™ 410c!** - -[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md deleted file mode 100644 index d64f135..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/InstallOERPB-16.03.md +++ /dev/null @@ -1,212 +0,0 @@ -## OpenEmbedded RPB 16.03 - Build from Source - -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c. - -# Introduction - -This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are not familiar with OpenEmbedded and the Yocto Project, it is very much recommended to read the appropriate documentation first. For example, you can start with: -* http://openembedded.org/wiki/Main_Page -* http://yoctoproject.org/ -* https://www.yoctoproject.org/documentation - -In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. - -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -This layer has been tested with OpenEmbedded Core layer, and is expected to work with any other standard layers and of course any OpenEmbedded based distributions. - -The Linux kernel used for the DragonBoard 410c is the Linaro Landing team kernel, e.g. the same kernel used for the Linaro Linux release builds. The graphic stack is based on mesa, using the freedreno driver. - -## OE Layers - -| Layer | Description | -|:-----------------------:|:----------------------| -| OE-Core (Base layer) | This is the main collaboration point when working on OpenEmbedded projects and is part of the core recipes. The goal of this layer is to have just enough recipes to build a basic system, this means keeping it as small as possible. | -| Meta-rpb (Distro layer) | This is a very small layer where the distro configurations live. Currently it houses both Reference Platform Build and Wayland Reference Platform Builds. | -| Meta-oe | This layer houses many useful, but sometimes unmaintained recipes. Since the reduction in recipes to the core, meta-oe was created for everything else. There are currently approximately 650 recipes in this layer. | -| Meta-browser | This layer holds the recipes for Firefox and Chromium. Both recipes require a lot of maintenance, because of this a seperate layer was created. | -| Meta-qt5 | This is a cross-platform toolkit. | -| Meta-linaro | This layer is used to get the Linaro toolchain. | -| Meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | -| Meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | -| Meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | - -# Package Dependencies - -In order to successfully set up your build environment, you will need to install the following package dependencies. - -**Step 1**: You will need git installed on your Linux host machine - -`$ sudo apt-get install git` - -**Step 2**: Visit the OpenEmbedded (Getting Started) wiki to see which distribution specific dependencies you will need - -http://www.openembedded.org/wiki/Getting_started - -**Step 3**: Install 96Boards specific dependencies (Case specific) - -Setting up the build environment will first search for `whiptail`, if it is not present then it will search for `dialog`. You only need one of the following packages to ensure your setup-environement runs correctly: - - -`$ sudo apt-get install whiptail` - -or - -`$ sudo apt-get install dialog` - -**Please Note**: If you are running Ubuntu 16.04 you will need to add the following line to your `/etc/apt/sources.list` - -`deb http://archive.ubuntu.com/ubuntu/ xenial universe` - -```shell -$ cd /etc/apt/ -#vim text editor is used in this example -#sudo is used to allow editing, sources.list is set to read only -$ sudo vim sources.list -``` - -All required dependencies should now be installed on your host environment, you are ready to begin your build environment setup. - - -# Setup the build environment - -The Qualcomm BSP layer can be used with any OE based distribution, such as Poky. The following instructions are provided to get started with 96boards Open Embedded Reference Software Platforms. - -To manage the various git trees and the OpenEmbedded environment, a repo manifest is provided. If you do not have `repo` installed on your host machine, you first need to install it, using the following instructions (or similar): - - mkdir -p ${HOME}/bin - curl https://storage.googleapis.com/git-repo-downloads/repo > ${HOME}/bin/repo - chmod a+x ${HOME}/bin/repo - export PATH=${HOME}/bin:${PATH} - -To initialize your build environment, you need to run: - - mkdir oe-qcom && cd oe-qcom - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b jethro - repo sync - source setup-environment [] - -* after the command `repo sync` returns, all the OpenEmbedded recipes have been downloaded locally. -* you will be prompted to choose the target machine, pick `dragonboard-410c` -* you will be prompted to choose the distro, for now, it is recommended to use 'rpb' -* is optional, if missing it will default to `build-$DISTRO` - -The script `setup-environment` will create sane default configuration files in /conf, you can inspect them and modify them if needed. Note that conf/local.conf and conf/bblayers.conf are symlink , and under source control. So it is generally better not to modify them, and use conf/site.conf and conf/auto.conf instead. - -# Build a minimal, console-only image - -To build a console image, you can run: - - $ bitbake rpb-console-image - -At the end of the build, your build artifacts will be found in `tmp-eglibc/deploy/images/dragonboard-410c`. The two artifacts you will use to update your DragonBoard are: -* `rpb-console-image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -# Bootloaders and eMMC partitions - -Build artifacts from your OE build will be flashed into the DragonBoard's on-board eMMC (in contrast to some other boards which run their images from an SDcard). The OpenEmbedded BSP layer assumes that the _Linux_ Bootloaders and eMMC partition layout are used on the DragonBoard 410c (not the _Android_ ones; by default DragonBoards come pre-configured with the Android eMMC partition layout). You can download the latest Linux bootloader package from [here](http://builds.96boards.org/releases/dragonboard410c/linaro/rescue/latest/) to your development host, it will be named something like `dragonboard410c_bootloader_emmc_linux-.zip`. - -Whether your DragonBoard is using the Android eMMC partition layout or the Linux partition eMMC layout, you will use the Android `fastboot` utility on your development host for managing the board's eMMC partitions. If you are using a relatively recent Linux distribution on your development host, it probably already has a package that includes the `fastboot` utility (it might be named something like `android-tools` or `android-tools-fastboot`) so go ahead and install it on your development host. In order for your development host's fastboot utility to interact with the DragonBoard, the DragonBoard must be booted into a special `fastboot mode`. The procedure to do so is as follows: -* remove power from your DragonBoard -* plug a USB cable from your development host to your DragonBoard's J4 connector -* while holding down S4 on the DragonBoard (the one marked "(-)"), insert the power adapter -* after a few seconds you can release S4 - -To verify your cables and that the above procedure worked, on your development host run: - - # sudo fastboot devices - -and you should get a non-empty response, e.g. - - # sudo fastboot devices - 83581d40 fastboot - -If this is your first time using a particular DragonBoard, you will need to switch its eMMC partition layout to the Linux layout, but this procedure only needs to be done once for a given board. After switching your layout, you only have to update your board with your latest build artifacts. - -The procedure for updating your eMMC partitions is as follows. Put your DragonBoard into `fastboot mode` (see procedure above) then perform these steps on your development host: -* download the latest Linux bootloader package (e.g. `dragonboard410c_bootloader_emmc_linux-.zip`) -* unzip its contents -* run the `flashall` script (as root) that you will find after unzipping the Linux bootloader package - -At this point your eMMC has the following partition layout: - -* `/dev/mmcblk0p7` , aka `aboot` is used for the bootloader (LK/fastboot) -* `/dev/mmcblk0p8` , aka `boot` is used for the boot image (kernel, device tree, initrd) -* `/dev/mmcblk0p10` , aka `rootfs` is used for the root file system - -# Flashing build artifacts - -In the following description, replace `image` with the name of the image you built. For example: if you built `rpb-console-image` then `image` will be `rpb-console-image`. - -At the end of any successful build you will end up with the following artifacts (amongst others) -* `image-dragonboard-410c.ext4.gz` and -* `boot-dragonboard-410c.img` - -These will be found in your `tmp-eglibc/deploy/images/dragonboard-410c` directory. - -To install these to your DragonBoard's eMMC from your development host: - - # gzip -d < image-dragonboard-410c.ext4.gz > image-dragonboard-410c.ext4 - # fastboot flash rootfs image-dragonboard-410c.ext4 - # fastboot flash boot boot-dragonboard-410c.img - -# Proprietary firmware blob - -When running the `setup-environment` script, you were asked to read/accept the Qualcomm EULA. The EULA is required to access the proprietary firmware, such as the GPU firmware , WLAN, ... - -If you accepted the EULA, when building an image for DragonBoard 410c all proprietary firmware are installed automatically in `/lib/firmware`, and a copy of the EULA is added as '/etc/license.txt`. - -If you did not accept the EULA, the firmware are not downloaded, and not installed into the image. You can manually manage the firmware and download them separately from [Qualcomm Developer Network](https://developer.qualcomm.com/download/linux-ubuntu-board-support-package-v1.1.zip). - -# Build a simple X11 image - -To build an X11 image with GPU hardware accelerated support run: - - $ bitbake rpb-desktop-image - -At the end of the build, the root file system image will be available as `tmp-eglibc/deploy/images/dragonboard-410c/rpb-desktop-image-dragonboard-410c.ext4.gz`. - -Then you can finally start the X server, and run any graphical application: - - X& - export DISPLAY=:0 - glxgears - -The default X11 image includes `openbox` window manager, to use it: - - X& - export DISPLAY=:0 - openbox & - glxgears - -Of course, you can easily add another window manager, such as `metacity` in the image. To install `metacity` in the image, add the following to `conf/auto.conf` file: - - CORE_IMAGE_EXTRA_INSTALL += "metacity" - -and rebuild the `rpb-desktop-image` image, it will now include `metacity`, which can be started like this: - - X& - export DISPLAY=:0 - metacity& - glxgears - -# Build a sample Wayland/Weston image - -For Wayland/weston, it is recommended to change the DISTRO and use `rpb-wayland` instead of `rpb`. The main reason is that in the `rpb-wayland` distro, the support for X11 is completely removed. So , in a new terminal prompt, setup a new environment and make sure to use `rpb-wayland` for DISTRO, then, you can run a sample image with: - - $ bitbake rpb-weston-image - -This image includes a few additional features, such as `systemd`, `connman` which makes it simpler to use. Once built, the image will be available at `tmp-eglibc/deploy/images/dragonboard-410c/rpb-weston-image-dragonboard-410c.ext4.gz`. And it can be flashed into `rootfs` partition. - -If you boot this image on the board, you should get a command prompt on the HDMI monitor. A user called `linaro` exists (and has no password). Once logged in a VT, you run start weston with: - - weston-launch - -And that should get you to the Weston desktop shell. - -# Support - -For general question or support request, please go to [96boards.org Community forum](https://www.96boards.org/forums/forum/products/dragonboard410c/). - -For any bug related to this release, please submit issues to the [96Board.org Bug tracking system](https://bugs.96boards.org/). To submit a bug, follow this [link](https://bugs.96boards.org/enter_bug.cgi?product=Dragonboard%20410c). diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md deleted file mode 100644 index cb2b5f5..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md +++ /dev/null @@ -1,17 +0,0 @@ -## Dragonboard™ 410c - Reference Platform Build - 16.06 - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. - -*** - -| **CE Debian RPB - 16.06** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB-16.06.md) | -| [Build from Source](BFSDebianRPB-16.06.md) | -| [Known issues](../../../Known-Issues.md) | - -*** - -- Access generic **OpenEmbedded** build from source instructions [here](../../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md deleted file mode 100644 index 8823ad6..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSAOSPRPB.md +++ /dev/null @@ -1,46 +0,0 @@ -## AOSP RPB 16.03 - Build from Source - -Additional AOSP repositories are hosted here: -- https://github.com/96boards/android_hardware_ti_wpan -- https://github.com/96boards/android_device_linaro_hikey -- https://github.com/96boards/android_manifest -- https://github.com/96boards/linux (branch android-hikey-linaro-4.1) - -**Build setup:** - -Please setup the host machine by following the instructions here: [http://source.android.com/source/initializing.html](http://source.android.com/source/initializing.html) - -###### Out of date: -NOTE: The build tries to mount a loop device as fat partition to create the boot-fat.uefi.img filesystem image. Please make sure your user is allowed to run those commands in sudo without password by running "visudo" and appending the following lines (replacing "" with your username): - -```shell - ALL= NOPASSWD: /bin/mount - ALL= NOPASSWD: /bin/umount - ALL= NOPASSWD: /sbin/mkfs.fat - ALL= NOPASSWD: /bin/cp -``` - -*** - -**Download the code:** - -```shell -mkdir android/ -cd android/ -``` - -Download and extract the Mali vendor binaries in the above directory: http://builds.96boards.org/snapshots/hikey/linaro/binaries/20150706/vendor.tar.bz2 - -**Build the image:** - -```shell -repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r16 -g "default,-device,-non-default,hikey" -cd .repo/ -git clone https://github.com/96boards/android_manifest -b android-6.0 local_manifests -cd - -repo sync -j8 -source build/envsetup.sh -lunch hikey-userdebug -make droidcore -j8 -cd out/target/product/hiked -``` diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md deleted file mode 100644 index 6c74c11..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BFSDebianRPB.md +++ /dev/null @@ -1,182 +0,0 @@ -## Debian RPB 16.06 - Build from Source - -- Building Linux Kernel from Source - - Step 1: Setting up your environment on your host computer - - Step 2: Download the Linaro cross compiler toolchain - - Step 3: Export path to cross compiler tool and confirm version - - Step 5: Set the right kernel .config file - - Step 6: Build kernel image and debian package - - Step 7: Find HiKey IP Address - - Step 8: Transfer the modules to the target HiKey - - Step 9: Generate the initramfs - - Step 10: Create the device tree image and boot image -- Customize Bootloader -- Build Rootfs from source - -*** - -#### Building the Linux kernel from source - -The Linux kernel used in this release is available via tags in the git [repository](https://github.com/96boards/linux) - -```shell -git: https://github.com/96boards/linux -Dynamic tag: 96b-kernelci -Fixed tag: 96b/releases/2016.06 -defconfig: arch/arm64/configs/distro.config -``` - -The kernel image (`Image`) and the kernel modules are installed in the root file system (e.g. `/boot/vmlinuz-4.4.0-104-arm64` and `/lib/modules/4.4.0-104-arm64`). It is possible for a user to rebuild the kernel and run a custom kernel image instead of the released kernel. You can build the kernel using any recent GCC release using the git tree, tag and defconfig mentioned above. This release only supports booting with device tree, as such both the device tree blobs need to be built as well. - -The HiKey is an ARMv8 platform, and the kernel is compiled for the Aarch64 target. Even though it is possible to build natively, on the target board, It is recommended to build the Linux kernel on a PC development host. In which case you need to install a cross compiler for the ARM architecture. It is recommended to download the Linaro GCC cross compiler [Aarch64 little-endian](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz), also available [here](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/) - -To build the Linux kernel, you can use the following instructions: - -#### Step 1: Setting up your environment on your host computer - -- Open your Terminal and cd into your desired directory -- Make a new folder using `mkdir`, name it something relevant - -```shell -#Example of desired directory -$ cd ~/Desktop - -#Example of relevant folder -$ mkdir HiKey-16.06 -$ cd HiKey-16.06 -``` - -#### Step 2: Step 2: Download the Linaro cross compiler toolchain - -- From within the directory you just made -- Download and unzip by executing the following commands - -###### Linaro Cross Compiler - -```shell -#Download -$ wget http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -#Unzip -$ tar -Jxvf gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz -``` - -#### Step 3: Export path to cross compiler tool and confirm version - -- Exporting path will allow build system can find and use the right kernel - -```shell -#Create path -$ export PATH=~/Desktop/HiKey-16.06/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu/bin/:$PATH -#Check version -$ aarch64-linux-gnu-gcc --version -aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113 -Copyright (C) 2015 Free Software Foundation, Inc. -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -``` - -#### Step 4: Clone the Reference Platform kernel - -- **96b-kernelci** is the development branch -- This branch will have the latest changes -- Use **96b/releases/2016.06** if you want the same version used by the 16.06 release - -```shell -$ git clone -b 96b/releases/2016.06 http://github.com/96boards/linux.git -``` - -- Cloning the kernel may take a few minutes -- If you already have a local clone of another kernel git tree, use _--reference path/your/old/tree/.git_ for a faster clone process -- Once kernel source has been cloned cd into its directory - -```shell -$ cd linux -``` - -#### Step 5: Set the right kernel .config file - -- This step creates the '.config' file -- The .config file is used by the build system when compiling the kernel -- Current Reference Platform config can be made by using distro.config -- From with in kernel directory execute the following command: - -```shell -$ cp arch/arm64/configs/distro.config .config -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig -``` - -- New .config file will be hidden but can be seen by executing `ls -a` from within kernel folder -- To view all current configuration the .config file can be opened with a text editor such a `vim` - -#### Step 6: Build kernel image and debian package - -- This step will take some time (~20-30 minutes or more), depending on your cpu/memory -- Creating the kernel package is recommended for HiKey, as it supports Grub 2 - -```shell -#Replace X from -jX with the number of cores on your host computer -$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -jX deb-pkg LOCALVERSION=-yourowntag -``` - -#### Step 7: Find HiKey IP Address - -- On your HiKey board -- Connect to the internet through WIFI -- Open one of the Terminal applications - -```shell -$ /sbin/ifconfig -``` -- Look for your `wlan0` connection -- Here you will see an `inet addr` -- This is your board's IP address and should look something like this: `192.168.0.10` - -#### Step 8: Transfer the modules to the target HiKey - -- Using your board's IP Address for linaro@ - -```shell -$ scp ../linux-image-4.4.0-yourowntag.deb linaro@192.168.1.15:~/ -$ ssh linaro@192.168.1.15 -#HiKey shell - -$ hikey $ sudo dpkg -i linux-image-4.4.0-yourowntag.deb -``` -Congratulations! Your new kernel is now ready to be used by your HiKey. - -- You can check `/boot/grub/grub.cfg` for the new boot entry based on your own kernel -- If you want only your kernel to be available, you can remove the default linux-image package, and grub will be automatically updated - -### Boot Loader - -Please see go [here](BuildSourceBL.md) for instructions on how to built the boot loader from source. - -#### How to get and customize Debian packages source code - -This release is based on Debian 8.2 "Jessie". - -Since all packages installed in Linaro Debian-based images are maintained either in Debian archives or in Linaro repositories, it is possible for users to update their environment with commands such as: - -```shell -sudo apt-get update -sudo apt-get upgrade -``` - -All user space software is packaged using Debian packaging process. As such you can find extensive information about using, patching and building packages in The Debian New Maintainers Guide. If you quickly want to rebuild any package, you can run the following commands to fetch the package source code and install all build dependencies: - -```shell -sudo apt-get update -sudo apt-get build-dep -apt-get source -``` - -Then you can rebuild the package locally with: - -```shell -cd -dpkg-buildpackage -b -us -uc -``` - -#### TODO - -* Explain how to build the rootfs from source diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md deleted file mode 100644 index 9dce74b..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/BuildSourceBL.md +++ /dev/null @@ -1,86 +0,0 @@ -## HiKey Bootloader - Building from source - -The source code is available from: -- [**l-loader**](https://github.com/96boards-hikey/l-loader) -- [**ARM Trusted Firmware**](https://github.com/96boards-hikey/arm-trusted-firmware) -- [**OP-TEE**](https://github.com/OP-TEE/optee_os) -- [**Tianocore EDK2 – UEFI**](https://github.com/96boards-hikey/edk2) and [**OpenPlatformPkg**](https://github.com/96boards-hikey/OpenPlatformPkg) - -Since GRUB2 is currently consumed directly from the Debian package, debian package rebuild instructions applies. - -### Build instructions - -Prerequisites: -- GCC 5.3 cross-toolchain for Aarch64 available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/aarch64-linux-gnu/gcc-linaro-5.3-2016.02-x86_64_aarch64-linux-gnu.tar.xz) -- GCC 5.3 cross-toolchain for gnueabihf available in your PATH - - You can download and use the Linaro GCC binary (Linaro GCC 5.3-2016.02), available at [http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz](http://releases.linaro.org/components/toolchain/binaries/5.3-2016.02/arm-linux-gnueabihf/gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf.tar.xz) -- GPT fdisk (gdisk package from your favorite distribution). - -#### Installing pre-built toolchain(s) - -```shell -mkdir arm-tc arm64-tc -tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-5.3-*arm-linux-gnueabihf.tar.xz -tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-5.3-*aarch64-linux-gnu.tar.xz -export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" -``` - -#### Getting the source code - -```shell -git clone -b hikey-aosp https://github.com/96boards-hikey/edk2.git -git clone -b hikey-aosp https://github.com/96boards-hikey/OpenPlatformPkg.git -git clone https://github.com/OP-TEE/optee_os.git -git clone -b hikey https://github.com/96boards-hikey/arm-trusted-firmware.git -git clone https://github.com/96boards-hikey/l-loader.git -git clone -b hikey-aosp https://github.com/96boards-hikey/uefi-tools.git -``` - -#### Building EDK2/UEFI for HiKey - -Building EDK2/UEFI is simple if built with the _uefi-tools.sh_ script, since it already incorporates the platform specific configs and binaries. - -To build EDK2/UEFI (use **-b** to select **RELEASE** or **DEBUG** build): - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export EDK2_DIR=${PWD}/edk2 -export OPTEE_DIR=${PWD}/optee_os -export ATF_DIR=${PWD}/arm-trusted-firmware -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -cd ${EDK2_DIR} -rmdir OpenPlatformPkg; ln -s ../OpenPlatformPkg -${UEFI_TOOLS_DIR}/uefi-build.sh -b RELEASE -a ${ATF_DIR} -s ${OPTEE_DIR} hikey -``` - -And bl1.bin with l-loader (ptable files are also created as part of the l-loader Makefile): - -```shell -cd ../l-loader -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/bl1.bin -ln -s ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/FV/fip.bin -make # requires sudo for creating the partition tables -``` - -The files 'fip.bin', 'l-loader.bin' and 'ptable-linux-8g.img' are now built. All the image files are in _$BUILD/l-loader_ directory. The Fastboot App is at _edk2/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi_. - -#### EFI boot partition - -The boot partition is a 64MB FAT partition only contains fastboot.efi and GRUB2, since the grub.cfg, kernel, initrd and device tree are all loaded from the root file system (grubaa64.efi searches for rootfs label/boot/grub/grub.cfg). - -```shell -wget https://builds.96boards.org/snapshots/reference-platform/components/grub/latest/grubaa64.efi -mkdir boot-fat -dd if=/dev/zero of=boot-fat.uefi.img bs=512 count=131072 -sudo mkfs.fat -n "boot" boot-fat.uefi.img -sudo mount -o loop,rw,sync boot-fat.uefi.img boot-fat -sudo mkdir -p boot-fat/EFI/BOOT -sudo cp ${EDK2_DIR}/Build/HiKey/RELEASE_GCC49/AARCH64/AndroidFastbootApp.efi boot-fat/EFI/BOOT/fastboot.efi -sudo cp grubaa64.efi boot-fat/EFI/BOOT/grubaa64.efi -sudo umount boot-fat -sudo mv boot-fat.uefi.img hikey-boot-linux-VERSION.uefi.img -rm -rf boot-fat -``` - -Now just flash the recently created 'hikey-boot-linux-VERSION.uefi.img' with the same instructions as used with the pre-built binaries. diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md deleted file mode 100644 index 317256b..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md +++ /dev/null @@ -1,126 +0,0 @@ -#### Your Build Choice - -[]() -[]() -[]() -[]() -[]() - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download the following files - ->Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -Build Folders (**Binaries** / **Image**) - -- **l-loader.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/l-loader.bin)) -- **fip.bin** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/fip.bin)) -- **nvme.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/nvme.img)) -- **ptable-aosp.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/ptable-aosp-8g.img)) -- **hisi-idt.py** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/bootloader/hisi-idt.py)) -- **boot_fat.uefi.img** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/boot_fat.uefi.img.tar.xz)) -- **cache.img.tar.xz** ([**Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/cache.img.tar.xz)) -- **userdata.img.xz** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata.img.tar.xz) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/aosp/hikey/16.03/userdata-8gb.img.tar.xz)) -- **system.img.tar.xz** (**Download**) - -*** - -#### Step 3: Install AOSP Using Fastboot with Linux host - -This section show how to install the AOSP operating system to your HiKey using the fastboot method on a Linux host computer. - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready - -3 - **Set HiKey into Recovery Mode using J15 header** - -- Remove link between pins 5 and 6 -- Link pins 1 and 2 -- Link pins 3 and 4 - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | closed -GPIO3-1 | Link 5-6 | open - -4 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable ptable-aosp-8g.img -$ sudo fastboot reboot -$ sudo fastboot flash boot boot_fat.uefi.img -$ sudo fastboot flash cache cache.img -$ sudo fastboot flash system system.img -$ sudo fastboot flash userdata userdata-8gb.img -``` - -5 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 3-4 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md deleted file mode 100644 index d14bb67..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md +++ /dev/null @@ -1,265 +0,0 @@ -# Install Instructions - Reference Software Platform - -This page provides download and installation instructions inteded for those interested in flashing the HiKey board with pre-built Linaro Reference Software. Two methods are currently available: **SD card method** and **Fastboot method**. If you are already familiar with these methods, you may find all necessary files in the [96Boards RPB 16.06 build folder](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/). - -## Contents - -- [SD Card Method](#sd-card-method) -- [Fastboot Method](#fastboot-method) - -*** - -# SD Card Method - - - - - - - -#### Step 1: Read about the SD Card Method - -The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. - -This method requires the following hardware: -- HiKey with power supply -- Host Linux machine (Linux, Mac OS X, or Windows) -- MicroSD card with 4GB or more of storage -- USB Mouse and/or keyboard -- HDMI Monitor with full size HDMI cable - - -*** -#### Step 2: Download SD Card Image - -**Debian Linux Reference Software Platform - SD Card Image** - -[SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-debian-jessie-alip-sdcard-*.img.gz) - -*** - -#### Step 3: Prepare MicroSD card - -- Ensure data from mircoSD card is backed up -- Everything on microSD card will be lost by the end of this procedure. - -*** - -#### Step 4: Find SD Card Device name - -- Use host Linux computer -- Open "Terminal" application -- Remove SD card from host computer and run the following command: -```shell -lsblk -``` -- Note all recognized disk names -- **Insert SD card** and run the following command (again): -```shell -lsblk -``` -- Note the newly recognized disk. This will be your SD card. -- You will need to remember this device name for a later step. - -*** - -#### Step 5: Recall Download Location - -- Locate SD card install file from Downloads page. -- This file will be needed for the next step. - -*** - -#### Step 6: Unzip _SD Card Install Image_ - -- When unzipped, you will have a folder with the following contents: - - Linaro/Debian Install Image (.img) - - Readme - -*** - -#### Step 7: Go to directory with _SD Card Install Image_ folder using Terminal - -- Use host Linux computer -- Open "Terminal" application -- `cd` to the directory with your unzipped **SD Card Install Image** - -```shell -cd - -#Example: -# = /home/YourUserName/Downloads -#For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. -cd /home/YourUserName/Downloads -``` - -*** - -#### Step 8: Install Image onto SD Card - -**Checklist:** - -- SD card inserted into host Linux computer -- Recall SD Card device name **Step 4** -- From within the extraction folder, using the Terminal execute the following commands: - -**Execute:** - -```shell -sudo dd if=hikey-jessie_alip_2015MMDD-nnn.img of=/dev/XXX bs=4M oflag=sync status=noxfer -``` - -**Note:** - -- `if=hikey-jessie_alip_2015MMDD-nnn.img`: should match the name of the image that was downloaded. -- `of=/dev/XXX`: XXX should match the name of the SD Card device name from [**Step 2**](). Be sure to use the device name with out the partition. -- This command will take some time to execute. Be patient and avoid tampering with the terminal until process has ended. -- Once SD card is done flashing, remove from host computer and set aside for a later step - - -*** - -#### Step 9: Prepare HiKey with SD card - -- Make sure HiKey is unplugged from power -- Connect an HDMI monitor to the HiKey with an HDMI cable, and power on the monitor -- Plug a USB keyboard and/or mouse into either of the two USB connectors on the HiKey -- Insert the microSD card into the HiKey -- Plug power adaptor into HiKey, wait for board to boot up. - -*** - -#### Step 10: Install Linaro/Debian onto HiKey - - - -- If **Steps 1 - 8** were followed correctly, the above screen should be visible from your HiKey -- Select the image to install and click “Install” (or type “i”). OS will be installed into the eMMC memory -- This process can take a few minutes to complete -- Upon completion, “Flashing has completed and OS has installed successfully....” message will appear. - -Before clicking "OK": - -- Remove the SD Card -- Now click "OK" button and allow HiKey to reboot. - -**Congratulations! You are now booting your newly installed operating system directly from eMMC on the HiKey** - -[Back to top](#install-instructions---reference-software-platform) - -*** - -# Fastboot Method - - - - - - - -*** - -#### Step 1: Read about the Fastboot Method - -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. - -This method requires the following hardware: -- HiKey with power supply -- Host Linux machine (Linux, Mac OS X, or Windows) -- USB to microUSB cable -- USB Mouse and/or keyboard (not required to perform flash) -- HDMI Monitor with full size HDMI cable (not required to perform flash) - -*** - -#### Step 2: Download Debian partition table - -> Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - -- All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** -- All HiKey **LeMaker 2G boards** will use the **8G files** - -**ptable-linux.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-8g.img)) - -*** - -#### Step 3: Download Boot image and Root File System - -- **Debian Boot** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-boot-linux-*.uefi.img.gz)) -- **Debian Rootfs** (**Download**) - -*** - -#### Step 4: Install Debian Using Fastboot with Linux host - -This section show how to install the Linaro based Debian operating system to your HiKey using the fastboot method on a Linux host computer. - - - -1 - **Make sure fastboot is set up on host computer** - -- Android SDK “Tools only” for Linux can be downloaded here -- The Linux “Tools Only” SDK download does not come with fastboot, you will need to use the Android SDK Manager to install platform-tools. -- To do this follow the “SDK Readme.txt” instructions included in your SDK “Tools Only” download. - -If you are still having trouble setting up fastboot, click here for a short tutorial video - -2 - **Boot HiKey into Fastboot mode using J15 header** - -- Link pins 1 and 2 -- Link pins 5 and 6 -- Connect host computer to HiKey board using USB to microUSB cable - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | closed - -- Power on HiKey board by plugging in power adapter -- Esure HiKey is detected by host computere -- Wait for about 10 seconds -- Open Terminal application and execute the following: - -```shell -$ sudo fastboot devices -0123456789abcdef fastboot -``` - ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Installation/BoardRecovery.md) and return to this step once your board is ready - -3 - **Install Operating System update using downloaded files** - ->**NOTE:** the ptable must be flashed first. Wait for a few seconds after the reboot command to allow the bootloader to restart using the new partition table. - -```shell -$ sudo fastboot flash ptable .img -$ sudo fastboot reboot -$ sudo fastboot flash boot .uefi.img -$ sudo fastboot flash system hikey-rootfs-debian-jessie-alip-YYYYMMDD-nnn.emmc.img -``` - -4 - **Reboot HiKey into new OS** - -- Wait untill all files have been flashed onto HiKey board -- Power down HiKey by unplugging the power adapter -- Remove microUSB cable from HiKey -- Remove Link 5-6 from J15 header - -Name | Link | State ----- | ---- | ----- -Auto Power up | Link 1-2 | closed -Boot Select | Link 3-4 | open -GPIO3-1 | Link 5-6 | open - -- Plug mouse/keyboard USB into type A USB ports -- Power up HiKey by plugging in power adapter - - -**Note:** the **username** and **password** are both **“linaro”** when the login information is requested. - -**Congratulations! You are now booting your newly installed OS directly -from eMMC on the HiKey!** - -[Back to top](#install-instructions---reference-software-platform) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallOERPB.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md deleted file mode 100644 index 7f936e4..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md +++ /dev/null @@ -1,31 +0,0 @@ -## Reference Platform Build - 16.06 - - -- **Install Instructions:** For "out-of-box" users. Instructions for installing pre-build Reference Platform images onto your 96Boards. Includes SD card and Fastboot method instructions. -- **Build from Source:** For Advanced users. Instructions for building and installing the various Reference Platform components used by Consumer Edition 96Boards. -- **Known Issues:** List of current bugs and issues for each Reference Platform Build. Includes links to bug reports for tracking resolution progress. - -*** - -#### HiKey - - -| **CE Debian RPB - 16.06** | -|:-----------------------------:| -| [Install Instructions](InstallDebianRPB.md) | -| [Build from Source](BFSDebianRPB.md) | -| [Known issues](../../../Known-Issues.md) | - - - -| **CE AOSP** | -|:---------------------------:| -| [Install Instructions](https://source.android.com/source/devices.html) | -| [Known issues](../../../Known-Issues.md) | - - - -*** - -- Access **bootloader** build from source instructions [here](BuildSourceBL.md) -- Access **OpenEmbedded** build from source instructions [here](../../CECommon/OE.md) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/ConsumerEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md deleted file mode 100644 index 7fa5dc9..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md +++ /dev/null @@ -1,58 +0,0 @@ -### LeMaker Cello - -*** - -### Critical Bug List - -As both USB and the PCIe slot are not yet functional (hardware issues), the only way to currently start the installer is via SATA (CD-ROM, or flashed in a SATA disk). Once the Realtek UEFI driver gets integrated as part of OpenPlatformPkg, it will also be possible to PXE boot the installer. - -Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [2195](https://bugs.linaro.org/show_bug.cgi?id=2195) and [2196](https://bugs.linaro.org/show_bug.cgi?id=2196) for the known issues. - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Quick Start - -Booting from the network is not yet supported due lack of a binary UEFI driver for RTL8111GS, so installing from a physical medium is required (CD-ROM, SATA disk). USB and micro SD is not yet recognized by the UEFI firmware. - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). - -### Distro Installers - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md deleted file mode 100644 index 43547db..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md +++ /dev/null @@ -1,59 +0,0 @@ -### D02 - -*** - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Quick Start - -#### D02 - QuickStart - -UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). - -**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md deleted file mode 100644 index 5802a3c..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md +++ /dev/null @@ -1,59 +0,0 @@ -### D03 - -*** - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Quick Start - -#### D03 - QuickStart - -UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). - -**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md deleted file mode 100644 index 2b6ff67..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md +++ /dev/null @@ -1,47 +0,0 @@ -### HP ProLiant m400 - -*** - -### Boot Firmware - -TBD - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md deleted file mode 100644 index 3b4fd01..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md +++ /dev/null @@ -1,59 +0,0 @@ -### Overdrive - -*** - -### Boot Firmware - -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.03/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Quick Start - -#### AMD Overdrive - -UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). - -**NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! - - -##### Flashing the firmware - -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md deleted file mode 100644 index fc8e51e..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md +++ /dev/null @@ -1,46 +0,0 @@ -## Qualcomm QDF2432 Server Development Platform - -*** - -### Boot Firmware - -TBD - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md deleted file mode 100644 index 8b13789..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md deleted file mode 100644 index db5c79b..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md +++ /dev/null @@ -1,46 +0,0 @@ -### Cavium ThunderX - -*** - -### Boot Firmware - -TBD - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md deleted file mode 100644 index bd2077f..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md +++ /dev/null @@ -1,48 +0,0 @@ -### X-Gene Mustang - -*** - -### Boot Firmware - -TBD - -### Reference Platform Kernel - -The Reference Platform kernel used by the enterprise release can be found on [github.com/96boards/linux](https://github.com/96boards/linux/tree/96b/releases/2016.06) - -Since we use the same kernel config with all our builds and distributions, it is also available as part of the same kernel tree, and can be found at [arch/arm64/configs/distro.config](https://github.com/96boards/linux/blob/96b/releases/2016.06/arch/arm64/configs/distro.config). - -At the time of the 16.06 release, the kernel is based on *4.4.11*. - -### Network Installers - -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). - -Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) - - - -#### Other distributions - -Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). - -Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) - -### Enterprise Software Components - -#### OpenStack - -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. - -#### Hadoop (ODPi BigTop) - -##### Installation - -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop - -##### Setup and Running Hadoop - -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Highlights.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Highlights.md deleted file mode 100644 index 0f94f24..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Highlights.md +++ /dev/null @@ -1,96 +0,0 @@ -### Highlights for 16.06 release: - -*** - -###### Consumer and Enterprise Edition: - -#### Kernel - -- Unified tree shared between the CE and EE builds. -- 4.4.11-based, including some under-review topic branches to extend the features and platform hardware support. -- Device-Tree support for CE; ARM ACPI and PCIe support for Enterprise. -- Added OP-TEE support - - Enabled on HiKey and Juno-r1 -- Supports Reference HW platforms HiKey and Cello - - Other Test Platforms include: Dragonboard 410c, Hisilicon D02 and D03, APM X-Gene, HP Proliant m400, AMD Overdrive, Qualcomm QDF2432 Server Development Platform, and Cavium ThunderX. -- Single kernel config for all platforms in arch/arm64/configs/distro.config -- Single kernel binary (package) for all platforms - -#### Bootloader - -- UEFI OpenPlatformPkg (upstream) now contains reference implementations for Huawei D02/D03, AMD Overdrive and LeMaker Cello -- U-boot support in DB410c images to allow easier handling of images - -*** - -###### Consumer Edition: - -#### Reference hardware platform: -- LeMaker Hikey - -#### Other supported test platforms: -- Dragonboard 410c - -#### Overall CE Debian platform features, validated as part of the release: -- UEFI with DT -- Upgrade to Debian 8.5 "Jessie" -- Upgrade to the unified 4.4.11 Linux Kernel -- Upgrade graphics components: Mesa 11.1.2 and XServer 1.17.3a -- Rootfs automatically resized during the first boot - -#### CE Debian RPB for HiKey: -- OP-TEE integrated by default -- UEFI updated to use the latest development trees based on Tianocore - - OpenPlatformPkg - -#### CE Debian build for DragonBoard™ 410c: -- U-boot chain-loaded from LK - -#### CE OE/Yocto RPB: -- First OpenEmbedded-based RPB, including several changes and components merged from the LHG OE layers -- Dragonboard 410c and HiKey support -- HiKey features: - - OP-TEE initial support - - Mali support for HiKey -- Dragonboard 410c features: - - GPU, WLAN, BT, audio, LS I/O, camera and GPS - -*** - -###### Enterprise Edition - -#### Reference hardware platform: -- LeMaker Cello - -#### Other supported test platforms: -- AMD Overdrive A0 and B0 -- Hisilicon D02 -- Hisilicon D03 (new) -- APM X-Gene Mustang -- HP ProLiant m400 -- Qualcomm QDF2432 Server Development Platform (new) -- Cavium ThunderX (new) - -#### Overall platform features, validated as part of the release: -- UEFI with ACPI -- KVM -- PCIe - -#### Firmware: -- UEFI OpenPlatformPkg (upstream) now contains reference implementation for Huawei D02/D03, AMD Overdrive and LeMaker Cello - -#### Network Installers: -- Debian: - - Upgrade to Debian 8.5 "Jessie" - - Use the unified 4.4.11 kernel -- CentOS - - Based on CentOS 7.2 16.03 - - Use the unified 4.4.11 kernel - -#### Enterprise Components: -- Docker 1.9.1 -- OpenStack Liberty for Debian Jessie and CentOS -- ODPi 1.0.0 based Hadoop -- Spark 1.3.1 -- OpenJDK 8 -- QEMU 2.6 diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Known-Issues.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Known-Issues.md deleted file mode 100644 index fb56320..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/Known-Issues.md +++ /dev/null @@ -1,47 +0,0 @@ -# Reference Platform Build - 16.06 Release - Known Issues - -## Fixed Issues - -These lists group all **fixed RPB issues** into their repective categories. Underlying Consumer and Enterprise Edition boards, and their bug fixes are grouped under a single page for convenience and quick reference. - -| Fixed Issues | | -|:---|:----| -| Enterprise | (Full List) | -| Conssumer | HiKey / DragonBoard 410c | - -[Report a bug](Report-a-bug.md) - -## Current Issues - -These lists group all **current and unfixed bugs** into their respective categories. Basic bug summaries and descriptions are available on Bugzilla, links to each full lists of bugs are available for convenience and quick reference. - -| Enterprise | Known Issues | -|:-----------|:---| -| Cello/Overdrive | (Full List) | -| APM/HP-m400 | (Full List) | -| D02 | (Full List) | -| D03 | (Full List) | -| Qualcomm QDF2432 Server Development Platform | (Full List) | -| ThunderX | (Full List) | - -[Report a bug](Report-a-bug.md) - -*** - -| Consumer | Known Issues | -|:-----------|:---| -| HiKey | (Full List) | -| DragonBoard 410c | (Full List) | - -[Report a bug](Report-a-bug.md) - -*** - -| Bug Legend | | -|:-----:|:-------| -| CONFIRMED | If a bug can be reproduced, a member from the 96Boards, Linaro or QA team will change its status from **UNCONFIRMED** to **CONFIRMED** | -| IN_PROGRESS | This bug is currently being worked on by either the 96Boards, Linaro, or QA team | -| RESOLVED | Development is finished with a bug. Please [click here](https://wiki.documentfoundation.org/QA/Bugzilla/Fields/Status/RESOLVED) for information on sub-states | -| VERIFIED | A team has VERIFIED a working solution for a bug | - -*** diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/README.md deleted file mode 100644 index 1a9666f..0000000 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/RPB_16.06/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Reference Software Platform - 16.06 - -[RPB 16.06 Highlights](Highlights.md) | [RPB 16.06 Known Issues](Known-Issues.md) - -## Choose your Hardware - -#### Consumer Edition - -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition -- [LeMaker Cello](EnterpriseEdition/Cello/README.md) -- [D02](EnterpriseEdition/D02/README.md) -- [D03](EnterpriseEdition/D03/README.md) -- [AMD Overdrive](EnterpriseEdition/Overdrive/README.md) -- [X-Gene Mustang](EnterpriseEdition/X-Gene-Mustang/README.md) -- [HP ProLiant m400](EnterpriseEdition/HP-ProLiant-m400/README.md) -- [Cavium Thunder X](EnterpriseEdition/ThunderX/README.md) -- [Qualcomm QDF2432 Server Development Platform](EnterpriseEdition/Q2432LZB/README.md) - -Visit our [Components Downloads Page](https://builds.96boards.org/releases/reference-platform/components/) - -*** From e1a4bbba82f2c93efd882a4f7f2249833247e912 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:13:30 -0800 Subject: [PATCH 099/268] Removed description of platform Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 185a660..2847264 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -1,17 +1,5 @@ # Enterprise Reference Platform - Documentation -The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. - -## Features -- Unified Linux Kernel -- Open Boot Firmware - - Compliant with ARM SBSA and SBBR specifications -- Debian and Centos Network Installers -- Openstack and Ceph Reference Deployments -- Built for Big Data Workloads - -*** - ## Contents - [Getting Started](GettingStarted/README.md) From 2edc9581b1c43c79b1808969e74c7037fc480bef Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:14:03 -0800 Subject: [PATCH 100/268] Removed Description of platform Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 5f2313f..112134b 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -1,17 +1,5 @@ # Consumer Reference Platform - Documentation -The Consumer Reference Platform aims to enable the latest software on a series of embedded hardware platforms. Open source boot firmware and a unified Linux kernel delivers an excellent starting point for your next embedded product. High level components such as ROS, and a standard GPIO library are included to help accelerate robotic enthusiasts and makers. The consumer software stack provides two builds based on Debian and OpenEmbedded. A graphic user interface is included for each variant, and both are validated to ensure quality and a great user experience. - -## Features - - Unified Linux Kernel - - Open Boot Firmware - - Debian and OpenEmbedded Builds - - Desktop Enviroment - - ROS (Robot OS) - - Standard GPIO Library - -*** - ## Contents - [Getting Started](GettingStarted/README.md) From 302a99af69be0e6f0775211b3c10bd43b6132597 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:14:36 -0800 Subject: [PATCH 101/268] Removed description of platform Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index 440802e..6c8fac8 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -1,16 +1,5 @@ # IoT Reference Platforms - Documentation -The IoT reference platform’s goal is to provide an end to end open source secure pipeline from gateway devices to endpoints. For the deeply embedded use cases, a Zephyr RTOS baseline is provided to enable a series of hardware platforms, which ships with a rich developer SDK. The gateway is a variant of the Consumer reference platform based on Debian, leveraging the latest in cloud and container technology. Secure updates are not a mere afterthought, instead this software stack has been designed with security and maintainability in mind from day one. - -## Features - - Zephyr RTOS with SDK for endpoints - - Open Boot Firmware for endpoints - - Debian builds for gateways - - Secure update pipeline for all devices - - -*** - ## Contents - [Getting Started](GettingStarted/README.md) From 989254c8c4fdc3b63441003ff8ada85f81bbd826 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:16:08 -0800 Subject: [PATCH 102/268] Fixed relative link for Contribution policy Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 112134b..06d6ef1 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -18,4 +18,4 @@ #### Resources - [Previous Releases](PreviousReleases/README.md) -- [Document Contribution Policy](../ContributionPolicy.md) +- [Document Contribution Policy](../../../ContributionPolicy.md) From 1f862a94d6ff21c155bd08f394cbb54b6a72c34b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:16:36 -0800 Subject: [PATCH 103/268] Relative link fixed on Contribution policy Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 2847264..9b82204 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -18,4 +18,4 @@ #### Resources - [Previous Releases](PreviousReleases/README.md) -- [Document Contribution Policy](../ContributionPolicy.md) +- [Document Contribution Policy](../../../ContributionPolicy.md) From af26b4d1236b4f3044b9312ddc2611918e2fcd6a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:17:15 -0800 Subject: [PATCH 104/268] Relative link fixed on Contribution policy Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index 6c8fac8..004b869 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -10,7 +10,7 @@ - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - Explore the Reference Platform from a Hardware perspective -- [Troubleshooting](Troubleshooting/README.md) +- [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers *** @@ -18,4 +18,4 @@ #### Resources - [Previous Releases](PreviousReleases/README.md) -- [Document Contribution Policy](../ContributionPolicy.md) +- [Document Contribution Policy](../../../ContributionPolicy.md) From a2d83f16a6cb8f49dfae84cb6454866cc80a0454 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:17:55 -0800 Subject: [PATCH 105/268] Fixed relative link for support Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 06d6ef1..7cc20e2 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -10,7 +10,7 @@ - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - Explore the Reference Platform from a Hardware perspective -- [Troubleshooting](Troubleshooting/README.md) +- [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers *** From 91f5179865c00dc5552f029d85696169a2064807 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:18:35 -0800 Subject: [PATCH 106/268] Relative link fixed for support Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 9b82204..7155016 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -10,7 +10,7 @@ - Skip straight to your Reference Platform downloads - [Hardware](HardwareDocs/README.md) - Explore the Reference Platform from a Hardware perspective -- [Troubleshooting](Troubleshooting/README.md) +- [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers *** From 5a3cefff6166609410a1d83143978fa3b5df4188 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:20:03 -0800 Subject: [PATCH 107/268] Removed 15.10 release - no EE existed Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/PreviousReleases/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/README.md index 7bbb42f..831f863 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/README.md @@ -5,4 +5,3 @@ - [16.06](RPB_16.06/README.md) - [16.03](RPB_16.03/README.md) - [15.12](RPB_15.12/README.md) -- [15.10(Alpha)](RPB_15.10/README.md) From 8b5f9994c2738a6120181e62f40aeaf313602e09 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:21:30 -0800 Subject: [PATCH 108/268] Delete .DS_Store --- .../PreviousReleases/RPB_16.06/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/.DS_Store diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/.DS_Store b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 12 Dec 2016 17:23:02 -0800 Subject: [PATCH 109/268] Fixed relative links Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/Cello/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md index 7fa5dc9..585c460 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md @@ -10,7 +10,7 @@ Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [21 ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). +The [UEFI/EDK2 guide for EE](../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). ### Reference Platform Kernel @@ -26,33 +26,33 @@ Booting from the network is not yet supported due lack of a binary UEFI driver f ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). +Follow the instructions available as part of the [UEFI EDK2 Guide](../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). ### Distro Installers Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 1e93ec826b87fe1bdb1305c63d90179c45605916 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:24:16 -0800 Subject: [PATCH 110/268] Update README.md Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/Cello/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md index 585c460..d91a26c 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md @@ -10,7 +10,7 @@ Please also check bugs [2194](https://bugs.linaro.org/show_bug.cgi?id=2194), [21 ### Boot Firmware -The [UEFI/EDK2 guide for EE](../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). +The [UEFI/EDK2 guide for EE](../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Cello (Tianocore EDK2). ### Reference Platform Kernel @@ -26,33 +26,33 @@ Booting from the network is not yet supported due lack of a binary UEFI driver f ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). +Follow the instructions available as part of the [UEFI EDK2 Guide](../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your LeMaker Cello. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). ### Distro Installers Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO -* [CentOS 7](../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md#loading-debian-installer-from-the-minimal-cd) - Using the minimum ISO +* [CentOS 7](../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From b49fc82ddc043cc32c7076f7f49e7ca93417d408 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:25:00 -0800 Subject: [PATCH 111/268] Update README.md Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/D02/README.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md index 43547db..2be6326 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md @@ -4,7 +4,7 @@ ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. +The [UEFI/EDK2 guide for EE](../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D02. ### Reference Platform Kernel @@ -18,21 +18,21 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. #### D02 - QuickStart -UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). +UEFI/EDK2 is supported by D02 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d02/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). **NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. +Follow the instructions available as part of the [UEFI EDK2 Guide](../../EECommon/UEFI-EDK2-Guide-EE.md#d02) in order to flash your D02. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../EECommon/Install-CentOS-7.md) #### Other distributions @@ -40,20 +40,20 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From a70350770705ca16a001c08dbfc6a1f726f9e569 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:25:47 -0800 Subject: [PATCH 112/268] Update README.md Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/D03/README.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md index 5802a3c..405e545 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md @@ -4,7 +4,7 @@ ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. +The [UEFI/EDK2 guide for EE](../../EECommon/UEFI-EDK2-Guide-EE.md) provides information about building and flashing the boot firmware for D03. ### Reference Platform Kernel @@ -18,21 +18,21 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. #### D03 - QuickStart -UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). +UEFI/EDK2 is supported by D03 (with build from source instructions available as part of the [UEFI EDK2 Guide](../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/d03/) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). **NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. +Follow the instructions available as part of the [UEFI EDK2 Guide](../../EECommon/UEFI-EDK2-Guide-EE.md#d03) in order to flash your D03. The tested flashing process only requires access to a TFTP server, since the firmware supports fetching the firmware from the network. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../EECommon/Install-CentOS-7.md) #### Other distributions @@ -40,20 +40,20 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From d74fd2eaa0926532620afa9feadb5498bf8702b1 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:26:31 -0800 Subject: [PATCH 113/268] Update README.md Signed-off-by: Robert Wolff --- .../EnterpriseEdition/Overdrive/README.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md index 3b4fd01..c7d6921 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md @@ -4,7 +4,7 @@ ### Boot Firmware -The [UEFI/EDK2 guide for EE](../../../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). +The [UEFI/EDK2 guide for EE](../../EECommon/UEFI-EDK2-Guide-EE.md) provides information on how to flash the boot firmware for Overdrive (AMI Bios). ### Reference Platform Kernel @@ -18,42 +18,42 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. #### AMD Overdrive -UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). +UEFI/EDK2 is supported by Overdrive Rev B (with build from source instructions available as part of the [UEFI EDK2 Guide](../../EECommon/UEFI-EDK2-Guide-EE.md#building), and since ACPI support is new, please make sure you are using the latest firmware available at [https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive/](https://builds.96boards.org/releases/reference-platform/components/uefi/16.06/release/overdrive) before proceeding with kernel testing or installing your favorite distribution (and please make sure to report your firmware version when reporting issues and bugs). **NOTE:** 16.06 kernel **requires** the 16.06 UEFI/EDK2 firmware release! ##### Flashing the firmware -Follow the instructions available as part of the [UEFI EDK2 Guide](../../../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). +Follow the instructions available as part of the [UEFI EDK2 Guide](../../EECommon/UEFI-EDK2-Guide-EE.md#amd-overdrive) in order to flash your AMD Overdrive. The tested flashing process requires [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/SF100) or [SPI Hook](http://www.tincantools.com/SPI_Hook.html). ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 543b7af18af0707f80ec06bb70032d613ba732db Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:27:10 -0800 Subject: [PATCH 114/268] Update README.md Signed-off-by: Robert Wolff --- .../EnterpriseEdition/X-Gene-Mustang/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md index bd2077f..ffe3476 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md @@ -16,11 +16,11 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../EECommon/Install-CentOS-7.md) @@ -29,20 +29,20 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 773928269ca135404ebbc6266e4724a0fb3854af Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:27:38 -0800 Subject: [PATCH 115/268] Update README.md Signed-off-by: Robert Wolff --- .../EnterpriseEdition/HP-ProLiant-m400/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md index 2b6ff67..6d636dc 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md @@ -16,11 +16,11 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../EECommon/Install-CentOS-7.md) #### Other distributions @@ -28,20 +28,20 @@ Install instructions for the tested/supported distributions: Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 46b8081c6afa930c2d5bb88cc978dd72fecab87d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:28:12 -0800 Subject: [PATCH 116/268] Update README.md Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/ThunderX/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md index db5c79b..0013ed6 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md @@ -16,31 +16,31 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From f6d6412a9e4bd18c293746b6365fa0a5d9b0e02e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:28:45 -0800 Subject: [PATCH 117/268] Update README.md Signed-off-by: Robert Wolff --- .../RPB_16.06/EnterpriseEdition/Q2432LZB/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md index fc8e51e..97b541e 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md @@ -16,31 +16,31 @@ At the time of the 16.06 release, the kernel is based on *4.4.11*. ### Network Installers -In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). +In order to install a distribution from network, PXE (DCHP/TFTP) booting is required. Since we require UEFI for the Enterprise Edition, the setup is usually easier since all you need is to load GRUB 2 (and its configuration). Check [this link](../../EECommon/DHCP-TFTP-Server-UEFI.md) for instructions on how to quickly setup your own PXE server (using *dnsmasq*). Install instructions for the tested/supported distributions: -* [Debian 8.x 'Jessie'](../../../../EECommon/Install-Debian-Jessie.md) -* [CentOS 7](../../../../EECommon/Install-CentOS-7.md) +* [Debian 8.x 'Jessie'](../../EECommon/Install-Debian-Jessie.md) +* [CentOS 7](../../EECommon/Install-CentOS-7.md) #### Other distributions Only Debian and CentOS are officially released and validated as part of the reference software platform project, but other distributions can be easily supported as well (just need kernel and installer changes). Extra resources for other distributions: -* [Fedora 23](../../../../EECommon/Install-Fedora-23.md) +* [Fedora 23](../../EECommon/Install-Fedora-23.md) ### Enterprise Software Components #### OpenStack -Follow the [instructions](../../../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. +Follow the [instructions](../../EECommon/OpenStack-Liberty.md) on how to install and run OpenStack Liberty on Debian Jessie. #### Hadoop (ODPi BigTop) ##### Installation -Follow the [instructions](../../../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop +Follow the [instructions](../../EECommon/ODPi-Hadoop-Installation.md) to install ODPi BigTop Hadoop ##### Setup and Running Hadoop -Follow the [instructions](../../../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop +Follow the [instructions](../../EECommon/ODPi-BigTop-Hadoop-Config-Run.md) to configure and install Hadoop From 61d573246b702ed5eaefff6ca5fad6ceddc343f3 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:29:18 -0800 Subject: [PATCH 118/268] Delete .DS_Store --- .../Enterprise/PreviousReleases/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/.DS_Store diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/.DS_Store b/Reference-Platform/Platforms/Enterprise/PreviousReleases/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 12 Dec 2016 17:29:29 -0800 Subject: [PATCH 119/268] Delete .DS_Store --- .../PreviousReleases/RPB_16.03/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/.DS_Store diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/.DS_Store b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_16.03/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 12 Dec 2016 17:30:57 -0800 Subject: [PATCH 120/268] Delete .DS_Store --- .../PreviousReleases/RPB_15.12/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/.DS_Store diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/.DS_Store b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 12 Dec 2016 17:31:32 -0800 Subject: [PATCH 121/268] Delete .DS_Store --- .../PreviousReleases/RPB_16.06/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/.DS_Store diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/.DS_Store b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 12 Dec 2016 17:31:55 -0800 Subject: [PATCH 122/268] Delete .DS_Store --- .../PreviousReleases/RPB_16.03/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/.DS_Store diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/.DS_Store b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Mon, 12 Dec 2016 17:35:46 -0800 Subject: [PATCH 123/268] Update README.md Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 7cc20e2..55b4f0d 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -7,7 +7,7 @@ - [Installation](Installation/README.md) - Installation and build instructions for a variety of your Reference Platform components - [Downloads](Downloads/README.md) - - Skip straight to your Reference Platform downloads + - Skip straight to your pre-built Reference Platform downloads - [Hardware](HardwareDocs/README.md) - Explore the Reference Platform from a Hardware perspective - [Support](Support/README.md) From d953d1f931ebd1ca1adcca75631292d0296382a3 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:36:03 -0800 Subject: [PATCH 124/268] Update README.md Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 7155016..c563b61 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -7,7 +7,7 @@ - [Installation](Installation/README.md) - Installation and build instructions for a variety of your Reference Platform components - [Downloads](Downloads/README.md) - - Skip straight to your Reference Platform downloads + - Skip straight to your pre-built Reference Platform downloads - [Hardware](HardwareDocs/README.md) - Explore the Reference Platform from a Hardware perspective - [Support](Support/README.md) From 35a05d79089e258f08474aea5fd5552fec5be076 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:36:21 -0800 Subject: [PATCH 125/268] Update README.md Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index 004b869..f3ef183 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -7,7 +7,7 @@ - [Installation](Installation/README.md) - Installation and build instructions for a variety of your Reference Platform components - [Downloads](Downloads/README.md) - - Skip straight to your Reference Platform downloads + - Skip straight to your pre-built Reference Platform downloads - [Hardware](HardwareDocs/README.md) - Explore the Reference Platform from a Hardware perspective - [Support](Support/README.md) From 9033c7e0bef6553bdae288a301af15b3ba057a75 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:36:43 -0800 Subject: [PATCH 126/268] Removed Hardware section Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index f3ef183..5e59648 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -8,8 +8,6 @@ - Installation and build instructions for a variety of your Reference Platform components - [Downloads](Downloads/README.md) - Skip straight to your pre-built Reference Platform downloads -- [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from a Hardware perspective - [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From eef0bc13d09187c9979591eab6a86a3d8eec0927 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:37:09 -0800 Subject: [PATCH 127/268] Removed Hardware Section Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index c563b61..842b7b6 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -8,8 +8,6 @@ - Installation and build instructions for a variety of your Reference Platform components - [Downloads](Downloads/README.md) - Skip straight to your pre-built Reference Platform downloads -- [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from a Hardware perspective - [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From aeb50715cf51aaf8c0fdd1f84382fefdec1b0e1b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:37:29 -0800 Subject: [PATCH 128/268] Removed Hardware section Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 55b4f0d..9018072 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -8,8 +8,6 @@ - Installation and build instructions for a variety of your Reference Platform components - [Downloads](Downloads/README.md) - Skip straight to your pre-built Reference Platform downloads -- [Hardware](HardwareDocs/README.md) - - Explore the Reference Platform from a Hardware perspective - [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From 697ebf008108fff2e141e8cb94a79c34ac49c87a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 17:38:05 -0800 Subject: [PATCH 129/268] Removed Hardware section folders Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/.DS_Store | Bin 0 -> 6148 bytes .../Platforms/Consumer/Hardware/README.md | 0 .../Platforms/Enterprise/.DS_Store | Bin 0 -> 6148 bytes .../Platforms/Enterprise/Hardware/README.md | 0 Reference-Platform/Platforms/IoT/.DS_Store | Bin 0 -> 6148 bytes .../Platforms/IoT/Hardware/README.md | 0 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Reference-Platform/Platforms/Consumer/.DS_Store delete mode 100644 Reference-Platform/Platforms/Consumer/Hardware/README.md create mode 100644 Reference-Platform/Platforms/Enterprise/.DS_Store delete mode 100644 Reference-Platform/Platforms/Enterprise/Hardware/README.md create mode 100644 Reference-Platform/Platforms/IoT/.DS_Store delete mode 100644 Reference-Platform/Platforms/IoT/Hardware/README.md diff --git a/Reference-Platform/Platforms/Consumer/.DS_Store b/Reference-Platform/Platforms/Consumer/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..63f9aa988f9a5ffa587e980c573326c0e3caa758 GIT binary patch literal 6148 zcmeHK%TB{E5S)b`Dsjn?qd$TEK~#l1YJULKRDfueswJHBk^LZMy$ec|NWcXlv@6-O zevGpoDYh4YEZcek6aeNdilWYhY4_yNg-@OlC9m;}1}#olVLP$VU+mJ@3*6zzh~LnU zf5)B&?q!S9?s2i+H2Xtu17C9XO;y$H>jpSCFE^R_4Nm=I&f#ekTQAITLxE5r6bJ=E zfsq2dv(@HThEazCp+G3`seqmjiAAw=>;=X!Hk<05jpSCFE^R_4Nm=I&f#ekTQAITLxE5r6bJ=E zfsq2dv(@HThEazCp+G3`seqmjiAAw=>;=X!Hk<05r;89f8kHXrwSOF}nBWF4*x(I2?ySZEw|pw7 z4;*iBD7N3v>FxPE?D@-e%BpjMBXdU1(;?G_#(*(k4E!nstl1*7Q$@4JfH7bUv<%4i z!BYj(h>c?SbkKwrfHN=aH5Zi)c>o``~QBDJsAVWz`tU^O|w Date: Mon, 12 Dec 2016 17:38:52 -0800 Subject: [PATCH 130/268] Delete .DS_Store Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Consumer/.DS_Store diff --git a/Reference-Platform/Platforms/Consumer/.DS_Store b/Reference-Platform/Platforms/Consumer/.DS_Store deleted file mode 100644 index 63f9aa988f9a5ffa587e980c573326c0e3caa758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%TB{E5S)b`Dsjn?qd$TEK~#l1YJULKRDfueswJHBk^LZMy$ec|NWcXlv@6-O zevGpoDYh4YEZcek6aeNdilWYhY4_yNg-@OlC9m;}1}#olVLP$VU+mJ@3*6zzh~LnU zf5)B&?q!S9?s2i+H2Xtu17C9XO;y$H>jpSCFE^R_4Nm=I&f#ekTQAITLxE5r6bJ=E zfsq2dv(@HThEazCp+G3`seqmjiAAw=>;=X!Hk<05 Date: Mon, 12 Dec 2016 17:39:00 -0800 Subject: [PATCH 131/268] Delete .DS_Store Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/.DS_Store diff --git a/Reference-Platform/Platforms/Enterprise/.DS_Store b/Reference-Platform/Platforms/Enterprise/.DS_Store deleted file mode 100644 index 63f9aa988f9a5ffa587e980c573326c0e3caa758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%TB{E5S)b`Dsjn?qd$TEK~#l1YJULKRDfueswJHBk^LZMy$ec|NWcXlv@6-O zevGpoDYh4YEZcek6aeNdilWYhY4_yNg-@OlC9m;}1}#olVLP$VU+mJ@3*6zzh~LnU zf5)B&?q!S9?s2i+H2Xtu17C9XO;y$H>jpSCFE^R_4Nm=I&f#ekTQAITLxE5r6bJ=E zfsq2dv(@HThEazCp+G3`seqmjiAAw=>;=X!Hk<05 Date: Mon, 12 Dec 2016 17:39:07 -0800 Subject: [PATCH 132/268] Delete .DS_Store Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/IoT/.DS_Store diff --git a/Reference-Platform/Platforms/IoT/.DS_Store b/Reference-Platform/Platforms/IoT/.DS_Store deleted file mode 100644 index 19b1f5c63b085ac5b27efd6ac7eb0666f23f8717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!A`?441F0pY~s=*$9w|&0aT50;D#6<09vOp(b9=g&izO}i03$}TD6FA0fg+y zeyL+O$%|Ca0Nk?97eE4FMirdQX+}imMF%p89+`CE9TiIcDm)k4L9{vkA_H=Fb6oSz z?r=%l-rr)iuF8F9%Og=`m1TMTx(42>r;89f8kHXrwSOF}nBWF4*x(I2?ySZEw|pw7 z4;*iBD7N3v>FxPE?D@-e%BpjMBXdU1(;?G_#(*(k4E!nstl1*7Q$@4JfH7bUv<%4i z!BYj(h>c?SbkKwrfHN=aH5Zi)c>o``~QBDJsAVWz`tU^O|w Date: Mon, 12 Dec 2016 22:18:27 -0800 Subject: [PATCH 133/268] Added introduction Signed-off-by: Robert Wolff --- .../Enterprise/GettingStarted/README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md index e69de29..24ae2d0 100644 --- a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md +++ b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md @@ -0,0 +1,17 @@ +# Getting Started + +This page is designed to bring you up to speed with the Enterprise Reference Platform. You will find categorized information, links to additional resources, and paths forward to take you deeper into the platform. + +## Introduction + +The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. + +- Unified Linux Kernel +- Open Boot Firmware + - Compliant with ARM SBSA and SBBR specifications +- Debian and Centos Network Installers +- Openstack and Ceph Reference Deployments +- Built for Big Data Workloads + +*** + From ae1881d9a358bfcdff82d8758444cfc1153eedc3 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:20:24 -0800 Subject: [PATCH 134/268] Added introduction Signed-off-by: Robert Wolff --- .../Consumer/GettingStarted/README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Reference-Platform/Platforms/Consumer/GettingStarted/README.md b/Reference-Platform/Platforms/Consumer/GettingStarted/README.md index e69de29..529e8b6 100644 --- a/Reference-Platform/Platforms/Consumer/GettingStarted/README.md +++ b/Reference-Platform/Platforms/Consumer/GettingStarted/README.md @@ -0,0 +1,18 @@ +# Getting Started + +This page is designed to bring you up to speed with the Consumer Reference Platform. You will find categorized information, links to additional resources, and paths forward to take you deeper into the platform. + +## Introduction + +The consumer reference platform aims to enable the latest software on a series of embedded hardware platforms. Open source boot firmware and a unified Linux kernel delivers an excellent starting point for your next embedded product. High level components such as ROS, and a standard GPIO library are included to help accelerate robotic enthusiasts and makers. The consumer software stack provides two builds based on Debian and OpenEmbedded. A graphic user interface is included for each variant, and both are validated to ensure quality and a great user experience. + +**Features:** + +- Unified Linux Kernel +- Open Boot Firmware +- Debian and OpenEmbedded Builds +- Desktop Enviroment +- ROS (Robot OS) +- Standard GPIO Library + +*** From 734ffd2ef995b34a60aeb870b6304c920aa22a7a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:22:22 -0800 Subject: [PATCH 135/268] Added Introduction Signed-off-by: Robert Wolff --- .../Platforms/IoT/GettingStarted/README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Reference-Platform/Platforms/IoT/GettingStarted/README.md b/Reference-Platform/Platforms/IoT/GettingStarted/README.md index e69de29..2fd8b65 100644 --- a/Reference-Platform/Platforms/IoT/GettingStarted/README.md +++ b/Reference-Platform/Platforms/IoT/GettingStarted/README.md @@ -0,0 +1,16 @@ +# Getting Started + +This page is designed to bring you up to speed with the IoT Reference Platform. You will find categorized information, links to additional resources, and paths forward to take you deeper into the platform. + +## Introduction + +The IoT reference platform’s goal is to provide an end to end open source secure pipeline from gateway devices to endpoints. For the deeply embedded use cases, a Zephyr RTOS baseline is provided to enable a series of hardware platforms, which ships with a rich developer SDK. The gateway is a variant of the Consumer reference platform based on Debian, leveraging the latest in cloud and container technology. Secure updates are not a mere afterthought, instead this software stack has been designed with security and maintainability in mind from day one. + +**Features:** + +- Zephyr RTOS with SDK for endpoints +- Open Boot Firmware for endpoints +- Debian builds for gateways +- Secure update pipeline for all devices + +*** From 5f88003912b58b9de4349cde5fbfe935ea029760 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:22:57 -0800 Subject: [PATCH 136/268] Added features Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/GettingStarted/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md index 24ae2d0..9bcc90e 100644 --- a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md +++ b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md @@ -6,6 +6,8 @@ This page is designed to bring you up to speed with the Enterprise Reference Pla The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. +**Features:** + - Unified Linux Kernel - Open Boot Firmware - Compliant with ARM SBSA and SBBR specifications From adf499b36b437ccbd125a5fa27edd2e16632b27b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:24:29 -0800 Subject: [PATCH 137/268] Small spelling fix Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index 5e59648..c4147d3 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -1,4 +1,4 @@ -# IoT Reference Platforms - Documentation +# IoT Reference Platform - Documentation ## Contents From 54c8fac5c0fa045f12d48638bdc66f1a1b87c384 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:25:06 -0800 Subject: [PATCH 138/268] Update README.md Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/PreviousReleases/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/IoT/PreviousReleases/README.md b/Reference-Platform/Platforms/IoT/PreviousReleases/README.md index 58b8fc6..05fa559 100644 --- a/Reference-Platform/Platforms/IoT/PreviousReleases/README.md +++ b/Reference-Platform/Platforms/IoT/PreviousReleases/README.md @@ -2,4 +2,4 @@ ## Choose your Release -There are no previous IoT Edition releases for the Reference Platform +There are no previous IoT Edition Reference Platform releases From 0daa8c156e6b69dc0544f6dec73b08a7a41bd502 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:27:13 -0800 Subject: [PATCH 139/268] Added top content Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 842b7b6..ff8b3ad 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -1,5 +1,7 @@ # Enterprise Reference Platform - Documentation +A comprehensive guide to using the Enterprise Reference Platform. This guide is written by the Linaro with community contributions and links to third-party content. + ## Contents - [Getting Started](GettingStarted/README.md) From 747e34776998b7cb7c17e638687cd40611f641c1 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:27:58 -0800 Subject: [PATCH 140/268] Update README.md Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Consumer/README.md b/Reference-Platform/Platforms/Consumer/README.md index 9018072..59c4045 100644 --- a/Reference-Platform/Platforms/Consumer/README.md +++ b/Reference-Platform/Platforms/Consumer/README.md @@ -1,5 +1,7 @@ # Consumer Reference Platform - Documentation +A comprehensive guide to using the Consumer Reference Platform. This guide is written by the Linaro team with community contributions and links to third-party content. + ## Contents - [Getting Started](GettingStarted/README.md) From dcc64450cca5639010819ef8e4a4c556d08b096b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:28:36 -0800 Subject: [PATCH 141/268] Added missing work Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index ff8b3ad..8095c6f 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -1,6 +1,6 @@ # Enterprise Reference Platform - Documentation -A comprehensive guide to using the Enterprise Reference Platform. This guide is written by the Linaro with community contributions and links to third-party content. +A comprehensive guide to using the Enterprise Reference Platform. This guide is written by the Linaro team with community contributions and links to third-party content. ## Contents From 41e2041fdce519f8266b0fc51f0a9023efb22cce Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:29:22 -0800 Subject: [PATCH 142/268] Added top content Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/IoT/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/IoT/README.md b/Reference-Platform/Platforms/IoT/README.md index c4147d3..5cb578a 100644 --- a/Reference-Platform/Platforms/IoT/README.md +++ b/Reference-Platform/Platforms/IoT/README.md @@ -1,5 +1,7 @@ # IoT Reference Platform - Documentation +A comprehensive guide to using the IoT Reference Platform. This guide is written by the Linaro team with community contributions and links to third-party content. + ## Contents - [Getting Started](GettingStarted/README.md) From 9037fa4b33c8978172b964d0b5428d49516c3c48 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:43:51 -0800 Subject: [PATCH 143/268] Changed top content and video. Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index cce4ea5..e6835fd 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -1,10 +1,8 @@ # Reference Software Platform - + - -The Reference Software Platform Lead Project is part of the Linaro 96Boards initiative. The project's goal is to deliver Linaro output for ARM SoCs using 96Boards products. Use cases range from the Embedded to the Enterprise segments. Releases may contain bootloader, kernel, distribution and/or user level middleware/applications. Loadable software for 96Boards products, reference source code, hardware dependencies including porting tips for other SoCs, configurations chosen for the reference builds, and ample documentation will also be included with every release. -For more information about the Reference Software Platform project please watch this video from Linaro Connect (SFO15) +The Reference Platform is an end to end, open software stack. This product aims to showcase the latest available ARM optimizations, through validation, on a series of hardware platforms. Each reference platform is focused on a unique segment, providing everything from firmware to middleware, while reducing overall complexity and time to market. **Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md) / [IoT](Extras/ReleaseStatus/RPB-IoT-Release.md)) From 45245efd0a0854b54fc34d88cc5151ccc9fb5396 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:47:42 -0800 Subject: [PATCH 144/268] Format fix with video Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index e6835fd..0bb8dd1 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -1,6 +1,6 @@ # Reference Software Platform - + The Reference Platform is an end to end, open software stack. This product aims to showcase the latest available ARM optimizations, through validation, on a series of hardware platforms. Each reference platform is focused on a unique segment, providing everything from firmware to middleware, while reducing overall complexity and time to market. From a939f17ac959803b22f179c817bd06327bec3b7b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:58:27 -0800 Subject: [PATCH 145/268] Added images folder Signed-off-by: Robert Wolff --- Reference-Platform/Extras/Images/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Reference-Platform/Extras/Images/README.md diff --git a/Reference-Platform/Extras/Images/README.md b/Reference-Platform/Extras/Images/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Reference-Platform/Extras/Images/README.md @@ -0,0 +1 @@ + From 2ae07e52d569992a221e7faf679e539507a88f8f Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 22:59:02 -0800 Subject: [PATCH 146/268] Added RP video cover image Signed-off-by: Robert Wolff --- Reference-Platform/Extras/Images/RP_Cover.png | Bin 0 -> 498148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Reference-Platform/Extras/Images/RP_Cover.png diff --git a/Reference-Platform/Extras/Images/RP_Cover.png b/Reference-Platform/Extras/Images/RP_Cover.png new file mode 100644 index 0000000000000000000000000000000000000000..41192ff0cbb7262978b8bcd3d09e2f0267bf1182 GIT binary patch literal 498148 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 PAtBeX)`mSI>z38mKX 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%0DKIe_Av3-Bov44DaY~Q^)w)1w^MpOPH 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 z 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

aREk#=3VEg*SJCft?^Eu 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

->i%`-{HSn#M)wPH;U!Ua!_i@Sa-ZC0ui@4}NYG!2obTkH7Zr!$)!N!NZuG zosNFyg6=w;&H7|LIfgIL9mwVyL#`jMjr1G1@YQF`F=6Fd9Bvgqi>br~-Y)EKtsWhN zHnM1(c5C6E+qM{Qee5}(8sO?)`nG#$INFC8`@%fi3__{!ZG@bfO@>o+sE zEmO9cT9oYhjqLX`Q_R&lnLoF)F!9#!`nkFtSHC?{Vxh4Wyl1XxG%%Li7i)O0<^*qY z&T008J#i`2lm!77KUBo$d@XKJ>N;IntNxG5+1~O^{*}@~f;Yhz!uhd~(;|_`N4F@$en; z`!Ra|-57uTe$2l2%eeF5uj9^pAIId~`|0=gcCszZ6X?-7IP=ILj$5m_W8x(J?7fQC zn`g25?DJUp=BwCVT7XA&XM{@gI@vFbE%Pq7$|AF8fD^8DcU(qqS9|nzcSL_fUwi#A zs9_FxsmLK!5t(ckoErq%h_{DFrzuP9wva^(T)DLu>+3tQzOfUVo65<$^$@0Rrgq@J zjefj{1F}lMor6>QmVA63d*s&X1;5W?Ppd!95swnIuE&le_`&Pjdq=Uhxf?6%+pz&3 zWdO7Td3dt&uM4LM4>=_D`zGLlwzbpto}R84gx?*Z-9zA)LHOzhZSP^;Bf%rUBO}qy zV`RnKJ2$M9d>!zyyck>GJdMq#U&i)}ui{wRxVaq1n@hQ6{lJ|rj!WVt%Ct^(QvcN1 zNbAC}habf3M}HD?B^#boWV&bDX-*(M7@xHql?+t8tVw6ZkuaUYhGX1zvxCAQz48tkSv{|!&S4t z@-{Ce^5y)pR_0yEuoXh&WIBR?@A3PDNn>c-Q5rn`&Id8a~6}FjhKO@6+m1I63l2Gc1{;7!3xoDq!5S`NxqD$WiGY>NQ?9`+8 zW8%SkG5O&An0)e43^Q=;)bW_Q?O)I~+I!sA6{jlk7`S5SPtS3li!pUB9meT(uCHBX zo~s$@`gbOdj)d3zTORSxx0BTG=nVM1lzP32Nur4;NXf?W4K6#+VC-$a<% zaC;MkSH*xU2$D7}@|-M=d77SEn13ky1VLzPb0bz(R%6vjqpRyF)M#;%3N`ARh~4kP zBq{I-=pqx9AJ%tmeJz%kmt$#pDOOfjK?0l6V$w@wvz{_hS>N)WN*C+9PF+`4R;q6= z$J*LzY$150)eVzDdQrw32fH+fswIa?B9)bm@2ob(pCk+ zbhMd-@A|#czn3sSCkTbRJYV|Qyw3M6OUL^vVhnBlcFMl)MSupu+IfbW!_t6OzorfjWx!`NTdiMl%Ghe zO34V)M@CTFK_K^gYmCXt(o!rguf#UQterMAh7s`kN764=S;5T?X3Xec;N305tJHTD z_}x%&2R2n07uZudA>3Z$BjV&X|*nDGE7!WQ#c z2qAN`)oL-Wo4~H{&-<%uyt|d}9-W+|(ByWP9Ls9XI+IkCs^~NzgK#7~xpl?)Ynd4l z)AlirGT*tD?U;I%Z=b#-}n-#kdX{>qN0$w*WTA3J!50goCnay z_hS0-BN$7!I6Q(*njgmWgZnW)KO2K1gVEW}_#SPN6~tD_9FIJb56JuLak;PG%zcK_ ztsx2r;%)oY@inWstFp>Gu9ix5>=^>Um-C zh`i-|1fT5tJaeP?k*Q$YxnL?kzb92UZrv|Ga*mY$CEc7$o_|-a6X!{bZ{8EOoua~O zmH}))xAl8<3=L09DB)eV6Em}n+v9lh@h{>r|AGrrFlJpJsm`1Ei8CcgZezlp`qeg}xJ2Mk7Bg7cYL(bun{ zdn7t~2ct_X_1QZy^Z1>3^1(;(=m|{q%v@U8cgo)-L*0e2t`EwDZ2G=~EDo;+;pa#< z`?KJ!=bZznMKEpVKcc4sQ`pn)g)27;C% zkgUCa8c#p{yZGXt|0Z63`P+=tete`N@9jkWod0Pd2hXwaJQhFshj{jPe;qIX`R`-x z*_XinR-|t(>+Q3)NB)sxZYgJ+yXgP+<`8rV;Z~aXgNc5Ie~Ph*XrGt>M+}6n3bOYp zS2#&aWrbm~+W|{GP4*}J;~9eb0kjl)r_xV+(7l94=A(cQ0D~yq}pd;xTw9dY-c_J4i z%__*?ubPbSgAd=2hrjqZM!@G?las07y8y4`7GQZ?c{lnkmBci(UMLd2u4ulQu1Hp+ z`dyTGV!rCxa;W;>XMRHJ0tUt=qXSv9Z*&a0)z24^Pic=bN_PLPT)urXCw|O&nZAAh z+t~xhs{VD+-c#Po@~+x#yDB>EQN=3b;G9qal-coQOyntD95M>H__Vh04f#I$x(!+$VUAmBAMcUx zzW;GFpef&-EZM#_J7?&B7hCq$<5Yj5FQ3N7i)R_^=Xgg;Y2g1V`K}8Y2kG~9Z(}u% z;Bn9QcA^8E-wht_Vf>q29Wg#M7~=*z121)?d?pPuQARQpw9C2J-kD;XMjyL7E-=F1 z!-p&`F2|dNCFH5K*xZE2(SP=>_ zZVYDF-|pd2I-)zHgq_1o>Db$S-$w6j?{Rybf)eDI;wtdLx|9PG{$G6XLvlCW79D-ITt;H zV>~wy=RFXkZcTXms84Td_|y812~?xv@-5C&`Qer74(CaPs%v#$<})|0mFpg_FPBx( z^VHBYJ;RXedn<3^(6HFst8oUPmP8w2Slek^G>7B3ttSqE&$CO-$nCpgN-Ja5EASe2 z+n^QetFg-jKR!IBee@5=?E>ca(LM7hx`7K1zh3EF z6hTw}Ia(0OkY9E-aw~YQn9z=`g;%kb&UM#Qfa-?f8Jxb8PLhZE=}QERt>xD||F&~l z+uNPz7W7|4RSn^$+n>M;Tft}OXVSLibD|0{w2odBtMllkMdW72MP(CkqrZ%v;W5~g?!+NQ@S>0C1O2z@gKc;5bp~`e1eW#1qd&Gx z75w&$%*4RM52ANevvY;%L~j+2t1@*J#}tLqS>imcG}a-+3ULih?0b9CXGr?4OUt+3 z#0mPWlQHn9zew-N7N{W8l2j`>8Gfxy-TJCfXCHP_&dB6Mbayf*WuWXY1R-(0E4rtQ z-J#Z15Z9fRCC2L@`3;%=a~P}>@eX6QySb5$|5Zq6eRf74YlR@39Jd&g)rHu6^-cD- zQBON~CM`Rt(;4NQyV$|IGU8gg%DC$vPNk|&mJJ@_(cdSODPB8q718;gw1l~kw8QLg z+97>*%k$hF@ZMBL3e9cld0)E1Q3W4kX?Ze{hb?d(WfbLYsw~U1m9W&#^KQXA+FFT? zmtW_&bTI~wr`DX7siIO#0=Mv6XE>5vLDrRl3l+yOF2}&Vu$@dT!iE80gnNZ_1x14> z3CoAzSS_;B3g?fJ#2ejxVYJ4P=~-Z@$sC3nfhUKjm^X}-+iPWYMHgV^UbrROK@YY|BFsmO;gI(y4^E%i?;Y*4v${))9R-&&}G}-6!7g}?;9p%tP zlh+0_Im@678Wl~4JOi`bbB10Qva~M&5I6}D4WxBF@Z3q|I{7m>fW}_ueTVF-Wa=gH<}~hJ?A*{Zwq>9kgs#*rF7vBOJbSM z=;$Af&Z&FRTLrt&0$zHM7KiWxMq`zqINRF>A8h4zpS^__am3NBtnCJA0Qb4IXBUCb zz&Hm6$Jtqp-V5f-)^e;o{S?}>5SIvjOxhefqw*Q~I(?Jrk8A_ny<-rxUEmOS;hFDF zWnRnQBwk@op3$FO&>Dk=^$iXHYVa*QBTpgS{7~=xNhwi}#a6gbkAh})>N z?4y6>zZ0&7Z~lvaq#M$0x0}*2+26;|seO36>mX#`mw3kvPJn3wwsb`P7>PJZjP3Ys{BL1a<2EEq>_tO}3X#?SYRUoB(d8(gC`zJLH31;M{lvJ%lcG zkB%Wcj>i;uNV?}v02iPS;9uI{*G3;a%D(P(%Q>ZHkPPNj2mH3QUF$Q){+u$6dTIxz zFGF}EecEllc^Q|CZL`0T3p350F8XpeR$jg2U54Wh^3uQnWkRdK*Dd%DX~FdU2N~^u z6Z&-oa&oN1Nh9zQ4e;t2e3AaL8neh(TJur1d}?l<$uTVQV9C`*>Q+Vu+^UlK;uu_o zjIpy3oA4g;9dXKBX1;xQ@@GCk zt-kN2axdSi&hvr#yvpU-8`){ev2LT7x+vSq(X8^cM3>%3{%jXHMSAPpmu~9t-|o)`fKIuJQClXz)Kt< z&+Z|wooWsIgQ=2p!3VleFp!aMSL8MJ;1|S$Tqym+d5eDAc>N9Yb2%;zQjmNEa}0S$ zIm6&N!!vWq7t6~V@I>XGu8anOP2s+mPo5s`#wIe65xYxr#NCS87Y%U30CgFJ2K9|i zGWVEYITj^2T-nX&f)+eLDpqgeWXoxT#;eF`%N-<#$mIL*;pww&e8SIMWeM|=ehYJwxD;P?8WK^f?fd-87bzxvabhweBBUmrk&jJlfc5lp2$ z?Z8Xt*i>{dFFKLo#5wMg)2Kx~LXXO{E}#_}q|9MJhBI(pkvn-jf_c+H9EL*CG6 zq}OkHkG}5(hfItP#qdD01oVT~*oNL6fuofv9lK2M-fh&yV3Y&!_bxo`t{cQ@G4>W; z#j!Fv^I;bny7l@QeFfdiMXsBCVrkRGrJRlPTfTyR7Kg*<^)U8LXr2Dh`-exkEWHzC zRiIa6te z7rx~g6W7oGpZ}l#p*(n<(yG8Ctu0530Z6E@QA1K8q7}(8;M*LEKA5g92C@yJk=st` zz;g!Lh_~i5I#t}FwS(e+A~XaDqu(hA<&e5n2gXq!Qyr;9li5`Ovd4WO|NKC*WPnTS zzHWrGCIAkBY#VT|^GNhh--){n(DbACVsPp%6LBW30y87nU-UNP1R?#jt(Zk#f-o>#6n-TUq)}+X|$gpNbPOH_^lO1o(cmQPX+`Si(~ru zl(BLfN`D{1GK_*XYj-929HDZ19Y+5fhzx`ULH)9w@3!~G;j#XZcGDW}=mbD#a`d|$ z3}!;U3doF8h|w_&eNIS-{R#bgsK9*S_KN*D+}64V07r;R^IOJT1%?3&T=91mU+WyB zNFKnjyOmhWp#4;!Y;teCQe=P#MeJHaxrG|WtaoxYM(*5C-*5ZWuf=5AUU(h5AkDp9 zx2defi4pH$^7VhfY@pIGtS|tL`6nQ#v4l^pkM0g+k(~Gi&lfIKM_|CqH6!LlPZ1W1)3%|~vzO({8pnp~5wfKfsU@a9s%)3*F{lzg% zq|Ez`l&hs6`GMiFn3>3K*IiLb!q^~;~ZZSa+bF6kCCPyIO z@?8m6FT(``V0{mccxE>h%qsF+g}z`8I0pw*8SW%vdWf39=@rRJ@(^eIpZl^pW=a$|<1c8b9 z7@B_w<2{n^OQ_O!8L+gu{3exD`w)*kVE>4+k|09t8WU3)0a!)HSv&ni54y0Ra${c@ z#$Vh z(ccofu@QuUQE)aeXh5GP1k_+P`Xw}Aj*As;$8<|oKTL~CYFEf6Ca3awnJS~!8a2!N zhxEIG$o~=o{YH*SgxF^)RIBcV%ey?m*A8Og&(a58P~lH z@ey#pVU%#jb_>GK`Js4+@19XsS%EXzm(D%2IL8b_ubMy&IKLY z8~J>Xv0Hudb>b5lf4BIm%u35D#w1t!p>ypr;AfR0&uD?nqc-~4tv_xbbv~(}QSetu z?bb}^xWO)t=*yPvSXqgKwRIR)aJB8EjV+k81KS4NYf-yJU$)2@g;8s)Tg>mzn6%J9 zC>WZWjR)_35JTe=z`${I_X`(~V`yYF4yb<@jOYD_z{&71bmKUTT6>S*`g1*E{1irK z=4QhvwF;yP-jfL6MqgJUA`Ufbtqj(;6?xzp;K9Hsj%QlXb4*1Z{EuVc^?K`fD)Km{ zA`e*Pe+qHk2+IbC(yymJR%*f2e^*If_8V~3h#XUag5!$ z7ni-@W$LJXzCm~lu;bRk)kWwmwA8+8HXG6Cq;C7ISm%8O@5vbigU+_tf1t=^iAH2 z+28zGOfi1LiI0bXi5~8rM+3p~XnipjzWgNVND41k3Yo$`>Hq2s9;|CnU$QE;1~aO- zf~KD=5DuOqTWjH2-dRWI2hg=tobrv|OOeNz_KnTP7{Z(W9?$jv4eiSL0xyoJ1bx=3 z8(j9YD)JQkkX4XV`hn{S1kK+5X23SWqwd7U0{jQ~G?*W~;G5ym(VWX$@WQ+B9lH2X zK{fZm$1&+vbN#o1M;s?<;6QGBErPz0r7z&u&!KDLC+EG2?(N0b(6i+*LbMh@eemxJ zcsrrXh2W3)OOLT1)X%EXk>OSF2JiB$bzTH69!|OU~WFR_aFul%vOv@aqqdxy+MP4Gj?r2AL*Q(M;s0n}Y zLmC~pfRrwMj+poGr!FqHbQb{bO_?F_3S*#APwznbd^BK&yCDn?p~aNeQYv#+vTRt_o2Ms=j2&*=U4VjSLf>d6N&Fmpf7Re&M;oFj)DtvlV~_)Q6Q%9G#5 zlPdX6;1&0fX?NeeOcw`6WLB2V;6>n-l>On&cYt^4iF7(;MeCCIY8+O7F77^f91|+= znQOV*gYOT*2TxB<#xSyYUkAKDvX6^GmV2Gx7vZ0KDWh+E8r);tf}V77geU~gZbpB9 zZwxo#4Vi<=y(-`|s?d_R6ansP1K&djr$6{bOu#n`>rzFzhw*o7@Vvnb^_LDUIR_ta z*jD=21+845vTx*hfM@v~-BRqs6RIHFG_vgTuVatn&WmTU{pxAL&GFtkJcu-}?pMc$ zKF|I~_U{>_e~^7NFrlwf(RlY!j6ZxQ?md1dM(G=eMxV|uN|o);l%@N%&Z5Yhe)r=H zs-mkSm3Z4OB=V9p5pFPXJQnCXUPsp@);9QMV?zwGa~?>_?wQp=xRhqQ^&5;nY*+Q(lQ4GB%;+iZfyQR%szfEW~glX z(;J(MP6#a$CK%6casYChrt@Tv?Yyt@#+5Awu?wO&F!v}%?z;!xNG$I}ABK`)B6N_oVT$e-+QiKcfl z$NP(^E0Ygq+~pBOr=i1P`6!`kibnGbOi2ddlB!8B>I!Vd_23J5!V~jv%M- zm3{~$?Df;YYfr=A8bj$H&HxT$)LDo2BFJfu<1j~q%>nw0`Z{@i*D`?bc2@up4hQTb z`gV$bnx?)pQy@H!-cm=1KZ$iaL*tGtLN?Zgc(4sI|fi zL_+JSwbhkaQ{f;pD*=GfS8K0Q$Q4zs{8UV+D0IuEmL~NIl1Ng4dlP|ceWh%VO$(8m zFqnz@GPe3@85lNdtq9Vr;s=lgb!#GNr%- z162C9PQnwgq}9*J=rG@7Y=C345pUh1*9*M3AfQE;mRJRbt-n@89gJ%;M(Iys*XXk< z-t>!+KDx45z`roWxAFo>AzR-$20$1U1}3MkqBh%h1F#tR**Tc6h+WAJal4kP!Z7o+ zL|wLz$h)Q_u=4w#(Po2v5c!l>kT7S#& zyuMfc%V$Lp`CN6iJ|~|Et1v^Sz^;~Z`VaK{45F%kzEhbYvWhX496nQyJ_CUUmSy_N zv8=k~7L~kLwn*7Z`$fNYxy@Wl1aMnMvF2L($J5G>xvJ8_z(PJF$=c2&005cDNkl-M0yG!S=``);A=fl1UlvRl}s zZ;UYABaH!{>KCwse$(PhC79bMwZd`%N=3yVHBm?5GGPNaDt_BM7dFbdc(A}uffIiV zcjodu?e&_Oc3;CCN0?J#SIE!q%jC(`kE?#Vb+zu>o5^ce*Q?{r$MSZ0=H}d~|M`Hz zl=sc``3)|n9E4QnvC7;AFz2`#bv+fq3XH(8R(R<$0GM*D(;t_Xohq+)x8odP$`$*S zm(OGI=~uBOgS)z%%)1IM=j18h7CxC!@S~0NwKX|68?y)i(|7L1F!V2 z@apF1mMDeS%X*bv0gw5Wz8bUcWsXVX(s!z3q2(EM%z!42qiz4$l6;YTl;5=vX_sRz zY`~14B8=^?tL%A+fc7SRR~{}u&!7Zn+skpezY(1$yU~8MjbOXPGd!36FQ3Qm@~gDS zIn#O~t?Y^t5AK>%74ds1q;|ERKojJTax#{Bd~dRjJfq-5e=vA?)FQK;Yi_MoQF4CN zirr0Jf2_s<-v`Q*#^!<^W7Q3RZWQ)}m(1Ulpqs#qyu4$l)ucR<3-|yIu)w_1G7Pvl zhYv}f<0{z(@e1&wvZ+;Irw!P1>uI{Hu*EQ!<^su8rW+{Up~&9)q29Qie6l<(jEJL) zJAt}{>$#Lj)n7Mn|G|lZtbF1Xt$4sm;M5$i{7&^Dx;qUCY%B0@L`V%L6ka>Jdg*I% z>qs<5juQpy1n#q83$bpWrRxbzShD$(oyieZWoF*y1Y0|;9IGvvn|hOF0E5-9M{y1jU=Q3Akl$qmh&X&`D=AuEWRZSTg`&R*>7=`*|dioZ^l1+7WE27MfxOufYTy~i=O9Un}nnWK!O? z0C4zWobNF&-6gZR7RN4v9<)OLqHPz)xj5d_fvnRBJk+dxwxdemGOu-Ywx!a3prp~S%(*RZ%Cr7Ecl0Vp8UyEIE z$*DLW`YeoGC5=q>poQ?HTi<*c>tBBsJ1?Hb!JAicytb55t#@731Y>Y*y9)ts5P zL`VA3=(;$H3oY_A?bjMhODur9F?TmtS4FhcDiM78D5>5~v58_G@Gedp3LF5ZKFjo* zCiB%pgU6<3V{-mZ%-(y5Kt7GY-U!1&pImg%!7_0w@Hk%3@C>%07F9*y02zjl?3Ra# zCm+P61PLxS98Vk-q&#XYR(JA-NHb7=$EPu7LKqhd=$RY*!X}OR$7(jMtqQdH6W)y!(Dk z-hCK-!{eze)3LkSbSu;bbJup?{BDfR&c*Q5R19QL z1S4pI?3nOcbtFS}*h;Ic*1{_ox~`c0;GOa#UG`AU`r4gAd-1q1n5sh%$;$D%QqEV{UvTrX(i4 z5LXbg=C#=`LW_)5?{IXDOht3Zg zk)!@+doZNAlGK@mc;}fUS}eK6%LubF6mFr^qR*`;J(Pdv9o~HiL74+bF|IR{ z5jtmj9Uho?oFSI2jK8fSw0M`1GoC!ISX(h(maTqW~3ordjYV}wY(YwXU2{`w-2ZLq=TLpmpy{&Z@bA@)hZMDTbRdJ(o z?r3i}b{5{)wb3^{AHy?uz(sd6Dy?v%zdIx3ijQ36FdD7Vxm_?AKsf1y=xU{>_4w5M zTuiBq1^4aP9cP&@N-ckxx6Q0J~bgeHU=T1@j{lbP$6GWc*;M!}u}501_Pe?voL z13`>tZjyTk2SEvZuh9gifG2Q+!IoUq>K>kqP8XmCM&r^gLxW?{F*cEX-aRlJy$aFH z_YV5kuuMJe(3Ud=X!^~SYna5#gZ&I1pd<4h@Ie=hYL1N^LsGa;i@Z&QyI0Q`>%D|w z1&OpO1lh`D%T)PWAzcLAH#i)VkC@l=P50nX^nkZ};0^le!_k?k{N_1~q4Q;$d7yH; z-m)uB`~Izae_#?n!z*N;GA;(4*;-kp?x(4kJp`_HR{ed%m}y0K5W5Jr3IOf&rIsi= zYvSD_hOdL)$LYt@?XmWOaHp?OEy&MXE#RahE%L+(KBLk(s{wt!+FG0a2qWxRDYyZ9 zmURMr6^p!H7{j+L@}On))>{{(MvfuN8C7?T(<0Y-<90GF>`oEXI^ranqtN$$nEJl1I6vHtmDkU~ z-OB-iEsoEjKS%I=yYO76hqvjw%)Z-eyU5)LTueQ_Sz8qRl*9{0<*RlKG@x6f5AG)( zQhBdc%kt~j(1abn1s#H3^uerKF9j&K0c|b3PW+sNrC{|NiTTym2meIBJo+HI!9}@~ zMS9QV?u1|JINXVYmDdQWze~%xW`<9<>&7S4rb zUei~yfpW8O)l(tjXX1?tIm*;?!P zo-j^-Sn~U{DZgI=TucDhE*8n}9%_;IW+AO}Rlpe-Xq>D|2L06TA!O=@%I&P9@FE5l zat^t>WfS`5!uC8odRc~qg~mdy4GXi#pi1qR`lx4Ms2F zG&Ipj#LUwow&l0;b9rJt#F@S;v=;oCvRu}y+|MIFZ{}JlRm**O0M^^okmh+QE1wZ= zIVoA5UlS3p3D4)rOX>Q=?cr``6y|!I^WbXdxZg^@-{607ejVV!t<@P_7`}eM#k1am zkK6^2jr_fGsq?qbe_H16jUzLbd6|AgX`{GMIo2I!`vxKSDHeI{$Zg1R6UdB{$gC5< zZ6AE7y8=|?O}mIcHiBH&AKgYg-%;7KQ*A{RVksjn7~#X9`#J;YC-&BP zeh>MF3hQF#v;{rUDsu7VjrlEJ(tu?cIyRp=1r>FDgCpQKjXwG_>g+f$erIkr#=!CJ zNYmHn3G~%n1|YhSNy5rpqo~bOy{62Wn9Xx}x^Jxg7KUgjFch-@|-Tq2>?ws3P zU5ZWWu)Xw}euWlm9S(eC^1xVKf-g?Ccc7nJak`B>4*o8#C4AQQ`(X7>-4~hcQ)F4{ zG4>D{6xnQ^Ji-`V!sp3%jL*%d0fI_31D0&Bt%5%pdl!`It-=!DZfIdYyahbFbZm`;9FSCO zA#mn?G^g%G_vD@E97hM|ix_|M%NV@(e)RKu@c#QT^6)y+Z13Eo z=$^h8z0-H2k20E^4^H2YAuanR=5lMz8Nlb(v2(YNsXX!fuJk5Al+_H8Z$<^mT>SE^S^Y{%DGIDb@* z<-2?v1f{i2cW)2(^%>H~drgqrKn(HSLHkUrJI&ZdW{HqHlA&*oO~%0FbZ!@F&@Xi# z<&ic^Xw#yOx){))^lOzor5;AayxG5ll%qDkpDaS?vY+d=-b@vYsmv&rGR|3Vly4|3 z+V@(M8NlN1g9ivvcSFA{UQeggDxY{s>xmPX2ZcF>O?^{*D`h{^a+o*APGM|-zR^O= z@g3+NiY9ICVXixd-%9kg%H4)md5npD)9*WEoz1$k+=nn=SoXf5(X{f(g@PpT9gIK#H;69jNpGk{6=1Nwg zN(sX-+a+iM?WG^I{IcD`v)8XIN~`+Ub3c(1#W|;(BMq3Ke2@2YB}gR`^|e29wp6cV zQTdNs)JMgGQCZ8_GFO=!8L{+6zurm}EEWJXo9gp&yduZ3DpWX-Jy*eU%yoS&y3NzA_CBv7?>v7~=H6bGtA$Xu&3>UB8JSjV z0{XJMoB3ti$j%vq!DNsJ@c~%@MmGXx&)w3eMR5A`bNn60v>XEWF`x7~>i8*G8Qn8i z%xR-a4(qC`fb_4(xe6Z@7OAv6(&~^tfnN2xxG)7BgAR_|c@h)Qy@`h(#Q6PpWBAVF z7@CJ>j!);RWIH%Jt?|GC-OSsrGX$aI{kUjt#^Kr$c_Gf-+P@`J4Z{V~DAVMkMl#+2 zKv|fo#z&X}hJ}ZoQzM*4qed`u9_@ z=lGaUXvZm8C7#)K-wXodCo?5{*XhRj^#iw#SATEbzj;nBKg;>`&6~gLYot7_t~sVv zE#tzWSJz-}VPwT2 z%m;nabRi^kx_|~Q?;aVCQH8L(_fl|Zz*x6~$J(KvE*`q&y$2dAK8H|L)#Oj|QNVxp zrRVUNxv(efFm?z@m-@=m-wyeBZ#&i(UdH0nFVdoD?b+9HxC*Sd5FApd`tmM=Q_cWOD%lZHp?p)%<0wee-!NeEN^E{KaqMc=Z*}Z!q8V zfdvfF26Ot5ek-{MApGg02o@pn)bC}%>ih)9bq*nrx&`^}o#^R@_Oy#Dj-zdFH_lcT z<4_-{;068M*8WeECfsiA_arzrV5vw3Dy0h*k>(aAdFf@We)Va*`ShP-;fv2=o%waVy%`{)%m%2qp#NMP z4BmQ5`_^wX)8F!TkE6!z^1SDzP)u<}m+v+ubjZ=xI_ow1F{r+shoUV*(+qit$!t#~S) z%X|J6f^KKOc}upts$<;-^UYLWD|NlPU%%%ub6)gM{x0oThW1#peU(pR!Jfc-<2>@#<^62bKY(5gnx$r*6mK8K0Bp3 z>LHL5oHM$PNH;ssva|@jm6VGBZ*avC@T38gZj&t(N*7Hwe``M?l{Q2L<0@oIweioZ5&!CrAaGYa9+44Qx8_exD zvAyt3>@0$B^t-yb44qQx_98alJdZ8j*YeNk{x^eoB@ADPH`ilFOFC%U(kFi(YoGs9 z?7sLSS}(tf^{1c2%GbZmg`4dKXrW3x_|b&>n~AxqzsFOKC-l)d@;;py9i!9Ht3i#% zKTqI!?>~uQUB@tP*NO3E{IpDVLA*IO7R`zARN!@i%i7@0VZ2@AC^9Yd!reT|85xZ0 zs$V=PKc6$rc*gk!&XCu2aj_lVUb$b{%LV`3RR^!1bhQRIlCY;`Xakv{ADKYEe;zf& z@LI1j1904>`~XhVaOwxq+1sh={!;H6pK26QO|G0^*{14PpL@?2RL{_G&r@-yCOHSh z?CQyR3MdM&Dzj4Y#p}rgFhCMuiF+#a+UZyZOy7Bij1C6QAOn32Qe$#HE(Ry#v^f#y z{gcr)Iv35kCo%rcFXPT{{*3%T$M}c;CPqH^S26zazlrHz{@a-Q)xV9Y5C0_kAG{x3 zvk#(ubS656Cm~qVlsA_aD*aRQ(bgCQP`c8>@ASg@IMK|7Nw9--#NK``Q^sA69UR+f zliA-Mb5>{OwQQf6_c_{S<)Vigsnxk$cHFLrM|G_4d2;=aez!t5Q$FtV@1+A#2>{pgTYksJ=clS;^^V$dw*U=I z&&2So4pp1c+07Rz+`38_BorBa%6_tlD&I;uFl4@WJsPEtoqq`r-v6$YRiPhMv_hmL zS`sh*a8E@}SFY;Lz`(!r!Ta&iFFuNQ-+M3S@83_tqlHm!TQGC(7ATb&*KqTFi5g|! zlzQjWrpvEhC;<2HzG}7JPX|7MATSlJzu8Kq`Eq8v|kRI&snJ zIB%<*DJxf=%PaOro%6S+{waOs9M9zUDnUNq_uKZ-jeq{iD>W>X&-_3tQ2I9REAzdo zv-z$29u@f9z9VB=6eU^?nfaZHmzs$^OQlRkS9N<3zh#Eg*Cx!^CGRWHrDDa*?^BqU z+`1wT$bKkHw8DpVm1)XroM(^_uXDeg%Umm<*moXbRGY{U2sk@J2Z025CWV_(e;WuFbJL!*Z7?)1^OTqYb(_lw0 z(=UtuxX!m%Vb~U9&p<1?Fjxo!DsZ%P$#KYG%)fv{!Q(lvm>bS573C@}yU1wVjco92ZJ2{W8=3tD>-HGwX z@5IQH_oDgWQFKhrM(^ZwOy7GLv-cmx22`nLSK4J z8km*~&g1>GmN-Tz(5fx{A#v?+doA94{dqk7$G?l`fA`n1gkW*-=2=|suJP(0YK`}H zs``_&q;J{R#d@oa`kbx5iQ~nmarEY^I9Yua`m{Yg*o>`LPviAJ|80Esm;WiA{>@*+ z-s>+T_BZHw+SQ?=ZjZL@C)~ZAa*KB=l8>Mzm*5leOLg<7B>UV2^NHyg`Vax~{rA%< ztE&Uv0O7Dhi;dN#I74vTTUm;|9k<;dCq77PBFE+yfW4KHHk6#aKADCk z{MBE^tKWSR2Wv}lxwjJ+;BOVu=dGPM=R6J%OVEnsABx4GSzg11oSZHx7;6Wro1>m$ zFu{2Td{xiDNcsw$d+;QqclH7kof9)Lz?>aHU>;)*56$0+&cOkO<17xu*I#`V+n;|L ztuMcbGw}H_*VdkY6RXg#BXGc_fi1)v;z#MQxKU+o^4icwj!8qg4g$KuNhMd^VfMf^ z|2enhKT>`Xj+94$C4c>Jf*%83&Q34M;JS*pG-sI{+po^OSLLhv6n?;?zq39+lI0n$ ze$&1h*P3ltIaHM(Cl6^W~CZH)4z_L-~Dy8zWDptD^RFsvJn5+IB7-Xo zezCpu2A=Hmc=Nk|ip9_WF*aX(89Oh(jFqoHi8uUy`T0M^!dIVXkQse)>%aOcF%AG; zD*skL`TKbJm;c{*{ulo-Uj6s~44(MM*nRrjSo{3%V}-o&&2QoPp64!}q~o{xm-gwO z&K;G_v51k`h^hP0KKCR#@4pxQ@BS*L|K!i&{=feBaqr_liK%;!qNmxc-Zj}b;01Y7 z4I+?RFT15cNB_)z70$~C}KasBgc zc>C^Djh}U;Eb)wZ)b~5){ty4R|4={R#jH}6>v{bm^)=eo1&xP++Fyh4xV859EZWs_ zGbtKwGXU@uUaW7vSq~V6D%^I`NgY)_q(j%%*0O^g*hc>#0?D1+3VYt!jFYzRG^uaz zX#&&3;r34*!s-OR6Q;4(-{T1Q2rx#Z(W39NF%Vrtqxr1<_jLY$*#(f8)6Yt^bv97| zm8z9yX&_U=n0-}-n z+@9D*f4J6h2%&31tWQ;10&r@SMeOYeI&L#`kNPGI=ur!XqYFk*KQ_&QT#+!EYYR9q ziq?siA0Slq0tsa22sWn(LX0}#d#m1X&xbId~`qZr%gX7T{n@)4*Ug}C! zd6$VyTUu+&vA4Mv+sg~N+Fy(iJbdpgf|tD~!F`~K&-$({P>INZjBLjUPB82l+6(#Ccl1OQRF&OQ% z{gi>%az)>JyL@-2a@J}@VWR_IZxwPP0H;QkZj2;Mom~Ql^mA)#Gq*w7<~AUj)WV#2EZyoC|>okg&Oy-B%fwwne71rFTyQ^rmZ)x(^|{`9^Gy!nz@@>9>ozV z24wEs;=2#bXV4Ssw!5*Gffu&v+m>4uWLAf&U>CgKlkWrgz;OCsfpEL^s0IA)Xl~Eg zY%VM!0|Q4|qmB68d&%Ud<6iKjibn+0_uOW`h)_>+miT+-W2EQjCW&YF;0LJ1MavLzF5e4tSsLk(rL8|2zB;! zrFE<3<(8>+oIx>E+$u1rU>b1SChuy&r#0p1H1q=kf3UG0`qc~QN?UJ#(g?RN9)QR8 zz%{$jC1Foo3MNbI)+3lnqeqL2#05H`){51DIJxDQ@pt>r9>VbUo9DR|H6wqzqDNa* z`laF#W>n>oN^&D~ry`8Gp9>zmD3QT6U)U2k<>yB0Xo2qtiH|-bV^Z z%&QK!dT_6=w=bhas#MVNzALU9FP)TL^A*0k9-B=4u@4KioJZTi$ zMp_nXl{gG;6dupP8N!>Ez`pM|gY>$U%0W(wRU?cj z^F^l26=C~Mi*U!|=GNLaVAYl8UTA6ATHBLj&#f}a>RkS0@+<|P6!weIZ$0&?V-S)Z z@SN6%T?5c{V0n9GH4cFBQ|_e|5aVjp`eSgNm2k_rTYGzl2AOwYO|H3Bdh+2T=nHg{ zIjLV^1s}K5P2atj*8k3-L+Jhi_+5*#iTSy-WLEgxhh}UpEKt|W7@lK%`sh#Sqgy)H zU%klfETR+fv_9l^Gur0sbQFHNvx&eCV+;ziAIgFWFa-^`vH%d+|DYrhg74}d$*8qG zV^c8z{?OOXxylpj+IF}JzXLvg1HZJhO8xZ%$Go5}i36yMbm#J-_4Mqj-Z5E4!v?663e>{mWb=@%%y;Jis`p*05cBJXT0`pDfkXBcl zS}{ULFMxe_I!p}pN1sh&?i(aW++ViV%Co%HpS5d+k+~Rr_!0cqWb%V<)p9(HaOYxAlQzp;=wE0Gs)A&sS%*J?DJamo)Tdz)4>Zt~q{7i}ra>~6XBdnMdDZ`A6HzMj1PdRk;F+ZilE z_bge4c#roDk~DqiP7FF9oB*YQa>Z;mjsRgrrLYp)rP@o z{lm=DzLcA{x8cc|S0~7h@-J>@Jp#`ebvR{BaORcVgp8`H%pZOHI&>(sS|2P6BrMYewPMFM8#>b!M$hx^bf4`MM z;FL}6k8{R{=}(pIL*N5kR+Ls|6WD~l>=>L(gR7Cdk79WCK{O|ww-f1J!)V>Q;WE&j zzUQQk_U{qjDs_-%FfZVxJE1ujjs7^~qb+FT*4k!~8Rfmfd*V>>hygDTl=;Ew$sbrB zaB#Y2g9eP=eUQP>`oO8uuM^tcKnR^4DeiL`?dK^IufaF%(?4`PMMx9j!GTxZw@K6c z8a+w#^$%#?gYPj|i~O@e^)?q@#m?#*V78V|e<(@+dV#^I=)3B_k+h|rkDiE?e-FB-V01y-csf0Bh6!z*fNHf;qXpTT|-P;YJ*D1b^!8@Bn zJkN7REJ2{r7mL<^d@;@ed__mC3kne_t+ZyP-Bq3WQwy8c+4g%B6lF+U^}4#B&s_J` zb-KP*(<=}8tS7fRrzFdCr9t0zsu|A?=x2moD#s1J zy}kG*{oa)bvu`n~B6sG-@Z?N9eCOSCz`wcb78wWeaHSs>CtFund-Q5jNk1R#K%9VE zzbg#y9i8#b7Vm7t=GsQCrXM5F*>)L0nLZi(Lzr(Jt>(N@@y)k)4h;*w6WhS$?h(Q_ z;~+8DVQa_v5rP-_6BkU=XgBhHkbqZOH0gm7>rU1aW=$WF)rXndqIEgBU6}4<$}bDDfiS6ZTc2D*Fr{wS?nBVmbwD$>nCl!C zywK4R`gI#Z5OIsJ$_{^z=vxsScuu=j5KPWY=XT@+n3ZnIxO@LzZq3*>3O0BzBb7rR z03&cA#MOlf1R?z+s>nMQPr@V}9McCd4%_rY`qp5)&)v>Ks}7)nG7Zi%BkD;T6QYh3(Ynj5E5Kf=C;(=U&ixj2^OUTT zpZagLTIrX}Xk!XbE~LqP4DfCb@O*x-l@9b@fBw(8%6hQ)yg1xHW!zveF5S}V`#Ugl zN5`p{?Cf@%cX#?w>^wWj?YBm)HL5IJZ?SsZ-%p`Y08yDG6Q^(|9WVG}9)Yk3PaVB5 zHndB;-VZZo+mHys%YEt3(rw;a(b6$6fCn6YOaT9VQ$il!gf8_C#K8De+@S+BegJl(x_F9Sjys>ti>;7$s;D%%V^<2HGf zZ}x-!R9p~ij#r92=!otPtcPv}Zbq#w%9*aXj#{h5VC5rEWdg8Lf@xHWJjUnBM;=GV zOZ&B)W3m;}Zn@{TQc->sMP6AMX8cdUa|l2?;1%)vG44k`3`t<6MEc&zMN41bGHr& zL(ClmtGEy-d?`qzLQI%qe*9rczN@o}qIjn)_<<|k=9AWEF#GLpdD>ZtUFN?L2veD) zpq|OWp$;{P8Iya52x?o zDXk{oiy>fEs{tgP6xLes7h5mC;V1k!bHd1l)1yPt01@av&BYG|kHZ%2s_K3#r6Ld9 zH8vMRk3NnDaG*tkc-}4hX9zxf%P)Z~c)|5I=|A~)s_H2nfzEcpM>U{FokI${`c{L# z0XFI^H{T7wtLTzuD0uI|tGay)sWivqhm-sZ89Bp1dYwbmSN2?MV`K%ekMhpMh5-B(a1y$PEIFX(BXRe^mR+ELh)WJeNMV?x5?ae5ifmla@|GC zUht|55N*J?L1#8!zfN2ba;41rusFKc|P zztU7Nz|ZNgx?4FA;YUj|l^0s~%a5t(75_H+29gft!k%=Ea}@_JC`qqW2FrKVsU``w`kq8C~$mD)NlftP#^LaKG2m-3#~!9C-$g&_Kh*_1#U{3eLOo`CIYFjj@>+ zd&j7^^U344yATGd*Im@TJ9lD!elBL9e_DgpE<2RVT)@f%kEg=P-Gv=Zw~jV*>t~L) zG($QkeFv_R_LzaU?2DU;pXsYk`mPcVx_?GLx~OvjuX{oNp6zWhP8?~MO1!cawN8#t z>6<*a_^bKAZ{~f#6LionjS@QPGig;>pvs5yIor@VeK$t#zZ>^H_(jY-dN&3p=b|aT zfN$)F#}^;Dbs8o$Bj|1|zfJ>*>pFl>x*KsuS^Lo9?Ue2G>$<^n`^bdn$zzC1&JVZ_ z4moC?sa(FL$m@Yeot%xi$M2*ceq{ymkg}t4;lu#-fgbAHZXbHM^6EwGBRAhva^!_|lH+w%Okl6Xx;9({5D9q`&DecD}M z8G1nv(1lh~2c~3LWxb!2*HLkAj+{nU~XEf~6{MJAJ=OZMK z^|{YqU$;-|qosaV;%O%@gf=Z7c(&d$Q+yioHL}DjznK*)tvTntj5I|~2H4E)vTf}8 z{X*`liE7U8*+$N_q~JXxC*>AQ2#(43_`@0Z1ZId$Tf2&ZE|`Fx6cR7H_%`oe^6n+? zY6g2@IXrJ9nOtpup)7)Rn2Qy4<90P)MGk9@IZg`FX~=8xW;~`YY_p%%p!j>q*_9o@v?B1xy-oud6W> zMh=rn)T+idYWkZ#K5QCwxPpf|am~s(B~_}P$t00;CED*>U;Eq!`0QIr7|4|msV2lz ziBd>-{E9CYPRY)Z}hK!44Ey`a8%q@ONbzF~|&WjtGs7s9snL!b``L&6x(<`xmYkxC4o z;rlrsX`6jm>S3Y~%5n^Zcjue)D$5Ygg$wTI!&mb@U#yOnM6r}|e{_vgPqOEtj;0(pt#vBN>&_`zq7O#kWlP?G{KCm-?E~fw9hM6^za48;$Jt36+21 zlwO!%nWpqZ+24e@a&=q3g$?F%BkIViDoxU#XdiT@7hFKr!EgHQL@3J4xr&{PNXRub{8>g?>3KL*Y#8L@jxG zD7%~A-7p(z^$yc@cCeLLklW8!}&asMz7OmG`#Kwy+ zVte65GIT1=#T^+P57Mt6K7dIsUoq=&*I@S$R= z_|KGfnhPca8Ka7dl`BccX_wbCg=x0o&pXtBs ze=mr_^~0+V(t#K-V2wLeq)qh$`K;q0!*4DyVn4}{i!-!*6t_7x-dB*@g zKkh5f`{EsG2e_lgQh)1uK2;RYK{lWV!Ya_s;c=w--nITj>P+^8APv6!A-m~d-1LZ7~)e`*qTyAT>16H_rfF_8;M!f%-?^%(QlvHSjE`4=W|67viuCwhj* zGx*lb!$&du;9)vwH-MmvY;Aq+UT6Tz@(xCkmcAW?7PTk4;CbfA>KDI*ulsFmJpVf9 zkiz%g)@m*~E4Uuo@APB#A+$w{)dGt&ifSZ3k~~FO%+cqw=k3rzm2l08>F86@I5rU- z;DPSZu^645i?KPCpUgArC(m;N?|5*ypZ;yN5=zAaeOYrevKahN7|De_`3rf2YEFsA zlIP%D+`+~CCx2VqrifE4;fIsYB#k6zs>;uDGZ&m>`H7!ye5>Hd>s;P_>-x<)S4Xb$ z&tnBQx6Y;Y<$Gqosmy#%Kkck6#*P89)>qP(tr1AikHB><4nteS&Ef_F4tbu}$Pl2M zufaHWR51b^)&2jc}DV$vQ!H*@MQGvc6 zMs;-&vi17w*n9m|94#ZWEI*I!mtVyCv(IAX>rZ3-%H=tgCz)A`tSo6`Ch39 zM|Tz=XZDWI#pI(8;?4)ZiMjWG9aHcAB8DG+5JQjNkMVauiis!h#n|2Z8Hl5+Te+!D zr5t72&fcL63e!C_$($Ys*9^x+?_hvTqhoNC>tneaQft9nNXdFs$#dj-U1|)>-H%ay z*uD30jJ@+=4BUSw2FcS;K8ktjHTUkvF>&v4G)BN3(qr&UT@QCjs)TD(;Ws=+6-IM0 zSXo;cO(opk!3lkK7~8x1xwTn7@^-SL&Ekko_+sh>4r>>WxjO~kKm~3Z27pU@ybm6c zx4lk|mx^@*#GOR<dV-D^L1K&p0wOa_+v`E>y)^P&($uO zQjf;5WA=alfBg^DGjyuc&3^>}m5Vm;GCG(XZmrcCD6I~5TXA%91_JNT$d6ibXnL(c zSUaRmN6Hq#x$nD`uk-9AeR61GxUmL-(L|DaZh;)0nv3rK(Ky#4uPt{KQzzL0Sq`o0 zAm?O{r`$WCYIcEa!71NT2?*qqRnYJb&sl{+u53qECP66sohZL@T5>uOVV>F$`iE zFiIl~O7Af57&WWE5tj&wI+HY-piV*uToHvizf_Z+X3MTlb>!AMR}u$DhGJ;2FNXR+ zMhFE55I?ui(eTu&w~fw#=%!<2Vlsttqo)b%3J{I%_88)uePC=O)|{WX>e=Ep&-9K& z&%~V=y8DDa8HL$Zxj~=MFK#s%^_w8=Mkk{N93SoOh7NUuIiP>XF&&qJ6i?d_GN?yi ze+h`tXJC(kMhrI*xZ^kundm2nAOVSt6Va5Wy#vuP0>cE-YfjB(AciK{fEPWE4fVZr zt2FN#-uq_Ch*pgz1VE%UK>7Qz?v_n0X+Tc;2|3w6i-XPG*j-sqi>!^;FVmvYt*1us z%~dRzw@ZC(LA2~6EgdtO=spa?t>id2K=|X)YvkkUnN(&Nlw;5U5 z$=QJr(W@ym)-5AJxy8d3`cW9!iK@OS!~(y3D>MDBMU~qHdpIg6UC@3R+TA^b5&BZ1>eiKp z)@D3!&=nP>$Be6+5R9bVJ2)0YQ!w$gF@*=_k+`8;x?ENw4)Hv{Pwh^wGnuEtp;AHucUx z1&rnS5dt#R&?2a{vXb?6>()p{NjI|eG(y}!nyVinjJPdU$Hk+QQ!zF<8AC=xZZa>x zZ$}8X`r??LpHIITqrk%G@L-JeA^0F%?Pw_kBi;jCXd#%sXL+}l*n5%#?I`aSA2XL#`8$8qoRlbD#A$^JL$xt1ofoxv|x}v=t3}Y`(P)yMvIQFbLP_iE^yO==Ip{IeAgC0lW?g8cW-VX zQZPD#R%cW|2k(25i-9g)x$splrnoIW@yT~4>rL)#z^5Ppj!wq#{QZQT9`L~#eZ7rv zVt?1A^V`->3VlF^zlCCHH0G6dqNk^F4;=PeZ z7xeoC_=s2hNc<8gq|h=>C(Kg6|p}pQ5ka;>um;3^Y(Wb*YjW!T)emzoJ^? z{g_43kEIGPx!^lE6@$?1dyn6Rrrd$Gwn3 z$LnAD_~0nk78et?N8H&04=Y|!5wQndG8*}V4?c>rUdvrqMy+MU62!|4sAVGmNRPx=@&@+3yoZ)Fr_cF=CZWlXim z(?!X^orlq!pzi&{<+}+xV#~sV_^kpd9%N>9G>z0s=QQ~ zRY%*FN@%~IZA0F3D<-*(sP0R7>MxOliT%VbeXSJQQ+pV?w zHa*%{%H1&sYYVvz^QR^HR-RvYKY$m{415C*r}UNEb&dS3rDj^`f#+{qj**Zfi?3Vw z8Ro6HK?~0#WK)nEaxZw8v1kWp>xyUnjTU)Y+!hE`*3m+^U(2!CyD@#|ZuF0g2&K^m z|D~d62zg~{l=;)8D5?&J4khKfuZ+QacA#uMvNNLYt#0dPs z81gzF1HJxAltgYpHORi;0@Jfj809$uXMsU=#p$Lx4#;t_84BcwYmZw zTx4us$DWquN6>+Uw`vXm_bH?AZzZhjhVBU1JkymH@EXv*i@mM5f>A$@fZO-1wGleBnu5nsN+Z_*Q`0+~fTHS+O_mpIlb@sY<0rFk<~R5+#|iF~1Y z_v)WN@^87%l`Cyxo>LaYLZ#ou1;Q^vs-$vm z+v{V=zEWMwikC;PR(@_J5D$b&CDHKcXpAUis!Wi<<8FDpyjR{#`;h#bQAT052Zo1Z z1cpIVdKEuzWpULZ0kL{38$o}jCSIXjZ8w7H5J=3B_6oTQchA_U$YQLt8s(n3rG?Xjy7?Fg{ljedk~>NU!9Og5E?oJK#5vbo)p12%KTY=2IPXu;S8m@L9EPb?Nd&R}R$@-+(En&>H`W&3#M;tQ3ejG- zBkfnM3EfuPQ0YZIR1P#$o@r&sefvpdecalKT@cpF!a}TbG>T{$jT_0T(`B8EndRs= zYIJNo#^|Rp>g-qzGp!A7caO}HiJM5fMMH)^c&F5l1g+P}`bfrQh1zJhm!x(o{A*poEB)|Z?Smq$j2 z(+|fGN8Sj)@ct2OV$ptQ{Ka!y68HI0rj2N`F#F6*~WCgJT=@JChkaz<$d z-Cr@De=sESJ%rkjzL=7 z0W&#|RJ^G4QHh0coDnDaoea7Ckg2p^cyUg5X=zLuf}I^N>SQES0j6?ChDL|jDu#|> zY*k*$oa%(wEdnmS=u@a2K~F`(5zK@6{1~RW^3|2!yvoqPROIP6dpl0n!5L)zvuf?3 z;?M0`YLL>B4Q5cBVkFnx*1~V=kjxN$oJrj2+@le;saQS(CmfwaT7s7Q1$I1my~Fpa zYk#z4cLNtSTqRtb(Kg}A-_b7$9wCZ=eQFvFmsn8<7Q!Ed@Cs`-@@v>dT2E41| zB;3?^@q3c6rytmhQ{K|D0Gd>IrXNbyk#d1g>3eSP=jdXj0+BvfwaPzBp@K2c)d)hd zTh?3<^!Y4m&008g^zzguI5-NkK{AkLW<{0SzwzJU;Bg^X=M*LK_v!dc0 z`JL^`A3sy#JHn@~EV>);L;camyz2wbdx2|}>21JL_uz00NcU%FV`6SL`Hem;2jL@K zaB_~gIOy-RkVY~xva`yKt%X;y_UvhFz4#_h5k}7th!5cDc9)l8eR(nG=7~xbXb6Ne z;V*+WiO1;RoI1dlJeAgq8Rb(t3GX1!-he0V8i4N^gs*ggeS9<~<;lP$ZjDPTKZ~H# zEGsR%voGuZtU5G*mpM?fJznnlPr9M(lDvAB_&q5<27c>oOS-O4Nxz%p2u!9zf;QH& zpqanbd=%D?qFxvFFNEnM9EZSq>3Yx$CUnjYSG#&27fcIzQM-`mcu;VM}(D4Lds z@NB85mu||R!+T_A9Lm;N`XlKk{mR@>*>ilbOJ=_2Vpv@-zg6X%*KX$e{*OKP13CZk z?p4m~4hQwiN6PPVKTm%`;=%e^C%f?JK2&)+Xp2EVPFj1Q7Vy;me)1t{jBxVLCX#QRdPL(aH(uwP2 zosez2o6$dttTp!_rXIW(6A#~yp*s&_kl&+sAIHRlcVgz@dogwIA##;Ls*tPTd#_SX zW_aKRIDq^8^BU>gkG|g&6Kxa;%g}Rbi{QRF|@w0!7^{;=ML87PsE~^(S3GrQnHT@l=-9eT~+&m$dUz{$GVC_%&fuxc*5K!e?$|-vKTPE@dd}$U5gu^7VwI(IOk~ zzje>^QU)FCHJ(W`KaMgR8F(PeE!WC@UdZ1?uuJO<3o+G2l9jW3%+;Xt3&;}Z8a{b6 zfK_fiBj@%tUd`=pS(3`TqQEoz$M2V|qB7VH9yyV@8K&H$1L}RBCD#bPw4HldZyxcK zbD6F@-pF+y-8$y`^|8+NJ2!bJ( zVDfTlb5@!%cqPlBKP7~zoEjWNC?AQ@5f}#uZb3ZNXjuRJSEVE<5KxXP{QRC#TgFvP zP{#1kP+BxurxarSM;q)*o2Wv>6)`Og^mC@Erd?}MD_+{xt&&DG-EItD)THurH>Xf$sEWG zyUjslnCFM7-zY+m z{WPJnifrGhlu4$qBiaNj{s;tNP?`1v_r-Y&3duo{unB-HK{` z%9iV!sXU)^7u@6bOT;)c=Ugv%xZvC}$I02@o)=uDK->*35ufQxOC?z<%lKvrY2umu zU9uJ`=DZJ{(F#i6WEo*qrr54=Zc$EJ#_ zMt(0)S^%YX%V3RxJhNX^H`;A z*)Faxy6()voeLTTu7DF@tZZWzj-;)$4>)pbhT~RmbIz?CKAZFRMjM)yVW`xN_QcHf$@0BRgz!UJNuhA8Rqc_i=#q!JNv9+|2{&-Hd zwqo=7^H_cQG`98E2?MY4v;&ywpPh@*cM&8${wOBjeK!M381%sC<>Pa6X$d=i8t$t*^kD)QJ;rD>(T+{mwsn zKK+oUtY9-a|DhV*PRxM%9mmdp^_VIbSWn@Z-$@Ir_WSP-Pc@zpXOJ~ufVatDd`ZX4 zml8jLGY8;*U9{9c=lJw=I)U$mmiNksJYlYU#9Vp*J%sUjaBVMRd>n`R0A5&()vpjf zzx*PO7ZE;JmSX$Wi&*~VDg52jSb6m-j=|#rjmdx-z?C#EgAY}6+#1@eSz`$_DPfF-I%*Gm&!&J|GA*fvtk^}D#J%V!*gWBc>9{~)G|xLI7fe*3sd5v z8*&f*@uPIYkBHm5z~vmXC#&&Hp2TlEwvK0=nSb@YI;Sj{*QGkS<^(=q#cLp+nPiup|D#5xvxeFez7gK;eT7H=?qq#{=aUvRXE_d+p2yDfFNz}Xo6lqGi{HkZ zfB5V8=CA*2eD!yK9k0InBJ}@XDp^;Q7BC<5*{YAwqK3U9dwta+aq@gxaenaw)6Jx4B&Bi zb`ks5?bu*(2JLf!l$k9IWTGz0DelMs2dyD9r>W6n6WIiZ+ z$ZM6csj~(e9Wl^AzF|HznGa1KX|!L4Uj5y*bnZ8xWd_wd;XETjiv#j~lIPIH!}aBO z^XWgw*MIew@$9euBHsMde+OPZi^GMdvHRv}?6@^{RiC}9&_!s{_a^(Q3lP1wWCAxo3tdegdsv8r}$-wU%fa;o8&3PYWV4-ts*u+gr3 z)Qv9)9H_U9Jg<;#KJWcf*UVMDN;~{k`E7e|Jy$(j?w4bI{^QyDUjI%4Q2zrln{SUZ zzwM8F_J-v^wxzu1{kp6iGp!yi1Y(%~yu`hXqL}Ym9&eH**w!HHWof)q6d|P&iTr&> zf`6)&OZk53*YaM{6P~qO%A_q|c7BR*3}R9MuKgy-G-Mro@2Z`Sb7|vsi#WHv=Q0_t zNHY-?GRd`2kx$x28CxcHvCy+FT(8P2N@guGXg_UnDAV*s1rdyKW{8LVl*Rb~_0~s4 znzfs0v+tMh@h%ANQY7cMc}?D-O+N`aJ}}EN%w*fFlAv&$e)wkcw;fhZOzLXZ3}1oT zEjq3^S@(qTZ>2I$uHL0juYo}r8IVUcb_$(30`F6CIz1UfGt)6Lg)lVg%4suKTYXlA zYc~kf6=ApO7D34}zU!M@bKFJ7^a+FGfHT_m1MdhDHC%ivam_Jt?1iC(g9?_t1;JAx zXB*NlA?Imb;kfXCkv8)^w_aD4GFhg><~Vb%V!BvrR^KBhHla^5_u=}X-y#!@dzyC zwkY6%$M_EI=^<^EzvNE0vZwuS&iBhTkt`l{V$IyvNhkxyAXe3KJE) zDzvoxGw47Q##XD`{_1Ej5v?BwfOB&yh{*M`ZrM{oZy74bv{Z20^T1$Hlu7ihlNLY+ zd#%{nHVDZ^Y{5Y6Zf?fO&Q6?a*1xkIt*x!t=GxBsM(n_B>}_qwX=^Xe+eh(gC(U^9x&~8Wmh2;_EnncUox$7c|oP2+4C&iqj=Bo(7Fvk zm~T^X*0+^DK-wr5K|zIEUn=5yvMt%)O>hL~>8mRlSDRK~rfyS??alUb&FcwAw72$| zmk<82QiYh)g19-5+k$0s)1fjjV)nN}urOx!TnqHPU-`rFc>^@qf5KRA!}F3=$htNA zrb52p>KnQKT{`94=lR=1InVcR-oN@?`qBQ(^D5uGU+22d^LO>|$Ee zb~3&yGfOjk2Rf8lo(US}iu2Jy7zz7KKWaz&>8oq)&C6JR{xkzo9IPzGnbvnZTj{rH zdwnGgXpzx4`K~b8KRS{Tfrlq1IUi%5D!dLvb9y$05imx`0~0g3qTi;49rx?)%i)N)ta>LP_SB`tQv z`9G3!PD$(dURnV1{_O?9w^KF7(zs*B4MC>0rth?s++t>Q!xN8(ExylOR{?hck9Kkp zdkC!t@zD~c_z?SnlvUsv{qySVhH~0 zG>gk3J@=a>7y8LOrCu&VInF%^``{_Ef&bd|Bg}dK)w=ek(Y z0$U}pJa>*E@cx8JSW zdhVuH!AIjfSUwO`o&rP0LSwa^bE}%j0 z?OVsdoc&$ZsjlBme(ddBKU2fr_3z(5^CxpT=Nj!VyfSsK$J}xH(InpP1eOPK+xhsT zcVqe;eZPGe19zT8KY8@Q2QmKeqZqsY0rJd4Q{wN9ri9+G@XCqz}G+Xx|`w#1Qm$03M^!*8?x1p^FQOJ;_tJ zYs)!*CG*tD{!?~706)XKZZnU!ci}@@yU}XxllNjr|9iXp={`hPTH?u4MxE^so!XF@ zOa>Iu$M*%YmU65<-7ooVoPqRV$Gpoxk~iy-Nq?P}v2V~!zPV+9NBG};&JAw4yHj}U z?F z7oScTKV2)d7>`4@#4f#z9e9%UuRe>#&pwIer(b47;ZtbJwHp`5hRk@K9qq@#=4$M% zEdUepEE{EuJJ$`4qV6JnJqzR2+a;BLb$f0!$D?x;-sR5wG4k-k7zREE@4p*^_k`K^ zV)nh_H*oCEqiBv!rS<;rm8@%Km3iP6#+MN)6D~6sio%P|b@0tjMza6%m<=fZxS9X+ zV8J4;tB-i@JLQ<$S*tSra4ENX-U4I*{GG^E2}rO3RQa^rvqokV6{-=&_ua zx?7LywvfGE-4nrSqF-{UM+)}j(n^0@7w?sJ_)L9%RbR6IZl2fm&UR$E*Jb@s=Fjzc zmSZ3IZu#c769f-ps^6YHCh(q`W+rwz5w;xrH*L?JnVy`S@cd!E+hT%gZITu| z)j!{{-r0vY-u1W2Bz@oPGC_AB{vQ3lWu$_D$Fh%nEnngmQ zfAoQ+)k`9J3Af|TI48m7=$0}al4pGp4EA<5tK&BBw&K(kW+x?eRspBd$D9bLs*jWJ zh;Qi2Xm__2Exu{!@Z)0<9S`NoPo>BciCJ%MoN@n1q`0{qyBk}j&LB=La3oGifh%d+ zZW69!h)+N&I`cN{^v>1>c{6r-cMk-2LYb+&v2s_5AGAL$c@E3!fee&HL8}+Tt{=cu zyGmg{-%fnk`Xduk=Ilm`!^F)&oF!w4$GyX{j4{yhqz2&&y6$FAPqRQ~Dw)MqDunPibeD;kJlvYe9X~}m4)2OoP?c`Xi z)YVU$5o(18;i5%3!sOwh@K6*x6123W(t1oK=rMhKa0D}IIC?FEfI$d|FrA8GaRN}( zq3;VQr_sXvZFZ}iW7pbqEQBBZts#)65CdYgnVCV#Fob#ZP1@?VM(5c+b==)zZ2h*d zEb-E`UwFvRh(F2HRRvzVN=NE-z;pWLYOU+w-7&S^j4^FJ^%>Cd)ix>Tf|D!em=a8_!r};f?&i+kB9(4sC6aP4W#A(#qx$V|WP1UXEp5vwO6^MKR{+#6n9_zVl z&T23pX_t=uWgPZ)cha9*TCQ>LR#G8Ymtoz-Avbc37sXHFWsk}1*3a;=N;Z{oS`6RJ z!_`r%RDFMFO*=9?l-8>%W%MPfrKJ|XeZX}eaIQtD{xtPBn9(dpN7DjSSP~B07Aov* ztgXfB@^Y*$Eyw0E#CvTcj@H33 zbKAh8{%ce+=(n_gVj_knjYv4b`DAWu*Xk?%f5MoHixVG%Khq~5+4GDF2tMzie|oyR zQhDTRq{>LGNQd>wN4tkf1$TH^o7IG7V%%Hw!yBY(`@jhU?SdZB+X8R#w zMn(dhKta*g--Ey>iwB;$FaQqoqT>Rb(H-McW9jd#e|$8f(oW9Kkf)=6Y%KH<>9!y7 z{0Vi}|JyMzZ%`7WjS9bRlhA@O{mhYzHKW#!T!T4Hy7jZC3UB3n29JOv?Ym*Ouc@@6 z?*@P&T}|}x+o-xavL2w1yS1>TT|*-yX-tDPaep5XXgA`!1S5=Io=0% zl&#PFmIixtRY6>GA+AucRM12SavPTlAS1WSgRCvb^Ur@5U;ooTWRQy8SI^^YYc0;X ze+2D10>7U#-|}0~%f{$94DE;U;5UB~_kZ!rn1p8O?7Fkb{2rT5UpLK>sr0>U)KUhH z`asheN2{IPQ2nFO{C5WJJyp@jHTi(ts!jIS&z16vR^V3ORk`ldtdsfslU5SC$x!j@ z_ILxTe4DO+NAf#7=a^=YrsO+*tbM)%Z90NBBbXTZ+(`Ag&3PaGDJ|vp_`U+Hv=bV7 z27d^j(;}b2e^nI1!oDYYkMHOj(cH$B` ztskOOt@^acP?=A5-|KBqOh!nFa^GP~sx;dWpo`t^M{ISXD!Fl>mcCSv;DJMrMd zU&n)A{b|g+ZzSQVh~B;|N7|#s-r>e3bCmwwgwDB>gE{=oC%=t1PrnNN1fRnj9m8uF zHChWzqlBh^Q|l&VI74;2M=~T+3&Y7c2c)WWcIVZ{_;FW8mnP%pGs>Hf3^N z7D}sm{X@w)0sT#je0adCQKoGBGQU;*^E|V^s^hooSG_A-6d?J|d{x$sYbBR=Y9%z% z5cR40ul*7_+!Vzl(c+`tM@=qd$$&5B@Y}fBiqlz2E$K-2LUB$K;dWKvV8Sd(R+!3SV=T z`2i{+)I zSa$0?a)z?5?qo{JS(G^yaL}A>B-TUnjDMC@sXIYPvq4Gio$cCr#rVT7c1L3m9nH!2ixGV#h0=C;`3O3_DO6$|6Oc; z^+~LJ@^|t2@BS*D{`G&27oYrnY_GhE6KG4>f=(l@l5os5cc(!A@;vYJ4Pga*o7SPd zz)uf&G?lD%s`|DIUS;r3^xXM4#y|YCnEB2B8k4{N_c8g4e;X6O_}4M_>wg>X{@I_$ zyZ`2YiaQ_vD#qsTr5yf~6MdJ9s?~gR-l-RBFNp0%t~%yAac(>E(v9n$R@d?!|5syN zmy(Gx^G6;NO>)S;Uc8b0%aITHRDKX9QlwNW&QT-;BkA7c!hG!K)&L#P>gS;l85K$l zK!u=^(2(me@)_>idzO{i&fr^hHR|kv>m_?$=jz(c`}uI4^P%rJzrJ7Ea`PJ5#PO=k ze9wM*JCzp{jGV|@uA(78?lN)QB9=&$cYU+;HP0vEEBTU1eY%Gr&*a-g_*8Ih?OZG3 zO0v)Sn}6~`mgyusWs+|*G1nFsU2QyY07hZFY;D5NM(zSxUI@xEm zTT^P4HLhf|=o77gR_UWv`Z`1UOT=B(cstq8)Wc|-`ZO9C9?kP){y;b?dyKBQ143O} zU(J44WgK16IW{nWWm28oTBfB5L}b8ipAr)V{2$Y3i+orAh)SSNch%0A&mJt8aiq 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 literal 0 HcmV?d00001 From 8f264d308576cc8b36b88638aa566f2cc1f96a6a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 23:01:01 -0800 Subject: [PATCH 147/268] Changed video image Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 0bb8dd1..733a0b0 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -1,6 +1,6 @@ # Reference Software Platform - + The Reference Platform is an end to end, open software stack. This product aims to showcase the latest available ARM optimizations, through validation, on a series of hardware platforms. Each reference platform is focused on a unique segment, providing everything from firmware to middleware, while reducing overall complexity and time to market. From f7860a4d82ee8a4ae5ff71a87586dc644b39f150 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 23:02:02 -0800 Subject: [PATCH 148/268] Add files via upload --- .../Extras/Images/LAS16_Presentation_Cover.png | Bin 0 -> 451780 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Reference-Platform/Extras/Images/LAS16_Presentation_Cover.png diff --git a/Reference-Platform/Extras/Images/LAS16_Presentation_Cover.png b/Reference-Platform/Extras/Images/LAS16_Presentation_Cover.png new file mode 100644 index 0000000000000000000000000000000000000000..044bc8b64350afc849c55ca9151f3f4574f30a17 GIT binary patch literal 451780 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 JHDpb5_Fu7Rxbr-Q!p6XEN|BK?R~ zgE}ys$LMY{5gsYm0j0I%oOFy1YcrMZzW)+n*V7-UfqAyC4i`DF+)VK!GEM{;O#j!? zg56DH48|vZMF$@aSg0Ebm+p+Foh%3B=;-A!CH!L6s)%ez`B+`qwIUhcM_&1Q{gDrz zW!{gpt>4_kxlZxk$qC!qbPILRFWZ3;*qOSYLgPug)B;cuQfc_K5TBsqm)lSZCgc1< zXupyH?}u`voI)OWQ8AvT+vDp+^beob;>iVs4s&_K&8QoMex%k9N7b36dgzavkW1(e zUAwOO&Hy2*!zy4~N%tU&H^RKgMPHKPa_(MkI_KVi?LcH?F%18c*+SsQ0;qOjU z5@^$Zlv5E(FdWK|DY8ay)bLat?@R16=_Hd3I&c-xrC^;ml|jY(sGMARQ!!NCKJWt` zcoNKiH^c!8OuV>-7|+nq=7tj9LF>fLGPgL6ljDysOZQy`1+<;#xVG|C52rJLxJvHhuJQ>iZle@u? zV0k(OJHIP!4(22chvY$7F@C)zn%+&Z-E!7>HdI% z;jJ}5wVvx@jE~K4x&E84euqQ4r>f6tn-3*8GNr9dq-nH&0v}>fVtg|N@A<-0s5o|C zk!55)jhwc?O)(N7d%8aqOH5&I)s2N!FyUDhFcOu?{xtbiZeP)yG$DNy%h*+b$$6dF zH?jafnPcr8E@}9=14{DN=5Lchg9^Kv`T!Q{;Kiq-YxF!g30YOAxhGeX8`Bx!8P2<* zBg_u`Npw(XA_TH zWU)pM`XEtbvrQK2 zFdk9b(9hOx-=_PCf&RCC5F@+&YPno~kBk&h9;t+JmB(n+zn%|Bur_P0kDd-z9|&_Q zWnlX~b#nWUwPzzd4$HOk_O(|&Px~}J@**9cK)t-;Z%BZ9yw8q*e1)#`w8^3!@=8AI zPmNG^`(f2A@z6|DqyAa#g9?+ol6>`Sf(Zja8a-#ahC2Ce!7m2M@HG(pql-Hh1h6=OK}bG%##dAWxiJ|i%!^{bVWV`CR8LYI z{sH!(m&Zr)>p>!sA{~ulk=PGEJOFm^n0ewo$h6%2hj2iy$rFMqZQx+q#o->Vw zI_oQ`Xx~B~;7?>JL<}a}?&&Gp+GO~P%zQdik8Gfu?kzY^=u8QA20yOF~BSSqd$@!#b!t=GE_$~Xf5;dK?z zf`6%39TFQM#_G-GQP%N(rxL~&vM%hxJU_PDAC{+WJjx*X1DxEaM+^8i4l|(mA#66k zY%bJ+iOPO`V9-SUpc3Gu-iFfGNM128eT@C)Un&EGZFs@LAk2epXFbH?`%qc2a!r@; zd}yzo594ucQAk6RRKBq9FDm@#1Aa{q3j&zTVzG{G^~>_*TYL)*pK(%2%klmxE=Lax z7ULyKLGwAC1FT#ty`dLjxn9ORQHQL#*+--HG!#G`O4twlaNOn#!;pnK+NScKwPP#K zjw9`x#WQrCRhdYSRG?o(#d$G%N7^0pTg>kcJD*{^)ff8?n;rv`8_Kuy8lvB7%qp06 zvGMmTfCJ61Lts=WR ze%6v}z+bfW`7Kg^uK~>G@t$qi$WL!Z!2^3Iz99a6+9Qj@v@(bZ+}~PUH;*u^k<|BOsGdsx$d?V`6gns{e!>X zD9y>xa41vwV@i(or#=yxg1Z^vQvcD{pF8`!TAZ0QEt1LS}zuCySW7 zlHK2y!3sASmITMxH~Y35{slFB>U=}n_4PH^|JN^H_y;unuZl7eUnte=XjUXUS(YBNvoiNG1?U8_RZ<5cqUYcL#yQ!*gY7`?WlqH}VXz(?>%bNM-fuc~neKxpbO~)OI%o zM+79^VC*2)H%SROwL$aLKT+uOSE~P^FPDgN zwQMfI#Q65`K5dk4v)j^S_J%)o{`lboPii6i^XJdimoHzcuV26NFAMU89(mi!Yr&Ek z{)KA}tXxyc)xXL$pM;+{*kP2R>bim~!_bTq!*R2< z3EHj0;*FzpcC6c5!*%>_?mOR~%!*F`^prvU@W4 z`n?9=-?p~kqxBMAU+T)~$*w#%_F!xDbwaIA#K;l_LONrPi){xzq%;OL8d%O7{|_arJ0{8{E!3- zG^q${4cHTndVSrXU83!?&15gP?Qs4cVa#P~3L5p}?+0!E)aR#WM{_)>nOpzS_rHZB zc*bb;>5VT^wO;*VH>mF@C~s(8C6o(2r)mP5-LL*ZL#iFP$UaG$@FNJee<>7A3|M?{_R>y4}7Evx+|yI;=5gZZ|@kQ z6V5EpKI~E^sdl8te?E}oB&=Mo{BwgTjPP&l|Q48yU@>@Y}kE4ZnG?SCE~L(h+&l;-i>cFKEyxFQfeB z7^+#Whx;J;NkxZ=L;VL9Hg$!}<(^DY}e0*`XbfFf#q`d*Zr|< zcE9?EM`A6axzH8IB@0T5UwD^csQyt*{a88ND0JUITGWt7?!_q8f1#YU{hx0)|K;2wwpL+r!*CtxdH9*YIHtE(%H$2;a8X;LCDO4i5T+v)^)@zQ0=hmGG+N9n$O z`^KL>V?v8T$h_&wieUGrmL|6zav9w3pr3EXRBAc}mbKdlKHp-)&-9ZTn5yy91E@#+ zq~5*~ag4OBrR(jrAU$Qg|4=vh7p1lC0L6<6Zj zK=E_qw?}Narf?kDjr(K&M~T*Mm{4m@Iw{$(g4o>q4VyOR%C1++h4Hw$A^dNfKQzCDB4`^UsPS> z(l})_^l6J5tEVf|3R=f-JXv{ldC7H&7id4xMFb1CxR~G^*RT6k-w^1G)c0Zi zhk9}EqtRCs>uIgfsrK`A9E*Ny^~dI$(H+KP98;g$%bo$EY@Fn}8(4o$q+F>V*`EjK zr@Jc?sxkU&->ZYZO99#gFVJzrkW>0WN33nQSWEBPfQ4}+g_UsLKFqp)kORaA>Z_>B z!V|}WEC&4?A6j8^MS$?Pk z+0cnaGCN17XO?$9pY1GfAAUV577?! zBwPh{lU?XVBi4oOQLXyyv24a*Q!Haxz(SCocrOp$$#ZpeS?%ct1(VaSU%&7t$rt+z zu3P?Onc|NTpN;K5Z<}=grHnV$e(~=ZntE{+HYXBq1~;pVTQB3Z7l zKCI)@uzIm@4oI&o-KNL1u+S_%_r*G{d$flq@4AUTwUc**#rmtW8s|Al?U5n8xOzQb z|B2@5bCmi9OUHBU8R)3@+{OapuIMFkdJqT4G`R;Za`tRT7 z29l`_d3B5SfVnNeul({UuZ_GusP6^#nLjL+`-S@9lsv(Dt3qOf95fy@AiZblyRQLV zH4E!MhFzzd-fZ?Cp}jndtrzQDjD~h1EN>XuiviJJcxYx{JHx2?OSz+C+hI)W?Xn%c?v0uK?f6A_gF7+ zcskJJ2A@9ThDFjbQ#fcQ_z6KgO-38uPXk-HLX$j}2;Sm)nl9OcpMP z>WQc3E~!o6eTCS^lXLjBJNQ7JsPjHqJ_33lPxJ}_VLz}oLecPDQj>`$rW5kNg;*wy zf3wv`hO-O093T@>jGyQa*47cnV*~w@xEv>vaLxuLVs+Hbuv|I1O;5WP*8WdJ#~ir& zsXfRObrNB}rUbBMZV>!Q53U!VTppgb~ zEBR-B)HXAZ%w?OMOZ%nzJusLMhTgQ#B=dq+ij-C#;;NgkC5)=g`8_a!YE{D^apij}CSImXaunhiCc2QS0F?yH0X( zlhWb~bqJ$2yA&E)!e)loexunoN%Zk=K9=CM`FpJ2a{VE4ZHquf`xjy?$Xs7tSJyY! z)y?%y_5AW&efuhlba+o){pqpYfF9e2c>YHrZbo=PhyJ;REj(Eu2_;1SE+1vuKLz-j z%jMN&b#+ZXp$)dc20U4KcYEjFy~j6UA*pH~xxflo$9_mf9m+fEwtRE)Qa#H{sj0r~ zi2}5d_BPHXa2bU-jebO%coKe-bM3xON6OcOA-KEbY2=?D+HT_$2nKG&%^Tidgnj~e zF`qWv%w;$KiTr;qwRh|$iLoi;xx)P${hF^4+*tUjEc>yh*ascXYOBEH_Hf?*JF($8pT572z7>t8xr11!Jxq4`msm{z~e z;vy|{E%OPoR@+}~ApF59S-s@w2bT?OkIC~E#jiJ~D`?2=>BoI~vTFRNNngIRz>Erw ziy`*b*Bi-K*Mr4(`^BB*d6!o|ne!pnezcgh+{fA`=MUO}_=9&Ok&h@)FTwbF^G>*rt{LepAY6=_|qo-6v1cAzo6H{x?}C-I6cM03L#q4 z6LPWUoi_*>&E^j?p1=C4`^eV1c%KB7!Ubv_ynSay3EP zki-2&-6)#Z|C`Q9R&Elt1*x_S^ITY}f6RS@3XrOhxs+WGIbmnvVaXxQ%u+6H)bs(?tM1Q%R1JZ)LOc$a{~3k*K0a0QFHldUEf2x*=+dtboH+6)Mtb`XNw&}O$!Sh zgqJDoKY=|$hca!af->!>PD*%xpaf#(va?b1d1Fn#{4gEzlCyW;^`Q4w{u{ld?m+8RQPD_x#7hMZ= zy+SM{5;kv;a4Ki9X%bWozF4n_n`oximXhkfTsegp;{UK7x-P&VRu8fE5XM^=mK&xE z&l~O1mjhbiW(r?>#e3R*`2Gj}HCx2v$2ETZ{qOk~ZT(+UJA#aGcJkkT+y_VMfrxt+ zKm@nfbFEZ(z9tr5FyK1AF{Ab)@4TT4_6}c(gYSm<5B|55Tr-IcCZ1m6qt*NBF~iq# zfYnP{eTMY4hj{;8o2Fj<^SE~E@pK)`|G9py>o3=kQ?1`L#`~|EM(H}H;%Rb|Yrn+D zA663llsTQ_@>@j=)7Nhw*zmL^cz%&z$(QrPY?v0)f0!Mw5A(TvD9H=!THn0!LYlTAfm)z&BK07oWC zVHa{JSVLPH66))nzkf_i;(a0n(F%0^%twex}6_k14rXjm@bx|ohEeV7usSi zJMj0Hpw-raY1fA5|!ivm9mH9(7zoWBS*2tU-45kD~TF%U302!M3g!cMYE$ zD{~d&3A9W4%Vx&gpq+{NVBPjRJ$?2#KbSkt-u$*XrAD|DLEX2t1&bQoS6l}EC!{(P z>1oq!eUkmso%BHD=s5|>qcVn!8Le%tC2D#+A*^Pe(QK-hwezd5!(||$-zbFD1{!N2 zc|IDC%4Pdka>44559YZDFGp7Wd3G;V|4xLud+p|L`oMnt$i~gP8xHYqw!`7TPt`rx zk85CS!}lZq?Z?@xSA?o>FG+l($*;jm+?C2?2GV&h3X1%-}%}fwO0(2{kAr0 z4glEoj|ah-C|hbi9~(QVud1rC(##U;c1X_}*a<)p{vje7_3WKBy<`3xYFB4_J7HLB zGSRnlv;Cug9Jhwj^_eO~+26Y0-i$Lr%}aLHoMoyT&a|COhu0j=lHB?;yBDheP>hLh zbN`Y}5(DMM#jd)#zM>Edb@+50zkZ4z*pMGqh$=+Nv;G4IWrr(ot*7dIp{pqHHlTLF z7c#13{KyJC&A%$h?M0``J?@vLW$gvP!lfwwXUoUBoeEjH<_g2X zIA`;1UYNqWUa<&*SPX2uZTWmU@v9(sC14)YF`fY zm(Z}iBW(~-C*xg2$vuGlT?bRjQ|`^6UMJJVdZ~AgmCBY7?bq7rl(q)!tn9PrlbG!!FDzgo3!4I7;f_8Jlc(uof$}M^aw$w*dLRg49ZaLQp z62q6)wmN8aEw?`Y2YrW%wxUG3Xwbkr48__h^INN0gxDl|?Py;0bEBMCp)+9G^|?R9 zSJD5#b+i5B|17Hh&`)MJnlMqP*{G{|!J6?=N30~husX~3gs`1KI&XTy^@hbe=nKD} z4A!tMPm8#$q`mVMG!uHjd zemGXnTdjZdYtz5W@wWXRomvmA4t3jFwO8l|W0(DUIG$FMg*vKvipRS;aYG~5S5A_I zJrOjt|42KL@fiDlF3iRGNh=92L{`h5R?LK~t^hOL^(+;U zi)xfMD4W%5YW=3OuK(RLBJBU;I%vjFPYC^?hwQhO{I3OTpJIQD9~4Pi-rzDL z?F7{2Y8f6Je;hqIrk&W8j@_sGs&2M_@=v-|?~~+mo2%Ex6k4E0I#_;Dq|l1hLvC}R z-sT351eWRzG0h-7)M3dU!Gje2!K57Tsxw{SOT6eAUxUGZuWvgBS2_Q}T3U<-B&^_hD^&?lvAGe#Zp!Efbwy_f?0wZLQiX z3`NE}R2RRTpKBb~+HJMF*mK1l9_#nQrBGkHhTo(Cf4))oK3wZrOWG&}#%Y=lu!2LV z3+klN->v8r<=deAc|}a6Kt6Ig8|b`AF_{vgUU(6i;JM&t%OS8|f1QVw>cH7UJG?){ zz(7Ym9Dfa4*!Cmh`up`RQ!p7DLYnikvHqBWKqa#vrS9sKb#4n~Pvg~3y-+5M#quuD zp7frYl2T;iul*Y!k+GtXp5<%ki7+8tuN<%S%W0u&LtjeM$ShcjmQ#$D+=QYyK9*@h zL_hVLZ%zv22UC^Zvi;Nld@|M7{I+S6l@-y-IT?4nImGkQ@p+e{l5WN+FY+Tt>P>vz z4|02H8lgDI=Uv#qF+!RZ^(qmm|0|Md9{2BeVGS z1c9CKrSH!nwuk-InM`&<98ENz*k#;#v)+H|F!bvL)#s-QGF7W+Gfr|axW48hi%UEni`Xm+kUNpvD$U_vH2P5 zU(>U%e&(vLsc`pwZf6*EYS(h~ubv^l;Gd;)elUN9exddcU-IV4j1yk(F@B;~LO%Yv z5&|&}Q$qqiM42MLJsZc7-UxATX!_!VCilt&{nk|!N)IeeU;9|9{Ul#ML(DD;cn`km zTd0Hc2BA)08>j7>%J?oD=)S30s7;GiI&alJxc_7lQ)OPM z10cKEb|}JQ18Hi?avY-LV@9^yxIi5ub$>}j@7k(mrN2G=i?83;hFp~A>6<3EU;Zi6 z= `U)O8>P@SuHqzbWSG)vQ&kXr3TMKz=4I&m}KH1&LhdMj->#@GL`7y@J=L@IRX zqP3RD|5I)>j*9m>h>gYg%dyZ?kAcMTuA&E&V8Aeb1nb=>FO%#tC?o4Vg%Y`-J?QSD zScTOUhdovW^{yL`MY=lOBxrHGybu(9e7(nUGf_BiILXp&1F6eP@eAH}{)BC=h5uw^ag%j5 zg%j}?={V?GsEbx^gm92s3#av3>X-tF{+pUpsgLC`yYuXS;d+yS4nr0E$T9p*7>Z-R zc9c!0B>lSezZOF$8L{>`-fxn>ubQT&)?0+8+~^dhr*Hh5uYaoCwwcNq!T!rK!TdUx zf4gCoN%U0p8@8i!8P{`LpR2vx0t$;@?J#VgGFw4B2ZOK2HIlJ+u|aX|MMF|d4=ikA z`dZlRPcrWUe0rD)4eIM|M&?N{ds>WN1oJBg%i{(Pgs4yKhst1HE#dT#EGjl^zVUX3 zgmvQfb~zl&)t8&)1UdriuPvtvXN&`kD)X zy|6O`_F(by{rmU)1m6Aqo%}!{`Q`cPgcj=B>>Ysl$*;G~?$7=U&y~jv9jt~n!X?P` zkH`2Dn2CzXfxFu2RLR1a;pq;L98_`C?p-O=wo#R`P$$Pgx<-2?TWtH;*NgLb#BlSS zOBccUFLSheNxwUp1Yc@XgFcH3Q__1mqRQd=aqWvT46Y(CPb(HrVY3mO4eUSXM03_a zINOSb`=T?)4+G@#p?3hSv7&tu zP9F7>9e zkUf5}>pcRuP$x%-jy7Y1Q*k2FgATB3W#Yhgk09OgY9xe6$oiAr$bWb`IQ^Sop-y}Q zyJP`V7BTTeo!E*kDs^@s9r7g{j?nuYwV%i4DtDt;>O`{Nag&L5Y~i?@3H za;#O&1N%>79P+T+1GHNI%+TsgeIm`Ywf17_Loa+47f(rG+h6P{?wOx{I2;a=s1;YD zhHc;`CUzc*(8hilX2Ybo`s>nvepVZ%v>`~lT+jc0zd&1&_9Ex%v{r<<_ zSGTvf@>NefL8gmSTOMckJkEmSC(POvaBUB?#cen@F2lAv{C{+3t`{(+K_hBclCkG0V9&y;XT+Ov4X72F{!Z0isY%n$#fBsK9 zN`t|=dv35*xz*$wo#+6UoSR^_29q#C_}FS+-fmxGlTKl)A$``#c`Jnn9O?-CD{BG5T~1^AEMf<%`_q$++9!FGODM_+y!}GEV?mNB@td_gQ^9 zI8E1bVJ<@zr_-Fmbr>D3`|@)>IoC|@gRw!vbA|h#9-3hux+aGygyWSI zn>#L@5mxmQyg62D#u33o)v)Zbupdd8dXo`e?ybjQjwDah;YS2^9DjI}cP+JRWtI-H zIF`oB^=>i~krLYU>w&YR*f0+<$y1G6c4;`K_I>>NNT?o@kE1G&gFrSGjopl$0-4X( z3w5wb^qFRShb;eQ+ea240tJcVnDa#1N1ruuKR5GRqWtof#%b#G>C?T5d!p|8ruy*l z124Ye3A6jV`|9)8FBIN!yXCg4i*fkI7sgsF*1-=?6yJOzE$$rO!~Q~D==!h(SGt!D zyS7*d`sQLHjdwVcB*$M@dH`Kh^aCIy!(!yqvo2a%A&e_|aqvWXu58xcOwgT)O13RX&oKUa(W+hF zd{M-;w1Em)x3m6h*@kvUyKbe;BbxdJwArKzn1v z#`k_q@JIzRVW};;=g+6wiTg+5<$NR!=`yi8N3eVq58K&(73z*Djm_uH9xQl_^%dua z3_fZn=D&!?&W_IdC(rcxxULULH@3XRP&H~zZ7-(#F}x79lOK|}zP_$5E_M~Z>iT$i ztnTjam9L!lw?pPn>liNs)bPqJC-8i#B(vQQlGe_I8cIj0W3A&LL~(p!r(-PC zg`KLda@h&Xo`r@GJ?ImxdWOlI`jHd;#WoYR`@b!&jr@zRyrXWYoH=O!G@r+b0VIrE z5ys`W+(U2fjQZw2uimC5rh_OstZhk}wszc}U(<2=<2=jLZlkFln&rov&9HNjt2|oV zwF)u4YyE7ewvlZgU3cw*Q~OgNb1tThDtlr(mu4!r_THpK1zAQ3`R@>=G#iroZP@Mg z=wltj=1+ae9knQ-kbE{r;`={g;(?^dDOrZ+6KL$A%wj{$aPhUyp7yP@73uQuPG1Q#GFEh8+-Cn5|K$wU zOjYFI+6@r-+)#(85{gM^)DFrb7XeIhOz2d8$fJFcWH_U|&#uTVArV(!651rw{D15R zNyqWDi+aO9OK0_H$gzY-BcH&@ryh2$jiV>3;z>sl>R?ij;sbqR>I7OlhN@rZm%U^E z52MSs-AKM%x#JPJq4ufvW>isXFzgb%7%o`t#r71tRKlL%!VqJE*GugQmQ@L|!eINVTGByk7 zs}I+PDc}~&|Gi8D^`Q>H!O-M}rH`qJegzf#$CF`_asf zbNa$qJ6Q+mf6{`q9Su+iNy2t7ZC65Tm)Pt+)Y9;Ve@IWE<#!CcAj$Ou;jr{REZONT z$EL;5>!ER^e?Y@OC&X0qG2dUCi|~m$J~`HKzsOXrec9=HNDh_RQ_()oDVhZh-e*ur zuEBVz=bA;wNbLx7;if)CRa2P~Er=jX3!t2bV|;d(KzN`7t8HSnr}W&v?1eq7Z|(oX|-*z&t6LG+j?A%#`Fo$1V@_m z=1U}S>}17jxw++?z%*nPj@o&jAENbVdm0`U9Kj`*evHuiAd{_68eQW>+x+At@zm_P zj$nS9FV7Ju&{&;2{@W@yQ_AL@o*r(ICQ-hnuBA5R4=+tq zj&)-$u2-z1K>d!gH2>!l+ADIo9ms!f(|DmV1|FH<$aW0MkaA?evoc$VExJWVrAYcI zA<;5ms}8U~7}QL?SU*3C%~U&-n*^KCuHPVFxBPj7sL`2=!sA^g^|qP%>O7R8cE|M7 z{MLT09pVNF`+c9d*Ww52kx9INL0{Tf?PD8}4^I>D*DCfG)z#${$K%%+#m4$cVWd4A z?B(xy#PysDlNXl@+xM6I>T-X{A?*A5^=tL`An$%b*4R5p`^KeuimE>BPCgl#-TjEE z)LpvPPleq2uIsPaep118kDI91hf`|9NgY{%VZZO|H|I)he4D~vlp(*Ii}C7`>jq;K zUM$ZGRb1DBoRRf56xNNuYFFPg!WS}rw&;}sm!}_$+cgUt6<$3>u1m;+Dj7Qev-+Dt z-&4S>7;BARr*IKJf#{BF$GUX0u`B(hQm5sa3Rz+jOZq&}j^zpm+ab7xx;)XD1j1Nv+7Qsdv%k2guCH(8=@B~j^nBo- zyT---2^V{ct1mcK7Q&bj<`)YE^ZZe7bG^2ietLY}1-JsHg%?ywQl|s%D5KsRaQ2a9 zG*uf&orxzDy8pH?tH)cPdXbf8Zke(wa00v@tUK16n;tpVua2oFqtg&q1u`d*noGRT+z+n_00{Zyt}`bg(`jbiP;!?a$yMT^gxx_p)+pw zF0U^6m(}10-0*$-_KmLzeDg<1R#yU|y(GeffI93u`nAW{jN%aw0!U!gwsUiY$!XIFEUI^twdxkuy!gMENS8 z25Qe(Gw}50)zy_OiW2w$kKc`k#Zmay^Ly0KEom0L9havuJDH7NLcc|B zsf_=o0t--2W=X0UwR8zxwmfyt4>dT~+%|u0F8TwPsPA3uELiw`Om zUvt8Z+5P>UeBFsA7wj+kFWFF*l^bIIu&{|uTAW^sEz%hx*9KbDA8g|%f%I5Zqd$^_ zal204vHC7$Z;1AM*vZFl4Of90=Ha?kBK4DWnFWkST7EeEal7ZexPBbNe<-cCe;Y?R zzt<-aFX>&6Z-TVrsvryN_i9Kh7z_AmIvN+>zkkQJ;Mc?+?jNd$#|QWHAPDU~eMDE$ zxm|DEfZ$qyn_ukXX7Kj*mahx29d##PagO^ih8uT-ymNUl)X*J|6qs(gU}AH}kJrLb z_aC__7(bKT*vLv6pzrc7T4hp6=Zl(|)BHKB^;`4Z!no^-2jVbJK_84y_9PkN?E{5y zjGlYU=JHjx=?jS*PaEQM;W9P9Ey!U*9A4J|*gD86G*Or2d%vnKFE8nS>4V%a5x6dX z^*+e5`T(v5{6@fG^ZcUM1IQZD{!(zacZ#h$)cqnzkVq_d%(@}-zZj6^KT!u}rK@wEsKL4Bw)tzb|I7c%#ZL!1v4o!38d9Jh+GE)HM00g;utqYJa1aSQUwB@{ zIKnZZwtp?4P<^pW#;Hy_31-;TX8B2aC=hy!F1RVhQzPGh_ld*ZZp$~LpMUsAO`sok}wa)dRO?bNwvd^L$r%@0&!ZdEn+KuI$-{vNw zY3PTy!#KbDxp+U-g_KFM*x#k=ptgWzn|N-^cFxx+)KAjzB#WOEKvrDO@H6;z*_O@O zXMvZ*Q)M2g{J4nFE)P1zi%?`Ao+!g)9QGa_5B!xX+z9f|{i6s9?A?4R%x!ucmCS>9 zTnh~AxGvz`PY6-Ru$yg1UfN{r@9<*>ZrtTEx-^-FBP~^6p7!H$_O7MCO8E6Ww9b7O z)#FDUi{==*F+Q)8#8M3X<;{mh;F=_0qmvBR20g?HHfcCg!{mmkD8dgS#3XM z)NXTouKTZVuB%`C@I&Ki`=5XMxw^f(t)32e;vRE?y7XgrQ;Zksc5@XPNJ9^jb*$I4 zgy#73KeWXo4`tdP+7T^=6V^**IfM&!DY%@hfTwkyD(6dBVW|ZE+U)=GUyLoX1r&)3 zg@g@Af%XfFNAQVaD)k~=nrS9B_HL!HH2;Ehj9nx2tZjQ1|Kk>fO6{{3Hn$=YIV0M}996o~py-$DW{&dL81wn0=Dx zIOj6{XbiAq1nhuhdt}{juh_F=FBfO9_H8uIcVhXLu{Wf)f4Ii43-x>WX~RIq)*iJu z37223Z_pf<{qeX@FTBG|o;X7hZUKjG6kPx5C}JtQGPtk-{A(SoRjb6R`XqO^G(zx22bC$CS=iDFiT`p4`YORU^f|Hb^y z$NV278~xJ-D;M7;hms&I{;z`Si~o5v$76n{v~PDvC~s~1SHxV<;-$ghKIvD#`W1%& zPuu_QcfX_irEl(?wWtSFg}K;5mh1ap6|wVklRExRh4VKF=6(3bB0%PRJQ+9tbQ&cw zW}yz){L8-Cm|4vElUv;_{@Psp<$pbK>p^k;c8ovHMpEdB^ct2N*2LONZ=)fO8hR+% zN^*T5EV?zraQV{%g+itJ@pHKS1T$(sEor-H>S<5%Sp|y11qDxzyt}!nE-$Zm;qK|_ zpkIBxZ(Mj7Q{8W<1MzdD=bi?(gEqd9(v3LYZ-U7V-Z9azQ)$%`J_shD!|kzr&HPJI zUtsK#@zx-#*#+aQ=iI|9U0~6g$qkmv!;)LX_j$y!V7#!egx=C5_3;7Ygg(iDC+(~c zX@OQQ$ND~)4HD96Oox0P8+eE9;I9(VF?VE|9%a?8u$ovpL(2@{%&Ji9iARg`RMu)Ryh>6bm2MT6zX*B zxN7;i-gE;on?rf0;Dg0clZSfVr6b?jK8nD*Yd?OJR|UbZ4-b#k=P#eDdzuR!p5)aK z>~GKKN8a}QZ+k~+=D;^TXcM!e20E#{vxwCVM1G#__3BAp{`F=*ua_AX>HvzQZFBsI zHmbfc0P|jmHjvC4z0`(csZ5+b5n4J?2Xbmu2jQ=In8c_`6wJrB~gp<=BJc)uET^!(jmfUxEf~q&P<`)!*!=PX} zw(*D#H2GBc<5erMMN*As&9txE*u>)??|E26P#hoDe~v&&oV7>I=`n!_mmdLq>B7<) z2qtxX``;$9?iV8*KTrUA5auixi?HZ~4-GJ9!IQmw9dAVn!iNc$`+c>)+*5eT>E*{# z9%P}8w$6Tk?qF=gJI-7WARBeetV0e?4y~3~LF&A>_qrC)Reow&uLd|7VvtSNW)WcS_{7RIx=oMWMmW*vO# z$3RJSjq3J0b^icrY4aM2wU42>oi>(1^>c?Bh6S2UaeIboV7X(Zq+(KsNpC?F$<6QV z;Q^h{f~KvMvhpNa~C4UU0q&P`~3yoH1Fs}`H9~bbvPU(Z5uS+*t;i@Z-24pvN#{zY)e0< zEi%rn*KfyR%M>B%cK6I=VN}3`S&Px zSoKea$#2*0^<(bNb$eN;J3Z!kqONgca$LNu+Y52wdCiSe#|!Po&m0ayEow9dG9Ani zSHJWW@BV4Y7$H~f5R=HE9hg}XMB&b*iH2+5#ANug2HiW3qA9?=$g&4nP}TzO|y0G%voVpx*ky%#-?fSz#H!a+BK=kr z5}UvSe*=Q|q3M3Y9V@GAsdSGl@>O|Mf7`_SPDr z%xI(gi;L>!`i7s3!&7y5n(p@YTlM(xNJ-)n(4P5e`Yqm5x8sygcq;fsp2Xvv`oWz& zo40&RnGrRn%|l(|)~RCm8X@OsOJPQWW)ijzza9De_DUeo_JMv|JBzi+M(hgB)5&Mq zZ?k`d9~!sUR5xQ6>hh!tV{5IJyiWZ)sS}BxVWE!TRzlUxN@8(e>bs3uHl+D zF)8-zF~(H(#SwX_14Wx(P*O_WHPGU6{WlgC58XZeIgacc;t|W0ZNHN;MA{sP-UFNa zWaN5le$pHvsmYqm`nOy|$D3oE23f=x>W1Nu<;T>YJllCEMU&h3Q%i3vX9>FPAKJfT z^%%=AJ(=z`s4&)#Z$E9*Gz;b$?%q zu&&S5j@Qr1^`gzBz7J|*?a1%k)lIKe-EuW_&$?>$4jRFt3bSh?ev>A^#<8&FG4&0p(}oO#mwX(?9)%NaTF z_tzut13uF?zO{^xMpu61TFY|NsM9i1&NTFwC#KSQ+^?S3c{^=rqal`O0J^^nEM7%U z<;!zrsQu9zq5|w)b9hf3Zl*DJet3A`n`ypL_O3AwE)el{P9;zvdomBVjbm_5-{EU< zH7znul%blAn%Awsah(X~X2;uMrFwDAB-RroUYZmB$RZt{y1l%*$w@_YV`^>zp~!t3IjF@WlX*wNCY)a{&Jx>-}8m!dU53FpUnI%fCPM zLLHDIadE*5UGc6AJhl&=G0}K@JX9|f#xF7!zm}t$jjaKxWO_>|i(#BnJ0}Oc+tfdH zv2BkX2TLZ!d<|mqkCAlgx9LK?5-;H#_W3lu3{2uM$?%J%L|LwW`EPxk%5Z;A%T)f) zv)X4J`%UxQddsCDjZEiO<+)(#_TcPyiw48wTl;~!xf-K{eE*BoapMndBkRAtzA)ZP zx#4LiO;6+5>ZFoM}t*XJ}EkN9Z+HA*!1eVt<#^F2b{{oWP1xRI{mWRZeLCw`a=#6~ zeg2sXcimS9r21jJ)>6XQ`EPFZh4;U&fz9PV_?I)ZCMgn~9uXJ_ z9m8Z#jYuW`tN2ze$P_o2$Djh%v0xh5x&ZK59q#O>2digLKD-gbJL z!2d9(b%IR>u~oid5jUOZ1ihy2$Ma%R5VFU}Z>QinzUk6^p{bSm$LiS~Q!d10Tj6Je z4qR+glP>CaWai0t;}2!eDIxSr6WG&rzScWe|793jFYz07@xyU`q_%6{8a=@@>a(n= zKkSq+ou(u!A=ma=|6JeIC4^Yp9YXH-Ki2+N!%$Zrxv7~E^?(>G)cN%nub;XGK;L); zkY-DBS=_MWRW3+-z>iPpVqKw77|PI&KR5mT7Aerbt&iIe&|t{mxQ-%DbzCs5)?KJu zvlTQYJAY`{&q&RK^`BJ6`fus=hb7ot{=@%ndV9!EHp%448vmD&;qzJzvD!ddOP>pk zHnHM6@iKWT3%Y}MhFo1;@x(@+raM%JN1ND4J|yM*Qw(S-x345mbt2P#qQ2Serp+`L zr4z&@Xj*Ew2=uo{1=hdCh&tPHHcSbdCA%%e&-kZOZtC7LL%g)cq^7I>qG#xYwH?+t zS#Mha0@^DR+tJWpZ0=^xWiqoTE@8BE&Yr*2AsW)(PS^L<3rSZ!+KK01Ym#hWve)H3 zR*&1Iuc((^?T(k=6ESv#55~1066~^z5_koPeYFu_JZfEp8KJXJe#?Cw1n!Tc36GO$ z44=mzjH@lP94E+!A~j)Ht|jMq|0K$`4abyFzG8d)Qu#um&_~$wmZo)JaMAVIFdY`^ zMEAahIuJYUtY5(mrW1z?$#-H@xE<$;Ke{XrEU3=b%n%gUi!FBLLAg15s#GHIUoPYH zKRq^=|H;43@Mbr4qmrU+G8j$@V>gl(J7l1Uf(Zu~lv81vr6r(Zhn678^X*Ul)z`3I`3S-@<)>0VIA^jXV$2hD=ZxJX$E*+Q z%h?-bi1p7xlc8P;{XRFj_2=3T>6@xCvWndC<4-;!bN-8UyPi`?mG+YB3;2JGCM1_d zr_1LYkj>)fu7hK2*zfjVpMP*2m#`lz$3n`3-Aw;a*8a5^*ohAmdA>p+{9^MJgdyYF z4G_U=FV?Qj&{{lllglV)Vs4CIPb9vx8tGhLJ#+a(jVKff0p0y;KDs+?IBvwof%y0` zjPcizJo@f`rY5v<>=R*z`9IZ|BW<8* zYGy|qj`4pAB8+!yC~}Z^TUb?em$NRV{|vwk&nl1h*oNJP*S-s{5Nirl$u=3_aZGk> zFBxt%{J(BJgC`roSUE74Lvs7MQcDon_Ac{#J_InSu^wc;jg^w8b(3xl+i9AWK2@{q z9IiEfl5j{yo8$J(zrs$(_UrSFHYPe+efwv^qc~=#g_@5J2e*48X#YbsaQGQ)pLD>} zbod2P{#qkN;hJY3EVh%Vx5LV#Ft>-~J@ZQ~K%|fUMoFQ; z=IS5)k7n?wwXn>hE!$LsMIvr;jnLXDsbZ6P1Cv~v=ptEcQqF0-e5nlWY@z&t*^U@H z(3q))ESnYd6v_ z(y?}9Mdr4nyjn3bnWyX)i0rcxIUUu12ID_gaXh(4>QTFKXbg~m;NpOsIO@__xxPXU#3ON9C-bG zZRA?*n#<9ACK2`fYVEI3c+0HaZASL{*TT}(;6`l~JhmEa{7sz)n%%kculz+iL-k(0 zBfK7FTBrk5Eb2M6u6=D*nkeArwbt7+0K2S`P3W8YS;|H%9ZWLe@zm(1PRM(M^C_gN zWl7Cyh_!mN&-?QsI?`VjWEv+JL3JaVD!PkoJV1_}?XCoxoNrgy1dq%L&cgwmwL)PMPNaja_92z9WxZ=EL2G6jna&?PtGyHmw3_ZST~&I*kA&DT6XkfxpLo?V;2e7y@ciN_QM1x zexwoB53=!=>A$tX-~@|8yX?5%uA%8-oTuO30)Cyg)e_hIg#8vW^2eb(EvC?Yj33x$ z-l-Qx+UUD3@BkyY2;5o z!Ces!QH<2D6*wF#t*`z2^@}{UO&YFrx8|<@8MYU|*m~336Z&H%aZO~72j_;_Jl2ba zLLS=kR_bhPkH2g8KeKwRvCd|F+4Co*Z+;kJ*Z;cya~WH6kW8(Q6-d`&s&=#1BAszG z#~i`t`ak_2=htTojl#z0iCUgOvq_z09ig`a)#nrY+T`S#pZbFmhM9|t#FD0O!kZEt z4p5%8Y*Ey*=e8efBTM?A#un=2NC-7)+SN2ub*CWDd_Pm3|E40h{hvE^-OB|NUwgZ_ zxTtotA;f#T?(by*F=6Z^b8QD~ zH#=$P)Q}H{1OI|0I|NOU8fo25ZHG>VHuI@GLr_%eL|gE`c+#D}Rb57NhS$Un#MC@n z+Zg&oPK6k`bzy$j(29vvN9+8jClAis&FHCO+MTwRg;z_$*gGZGW!D~m*Xn=Heht^+ z=zcVj#@vB+`|M$9_~Tu}*Ykl%&evdUyAjD_OPPXcbeMdh4ooseu~zgaTRTj~MUk?EhMSf9a!yLpPr(YHMiXWE^ZZqqMjevksI?LGy&}wjd+8b$W-lQ9?a|$Rmw9;k>(b91bB-;e4hq%Y3*R&@hd0-h))hS%2ht{+#YY9U#rd6@}bOSJt>jIyHSa zBjKO`rn^yI60y@+t2^#iiR?66*(bhVS`@`uFGVuT+FoPT=?1Ho`UQTwK$>PdK_1#D zF5d^1Grxo>=xhJ471s`E=lKQi=h{`5SC`d(zpwTe7uD0#b9H-nTOA$`Ek1IYB_w3G zK5nbm<2EFu*1HI9au$){&i~TH=!s>ABVyra*m9RoT~kyT*`c z6^?BpGgB7oPKP)BD8%R=2MnALN-Ki00f+2Kz_xarod8qP{e{%e`~n9<%e zOyQx5H!(A^%+Y$O=RK$4l(FN{NiWppk27mm(zu2?6+tX!(Bl2EG)<3sa1v3}D1M81!t?YGBriT!$zh^R2m z{(Q9MsBco+pOKr-fd6vbH?;lNb+3Brp|$(A>kw*WtX+N7R(I=Pm<#edRq@zrZW~+9 zfwdP33c}puOdspDU$uL&8=xj-p-#h@6zFW%B%H7NtVAmw~FznCy*UP-CBYG-0^QrBkEXF;2e z`AywQbEW3FeK;)0glNb?t%-FIggCX`?YzNI;$3tbMMK!_ z@N0;=So8AC3pV%~B>Tp@K;UY-#WAA1{KGNBmvum>>axW1 z5^d?N|5K-S9PdT^*ag~cMm7enF~ZTEJ7jv+1_2` z^(0qX9hC$xFHrf*+z>?|-MIxKRNK)0u}F7)b;UlwLe1mhz)x0T!H#cCNncJ+#@mgm z@0($m(d!tWs%?x>+QaYa|Ml=J;9dHI|5UGBr?f%6#<<9F(3|St*PYvfne^i)nS1KeLKFHHxJmRu;zYWoe(`4%JL}nW=8IQ+}5%rNlqg^M0oXPFh zgWHa7sSLgTy0ZB~i?Lgj?RugPjPc7b(rqqG2(H}-MpiSoU)?_^?7B5~D=&02|2Wf4 z&e%H*X7@VwTd$q&iMm)h?e?wR|4iFC??2JD`5(!!ak6f2DmYLeY>#XAkJ)hTu4(U3 z##t#sRL&tL90x2ROE>2 zBkHD}i_58s%ag)*ou3AO=+H__2RUiu!F(Oq8nxXn5YUDf z>aMT&on=qYPyCCBZlR8K){ID>-3h4>&bqwyPUEqnwV>Q$kUhLGuL<|)fyRj5w9$WL zL7zc;!7s*QU;4~*^+at4Aw%&T@Lz%V>5m^bocznIcs)0F&DymmlffpYQ=4u)hJ`0m z-Qefv{WeKM@JCc*e4PvhlIrm+k1^W%<8B&~$7EZ0T$UblfK+5H`k?kh9OG1-%l5QQ zS+c?_gz6eiL67oi>%V7!DqWiQ`tW$PBJ0h+%lcr37hjR@yqSjqn5ghdx-S!>@kgon=_4dpbNd zo~UD-;kgdba>foMnM@^i?D*risWr(RkDx!=1QxZ?ZZ5UmJU>120`L9(JwKJnkPK@- z@Eh;Zab8u3rgpharC#F8lYT0={uqGzglDXMSvv0Ps53r_=kG<`p51=68a;Lb>#%Yx?6wcDd;nvwzuDR^vlux%N&saec5sVQ`?WN7g&3rn$7!v^1nFtrpg-I$;S?qxr-&3 zsB$l${IW0cGHLBclXLzoOr8XbGhTnoIIRWq`NJ%>kR;Kre*r<=`#+k10hQZE3+=Hf zn9%VhO@Z~p(B4@5`1)VlZjryb_PGj-MGdg}O;tnkNk6gU{eEA)fB&8*ArFs_{1hfX zi5V=^0e7)d!Lfc8!&0Z^s+r2|=D$=p7b%};b`mUu^g{^$Vv{F@x9qo<7x|Hxqeb{x zP(w|OI}9RRxD1;yc9W{9?Y0Rf?|Jg;Nnac!vGSp(UC(5(Zp-JN=tco)LOsUWbq1(; z^SAp5Dt0wLPc(m3=kp)%yR!*SU7` zuRq6FITnh2Qodeytgg|o5lw$Aj?eSnFr3yS-RR1h8S^tjeh@;RsKYmw?CHWI$hI~6 z$1>#AfO%!;cprifDaT;fkD=m^^_{+6H}BdO>KKW}#WWkzH#K)|bY8+E?7Renaq3TBS7~JGFIcVPud^r-mAr@_Oh{Z9ERsPJ8!jw}wXg*? zd!+3sU-#BR%<$}JHCTKCB#OxM+Bs5X^V9BWM(>~?>LoZ zo}u!sJ-hDV{1u$%ze1aMOUET^87LF+-1lrF!dE&pkR-1bvpQn^Z20q6cJXR{Udsal z=HGY-44JN#vL~tc?!gXwa9jLz}4zH`O-N!agt%+#1bQ@UT z?wT>Sn;lk0vn=Vqvd;@~enSbw@|hgBl607{tSld~hQ zCh}b~z5(U1kT{WQ!TdYFKg`m6i;p3#S@9h0MUTGrwG?4JhI-lgI^NRf z*zPl@{dN1~m$!PTYrRRG)A}x;H*aD89jK5ka!CGQoTPo%uY;$x>U0ujPu5>h zpOia!kpmquQq`L366vXTG-;g%5_WKL|YBCm6kq=)@zP`d~ z!}VkvN(|+-%THx!a~Qu!Hy)NudiWZk9()tve>>0d!TGSBWAzx~e)V-d^H;^pUdw!| zrD3%-2Wxwv;&+>M^T0YafDg(quP%8^!qasa zYp_U%dAL9B^p8K{NxL8D=oyS_adkH+%Dd@Y2am9%k>SdS5hL{t~GkSk#PuZ zPBVRLz43l)fG5b@HH}W2?K1D+-DJ?;rI=dYU_6-_xd#!BL#JJzZ->n0)&O;Di*@ZZ zPqrrQE+CoB`~Tv9)zZQ&DzEWPrK4S()7kLXfIfWu$diQIZ{Mo>`v;mJ;7K|Ma zD}Oz9Iy+r*D@V>qxi#HmF4ZJoK!z>Uf#Vb?pY-DkNSCZRAbF6>n@08E`-e5|^p8Pl zkPb;HJBpBrvGfB$o^9iJ{Y6mQ@U_UcuP*1I`n&qlV;7FY<`aEhsim23kfSfxa#+1! zP9oaYeaMIFXq4|H@9~q3OVV!J5;&=AnXd}0>3v}x{{ysf`QSj_n~Ao7cbf9kbV0k| z<5pG0gXYJfPgwJ~kEH8Yz*!To7lM3?ajFfwZ(Ga#rt-k%G8-}fh3)@zFulxi7CMhg zK+&+l>_GqKwm=R?oc(}8*L%Rba8gl@iB3Ta$jO?5*><}1`8KIrTwcA{H?)T4K5pUG z0FTe)vU&ec|JN=0SX6!ktaIj*+egRE*W=G(10E3-q~J&|=ZQ<;Itys6#g|niI5(5d*aWu#AId4Nhd79#hI)jU0N!X!sB}^rj&9n@)^^@28lnQpSZDEczFwI_g;Q~+l zBg8QlN)Ly_(GNc$2kI#gs$UCpix>+la00$x+Wu2$ZiKafG)Dbj=G>p{z6v(pn+rP78^v`Cl3AC zq&Sv;wMla}%hca^PRp^m?I&ca_Tpbq(->#S-2LDBFm8G=fZ|bn#5L_*uWih2|6I6> zlQ!hA-5l9v$t57v?^z9)YLfG9H5^ig>dAj07RR;$3zvYrr}8E2r`cYI61HuYLE>)7>VDN?VkNDr5~Cwdm^$Dtf^oQ2M#{8#GTpF80A_*!M>Q?Fre+LUR3 zUasj`yZyaY>UR`pz)hL|aQkg*OJRFH9`CXwcd~i^&srAh7>PdlOC71#<`y`U2Ru6I z1`OJGFH!-9m6zh~u)HvDm%PF&WlW``-Rf>GHlU2V;Gbs8?)Rgy9luU$&2Ykl2iZTtn#mrLc52f?I_}2 zB$qz0lK;8>&xhJq{&jpQ3)%Qx{9Z*YqY>T*HbR-e{qd4lWuY>D^Gfi&HI1$zirV+qR!&N6-X)aF?(Jrm<+TiM@%I5x)Q|S}57cRmEoHM-O^&vO2@(JX2yW_rY zaqM{t{2SfEaNHAN@F(r{`O%%#W+tPizokIAc|aY$P#6Bnr+cEpDTL74#@s-v$P4a1 zkAPo!!vvR(t^JywF@3E*!t+)hNAuR6pP?eGoFh824WnJZ7%o+hI(D563Egb%fc?RH zGt-cd`lEo9^8Jf_e4v0|!uaXcp*?tns8Z6cRm6*Rdp8iL@p?<3Sv6a&-uV*-Q$dh#TuaHVu zkFk1g?6TI=Q0C|3|qZ$-$MzJ<`<5K?&v6SrUETQ7V03=qFYa&9LFw^ z!LH`m4!?nf`Qy$H(1gdy^h8*2;nmY@JADnPoxEHg)b{OS@3(V#Z;U)z&%eGl$;;%A z8LfX0W*55n@j_j}NF9Fa4;|#6VdWskd<>u4tzc6Q7TFNm*%Xk&zV<5Zv=dd)7H2HN z7VBIB3dJ5fo(Gj)Z&3$G|HLAlysr%X5uZRezrNkpp6$98o|AYxhd+8$|7jA7@``Pf z-%VYpsu|EM@2K=3kDZTe(ahiv;H)tDAT4`2D&2i;L=T zc&fg9{ZifE-8Fs@)B0Yc2MsbPOceLrJS^e$AuMgTv9kTnY}I2Sb>d>^OotBssc@l= z4>iuE>#J5u$Vqsy4)kRxG|)lYt}%eGQ+ga;m)fomoRXr`uN@Pis;?w{5In}KfBbhW z1K;<{aqKNqL)2=X59^k%Z!{0b#tU`y5ATH^^q1=}F}3rSg)cDdFtej+Pi$c1BRa*G`ev44SaE%oT6mSX>d$FAM7>xt4zz2V z5MaYGE~0pn1K5q>T!a_%DM8<4n`j@C1CEJEYeR8QB&a|AauA32XaRhRigS&{ z1i%frC4LZ;OBd;q-%+Rfx&;!~0mU9tTvN^sq>!x60f6kZ{;2OO!_!pqbrE|{ndA@K zwbe&^Jo>yGb3Nd{SARn=wZrmLIhGqKPm{%@`R25uC&JUQctCfA7hh^Phn_qN{R~O7eniOCFz5JZ!q4&uecr{l=qWr0>XU096>#rA62Qk z4K(${d7Rs98g{9g-_@R9|+VHu(=k!6#lasfd&AZ4Gb;eS+He)$qi)-dC*TRN;OQzVm0I;NMig@4n$LB;Hk+|ECl`ObH2#?j!|`@kKfz;*0&~F^ zY2BY5nE;@N^8|tiRgShlC&5~pz#HtB45ABl8cMwQUZ~}`xR?5DlRl47t`~e26uJAK zsB4bVc0eHuxAy17yZxyVYeRXV1_tbdU-6zYOl)!7{4o^G;g0(-Z?}hbG?*bG2hePS z$A$KZvBf#_<1tM;4c9IP`EEQ%{%ui<>svQlumik6OXIK`kCDe$n~u>wWY;UO6+h!L zwznZ4p{zx1cf8%qL$iL?^a1E^Evvzb)%rE`q$+c@W;+xPu?5M?LfsgsPS|JSIPAOY zzarNtJs^+EzKamJB7(T3AazahN*XxSiyGF@m7YJ8LA)*0@rN{YY2AUSTfs+mB=%TYG$Ar9yb24#)J5Kk?eh0tnt8F=rc*fqCBY z0Z$I_kNX=Yj`PV(VNES$+)EvQB)u%u)osJd;m|9S&vP1!({%ioLiY%id18o1C=che z#X2h^PTkLR$Mv63u1h!*qHFymmFhu3D48t_>c<_|265(CdzN^#dmKq$=RJZG5|Z$E!CC1~qwvBI z!f}R=Es9)Q*N+e$GaSW<`EW_<4|molHg3abn3v<6E!5$I8YtbCen~_;<{c7pH=;;v zthZjL>UxKjrgyD-cwBhfaGP16S6Zu+cAQTAA>-J#J2rpK=KX*9zl(TIqoA0^z@E`NO zV6v@5K}wYLik}JaDf`+h7VG+GE1;Gqr#*R%{Wkg~3RaGvUhAAtOBvZaE>~j2pS){l~eSa1=8zjQa zMwsdX(@?G(F_)?3VPDF@R-eal z`aA0UG@d-yFfAO0*%w3f_p$U6)>6ZA+R7z+;Wyo=a4FyOlZZQ(DQdQt2~2)liXr6Y zb2;sfxu+i7*{Hzo{I#Y{x#S@ZXGhgCY4!wQ*o>SzxSp}t?b$=SRMW1`+u(dbnQhp+ z8rQ{aSsvH#2KZ_g*lhZ>lw?R5f*^W!$*tT0}i64nL)C+aMU2g>$e|3Jsf6}n_ zlWYH4UOP2Ta@=14oB!mRZtaKfp9kQkw*gbO!_CKk{(oqecQmQ)6W3?VlbtctseHyF9WT^L zNv;Iy06b6N>j_HIP~XGGNnBz{%VqE>I-pQ=$0q69u|g~amYxgoXdDQx=(-%6m~xz+ zcgbjnZE+DHx=8D?1~Oan$%M*F$7#qX6gHZ20#ai&ffh4jl0u1QNV`EC+o7biAK7an znd*^@LQR6WI({jfaHZB)?q~2vPWqa0DzCC@dwtsCTA*b0vz==~IxMV4eREDbyzhH? z3Cw0M^n%$jn{E8!!=-)TBu5d~cuvvX<9y8?JfvJ{19ruE+w}RX6KXfv`N{F4WamOc zt+z@z#D2N}JJqJgLMdz%;R> zv`=`)A)czE_T<+!7UxiuEz(KDzycj@jd$PSFVbo{-s&Kn`qiOf=QZSpN1HW7m)=ij z`yOt%iZz)*w%QLaA!BwsGc13=u^vL5ttq#?lsPa- z7MezV`f3;;x7@PVj%0N0g_2=k%#Reh2u*#%_7K*4h}3UgMy$S%uy)0N*I=NYGhu!f z|1Rx?dMvd5JGkB^f$U|I5sK~B&X&?br1j(cqCuF?^mg$B4M6=PDaMVZY(7PX)FXqKw2bE9uO!THIm3~h%iBE2^1dD=iUgJqke{cXPc7yrk=68|v8$WW_v2Th8n zjz7?$F<@ZaZg+gsiF1#S2lq+F5y)!UlN_(pgr(guVdE%FKyLlJdQ2@K-T}$Ps`qlC*I$)7=Nhwjhm# zw`Q9c`*AEASx6gAoUvGk5P4LF`AXWf9JqaFi@Y(8G3e_2R}!0o>7v%)r;-4rhF0ukuM*43dj{a|i6>i$}HN9y;v zQ8OS}-4@<3x$TbomhPvrw%bYX^;HPk@9_=;A7c>=;2yLdCoG*F&u&mtfE>x+aIBSk z<(NXEw_Jgmwhp0@1HOof=^>o|6jr9UKCH(m?jWrq<$giQ9s9Bf^-R+{L^L=3$v5Bq z*Wp5)PpYA&+>#E8V-q#GITW3+K)2uTtINwv+V(u?+}_?+4-bznjevm(d1;q6oa6Ea z`Cq08aznZvgH$cN8LWLw}ha${{ z;#afBTPon|1@c%-lkob$>D3nYDIMcIeO6D1Z6}P^^sEojE`CN#pNL*DOy7VyHkM!H zIH`-(GYeoQ$t^+oCkPr|R-@Q{B9~q?_rgIy^mAkB|4&!^2(m zMEiJZ4&&>V&f&vkY&$BO!;4LIaZ&NMr49MFNXxP*4Q1Ry3I0VfIsrRrvjsZngb#eN z2KGc_J01qav23-@ho?hze}7*c9`Q8}#GxF0itc4kWzqI>LE|W%9;7(k+$5C#0nVT8xCp=MB$W z0xEiCe2uty`h>@Q3^vD4xV{gPA;0j%RCb)3&}U_lUykuLEFOm_4Ua$Q>)v^z?t-Zf z&qWnz21KCPY?z(Ra4G46%4VUSLl=PJ9>}|GQsj0ntwT1N1EixlNB<_<97ql-5Q_c ztCLwFA<_&%@`~T=-x`!fy0?wBI%~JCT}F;y8#Y;BJ6Grg(*LOUujXGEy(JaQc<4c! zn?+JQ?V5Tr-Nf{B)Z>;YJyx3E>=`WWkegvQV|zK3BWlQ}yoszWT*4 zKUVw8O?7{NTYbCzT7CWcnHTIJ3yX65{jR#$ZzhtH%)!pq~ z^+fSl#ACZ(E@-=?GWT>%*psTX@so8}u%mP26Ok>~4|GZCF*4%`8#PpgEvDfT2=}T$Bt)3eDk=?GJ_n;kx>sW0` z!7a`qYkKyxryfqn)%eo=W-6TdE2-}{zb=*^7h*V%X=s=QL-myOuC&bdGt_@EhH5)C zp|@i5m8CeH_9cYlNvPjcof*77fD(O4`oJuKAo*zjN5gYm*&0mVD&5MmU=)5f%I zu;DAISd^2e>|S)^r^+aPyL+lG_J``@r+xKDfAU@R{{5cD*8@LEcQ`zdte0wkdBLw8 zxW2~g2QGM#?!qnBZL3Qx(9!XB_u`(ktDmTYzE~uKZqS=HvxW4=q8%39o@~MHK-y!0 zP8aFyy?PH157pPNU#r{OyXxWoK*xvb@!^R!%KLax-QRDk+po`bj>sr^CKRpVam2 zNR_2@^L?lOAx!$*T8KFM8wzx4^=aS|(q6rv0!zSn;i>UfFps(0uUrS@x&CD69&hL4 z$p3wuL<1!ySaDAobD+^@kfo-ha5+uwm&-YoM|2#>oKW&snt>V9f=&7g8r~l^vbd!-|CEsEuyNYN zuMtmC7LSn6(T0HIY2ZN|7V+#CZsbQOa5E_7SpFkuP~(4^ZfPP~6_&!PJ+uCk`(HpU zwQk=aY`1H*&$&4jt5)lWJZZ8;p%9A0c^=;=)F+GUHh~TMw#Y;gn@8SWDhg?P!EyCK z;RD4VD6cHuZLmX{C+unwUrka@g$%w*ga9m3v_gv zHh%CAmOLK#sk&QiU+=4L-)^g~Uv8`0Z%@_z?XLRr^Kar z=@H{U8T5Q1A-)>B(T!!(dDaoCVaFB}vA`#~!XA!-Z<%Ju^@g+-Js1>}5uH}AI9 z)w{>)yHDHdmw$LuefYTNr{%Cnhp(+(T*y~k_m}uVpFQvIww1iEj^ts1PM)57W|=e! zQ;4M>`Ed%U%62%NVJq#^CU)UTKrGZ@L5;R&jN`CbHkbwQ;`sxO>xajKens}FdU$w} zr{)el_KPnCSZN-T%D#JE0i;Nn{Xs@Mr5JRwxO7=waz}$9`&FFcS^ITNS*`f ze>HpFPi)umRu!!~R zqECb4dh>G}pKZtGp$b^W=AoJ`Lqi*KK>mj{Q`xmlEf_3~RTur2m0o+zd2eY2Qej0+ zNei9!0Wo8atUfAnC=JOxY193oXaT9&#^Us5!SshCmKuXjA9hE$U_$k4{%Jj*3%eg> zWt7KROsnCw=k%v6Zp!Y-cTvrW-e3(k-~YG&=Ob-!zr&#fXGhyYojC+&{PT#%c|0kH zUxdYC9DWrRU#+r5I($tEi+23gSAz4S2(R1*ZkATdDZC+E_2<=p{WY)L_9LxQZkP*i z2dVGo6AiY}U%rs&f|kVahG?14qs2W_68Wm@3%=sI#S?Rn6h3meLAblGF7}Vr{_44U z_u-=Y^yz)|!!N(9{_qcfQGNRUn&O^ld#T=kS5?$uvLky#Foq+&{E)hQ3uZoj=$Uw(e5e*FDy^_&0rnZj??XFC4r$GhtHzx!H!{qj&f-s3s}`8&E! zV3ViqUS2M_T>Gl5$kBJ(v0iitw7+vaLW`#a{4Z%7fsfb`y4AEHs5noc?wm~ncx7k@CI>JpVtPYb;@2E(kSgkuB8ROc61QpissRbLm9{|#IByBbkZiQW#~c~ z7RLDLH5%)-ceID?mY*`uX!Mr}_4^qCC6m>2OKc5B>F6{vir{0EB&!CAtcMHH4l~ zU&&EuL=4GOZvvM)w1`n~ZE-jpQ!G%>6%jcfkui9V%-OXJy{>aZW9WEjIT29O$Rf@X z8+LLKf5p7!^?a@#P3I!zysN@oxa@9NL?|cB)K|z%g#KSv4HX^{YN~~&!yA^Y8}&f+ z+;&6fQ^RQl<8yong1X3MZvP+QDZRLC#Z)+}b(*NMb-e5a>D)lmY%RGzB+-CH#q>HY zLTg)nRagj}102=LKwMwQs6U(2^B<8frNqnPwI}yYPP|*&ew?pn^XXrtx;q+-t zmbP@Ap%51gj<=2AV`@`;A+ik%WAclx9Bv<~m)%#2{ahVheyX+?54`yH{SWV|KlX|nD3T%a6f~~Hq!{fHP{q|ga`Epqnl*wd+rvCps6O9P@i@z4OfwSK*4a z1ew9d#v#NbCHld|#YMHh#5ZuN>ha-$7wddBpZ?|lrL~l$FYX~`>No``vpI>J5t|0c zfKi`|jUUe67Dm$53F^t+@*eX8~fd#hh?zzG*wqCw_tghc5s&^lrtM?zb)%y>Z)u-=os$cxU zchz^F@C4nax_Q5$^PB4OYE$8ZAb!UjFVuPEs|?7k7wP}+)9F$dH`%>&Zazf3Vsx3OrmQ*(TocI}f>o}UT}P>+1$+Cfjf zQQ=a4Acg1f2A!h=o{4u9hi7> zAOl02Q5vTP%lHBJinF-tDRTIr?>wmCTC~|(SO#>?-1;Bae(Kx%QvYkhr3@eJ-^)1&BtT4+do&= z@2cwK_f_@FUtLyz{AV91d{=$<>6*41-mc%_eRGt5dr$ekQ8|ygNJqQaXwbH=((-~G zNr0aAL>)#|(Yv;dlj9%R=TF{jpT}Q>ZhS^)8(O)PCn5e~td@<_@P(w_%x_kXER@+| z9gY!bI`$_P=e=1cX{kGIvA&xh*%o{~RZQgvL>&J{_+6L#{8v7$3Ylb?8@&iTpomC&gD&;(D^ z)qZYEF*op;sy_(RGm^pC9V<{R)b`<04KN%&w036xGQ#6y?7ZX;swc_-wI(6fKIX>U zpw*EE`Ml5XY?szqTY5RK2brKuE|>ndmdB^$3fs_!;60r0v12YwYN+>8+F-n9*E#>0 z8chwRsHZj{g}0IZhkn)$tSrQB@oF5laa{RxQM+^o=MEq`jxU5sm)^NNX8$_Ur=Y$5 zxW5u%yLZQS{WZh2|DZesejl>X_S?wqUru~p_R*OAD~W&e)Xgv6wz?TsbKHJ)Uyz>f znyvK*jR@Pn58|3%eWlUMOSk#{U;W=&wOXsO`6lrGC2yKILE3N6Q)?|VMBpLo_dOcA$FDqwTRnJ&F z!a@>420;!AF8XHihrH;`yXzq?|*q+{qT!@_34+i{jjgzf8149 z*S2k|iwit8_ej?VEb`q`Ir!Qv1-xP6MJn(N2^$ui$OiuBFVsmquuC06`==3Hp6pTx zJM^4{vM->un@r$8Q3pf=Id5sS98p;Iu~;XD@Oe&)GG6p6u=bRqF3#a;JI*UBlysgh zvWJW6@&3BH{j#fm`aOP#0$-0kR6qatQ2p+=U#s8$_OANz_Yc*#&o9-({RO4R6MDLB z@RS{u^Nc4QJ$<>7X=Amp4@_sH-VYb*fS+=HR2o#5ywEPk`CQyV3U|r8U>9jMaCVqdw z^y7}qysej)cqoC<$r|A&9|f4AI@@r!htQ_D%k zR>Cv0JNi1g3_83gff??W;&VMPHvd=xy9%q2dXcF?KHJifX#yrGrT)(Wo4nLW-Pi3$ zPI5Xdp)%U-+uKwsxK2?A5 zw|`ar$)A2-{qhgrS06rI@Q*_5_V^kro{T$CN%A#WY&gby?dl(gz{N+uHrg0J$qrq( zlc#IKC$PbhxTsp03IN?>WSeO5iK8fBjcKR{#Fr{l5DD{rA7Ce*HIh z)t8?))x#YY{Vqw{YbxW0B<$!0P~PhYHQ*<{aO*MDVso(TBIMX~Zd<4Wa&`$!(ol(_ zr_|qg!cy#5n~wwj!PgCLuCI9!=JD~-eVT~{yZU{KO;}H)(R0>jQ6GN$HNp~HisPac zOL1J*IpEA%O?}fK>fmHhx7@#JpW6r)Z@9kOkXRe9mPW=~Rag9U0{RDDl6`T3 zulH}bKVi`e3tSkVxW9x-dbIVuAy}@w+%?dR$5CC3L;YjCkgq7=hV0QT;)NhbuKr`G z+ucGHeuUUP)p(wYyY8=KzuCQ({c~V_Reo@hETgvVu9ZPMcSqKLaGw5KU+1u|YLF$f z|5(xM)P8M$p7yVS)2M+V&1?*4$2+>VUG6Wd%S+jwsmeeb^gVCTtmyxZ7O)GWFdZu>4AYq!W!H6^W@rL`Ev8;GL`oVQ;>VH z$!|YW@Ai&}rCZ<0u+mME!!1^I!$WbPs?{9-<6@8su^l$Kc1CGx*|8- zP~1&*f4ixE`tiQ{@wX4v?|<`H{rs($+Yq5AyO1OJNb!#&<%M|wYFA`Bf+ z9_o?;M)a&B?3i#-Iyt6YQO{*&yc{#(OGuF>dP4g#gt_gw9u9n+@B=7VNZ9i`5_u7U z>s1!$u&~f9Q1Y^l9B(1T(J7R{X&QNs4hLXzi1f_N+QVO_+7ptgLBwzNBo#_M91grt zcQg+9Pz4OU1WXExbOU8=&T{R+>?VN}qE8$z)Jgy9av$Jgbc`L0h;=09hW552Pysy7 z(=pnBZ2-3Lf^CFU+0zj?VFko}P-1CC>MO{43w6NFKKSpsgZ_)n+CRF))04bQOS-7p zss8s|FMS=?*$eLT^0ZOB-}q#7|3eX86?I=#em6dgR$_Kof`ZmZ4q8(mBus}G-^t3Ud)ch%qjhrg=+ z^v^%>S6)AUq6^M@%C~*2?jOI>1?HX?={8#|(qU3%8x_iTV*aLjIXwlLs!DoUq?0Ep zYLJ5d;YmE$9OO6Dn)?2;(XJ`d{N&1(a!@)>K{j?8*%&RCPe2bZBwb{&toAQobafGj z%TzxgIsa-c=a;AIY};+P|(2_uK06;gZ7Z>hn)k^_#!Bum1Y4K3D(#fB0?n z>%YN!?Cz`kTa=F{BEuh>z=9phr-1c|!*(O=PS!zgM$xaP?^qCRfrRz3kg5&r_ffYw zto=0li*CRc>bT9~yej}9rL%ne7l=guK@|EI`rWeEdP#yHnJdseIZ6pEM+#PMX!qM8 z;@_dP_zgFw{3I0>YEM#edud5)!()E`8%aG-w(2)GuKm(KJW+=QPN>3tiuzXgq(O`! zY1$au?!)oHuy_kkms8M>e78~uFsb2nU@1&$cpW=;`1(fUAo?>n91hhJ7TnOUIYw~( zhyUWVJh^^#b;ZZ`_xC&o%th`0b*S6lTV>rE2izro)%DE{&kcU_ zo8MMnzI<^D((Zbpf!{BH>o4JWNryOt^G6GHLDCWAm*iKkzn_9hk6kMQ-w~mtJpJoj z`SwqP*putOTpIQ-Ej)n5uU!qPOyDy!c}>&Tt9oBD?Jw;FuhBK9FL4^a!l29ng*r&d zTnM)C8IA+kgA7?%kVQ0n9TmUeim$m=)kC$}JyaK$_tpCkFVzpfxU7EhtIO&S{_u)_ zEaHb>T~yy;f$kkmqOLd9#h&!tKG6jRKNNwl$zm}|%C!wD+1TmRc2gxeEH4&4j?=&j z_mx@CHjdXlMzdO6Qw8<{hmx*NCE2|5ipk@U4f2n%Fh-%?@riBXW8SbxhqBZ+TvxQm z^+g-M%Z_4jqkwnMVXUY1nt$xBg?7qBIkN5Iq-gbLQz3S2Warc;Z+<->SDE3{B@4ZF5+F$(Q(g_=pHPie9=A zMD$t(vVCdum6gO2+D`Z{SWgpSD*4otsqxzeo}cR{hOC>`{i7+_o~Q%%B;H*3J;2{z z0^jDTJbzx8$7Sqa3xEDNCCzqDv-|zNdiU<8y1crk{R>{a{`~oKb%(`hYUA$u)#3`A z38Rm%cj#~Q_tU>VexmLuA`y4bkjZ-0I}L7%xRxPK{5lGl{oI&Wtjw|Pa5YBy%*xnKsY){iBenR2-Ks)$RhZou& ztIbZHo_pDR;YGUZcZcc^{^+{;yMOOj)nEMOFRDNPi|?zCpQyYo-c@%`av&26Q23M+ z3ltJcKW^FpP2Cf4tc%%c3mY6GIXT`PQ68KHy2JMPWw`_l`+>4LKWZrHeN>LhtFd%? z-p)ZT$_`~aeRQEt^P7FL80z~8$FNJ%nqKmbC`!lSw%XzeIsU;2EVkj7Uf+>jHu;sjuO{(N9_GPnp`76a>zxK06 zkR6C|@p7bFKb8;hQ*^peC%>|bHi-5>e#g^|?0>W!#7hp*Q`-l88rUoPAlgD~B!M;Gq~HLZ~YI1-*%(6REl znyiExu(sCDk4r1!*)QYzx}LB}^Vx9R0g~{|UCVUegpuZCU=k@@t?osz+=llk!56b8 ze1Y4@yFhUE3HSfcum=kUz{*63i@_s50r&j;P~pcSwio!3h{x)?@2l$554-AzU+$|v z{Nwl4pZ~=V)gS!fyXxboU3Ga)>8md!jPjry>L|7lg>vm*10+-3cp->2M?TR*5>UW7 zEw`PwbNB;WG~@*k+Xos_U@=+{g|-u-<-1LQt`;ZS*f~ff{rNm?P8W@LwqYYkE-t#_ zYlQm56>VGu=hO7?qkUDFL&Rd?>_S649d|{^@PiY3sxvIcT~>GBDt=epZ-0%i!`@c^ z@vrWyU;p(Zzr*g^m*?v7ep@|1;k|bkG%3Jh5p?uzt!?9{=^%^R3oj!@{1%HBn~e4} zHGblH-*VNt8-+IDGn7zLAO~qp_Q(QQU31uwh<(k8B?bOqPx9Md9n+2G(xmVS7GhC{ zSiI)4U$8(Y+jb)pGOxy2S1go2KjYnH*yo}M(LoL=J@scQfSViQCsy*7- zk!XaLdnicF=V|VNK=12u$uzgk};n(I{_2xFFuW2l>E4qnNfk+_D=v7=%7Zu zPzTo1W-iFauFB)8C-JbhktHHzintIB}!YA)7pgKO8q+wFtmd6|35bzm)IN<3{% zSeLS~AM_>`i=!ZCz=xu73Y_Lsqb6;Q7yl%1X#ebrX0xOTx zQ#w46h;#g8BI*g{*~J_Sc9)cWS3NyZ9Deb2gD2*0X#c9ZyS=D>{B2eJ^}oNX{=fg9 zAFF@&Z-1=*`mcVjKL2>&r|a+wvHar)TRfeoavQ*Ukta{oQPA*zO)Q?x$wD$Zw*|Vz z7S61jXl}Lu{*}c#DbKf~zHT?mlYIEATdRNi(E39?<7?zpq%73oeS@@N!H(qP-CG<| zO6d9Wf}iAntX}y2TPR1`wdjq*Er04-(WDMf)?pfl$sAATC;_L#U;4kJV|?p;NBim8 z(*}JgBR|2HTEGOb&%AI+#C{F=Zw9V?HL-dEoPyFt?PCSn<=5?ZCd~eb{JF7(I#k5W zmaa;?9@X#Y04reQ>^jm5+yPgGd;etp-`e?F<4GZp*{?HEOzt}Jo%Ds8YuGQ`eUF9) zPe+NNdRclf%R(J+GDegx)7*3{mxQr0Xc94VL(ZNkPJmc8uYKK^_3QXREMLq2Yx-SS zujL8rd7zfew+Tx-g2h9qZA0*M=3R_UyaXT{kJwmv!H9@5@kAFE6R;qJUvvG&+xFtN zx_N)7e)xl``lCO+s{Z2dd{_P9AHA!-`*c-(`0ld$@bRMBU!sKj>Y28emj^22z!w@W zmqSJO>x+=+2%pxvak54zS0UOo)RO7Eq^}p~B;-26#^-6{|JdhJ^pAw?6Ge(+S@u;$ zxlMr|*_T|DoJTr2r#h%k9Lq)X*?OZmj%IKGTd+8%n=aJVHeo~Hr$Om-o|KUg3xQZ< z!xM6lAq#h#%~geW**zaFtNYu1_4AL<)vy2Nw)&g@@U8mmzxq=B`mgV*-~L+OUHAO7 zqoVO+6PF|dPwAQbFvMb&)xa@)#+|Yq)UV`b+OyVZ!aA8m$gwNM5f*1D{FG?rvPg&2 zSQrg*xnt2)cL~HJ7oH@Pty%IA$R}KX*2hr7uG+rPhDBD?9|=V*%0K8Si?{Mb9pxc4 zYK>6`qyzHt6Lnaqv(_Q42_U`XA+2c#i*)=%okR|Y%C_>YODzp_cAihwe=M+{0&MVa zx&rMEvr?=tq2?v*fRl#u2jm-r7VPv5`_9Zbzfj|w&Bl{}>~n)pi1WUN3qmT1RMBk( z4GPSftsk|HYrBNwsN4B8gPxtf;rgxxbu`~>@;4b+OcR?(dUx4K9a;e(*0Z4uW8jZGQ1ZhTM36dZH z0+`)V=$Yx6?tWUA7Fnq?Lo1%&Iqo+^Mpk9jtBR<4b)BjMi4{A?NeU?s4KQ|ok_-F0d_yOQ7xTe^I6J_Cjq%vjX z3JokQhd6&}2InqJ>5RJR*)#$f^(T|u!>%nOXfZjAPZ+qM%lw?2!|!YFx!>K%Bc^#% zHfJhRJ~}WD>k0hKCNl|i^nfH~=Wi_cf%F+)Ed1+#7P4?+m$K+GMafUKrl$ETc<1CX zyK|?7I%NvHDKVBa#jRIIv2CNJr5IV{0CzqHoU*Z<~;yn6NP z%Zb?U-Ych(=|{{#=M%{nyBFL!IP-DI_|Tp_NJrM?*aW|XsAZDME9}cd!-%C~EY2hp zPKZ9Vtvv}z8uFg#dm(Ic5Tpx4ADmfd`el{`(zJALhNaH5?At)tObX~gLy5;(Zps=% z!cchmQ@Lps52j10194zJPeM$$_a9y3ag&yTre5QvsN8aKqjS^5cI#)1>ro{hob)zIhw8b}lKo?^;YR2ifnGNwh(q=LGWR zH(ywD9!vTCduF6>ocjUbO;7&mv=a5lPE7yS|6nk+36mAVDVm}_sdP>YKH5pqt?zmE z)i{_RE74iUOwX%)kE333%{H0xOQu@z2`QhMYu4k|eoS8DG$-?s64DOZ_;Kyuzo(v} zAO8~1;z}vh%>g_F5E3=O(-Gpe>h}5Ax zC_p3Rfk(GA*{CnBcxg1%n_BczlJZe6x(8Zi{Bk_`oYEcw`G z`q;fxdV|M7ibD3uNH?t~%GZ(hE==$$6(mJJ;;WTr^{hlEUe2o{`t0bkU(Q~$Igx+wKU2WWY=B&$jUZK(=nZt*9dvmdek2a_VVd@2Kj!>QpdO#}BhTbC0K!ayA;J!H z(^*1}6fEJ4F9Ihz^Na91F zE9nsEW5OmMOB2c8S1+U!>(`l2O1;#43T8&`CnVgPL2u+iIxPcdsI^*LER0Mlg^=K@ zgqId!VR)B_5>ii5<$jKB;Z8?%D5i#V^+WsPNm6n^o$fIxQ8<&1Fdf@1?{-PvA_v=9 zIu$6V!X!f7SXlfiC$p1aZAqpn?_fjfv(aoRw^%L-pkSTK$#R%{EWW)Byq=tTKppRs zqe*4Y_Mqko?R#7_Vf9apqE_oG;#H%l;wRGpdi~rhs{a>-Tz~$&>3A+|cYWXem|_|$ zS&NK*7dskPYxFrDe=oiPiSVa=pH7-l_f6=91L}H8_F_Gqc;75`OfNl6`d9L+`XhD1 z^jtdWr=lnCf$VpkNvmUq)FqITDp+Fr$yHrXz9Uz?!k;)<%y=a1f|-F|;1VbU;%s1@l7imWE~ZOGoY`2z+4W_dTbaXD zDKB|REcugcr4FQx3sau=KlluH?>-)UhZ)%^;=8>@7{PDfbUCQY5l(tG#UN(a%H>YZzFq(DW>s} zv_k#!ziY=&&*kmY!aTY}>Z_SsIQ{+o3@9=C*Z$*YlhQM!-mvBAMDwv;xPrwrCUQ0Z zT;A4GP}J}yCBUmqUh9+7{?qk9J zkQcAQP8FhI9Ai%r40NHa9~W3DYGL7hJEiSZP)pudIpGwAF;Ws;6QyBTx3 zH&g9G;_mb95hr$LUyX38zUi4}IqCWaR9aBrc4)}PSXEz@^N}`$4UBnk{%=P zN$u{m z)*}I4nKv$`7m8fJ?;7N|TVd4eP3%SV89zG#g50@xf9C8j4E29r`t7HoxNC|@Tg{U; zoM%az_ap^)wW(k8FH0?GzZDIvXbSULod{eoLA+q^4 zg0PB2lKa=SjJpm{Qjo!}=ME`G|<{#8J+c}IM z;XFF+99oSG8r2laJ2ww->-sKk-PprDdFF|xoA=Au-l}15 zr-g&Pw$2bEmk)uOq*1R1Xw*|^)zfGb-h4Nu(_Qi|BJHXU~fJ)3k{33wR>N1rIkjbPGrcy{I zIZLsvAQIsrF5lJMqb$Ut?MYZXJOK14u%KT$jYmW8JsKI?wcEk`PbLBiQ7}gJays`! zyNyCNgXOt-Ts*Uix2~SU`qC`&VSs$vxIj~$+l?l6_oY4U>`R+_Aa#8t2}m7DS{@L4 zBt=>CowLv?pUT4ert++AlF2S+rl)Z3+y*Xetm5L@0v4u45gpfmOs@uMjmyny zKCb_m#!c4dCI!-Y((EVE{GU^vFZ7JMZ(7aKe|BSvDW+G3B7A9L^o;s1jV?Dg!-q59 zGPwpyb5)$Xl*7C4tzrFaPM5(3=_4SyCt*2%hY<}-(BVIqp%Pf?a;GnLiqfwIjVgnagLTtFQdcZ9_0^Ja zG=&x5GVqGC;dGXq&Xj8+5wwvK@w52=rBVh{GZ{?JW-vRS#oT-j(=%BVIP)%-LM9U+ zNO6G8*@`@Iw;^eYDd`XxwWX5G!^`1h@^VHWq+!#-QQxc!*0Y&p>VgMGgl2Yfl5|Om zLoVt}x?9(eaQ(|YJr#C)vxa7qvm8CRn3A-ZkJFpfxmK(2<7V_c?O@+8f3c6bxqyp;EIGhTl@I=r?>H^fAt~$ z=#TysH*epSrjkNO+Rfu;)cNq6?NBlRzJ#CkrnzKS3H#t-nD z-+c=|dE+9^EY7-87_80Nb@FE77ax9x|LPzAzwqaO`GL+Ltv4mU$mM}vovrHYN36yk zPBl8YKKesZUVHYYC&s3Wf3MZSZc5CPWc?@GqnXUN7wXZZ>AS!hofJimTpmLbL4x|` z85R2^A$&M9%+&b9`JI%&lhRZSIqG^9i^=tx^6l#~kywnsq=su|9w#rshwpxA(g}iseQoIG{s)K1+u$Okf}xwuKu= zWje@Y?Kze1B1~~_H3CR&w`@|PYFz5Wz^;f~dd403oRArz2YB@W4aT$Ca|C{XEVvZ2 z)5+<+X^mPMM+XV)Zg;SGzlM8vs>*k7RdM@f8Fz12#l4R0tu_vJf${-QG39BcoB@|Z zx0OY^&E>IaNmtVErbP@tW3R_tTC2-zX%etfxtxCbnE;>sB2b`DnKR-Da2a!U9GUrb zn6H$D`F2_vw3;a?Pk?F#3Nr5Qh}_#%Y(K0@`8eCIj-$gmDwPJBtqyp&2WPSk-~p;r z`4iIsy8%zfByZ<1U&7d*++27XY9&Zw<dgLB=2C7P2 zS~Z%B>wYmA@H3i^`SDqK(D^ukmXE<_RaKnBrAvfV~8lflaT z9L}vR>re+nMmF1tUBRiF^njSSv>c@0VXRw z%#9UeKFeab|T1XBTHNQ_y3Uqt?kcieTNn&29Yp!%uPd?j~xDhMxSIJih>^yuyUhIyF0 zo0pR}nvtBRV!6a(dGZpwD__Lw&+=H<;qndU*LO+aer9CT!yxtII_`_Z;NIjugx*v> z7N_U$?PL;-h}GTFCz+ei@9B9kljp<(Bo6BCO*39C@+BTe$(@p8eqopw+rOI6nKXx9 z*81A{Y$JQjF^`i;Vh*=I8qb?Fk1^$SGWpz}ofL_=-}#63i|(0{3FyWHPfWvm);uZs ze4j(XVu~rI7o4JQa_k+zP=?0@IE_FeJv%T5IBA>&XKUFEv1F=-RPF#%b1f{dh1fV> zz{Sh6SXfRXoh!@0zlK(;A#o*aAOmgwU=-Fpw)D#>Nr^!lO@c%^OUUssaWZIY9T%gh>df81+J10=(-CJ02Y2O+7?{Gwm8; zZy-#!k;^4foJwPMHiwz{3})v-%q?ZHw46u2M7=g-B+mWpgp;f%&z#XmIheBy;ib$y zDVVp|MF^caCvtlEqqruuhY4Ops1q z2mHkcpW^@gkN+wDj5F#E%V;z^A{J*n5=@nlI-AsD(NKI>z0|G+i@{7;r@3W8@=k)L%QI-c1P|R^j6mNkCO}Lld*L4FN$gIPEQn%rVsCDmU;(`PuYg@ zb6Qq^da3+k*Yf!^o{*TsN#%N8)XUAw{B*Lv{Nyz;F8vSd`Bm5dWGSls;r{qJQ&ih7 z+qm{)ngm6y-ZjASz6Fx)#M{3w@v|#=kiYQVpZOmI&zenDPsY6LkI$r@->H~+JG(by zjydL6gZtn4r|pBDh?z&kbn1InQb)(6{^wClve`fStZ7My@2oZhu7M7kXto<@3o9Tc zVKUha(rNA+7f4tFGZx2Y)X8Uq@kyEv)3kK$dm>>p9A~R>W*eEa&GO2fmT)tNS|x>p zy#yX^)^Y3lK5ky$(|zV1+^gc@gF5!M+j=tT(NO}`a)4%opi)lK%1c(9ZIlI1GS&Uw zlHBu+Uj1F{`gGtcD8_iKLS%shvo8iPCGl!TrO%$ zOaleMcv>wF#^6C1jYb#MN(<$qIt~u2diX`TT-WDHS?Z!LNie>oV@piQ@~E;fPtP{Y z*Osc4Bhjn^28dCu{ZbDaT3ywY=cLpf_ej$dYXfmjb`XRe@TA*JCW};xGZkU`)^%D^ z7J`;c%hF>S%1pIq6$@F?Bllm?GlLwzTtxY^JT$>R?z#1X8q=?^vsOuKjq(L?G=O+M3! zcK4vpF1!oCdw;uNI=!df<^JrS1R76d>5|2+aU8pFBx?h-=z}mz%tpXJ7l~d>hbG?@1(;nNgfRio*2yI4i@O$(#N~Y&B;+k!SD6o0@WGRLY^UXoBXh9?^S2 z)3q-bg0ppd#CWG?Eeoygc^s^H#w<)jOns#Jyje4h`9)xdf;uLn4Tk-oSiup|ku8sOU|5$kwlZS3C8EY@ zba+5RD@6IIgPkodZ{5fBuQqi_Xj|NyjR1{WQq4{~g|=`<;wF(s80KWqNdS@HS3>+) zo_OJTw*UbD^hrcPR0IMp{i7hN7s@E*1bj}jqJ$vLu ziJx)~h*@57Q(bU)?7$c5TKAyiEJp4<$9?E{Ku2Bjt0UmD<7@-PsRZU0GMHb;iCGY{ zh=qj`O4BK%vu*J7-9%86v^lfR=Sy9)JS-c5Hj{}U8r?ZWH-9g;8uBdR#O`NYvET#) z_0(Gh7&+51tvat&(m2@7;`a3>K6?KlZr?n_!F~gcI)Q?`#Ispk3Y=+rOqUt4>@Hsw zm}xs8hklPBmrRc&zLmye_P~izWFa}5u75_I&L|2be`yQJY88vcBHlQ60YCZvTln|> z=5OH2#SN8gm~=+n$2aiDfAul`@K1h$TX*hDIw4VyQ_ZMj{#~6-M`l~#pFj0g+6?Q8 z2X^R;I-dHvjQ76(E`IpkH}T_lu3~+8UQ^|pOW3w04@bhkc>fdpSO56G#xH*PAu826 zS|Us`koUvYL!vEO;A_DQrCm^`eny=yC-ul@m62Lr+Tz$X&hKS8>Hz@Si* zdqRq5SK5K5z`Qh|nU)LVxmr}yl2xW0>TKa$=8i-*=gx5IqtBMkP(m(m3vV+}=t1p~ zMP7|2is3s$7KdJRz6bP|2PI8R(__whscdADnaop7d1h2EuRW`a-YsrlY_ZVJP|B`c z5qN0HNctATJqno|1ZEk9{h#`2f|8OvXbRqL4Z#7c%*m6bds>R>XH0Zl&L@-i+e1zh zzCk>1in1Bj`>U$|$&#N*H>TP@Mo&6^jwz;RNxt1jGs?$IQLdAE0bRzuamhEQAb;U| zFW{-Krs}7vW*2Ev~jS@&kXNwb{!NtFSR)TQL^b^PG?r|nFCel zr%`F=%pg9K>CahW1k%hNB(gF%3nZ%8IU7SkB7#Ew>3EhNQa>ad95OyZ11@hZi1QTM z%_%f0MU)S+*xOFx;r$lw-mK#0*N4IfxOcmv`_fe_A=-^BTFtDU$jbfe2pn;*IXxAY z2Tmv;KwwOq?I!t=NeauzW#F8HX(*PE*!t!6re_-7opF?n)Y*lL2D|Rr^g#!+d+Tvx zJnE4E2WR_zr0l2;3yJQjv&1wn%#i6Erj3Fcx%6%&0rW?FUg&cvmcbQzLaTqfS$cxq6LwoLpNcX1j_U|BBtm~iJ^u@R`&UOR$xxzD|4nQ zS=_AXdUMZx%$Sm}Nya>wzH3)nR@G|ydumZ z^G4E#=gY(S4wx~Ioku!8U+%y3&$o$~Vwwm^OO*B(waMqq{a57f-+{3+vo}fH!#C!{ z!tef%df(V*L_R_N(ef1J#|jkjG!*4`LWE~tz{is1=zem&auk*Nv=tarOwW*_C1l!J zj-wF{zUTHIRSwR~eYhKBUp`Fgq#n|1xDlt#pdy)RgEr3csmrKWSWMlsE?vXST!8g6 zQ#f<3h_e@qm|bimNbeyTR3)Aa4++BPFi}j}lQQ%ZIc=FI4{XRH3Q9Z z`yuvrTG-w?#Mb6MHaGXMqx;ZRbcR+KMq0b%nYQou1yx*?F!U-qbQEAlOgh z#y@(CTz;mRckg{ah7{ z$j#?=tF0h|Lk{}nHj=TuvsfGhwhEHuJgQQEds|7|zEQy^A3emKTNUi@@(_VpTp$T8<`r6$&kew)#J$cQf}6}13vVvVa2j6 zZbn_AR>R8F6yCmc2|xMXTll@7{s5QHkKUv1&ej2b{>d%;31`&(>7VHybv#{_U`TI9 z-RN?t-X-t0a7XIMO!1I{Sk2hHx}S2|1fG>1Nc4J7;*wvtns1ri5hnzP?x&q(BUXD8*!JFn`MC*oD-) zJR6YJV-`mBrezknLdi#T)R6=`S{^ga&UB<75w;n=EV8^m1pR1=gQm-VOiayJ$`CQL z<19?Egs#1{MfWTtb-{yn_)Ogdsg$V7&+28_9a9cwtc3z2F^!MLUHivt+j3^#6w|9q{yRQy^4}=?cInqh>3K;r-2Nxu>P>>) z`}oc2nFDphi9Kms=`Wnx9~WN&^#?f?+$H#gVthmLO;vIoZ^o0SiRk-9q*w!!AP!4= zHoKlb_0_dxXHOhN+Qq-<#fXfd_8}iM^Kw3nMoToh;SgEuGKl1%1<->JTEcbV3Uc{2 zre{Met)_AIVh$@CNz5&^kt-5Z;z0)zHUghCJ7ry<*Cue2lL2WCt$GgCqa5}*i|$?< zI}hvF->>38_;A0bd$LulEg4J7;5(5O=ALW>bvUy~2BIpzl_6r@NTWt->SQ5hsLlr` zm#PmBD*Js;y|9VI8(e?B1=J@IhfXZ5QAWe)I-42 zcT-*Diyh3&cQC({#PV7SvkNJdrcx*tL-7j~)FarJ4B8S$(v$cdE`=i?Cq9y_=GX0r zHt0^}iHzDh`t+wZ-jtWTt2_9v4_cky4(1ZzxoIY)ZG~Z>LMMED2WK}L8G?l!oVYO?-FLB9z-5V zgCJcfOxXz35uhVjmrI8Tb-zHCxGnj~dm{DMN(QJZP*+2}#WMENQvgWZLdhc&NPL24 z;zQCFr}Zy?1lJUBlKPYO)0OwRD>7y>A&P|p3b`Dz=?ub@)S2jw#UwbzJqjE3Ch9eE z19h=C8k9{kkoT6rk(OH|B4|Ws%hyc05U8{Hq*6BVAeh7%yO~T%_ry%4x!gOWdt`=T zsGuI(F+nYTT}19yy@h(EhFU|oRTman+9HeUsH06T5z39Si!M6iKv;}|5D;Z+q@L3f zhD(UU?6>3^gOV&1W*0$`??~XHk^2(jogl)1fy>oVC|zHc%B=j-=e> zs&K82dZURp-)+fDIsq-C>RsdVS@IO!NNYtXN@Q|6!%($pX`hC)BrFVh>|}ifO;0Mu z>BavRkXQV;E1+M=uav@H7#erY`&vF$^X$aO-u_~GQAn$Q0{xHA@zn+DNG3)9JNZp0 zG5;K9)b;3_iOC;(r=h;_%K$~uo&UHh&^OIj^**Y>5aOaeaBNwZ7D3}&`Sn~T%MZf7SUnaENGT3g(U|6`z{j@q9I18OiSoZT&b4t;wc3?I%vc~eu@i{MKyeG=WAUDIKD1{@hNA2l?8)g9&R z5SEsSGQo`a=0r?{JQ%5pvDQL%2X4~zSf&qRn zF3PEUp^07db8?zVGMTh|Yy*^&GxP!u`7;u3O42K$-N>VQl*R6L8aJ=k@zMKRxO?je zm7})qC1{6x5LU6W>P$Z&&a%|K3JKzBo3nha-5e*1rK)lDYQ*qBxMcT zGmTh2%B(Z#2-JygZTTnb+1ex3tw5dBPfFxXi5CH+d?tlbA%}E|U<;R48lc9K5vVIS zTG%Ncp(duich>%Nd1$MHjD#s=Bz_o1y7YRa8avH4>h-$3gH1_Sn6opb?G#IStgWnK zd2tDg3-c%x3aU5OWK-HywOYr)!4bB%cJbiBL+tMzp;~Y19(mLW_wUo0bxA+7i}mF$ zts8)Na!T}&7Upa+F0W0eQka=8p;RiNI90^d^fYE>XOPe55J>rauRxHFvX>9a*m<~( zoxL6G9_?ele2BwZ1(ik(4c5QtFqO;5dy!H(I{JQ!T$DlHkBs;ivYCieQby^ts2-`O zq|{jgO(`^WR5>_Aqgp|y-asau#?0It7M7N~qiN7_1b)r+`mZv{PQKy0nYdaiC7k!8SXJ6#S)yd8o^{ z$>(Y&+mzB|gqZ;O5=SMU5WO-Af1zmHwI980(mzBsE`5MUkiGzDT38ehxYuAj{rz={3<; zi?r0P9ww!M=kcYQ9Q zBzH`qn&9}NE4`70YhW#w~eaj-7WN*cxD_5BW)g5EP^Z}{P}f3GBT!euTW&_(zx&f4J|3w1<;VDM-HbZ!6W9al z`el&PM2}`CP{(Dj3e@>_tiq_L$kRo#-BzHEv+AY`d8{oj;_TWYE}mJ&?6l}!8Vbun zsE((;RweGu2iy3?`yb=>{fFqZByBb(Nsn6QZjLK+b9m#*6|5~SAfF2nhF&nqPr@A@ z9O2fj2iV-&!r{>_GT9V1&aUcV7Aq2Ger5*K#R9TC^;tRx>bos6a^_gIR>$ss8Fx1K zaaZKv$+Hi4cCmL*LAAjXq*WAQDJN$#iXzzea8?-WBrS<$rQ;~3GngqAFh4gVdCudE zl$m=4=CT>&a#@i(r?cz0Kv-AavWV10yQ8!Dj*iMWC|9swtzv8M0CzVZ;{KNLex;0- zw+ z?i}Fu=C11h!NW~#@9be;^igkccBHfd1xq<^Q1m6`rQQQ7kS>y@mQ>UB?c!vzXx4MO zB*sWyJ}0Yt9J?43C12WCtJEIo9rl z?04Jv-a${JWO){pnExC9>2oNH*U~o=`?Rr-6<|V@)FaFJl?Lia&#Towj+_9K%D$(8 zSF`>nPpo-i?SID63I_9tz$J-SYA?96NgAE@$Y}5QKH4GBr%iB(b_yz|v|Si_00zEv7I%mqacv8s$tlU7E~2 z#+ow7=Sj0}_9N35ISH6WGwWRa)6~+loRYVyO>T*9S_;9Fd(%?ac{JD!zAw9 ztm4a0H>Hkis2rwsW}WHU0kD?x5E~8Zy+^DyGmZRAI;-D)|55R!jG}K3)bV+6MxE%P zT0I8TT{*vD(TAvikGlW%PyZY@_0(58(4@^WYN$aue7RJg%$v)Rl?^=B_9$_vA1q zJB8o+?cc=f*Dhm8>{I!S&UoWINR1@KW~*|DWv|-8?cF*)yKx`C`ash8;wxOgc^BJz z`)G=esd)mUNnsw4!FQ;s%SYQh5(cGo8gqpr&aSWG&DXEt&DSpAt!o=tS(sL!kxNmn zUAoK%sH-4pOXR4D<*43OpzO0RZs4QOzr=^1euA5K?_&4p2#r=-#NeSe0l42KI0drP zlzis!_M5Nad*68-KYZ^soL^f&PSRtK#9;d@-(E$^_9_0&zxWq8+}XpmiVhz(OP9l>)Gb-w%O%P8+Lg%eJk)U3H0}0^89o_-DyHTC(?dI^7ryiOpr;DtANOi=~bk0)&48@dc|}q8vNZo zej5J0_`IYUZvRp5JK-1OS!N&PFTVFPOY)ns{z&U%b*K51tZAH*kA?LzIdlBXyP3!R zzWuCa@2iKgv*aDMiBbN~ooR@vk2GT*J5%|i+@A~g)w8evD1USDV2*>hY*$>on^rp;lo3>b$29T95aou{E=PO}e`qt80vM$$(< z8!#26M^b}&(kE|-3zek`Q*x?Pw&;NW18ML3DXlnu1Aw7fnXIjicTk9wMq0`y4i z=1;wuIg0e%pypKX1j@vqI21t&kZiY5$YiiIJBu@`OA6A>&x}6x^{`UM-K|61da#8X zx9(#9kjuiQTsq5)`47q9%BZ#Ly_HQCy7MI7=%PZo**|C0Ns2S2BF>#z$Hg-%xV*81 zrJ0g0U(E>9f$`U^ZGShkaQMG8BFEU z$Vt4sFim-xQLi`T9Zq9?WeHa=U%(r}8%y(;&S#P1K5+rtQ&QTJvD$^XPaBzgtQE4M z$ecqqlR}w$)-^e!i}hrnq%F55XfEx7d+G$?)*YMr9Uc+~;oyV1P%UGG8 zMk$xkJ>yb7?-Q7QZ0`(5IdWnzNxIXe0;Z;Ckj)o#|F&kG(|1K6_FHlh`{vSD&K5kk zE_yz@iYsTAu_}6|Uc8=JQ?+JC->vHYzJizUedi6lb?qWHRu(ZUWzMAn1xBfx-J>eL zyt9QnQXjk9yJ*zwNTt%cq&ASgbAGyjH?Lj7_uqaUKX~&synW>Y&Ph6Rg}l^>r4u?m z_gLyPVtLQ#re$aNK=Kb!Dr7J{Q$)Uy)mfFCZP;$LbV)O3=J7q3Xs*q zn_~34$2=CENWEK~tA(bJ&43WnK|g^xf^@<<`jlri$^7&2TwHZwy8TS=UO1iMqZj*K zf;=*y7k}=N#idu(Y7I>ph$oZW^gV~EsafQ+vl4C^m7@^1Zyw;rS9`em)xH9CT=L50 zuk9wmC7$NWnJpfqGjNA_4g+{QEDRNrd0_$^szk+I|uI14aHg$dyK|QAjlBR3clgS0pynCeWfaXAA$H~ge z=+rw|9JP9+tRftN8Ul5TbF(rT%N;hF(;(2@y;8s;lk=7W^y44AsrUT5CvRGf8LpGPe=I#;p%Qao%+7ca;c~Y$|z2=fr5il!l zW?I_mrL$-8lOO&7zwzC-@W!PTY%EUO;Tfu%#}mV_N;&gR#E|+7u{c}A(!x9zR@RZq z6tKOsi-Y|mH0v#09!&6>%YL~RodR_m>$o6#zO*WFoSwCr2)87BrQSeI`aB-SaAsu@ zKmPt(xOVBR&Nk#8cg)+<&OrrV+}YBls5?75Xh>Whj1fwrLAQzZl?D8@AHRpc_QUVt z2X9=#m5milXS2uiZEaH;G}9&5eC&&wo7Z^PEK9F9Lhrdo$*k$IaRW#Po{O=(h3vd7^pK zbl=TU{^MY|JyQ%HGT29m6#n~t)zPFsdrN$y?N5^l&~%uWamQeA|?TrQ~x2XHhW4e<#I=&)ApE@2}b z;oE}&8=UdO0g;bmvtk&m!$TjsT)rCWa#sRyM+Y)Ueb~Xh+Z6@rIHPWFr;Ex_0*#u5 zgD#!qY%l_I1f5JS1#^U1M!mFrE^lFz)BCA}`p4S^w?MGIyU|GLXDEY9*pU zCdf%smxi?^j$78T_cR!ice?cDC#=g? zMW@uIZk8`%H|lK}sPmwXw$u&f54A3htR87vnwB2R!lj7>^vqA#$zmGtVM&yeGvuWH zC^MJGiax_2BhMm-s*WdR@}Lm58A1xKezlBD!rL96aA`Q2?rzU&8Mye|&vy5cizybX zBDpaQ(E*p5`Wbbn0_wI7aO?g<+_-%g2V7dHK%JjaH;SA)Ggp&Ly_#Kh=pJ;2pQI#j zg90|wQ$?(=En{PK0cVzGFdgk)Txu-gSU$F*xv3JaUc88R-?)Z%U%QA4tMiyHr1j8@{&#@nTBE*^EO&qF^&!1o z+p);PcAN@BX^U-?t4-A8UEp4JwQ60$@ttA+*wVe_)>fBvcHFs@InhC0)APi9C^%2w z<$iXY0k|f*EQp?>*=c>WeNe{dHy>y_+1}cgd~5n%O%?MvyS9XPUb~Fnc;|IoJ-048 zDC&&GQRzI6e0ixV#%Fms!;bZ)z@XG2XG-$aS(c*1DbNh88PU|(YWCjmN0SfX-`DX| zB!M$yiYcb?lDzr)`tcTX%;RPIZ9twNO*s2!NkQTA4^Es>_oUQ|!}#|6H0eAGVy=_q zn1m*zh=FYTD`lJ<(J0TDpC6OVl-?(@kBv0TzWz_aktPyBL%1%3!IlDaDYEVRE(7G33RKHoVPJ2Eheb4T?{*ot zZX94|QwGQ70F8PIomNT)#kMCMXI$CopOit&et8@#nC9~*z(h8ooT;M7jTS%9bn%&% zrZ+qQr5>atk`@QF)K3J+DNx7doGoFRWP=1W1(ys>&wg-B-S~qr44iW^TTEdyG!3(A zShcI8FDFeGh@}&&3x#M8Id$o=f^=NonjmP9R)DNtYhici00(b;g_N zl(o%rvV4{%FCFNI)CJhBXt+F5lGxjI)_x4k+zuDG9DdOQLDDJ zy(lot;3`9}yuQr+&yhP#&BH(Q&za6G3OB?SrYmJOQw()8mM~8N)ZO0N$E|x?xT#BD zPY=|oJhVGQGFLYRI$gV^GtX2dNXPR!r+MnC$h5JtfV0c<3e@!z;g=pz_ciX_+eV|& zRG^M+l1odoVFGJQbGp=WeQ922n{hd5Kk;2C<}xT1vM6Lz$cR6It|ujvUs&otGc%8t z=;g-kTiD!sh+3nrKppp9Qx=V_EH2=^ci+W(Z@-2&&o5(jHm^XRs;ZCJ4DC&{GLva1 z`L}Eou?+c?^&@rZdn&ay9^8MZC)F}0_t`O^E{C<{B?Uy!tUfw#IvtAs^H>#K zE-%a?pUb*B?Gc~IJNrlYltA6RhuGfUF`!P;SeTo^+pk^0_uqL9-+%2Q&Psi-E{4+? zMcUU1`H()Zexfc?;+V^%F(-0n^En(IR&{0__bzNSd3rR{l0f!S$dmPvC%4~0@}act zo-)p}rAPv2#xzdy?a=fe^Z41QXPXq+H#X*&$IUN7>wghMcvch?F2DCPEzmI2P=%k4 z2E%&0nNO0=w}S@D|4NY**}tcgDE*6}ai@ToC&SVJwa=MEzoU6`jOAq@$W##z;p7q0 z*%qc}GMHa1V0m>4Q`0#UQ+{1{IvkWr6d9n&(3OcXW)IP7Bo(YXI_T)BpGSusH0uQP44~s4bQ(ul2IC5(aS%=5(CnI*2XN#P zi@F>43r8tzc&Sz)wJY}z=eenVQ#@PBJX8S*KJ!3@nlKM$sERvJwyhzlvl5$n!mToA zC<-SWCw1mxQ&*9cNmKMuV=DO)MJ6r%j@iT;9q%A8im% z)_RcVUVRv=lLDPgg|jAEuLMGXW}_wfCzP4LhIQoa12ZD~SprzvPC9ksjSrrBS{)|3 z7(3nf9E=sHYom}!V`*j&ce5X`DDsMkqTh>{ryu{96QE@en zYyTQX43UXo9or3OV6CsMU}JR=XP4&`DC#F_oIu^Z%{~0`!>@7o{Q>M8A`i)!I+Syg0uGNzFM>NH~*XZ(co*^@Um8pUAT-NsEm&q?I{qR=FD&}#!RPm1{`H|3aOifL@*UO{^YzdaNbubeQW z&J}Z{-v}Ng|J-vQ6=&Qmw=uC6*gYPX<6F%vyt8|AoGiDPUvc*BKri?FY}jWp%FnU9 z`U=t!Y!fC>)b7fl69>}U9wJxhU}>d`$29^X|C@Y7?l+%Wp9u!L?2+j%j0doZF5(xv>kf=-O zDmvY=$VQ;WKsud~7?ODqLkmI506Q)xCR5i0=nSMIJW?07gEe@XYBUp1K{}C*Ou2+T zNT<3L7b~v=Z@fu8tFB2_P9N6S0Tbw-iDu8#UjTGCW6fgNY{C%jHl!}byTIXcpy+Ey55RIx&8Q<# zci}WkUkTLR8=O(cbe)X6d^_&d7xgA2_NXbd?&+?6YzJa>Kppp~n<^Htp-W$v+>E;8 zKpi!zGwMFPu6v?2IfK>#b;MyaArF%vP!+gtLkbTB_Ri>sH<<2Qf!4qm%_7Sq|ZE=?XL zz8$-VReW~yAwKxx4&MLdE9DPAyMfQXzJr^b5m;>^Q=F0hzNq`-rTVJV%gWPq*=Kjc z9LkM0Zr{Fxo!xy+pNHMjG?p0J25GXLp3HKS(9B`beSAz2`ps97C#eHgy_ni&Vx9!c z-AsL?8FS1rkA+>oN4qyC#m|y->8rC3kp578YVwhvt+0Dd;RSF<>K zeim!%CCo3TW#F37rHq_8r8DYuIVT751hOm*1H8yGY;)iY*#jF^TDA1T&_yCEb6Dt> zvUUj;DPY8rBZrG(%3zV;jRHzCAdI*#4Y`?J;zVg`2p`s&>PHZQfShBIon|u8)){Zf zWK+t^nQ;v%djpwF3)x&-bkRYf*gS#ir?R@`T2Lrl#Cl2(9XF+e__lspp1$mlo-I*z&Il7}r&Hk!Uv)S}$=BgnGJ z73oEv#I$f)ZoQn}3G72Fx%yGvtNv-Gq|SNhLeS3iqX;4Ddll)nmui-3n`NVy5i`tFtOTxgtc1Bfk<46ZTT8Api5ix_Ro$Z zyL;@jNA8j7iO(jR<-j(hT9*g8dnPE>YN43UV39NGcJ}&j{;w!)_@28kkQ+aHxuiA_{p1^v-jJmrI_wdV)zSdJld5{PJ zD1!M?rFyu+iUM_)u(q;@Lgx64I@Shxzf#55_a5TcpMQm)|LQ}$|LGUFe)k^kY;NQJ z_8uPY>|twX2laXl#avF_EuQ#nr@ryk7ax3%zkL5Ae0lvAw)YOPcTmCpVNI8H z?(ZMyOud5WCZA2~-g?93Yf7RuQT*24KEC++x|Cs`@OlK)m5MnB)Gdw#>iUWDRU0jl zt%_TllHTnHI@|Aq&u`%U&#&Xd&u`(^pL{Lm4cxi+0Q-A;$YwLRc3`<{Te}BZ2Rl;c-Ti%(D`lk8 zDFwyZzxd_KE?J!&nUK1v)@r!-a2E$pOhEV(pOa()TGRGB0PB+cRbn`jITR ze)Cl#EjQU)NRi{%m=|R@?i2Gk*mSQpK1`TndL>Ew-wE=_wm1fsynW9%$?I8DkUs&a zBk{+H=J}*7H#5W>7c)mO$$E`&A0PX&n>k*dM4rdl^iQj|kBcXfXUs1e%k3#yJFecd z+Rf-O-Q0tiy?n(<+z2|DjX+9O24g$O7Aja;O=9D00T(XJV`VLmshO?Su8AOuplPwi_3W|FXhF|DR?(Km%{W+h^eVi z(sn>yHlce1MzT<@Bo753NGB!XI9M)DR#UV_5u4sXnXH=OvzDIjo_)A}W*sn~g|=4V ziTZOh7!y)2olxo>s8;JZD(|D&svwgE(wP9Ev<)s948u@lw86TfDGHac)|nQ;B<3S> z=(DR+y6GS5Low6pc?C;(*fR4;Kj;T{^_YA<9iN;f<0?w?h>P)XQoKaU8+@p>) z)DXV2wTHj@_&V;0Tn%}*+XSGJT>dC^9C9x>2h?%t>j^*|fuha5L;Ujd>-e|7{uqD! zm%qdZpMQyaTRYg?*~jMY9v*IO%% z`E?>A)C>3JW-oXY1>=-`}pjO8`uZI-;2h{nuV!zVB*PDm<_~rxr`m-DO%MZU$VC^s7{~W*i_$vkJZryo+-Mu~3 zYZc5+PvOniuHvmL7jSKT0Sm?Kz^p%}$ubj|{M8qC@bmXSlXAb04?q19cd7r~BVBU5 zy?=|Ao# zdpp3x_7dc5n!1=epGZt5kwO@7W>i|jGfW$uuCx!)Ig@qL2(x|(&e8O4%%APn%44DF zPB*qO+C$BUC%?Aa9o<-;GwZk<+5p_X@+g^I^QF5wdDBw%Vd$=xmfM*wJ)b6nDa=T_ z-Hhqe72WHMIxc;k>CLD+38-^RUvEFy!mYdauuq^)^6X09HfYg5V|VkWck~#oh9{|? zy#reJU3s@fcU<~P!061{3eK!7;tXfhjR5L6^Xv|1)P4N5E=_GodAP*6H=}L@P&YIK zt|dyX3g6h=)|qs_{^SeXm9!444M|HE;+iSxb_r}|GgzLV)l*v+W~NZc56b0gA6t7z z`0NH}gzaGW;1KnCQh?mXBP-R|P%{TMUL&Ax^<TrsN$g0NM&mZcW9`AV&ct%JI>*BbWr_E4>I zUru`3yR0)iqnJ;^lOWc-nUf^#+Qvnam)4iJd&}6VCqqmVqNoZcT?x!T=2wxUzGxC8 zSx+$c31@B;sb4Iti*L$7@yZV$dFtyZ_tUW4j=4P-)>bi^{pIayj)S8LqA}z*RvsJ_ zjgNh~U)A!*JbBjc>nX`aW+KY8%K+E`BhI16GNMzP=G%pVbT(rwNSBex9b$f|iwl=a zSU*$3%xqd`kp*E5Vc0NT*FJIc6 zAdcw7gCGKCx^94$)OVv%N3+>Lou_chb2`N(j5%bpS!pv#v^q_ZOmv+jILbVkHD%#LpQ(A8 zFP9%1Fh`R_JNN5jxj3uOmPZmOJm6sj)s}d31}1?zNsnccRG3m!-l1n37;CFB(sKK< zv%Ptlyt^=iX(}|0wNT=x>4-eNJ?c&i)a~nG61VQ&SD=m{ou((u9HRXAY!?2h$!D8Q z=WE}&`*($LMQ>6I2GkY%X4EasDWKF(1j9I^j!R!Tqwekl57e>lc(SpyJ!xMni!%n) zExDzyLqHvuh8{^`U);WrKlqcsz(=2bjl)_~(wDm9`<;}!V%w6iNzobgHCHNPZh8u< z%L|wmdq1&Ulx=gLK-~ie)E#NR6G}SFpC`Yv>}_cSI|nt~y0@)|CwzTp3t!z9^X4W# z{o*D*{`7M^c(^I;lK-GEkdA1Mh!%8~^$be~!QS<@?eO45TYp>w3sWyZmi;a@4jQRH4Ev1nQx*6)I?c3BHw4XH}S`R_E-4m^RIOoY`x9HJ*01y zcZgtGG7NS0A_2Naqo(f|`w!MBPX?ZwE@`?<(=&6bNd+I)6F4Z>@!-J&92_31?)hH# zOwU#?k7h|!iI#85Pf8ZY-tO^}_Cqe~$o`yJ4eH&Kb8|jp|B}qDl{$A*bul|nG0W}Ir$qP<@9WeEo(M8ZI zsLGhRjAUvbxndOy%fR{>8EBp>>i%g2g}4MXk*G`5mc$}lLbn!zu!B@O1eZCsWH8AA zCBd4u3<$ej9u7fJCFydroK+5YSC*T~&B2`lETWEXN5KK+#BxNeyv%j;>( zFD6i$X^D;+$QA0yo1)jI=-&3j%Vt}WUlWC5TV&{BdJZCQ0&@!~siUmUwByp#kV|DH9nOntw}m^j zcT~Ryws9%3X($=UK%HQeJ{fu4xe#I%n;&fJ5S{gEdgZCFBm>$~deBF^l|s9jkh~>y zGN7mAE^Q^~m|RJzQ^wN|q0OeFY?_W5tYfPy+bd9$P*S_x2pB2A99Z3Q9#jHpwCZew z)*3V&MpS=|=-8D-3_oMdCE@}bn@s9BNcv8hk8h4HHzA29jZSCOWl~t0opwOo8O%Kb zsJp$jr!(qq>WsQ0Do&D;a;OYKKBM7`wTx0)4dx`EpFFF{et^2~NL%Z)5y<;7TP)%% zfx49?Y@7hp`911>r9d4IlW0nvSsMx^P0py(!z8X=wo_lZry18`_YwD8dw5XMlSO~^ z{-=6+Y^y^sFGQd~tF^nNw4kw>J0i$yc}V{zsqb>AE#}{n&eJ+ZJ|)=ug^-v<<#@oUO-w z>9}{{`Lk@dGg4m+W9fQow7MuaI@sPjz>OQ%bxE!P#(e)QVVd@~Jen+o#WAA!O_|hh zKAL&;J&u)WC`tK;yq+8TygZrPWSB-wlO?T#zB(Bv(}*diNs_j~zBV~drZHLa!jQcE zn{m?q!#$cAV3hmgSrT^~{n&U;>T}huac({~OMwUEf6$Ic2+;Q;A5WFm`f)->4>@i=0dA;I;z-PWbOR}elsTQ>L22#)D`%Uy_*#HB-YwwWAI{)=Kbpn6zcGuqzE{Gf z*HTzouVHF_AH~@{(bFC>g&l-B;q)$&AqT2^=p-cF#DNs-Nb)0>MZY{CfXo?tM@T9k z8jIeO;epu6W)IQ_NN4tu&F>>uVqUwN@6uWY8yA}*O9HRIlg8WM&*PoC!dYrG_}z zCTP&+lDW2VyUp2bQn%f_q&E+=R!}`y!q&YKu7BCWS6`HI_jV0CJ1x{|j4R=_ex+Wb zx|C+HaCwThXWE z#8aVncMh?$eTZtACj?8#b_zi^BYCGGtxrq>tc;)3!w8P5HI#*Q8T}A36d`8L<&+jH z=|~x*_(|2bv`Kl-kLoqt+uFqYAAN*B`-?xvFaF{$@XNpaOMLvnukqDqALGHTuh1;- zVsR>q*UqisyRToukKTO)zxDmM@zWoF7k~42eu)3h-}-I*cmM9+#^3qtzm2!Ap2zZB z3E4Dr9wZi>m^ZfqU>)*OZOF~kBJQj=xqKauqQj#yKL7G-eD?X**x5Zmqseze66nhN zA|_SAgHpPDS%gEWkX$B>f{Pt# z_dF0H3MlP{GhVp|VN&{sw!DlxJ3Dx=wT-=M0~N`i%a}be3foRb!p@cQ!a1FRXb`WJ zmVs!F`u#i1PFc!&iG1IjeLAO2&&e@CR#~Y9Z-3rAl$YEl%Kfs$JbsqjL|J8s>6ND8 zHaSj~+eCSkOylQK-^Qn7{zf>Fn3>$a0l!!@O2X&Cqg^M#lcG_wOoC&2B}uAYyRL6Y zedDRf?oI6*9h)HoO9k>;GUBWum8qdL)5h!qPcKbjW;R47+tpcKoE64pqBhs2A(6R{ zTUiFGM@VPOD3ltQlXx5F3OI9q3QH^8ON~Gf!4l3KvsoL(z?aZU(}UE0S+bxNfHCO83CyGy0if z+`f2ZwY%p8(;&FVnN^2k9*Fxs62ZRYxhMJWArv{%xkKco3{$gpsk5f&95{O+i%VBa zxN>bq%xRoGpV!%eJOm`2t&2{}Xm`q@EG}+r!A|QXsM+6gdPL}9kgYx0-hnnd3P_7X z9^Fm}-S!OHjcHVla@g5Q;LhzT?%k>4;DF0xxvw0T589Ghf)EO<3UhWQ>s!Gm1)K;z z(a!ppoRytBXLKfc!fZvCY3B-Tdx5ms3}$9hC=|JuB0&_!kt8G~lF3b*0R)PLMD0j# zYFhhZICJU|WpUPsoL($35mkPq=uZ@}TL2C5NMb;?b0II2${I0cb@_O9iEAupS05>$ zvigt-(8;re(LEl;$FoW3A`g*|t#?gN$iItyG&;5s+Z9h_=Q z#z`!BDKmjbkj7Ablf}*g3bi|&iAIpNi)qqb5umAMN_}jnx zoA|w-{s@2bC-32>@4b!R{LX9mjkho3d#|0xTbI^w`OE^=m!>f{otHFHdU~->f0%|{ zwf<<@qsq~H8YH^1N3FG5*gvf3X}`@D`#jN0LUhEX#K}M&9rFjUTm;xN=@hc*G_qk* z56obT8zusKdf1O!Hp@EDcFMFREf11eYw;~6A^PiTy%FfE)$3?9`A-+Vi-W}W6pC&* zlQI;hp0uHP9cbE*C(D;45l8Z?L8=4lZ(MZB`iUu~anRV?e@rhH#r@H@iuh|ljFZ_9 z=3;)iSZ-2(y&rDlW~CvS#>sM15k|>24pthHX`C!K6=9TY<6xyBna0VIxykU9G3aM-z({o)ty>xz&`>X}gl2={6Nq~g2bkwX%Tw5+1rpm}< ztC*SX;_QVIE?l0$%6dWfY75f@>bShKqvK93rW42RgRJg)bEdG$swU-jtmUvEy>J}F z%79S@jeaJfjA^xeo$e9ZUCwsf0m5AbnLQMyDS<-nXoEt+x&hQ6xrl+nE=?=;YSdVoT?bc{1 zFZ{fFw37w6doN(CTLrBlcE_GBps+dz3%a`x=l4NE+X(iIP`ZkYw73UlbnL} zfW>^-3XJ8p{f?kL2g*|Xp+(ty=8R#Bt4%9GVCP zZ_k)im_B~ne+eirS)Mqm?`v5DYx%@4cpKe!+AysbkUPS~5|pmg$M|5BL=`px0;&3e zR8*q2FjRNv=e zP=4ui)#kwE>-py3=6grb$M>y=ciOj&%U8Uh!%|Tw<6y|^%HXm)a?|@3r`zui%~-T0 z+--agR4`W9I~Uh>aErGmtw9>SW0Zt@n)!ZT*1ReJtktM0mX@xYn;jbOdWlDwa#59; z3a25@pq0y1prD!#@0OL9PfiA0>$B`OTZ}xY;NTG~m#--4#ZBZaL@XLql$5qEo_dt` zM|Q5J-Sb`F?QrU0&dcAr3VdUtw*4-Y63{)w1!hG8saX9%qELP}7{Pw57jg3Bq8~o; z^?eg!mYt{}l;!$aHS}_BEnB=IGr>l-%2p4`7rr*iBA+`7G96Y)Z5d@JfM92uTmpZf zWNzv@4zH<+2{1YA8sgt7qTng82!kk6sO9!&Q^YCx z2|J0>#4zt#;-3(02zhRf>YirorUibd<%EhLxa)Rnp_?{`zG!{A{jQwb2I}4aYHsx3lG-dtlTfJU0Wz;vOJsJ1B|cD-nj8oM6Kn%N_V)v zH?$;KoTw|M{F&-)Y`fvd`1d}cb@Od%x?tj-a4CsoE z(?Qi0#5J?}5$4`Z>++LQT+`zdY`X$vd;<`}62-iqeqU0U*WMbEakLpGljj)hDaaD` z!aNp5VDCiZd@4i0>qKgHYKjZZqu4kwr9e0X30lt)5c&Vo>cqQOAw08mG=?t0W+Oe= z#BBQ?&4}WdY;A+|Y~5frY*{a9lD{a#Vx&b!&vpnABbO@6ug;8GoU5}WK3bp8o1`_- z)np~nMqXXokeAH4$tHN*0|BoMw?zJ46H^2M%>#zBTAs640h*e7*Oh;EN4aPQdi$!E zh9K>@@|%ei?1?D426fry? z1Rly>?$C*P<6asHMtwYu)6HctWh{{7D3BJR3oxXuijs1U)MxypAc(V03$$^^X)iD+ zW~i#Csd8`R>vD}zGTu)K9grncjb&1LbuPCpUXUuD%i{xcKi3ur!3P5rzAy{ zITHwqb54e#V5C6U2(Y4bG$YK3*ng|8D$OG`oVW3mZGIe8+_Q^QGK{nbz(>XOv7>LQ z(BxZRo4fFqnoI;kTw#o^SI%;3oteApFsUxGOB4D!NJ68z zQO2_ZkTfunMpV-|de#P(<6x`1Q~JLW;QDAolAFYb zPsFwg3zj|6mNdUnGJen-_|f6rC}_)-qo>8>b7qg!>hg;9r)Q=AAPg}P1HDWVVcun^ z80mNt;TcIiEdRW%!P#D9<1S(SBYuYVoUZYB5f=$%y1c?awNzl|KT@pV zs~AQAnK|ZSN~Hr~5}00O*#g*Myq4A9@9s&r{0hZb3F8UERTA-_B=QBV!>4vMODihS zR3+}QdIF1hiQ;_zf`w@~3je4EQP*&C$YOtwp*SM>z+qWV0IR_oKUnLvuMV#NF2IT| zF!tOl$)J(C@dCvfc6y?VK5jo;cZfcU1U@4YC&(0+q^H=K9DvNSY<`5A;(m z>SniG9gyai(|Tv9jW={QQR@Ag14Dcg5~mkc3aghLnZBQ9%8!ujg&^A;25Ed+0v8GMpevRoK6qh6np9~sOwc4*H3>iz-DNOmgK zzj@gP6HF~XD-YeBn}USV!GKsFTi4fvxJlO>@(K-~9CD!4=T4~%(0{l z+ePgF(WKfRv60Kd`Kx5|Pl}xHrgpTwYyOA;H-a>X1bCKYiJ=DJn9pxK@>@pmGAI?j zoUe1=w)PWso3&9j<1wsa1%GY_dlJCWqiJELm7WzQgK;2KxHVVOau?NK z`A9}}$okff`MLijb)$MO3rlZSSC4IbZBWm!Qy|VQQvuo>nEF2)t2gou^;*>=3YqN{|Y0Nx7W`x?7m)TW@7vJ{Dc1i z42Rb(mdHZxq!z8A@W|{4^+4-wF7;bno^`mW;}gbAgW!&Qq9)~iQgv?5r}(5_5a5G$ z<5JJVD`!k=E&w_{&8@d1`djHjDoyxkL3(4Ijo1nzqtW@wH|I7#^+gsOyVL3|9LQx$ z582+e_4U;A6V1{>t6!t+7_esXWmlNf%z#K{u+x<&c-^^Orwx4T^yf)fh~PKm?}%)v z$^G^HP^XUFKtg40u3RnCy55)`-ax!*;n$)%2`?$>4$uJeTBl%rpy1^M@bYUqC?@DN zDkxU;ttBWjNo3o$=|R0}fvW;GHN0~poj$SF%QdO*H6#%?py>tm_qCoQS24m_7UX0t zef1)V@_W=+{ISxe$ax-T-qAMa%IBOsq>1D(a;!E|bt)Wfae-ra6vm(NeJ6MHuq)o54pZhIdYBkvP!m&nwMP`2#up{Xb`x88i2+Mzc@$(+EHG+<=_vrgr7D1t;_BEUaDD0UwExjs6-QQ_a_F2AS#V@8RRe;? zGc~c*m;S-9yE)h`6H;4COle|AiA@^ILR~YR*~Xan$OnFv`D3O8}d)@Z-Z^eMzhLxPyWqJu~eC(GGZygcDUm8G-2Oa zBbt^yVzyw)C$MAZ(3z{Lo$t+zRgb#v4?>U33EdRs%ij@G#ii})D39x=^a}KKOO95> zUIkCdZx5pV;1$|{qw(>Nu1AgaWjb?wON!t8D#9lHSnNg5inLLrTL^413Cc?wWfI)0 zEQ?0LM)FOC6;nK5DI$xY;Jh-wK65Kj5bM=@$@|2{)E z1mdwbo@e3CdzMA=LFGAt+C9U-^kKc+bupshlMVCnbS2J?kY2MpW($XidNm&N1hNv2 z?D^qT4@?XY2+#<-Y-Dy4CAztG6MLsS6a9WYUqfg3_e0*RseN=q zk%nk9kzKg^XtOJmkLgxK4-en}?feo6yjuu(IYu(sHhFyscxe#*$N#qZ{$jFg@}BdK z*z>aR-0E?P@$>7H2#K}c>IbIIj>kKtVQP85zpnG7 z95$jbe>y;5!yTFA#B(k=R|1E^i!)J8(`fftI*E?`Ce~HhS+pgm4w?z!AKVU2bHu;Y z1%)``6-7A<(qxAp1cKCc_fP(WsO^dHcs?G}>Dmo64Z7S0Gec3@P@!N?LJ$ifd(lAd&dLdYX^59@hB02UOs&xgV zPfQ#ij#(&0a~y2%Rl{w0$selJQ2IkNG9DqtAkArSX;)J#_~6S2?$?`%sB#JX%&F?_ zu{QJxw)isZzG;?; z*MLt*pzqiAkF?T~-%n-wTlTH~tZ^C~NfNAK%+{aktK@80HSVChuRqN+m#pXWH19uB z<)i2oIwdlK1r+(^&OMRR?cn$INzhZET9ibbJ#4P|ym;ne;M|cGR0?RB&xX)($$6f? z6d1`Al)Ja*YX`+yLdE09>2#06Ts!dF-psh89Ei`t zLFDR@GxZ5!d04pAW9<6P9L^@9SJZ2&Gsb3bdNLASz)#1Fxydtjq0fW-h1COHUC8r$ zDJr-iT+yl4(`IU8Xh6(2t_v*NY}6?^-B7>WblSBGth4V_K;<856F+pR)iQYtRobrt zlU3jZo*9T>!rFXY@!uHA@k?IPn6u6(^W-T_jyF-Y^P9aA$yw7{R~(~M6Gq;?Yiv!lv-5{}1}KEI3-X?{Uhj)sY={iZ zh!dUTpNd3~kIu2skj1i{oz4Rnyr#8gYnkan4mrIUogiw1v-&csr1{zMa#?4!P{yFj zgIwB{MM6b68rJ%&;A6tEmMvdI{W{|jePwU%Y8acXV>20<-WYk{nrO-irI;)&NTQH6 zk5YHo@&KbO_GH{HCTZhEh8iW875zjkolp;{>~gs?3jVL$t)^4J9F6?3_+Hl5tUE;% z(;;tKDe7aH_4RzJl|}~Z$>IU*+YuDTQ1CV`+V{R&@XGWu7xY$h#rD312|d?uAN~Jb zm$tgx;*;7tZg15x2OxM%YdvY6U>jwrzK0i`9XY9gExPSV~#Jk)yCCZVb> zd~&*<>L1_{OLlD665}ZN&p57tw}AQENARJ2Z^Ce$LcJcnL=53x;juE*L#WdXq<_wn z$jD8c@x6>!fA&z+C?~d^T~=u~MsJoKpMdh2{9&H4<#VVqsY&Fa{O}#uh>RI_oB!qm z_>5ufRK8X9|0|=#&v8d)Fig=jJGGdm>YO=$1P?^>IJ&ai_Jcl)R%?=~4!K=f{ zDT>&|_wt^=RH4|heo>@RHD1^pKRIb+??eVg(o;C_vcOL>_pvkmLP_NJ;UcNC%bMW& z4PY#<9bJU4{8uTtA>wIDd^`QYWBYgrDLcc7Er4ouc)a88j5yg35IQ_Sk*apOv_{4I z!M`=h!04of(Zd8^M2gW5Ot(G73iYVv4-K`!@l0jZHm1t5veBUE>LENWVK7^>grX0GnWX$FYisY+T^mE=rpdCmp3Z?sQ<<9qRv>| z&_xq?x1=cB|5LsKph_P3N6&@Q;J3p^-UtKXhB=8ch>%~#A-I)pFyDr^#5cUHhBDK> z1w6HK^Oo9{yA*b&g62Sw^2#;PJ2c-hm|~sLH0^}P;H>n~V{19;kE|1~=4Ju?gt^=t zAncnaZF;XeM+M+igUTwHn^4*Q{A_n959!~_>FU2HsAEBK(^<=@c=4o=bd1KHR3eM zgwTyC6L{X=*EMuR>F2E?@&#{vRK2f%aM8+tJEVWnRKsJLg%ocef@FZ-Yc@fkDa}Pw zydVO#nL)05H)Irlc6A+x0&a3} zqjYd0GewBxWHI{i>mOO6*lJzfy_SLpr()vx2LkUx1?8wmjxnTy!ym9h2>``sG1M;&9u$I)lO#ZW!|1QK1^lU^Vc z@rwq1AwYl+^8|Z`b83sR9hn)*4y=H&l^3f<4_5#^99JMMIJ7~d1)+ftSf9fuM!6;{ z;1xZqM50*1kjt+#@E8Yx%DIYk737F0Y8TRuaFQHkH7I8qt!8RI%ngvwM8F{ZQX^$e z!L3uUnTIZc9L;Y7Nmem)_?C8$vwwieJ$_wbT%Al}HNJQk|KMFwM&^LJFle&vk0#o* z+7s=oV|MV^1q9_FXdt+xCUI~m+oFQA(bv(IP-g$Ur0I+tI6EqzK;LXTd zbHv!g5|e)paTj)G1siNOKmiRlyusS=B-@^IF5~yQXaC^UbMd;-)q(cbbTgx~7`T#& z80(7beOIx4v8GS15dD8|Z32aJDBzno(dECaU)e0T?K$#K#w2OH8Bf?3PSEWg&vy>; zo?8Q-NiT%gW=d+20dkP~Sx;~RZPlv_j~OlSmzFJRi3SQqQV6NI7KJpor&D;wc*7k- zW4_ezJ=qx`i6cZHX3oA@t$MMp#boG>!WxMT>7>=&!?ZhkVV{7bw1n9Qtcg*!8?R&v z=RPLS>XYu(IVZu&6!7bb5K7Z29ymv(t_r-)5;f4Oni;sCVr_2rQm=Bs=YA%mNSV7W z;~a7574;>Rb`K7Aov_aarZ3RMey1gIEym=PtB43^?{Si1}}zm-x89 zyW7)i=8MR6vim>ZO=dwZSTzk)?Uoku!;zGA-J)i$F@!lYG_u`^NR2)mlqGL&N>M@A z1p(Xu^S(vF32|=iaj{ssoFrU4M`I$$eG!XyRJfTK|K_BhTdG!NQQI*$_}cMxtw(2Y z!%=dr{iu;4b27VrRzV=JQL$)wIv;UufAO%?wr)a6CsP#?;kJ`4S&=2aPapFiF>1Yh z`=UyK=d#Jg9jj=0ME>4Ko`Oj_-LxWlW;@+RF=f^6=EOUrKHCTpY$iG+Kdg~2?)6X^ zxZwbzQJtRHTo$BSvMA2QNvbcC+8MGOoB4&(8BScpfhM)wGkarh|xBkYYd0Po0{}f3F=0- zE6QcpqrisWF8B6#?4ZrM<(eJ88k7Eqfj1+L9;SniJzkUk4yc^fYtsjJGvJV=ljYd3 z%^kZU)v-HSGS#NA`@6pr&8}?R{s_{^N2RY&hKFzhEj(PVV|d>EUrL|5(T^2xMm|xa z2j01jC&$Cl^PiMX4sm_*h}q*Ul5LK2Y~E!0vu_ZA8p+_nX%vozo!C1~u7 z@!#h7^z;uClgh_ujp_sTS|yB$BfB@hZ@dp~sm7@WS}7Zck``w;Ri>xB6tc$E2C3CN zgWMGVQP^=`pbN+ucIzwA)Cm~$o$9dd-2GuSb#c)SX$=lgDGkxCi1loswX~tgM5$}! zi@LSubv_@H&K31SjPQR0?VSm?HXNFEB_d(ATsePN4C$xFEdI@DQ!DoZxLyQ$;)-=xnx@R*OkJuHZai}Cz_v%k+7J~8F} z-w5zn@`*Ms(l zZ(JeDVdd48tv(bD#(KtKy3ilgci-O}YL0Mv@1n+KXk~Apd58TlmLp`t+*O|Ju7ozvwIyG`5y*{ox3C5k)pQ z<7oNZ)|w@J+THq#;0qPOeDc&HJNI1QiA?ZqCTgp{2fp>Rs^TiS+8_J?95C*M>!Pxb zQiNi>9-F$bu94I$S%qrLCKK@}xw)Qge;5QGF#9@VopoMqOv>uQNl$2)KtM91^+QBUjJ4n0@QZxk(^XDbf*ri!flKm>#HNYU+uYIc2|vek-YKycbya%Oy>XY=Y2c*$3=UV<3K;$`s@GRm`cMKHPX;lS3C2)9^s+n(_A-5w&8 z2Qo*Z76)g8OO;Gz)}=v}6(Z?bpJT4X=z*?SKDX{3n8W7qf0e$F1lfr>vYv zyP6`>xxP23G4-${jqq3K`5?62zED=UP#KM-yys?XbmP0f?+5n(Re;sBwzz z_x-?At!8(lUm5;ng$04)*%;N)vatLn>D&9%(SAM>>*c)y$5)=RQtQ4V)$HP1_X+k= zlm}faqCgGLYZ=IA=;#C*MK(Spe!QX@NNbV~dz1gv<)d##IQ4Xr`uy#`*^2p|lT7#N zT;Ok`F88*xI))@}0=$fr(FJziO(?b#wcVk+K2H3`~^h&w`qX{COyYCo^}$I|Ds@&#rt z^0P|ypLE4PJ&LP3ZLkz(ztz{`G_HPC3qj&#SC()_s}5F`)kuMbvknGZz)Zoj+Sf8a zNEs+05u>h3=cuj*f58P!z>0)?z}QRZX#bPFGsalOq{Vpwr$zmMTN$IPb8*%f&4TJmx7MT?LRpIMa5LEbZYC`%9Wl*lLmr<> z+OuW+!*_jt8|^$Jvr!l?f+qpc5DaVD}(fm7EM&+4G8<7l{J zt0>HG4q#ES|NdhnPpoTfzX|r_4yKBBm*Yd6D*s(d+x3i*znbPUu+;`60txdodsbou zElY{ungx2Io>s)QP5|YsA=DG}JER^c7IUzWTRrA!Wm9uojMF%`CAEB#Z|yZ~F~|Sn zuZCvhK>#xqMGyfBAmTAA^{9bf;MmOC4_6k+@2EK&#CqW38GvrBjbGQy9>*}+P=I{r zIyAo?<@ax4*kt!2jKn9XEnYi~dJtSmu)RMBJ!kuziy4O{l^Rh}kxxfuivwNjsE!U7 zTSHZXOM>)F$fZwKbF*2H@Ed`x4S&PtcJikcT}bz0(sA5Zsf`u3-Gq^MX867uD}d%peC-qHT=GRx~I46oMb*LYF_l=Q*Mg4wRXnW zX=@#Pt;<&_VK?K`usmV^zk|v%4;YMhwEC&FEKyCFL;4wAqfb1yG<)?nL`! zkBGabzpVj}8@G)uQaP`ZJl@inTV^Vsd=PF``>uTjP83heLGw;S|4lQ8U+P`i?^c{% z?f=0`XXGG!`(hoWu~;@dm+-&!>jpFLdDxos;LH|~E@s=FdWe@-dE7__LAsUANEuPt zva#cNWdBrGPtnvvIBd`|e{76Bm+DtZa-b+@n>#+fvT3@q#f*h5rzDY_=dUm-g`?)u z8OO@NCMIq3T7(>%MlE8 zNPFiz*72jmlyX#~upQoB?MCybEL=Inlx|mJ@LZ^J)|@y{I|QtAXv2gr;G+Wplf%Sn zL&2RSZL1YvPz%#2l$0x>YhB6UseBsYJWX>5zR-wFx73s9YGq3&mjP3m;tp4xp~?sK zS`S{Agp;H~^m6l)ku!e&JfQ2CT7e2wURZ6BHw8{nDZSg1qt&g-P_N(yC(?)_YH~t3 zj6We@(cYa4#EaJpw9nCGm?X!|C_iI*M+N$n6f?^XT!mo&tdQO|cNC9E=xo^Ds9;Xv zP^t|Jfj3I3Trx02I;;Rv#rTD;OVU+Sa3E#~3?4`tYn#T@v~LLVJ*eMP@mGksl|uwcwT&zv6NEhp<4<0 zmss5#HZ#xmXm?Y@ueP@>P8+=!iy21-?uHY)YltE3G|E6azk49k$%W8bKbz%DvOsgjkgFj)k)Y_($N9_j@lIri&+Fv>yu$`(s^wHMOvGcywj z_S%O6z3;^d3O0SCS94aER#s)Zv{PDY5=z=|s*Qx=N*?trN?sx0i{}^ss#_bL2~tW` zLPjT%JxV!y`M3R(Ss~*df7r`z5A@5fXWD9Gfw<++kgs7h07|t#HeOVP7jO3%gp}l) zOr&q(g^vBO9@ZI$Nw6LhtHJF7{x5^*YpZK1?RJHu-2YbS+MAC@Rx(Rew+tO`Seuil zEo+gWZrZ=(Np@I{_pnAVG{SvViN?tNd=mhObTk`kXsMP=V` zhL={K*GUJ_O69xKEV^=`HR=qfOLJCBL8uX&>VW!7_X}OW$ff)k*8e?)fbFKu_vy3G zyI4N5&%*qiBj(WrSAjTrXSeppwiZdyd9ATk>{Ct1!@IZ1x31*1ywA_fPP0F+AL&Sb z+((RNlM*K@oyYkE5AGvWcZ1Y%H^qoM16|vV~pvBXgC7^ZiS*7(XS}X%L5&;X4YKW1ijooC2isaXO-;aN>>1cLqjEmXUvuXPIJaKThl6wL6 zuG+`u=U4{AE46AB(_&1T>{#-ih-+U+V~f%S@?e`$WuDV+f)}dp`UqtKN-_pYQZx0Z zP$$|J7qW7=$t}`=Np0Ns-P`ws+n4(pG89Z(a)=X3o$=$)OS8z}p6%nqJKfYh{f$$^ z^FbHFUJpF=DO|Z!tzKu=7ZoWVMV!*io#Q=Wl`et!{~OBhmkgX-z8@x? zkE%Y`5kiIos3+g`0zi@FyoEW$gJh%7;2!AGOI%<(fJ;j%$gpCR>>p0X405`SC}pLU znmA=sgqGvy=jGAlP5zq0G7b zzp!|Kl{s=hR-j2AaQT?q)J@48V%a2IY-nyPyIcW9}CFpEY{Agngi=O zB>wlmL`c_aiW!O;S3Ub`;L@|ZsY{MiCx0pF2W-qnh66PaNma0~_}3&U18^0IzINVq z;Y=Bgn0pFD`D-`k*eiI$RpDeh^wS*1FmQfscPr?&dLBeLd6NQhf6`O}LNd{j4c}hh z%Ny>1-H!oWFE6gich=pSz&F>jAVC&khvTS*+g+jue&K_6Z{IOEDH?D7Q;z@EGz<_@ z8ttI>o-Z>wess@jOPGF5`T1+mlqS`L_vqz003Ggwd_ThyMiydj_Yu|HGG_FezsQFe$lUQ&d(2Aygsie0Rc`p#vD%Cq(WS5Flao+#L-N z!mO(ho%aKr{1X$K5W|N*S<_I(n$ME#2t@QV&}@DD3dh^cx_dCGe0K45#_j{5jP*Qr znfVDSC4su(q~h7w)KtA}*q7{B7$34!SPxWi%(1HeT{kQD@H|51UqUZazdOrYqlroD zx<(x62D!F%rEg6Gy^ZqWFVGdBm{%v$%ftjRs9wRCv7?=_cV=J-;is3=fqsf&47;Yp zP&Jg85GFs>px(VLs{L>PjV=O{9El z;~eUwC4~0ObTc1Mbw1JrDUE@q1H|%DA86F9&*Q78Qr0ASJ#ZVwqguULdY7Sa`x+Hf zD}e~DpRAVYH$Gyiqu#SfZZqwnNA2r~xbHG61L&`OV z`d1DH7BS3m2mKW3w?}&@R1v`ER`^>3ZR4rA@sx5 z9S-D6m*&V+@W;tm!ed_IUoFeBthKv@BVl^EXwj0(I43rY*teA-g&W#R>q6L6&3;yl z)J)^V;;#y-FcS|VKU+3*+Sqw9*B_7mM5v~x8=a(|llrUT1yATfCct`&o+DQ(NI%(J z*SI+F1%yQNUjB$$}kQ_EGLFxkV| zr$(iL^Ogro#tds(2rA1rBzi`*ABdCZh8&zuhk5itBBRT6zLwuVG!m6Tm{sQ8qL@!k zxZ;lHb!vOQ_Eyyhwz?HZ3btT6*V65Ok2B^gPQDiY9y?L{U~j=A%%KfJN#%3-2_`+^a}x<0&-`51nIoo3MOR>m*>`0JVs#D+7<~tjbuUo*C334FYfWX$lXt$i5aEv{SH;%mF^D}-bQ_IPj zx&YL92Fm{^e4J$Nby)H(??v}OY{+WPCFcf0y$sg}r9^vibQt!R{NY^U%N(B7fGyF0 zGqri1J%-pJ)Z-vh-vt98tgj((9ta&@5&>nXNA7MmEr2p@1-`Ys;jSD4|2G%hhl_a^ zXDykkU;EiV&`7Ci>cL;~ELMiq11BOMN9p?j*77NTgJFPj%a}`iQ>JCrNZ20Q1oC~J zC}>YY{sl6~@_nuZm1#LJdd+IX^Zp+cD@g1Ok?R^$hv)y|ar%yghdW-+|3>(^&zgu~ zP?qK+CPTFEio4$r5o%GZXjZR@StLSfl*+5hUpMqP1C5(stYkyN#iQ?MO@RV~rr3?>NO)VA#70g3^{=s9rqqzijV}Q2j+1f4=Nx^cNO`1<$Ij2$+UtnSBgA#{GO`` z+^ABzg@gENc!sh;$cR$mg^6wSp?uKM1jx+ytBpqQI*eK=Z&w2q$DE;w#K|eK>|Y?2 ze4lW2W6~|zltK@t9ih*aGv6B3sMlXrqff8cCW}x1S60NNE&W4!kNcHxn7`)SA3gnM zE~0dUePfQVDgwq(c$)Kx7>TqI20)Jzq39#osHz02&QT?skKb~X3j?*?&MyM(zHJel ztY=-3xgo*LoZ+lngkw01dWRUj1@_!33$Z*{3REz=T=gBg1Z z=hlM$gDzr66U?jqQWoLkrWwb$9)x{&4*3{u_+T!N7$*n^(24*=_S%lBkL`Zyo|8eh zOOx6@O|q*ikU_got0s%3ZarUzhH#9B2bM=qIdfF>rtwdOnl_MUzk+X{=_eQJ8nb($ zD&ED#MRsA~FfGOenc}#vyzI17VTk#68b0r!L{owngSo2?~EU^JEQsY!kAwb_3-@&5@_% z$m4RTbg5B&LS-R1x^3qwTeJD|gH3?<*ie; zMCWHK<-aq()b(~4)jlgIUr{SFwD8%wXI2Xn*s9Y6WFyXh1!t2|W^H7&FQo{;7zYJF zeSwFyjcei}(|R%X#SREK;y`x~#lpl&#R4cf`JOEAJu`c{0sI9N#{il6+X>s5-t%4{ znA3S*-4pwS>q)suDRBHumhRf~+|kPBl3Kh>Wv7Ra!Y<_2?r`1vqI#p6!I3+GvyTP8#fD^D9_bWu zS$izr!8o-hRBF~o$ZZTV(yfg7+~Ha97O{f5f|l9kXXM+*)^jZ`CRElI>VprE#a7Fjjz5>e}#{6k)R>AoVgBrTlF;PN@Kp-cXIG)ldSlM+ml`NGKpkIY}e zI`#{bcHp<3y}-w$U=qyLB}u5*;;%i?ZQKXun#yl>c7&$MGF^*(_u2%4tI#M$ZFLd* zAI6s_A|7is)pI|DGT0xs6Y@w(ie3V3>YM@!;3TznrE{;20DAIo^nNJd-E z*!LZEiq@x9mOO!W30Qw&YSkU{@$)PnoBzGP!r17ST#6Nm-hOTnWKr-m9Jk3R$zJ$#DpppEcTdHQRi(7?#+_#^=F_`je+t%vP9CH zm`G&mr0+tM`?4CBP_R~Ws`Y4oH$!FS}~;p<4t5SkIAWDedUAFp9U z4#xT1I3iklI-uYyW;i%gdEQ+WOe!^9X^o<{Nou^lc`cf1{Yqcg9iAlZhHwS`FrX~9T(cpOGp&)NN-oQkdeNY@nhx#T5zSn#% z@&D1Jb5T;(AhoRR|2oU{TE6D`iaGu2Rwpbx2xFwg5#Z*l4LH|+{}r@t|2ojpwJAiR z{PZx${umepn(vxEr7jQfQMn<@dm5z{E;m+H5Sg0WwZ~BhdY>Tt*PTG0CUJU@?`uoY z!5OwR*%!}yyAc{P!ReDXWZ(D)CUHpEsGY>AvqYuOoPc=jxG4P`-=j4ByDbBbX3(E8 zU=c;W!Hq6_s^z|6T}(tep7vtBuHocSJaedN`@rlLo+(v9wK(sPj6BK^fjxpuE1oN1 zf<7ry2SqcFU~5oI;`%wO-6uG^AJk%BA^{ZxT7EtLBA@H(f~-VPrqXb-T5F8!BQ1W$ z`qd{d~Wjio&1*{zLtp@TI|>n2K#lnZ1QIQG|ULHIOG+xzo*N@tQg!) zm}b~UYd?pEDl^+H!0bzI9Tirrl|}4irql!Ha55(Na;2?%Q%dH>b07g>HrYlr(fNKC zqhQd*?7tmH+gSN7MZJ!^w2@?)QkpfT;&o(c))~L1MBgsjHx_q+N?wU?srg6p4f9;` z-6ACJhk5CH;_!2_y0S*IB6xbmpOvR>aLeIl#3gPHMw=bV(`9fc@%uIDDCso6Y3xzl zOj)pSgtXX%(`hsq(VobauF!vix8RgV_)%L%UVa|#3Q8;&9OCHuiT=L#eigA&5NVdo z3a$LmU#Yg=<^H{cRaI3>cmv0mg&w>6a!TnoRXdTnH1N;A>{|sXBr#gnY`RG){{7v+ znOkp6H&b{yx*a(xabo0HnsgYAozJHM6?Q{!1UAM5gcE;jvVi3LI(Uy>5n=3>;2PK6STl&Ig>2Q6GfxKmVImY0(8&1g=vISuHrO zVGX&6Uaqv<=a#Shf~Eir7iGAiE6Z6)E=OkO+Z_S;e7nSF&^J4Vb`t?}_k?|tkWKo# zQ1RR98XKDwRyeAA9dUR$T3JJCS#?pnhgVyjyVZUOhHVN3-P1_%+*pyG;t%ZuSR9o3 zpYn|cwhV6CeX0C$tW+G*pXWb@@W9zI*U;KMGN{RDf{7aW36V zNlA>2(hN`Z)8|1PNXzu{EY%=(Lf|1Jqahv z4IvI)Iub)IzGmG=(GMCCes`8fkg#+`~8D zmwj*pT$2V>N+~UEeyGV&=Ab7}f|C^hEO2dUla$9L$8$1NAwf4iLB55FTN3{X^6jIY zP8vR(`1dUQ2@+#0+rk;64r~%5&ohW8z(yh$X+!Xhhq2=a0D{s#Uk(?F`-nP(f z|6ecK{dFKEX@uYM2Hm; z$mr;srEtQ2Q~bqv#<<7d!Vejx#akF5)U=~no~cn3(r>CaJO}WK5FaMJw%?Pn`Zq_- zs5ZO}Hr$*x+yI*vzHwHnx4lO85ILm6I;GU4OJO6G8Qj}i0`m)XImx32ptv>Ar{fRr zGH^sTSnKw{UM8i^2#Yl)SDMT2gH|FmmL0?S-4nOPY2Nvg2eZd!NA0B4_+v@8t`ov< zi`$UuR+cG+OEP`R0)z!PY?&$&ZBi%nOXRmZP?kd9>CCFc#HI$X-*Gy|!NM)NArwyXE# zdI>q}*Rvn{u^CNAPPUMvs>0fD{uKRx0v*fUfhW;_Ci(w_lgX2)11Ds$akcJ?7yow_ zIOc4h$?nZofbz}&hr(29iB#s|FeKklt7c~?a0KShhGFl@GMYjIw*@E5k&?jVxYDaS zn>{UTcJor(L~?LGSU&kD@N2_dws=QdY!wo;cjS10RP6i;V;qysCF7=H0Ml5>R#&U= zQIT8h3pmybs^GvVq(w0G$+qu#1eQ?UK%C!PVH<8~!bcgnP8rTFo35?`;k_K^>pXhm z!t&5gz9NaqTjeszB}j$waNCw;7H zZ0&r1BV2nyy8TR$)kTGoUm>s_2 zIMl+2fVvoITmBGS3X8jDLHlxhqXu*G`{uVKkM29yU`#Mrf1qbv&n-`{5lq5Gq`A~t z&|6AIBA@48*J31Af>T5TFL4n+ti_C^m?@Qh)u=O`awkcyh8S;HzrH^)7C;^LOs`C4 z=1>&}IOOCDvPJ!k?m@Q^w&V z%z`B-qDQZxE@yx5JfCjxbMKu(Vlc-Rf~f&>PSdPEZjN1$zuAi z9?e-(U;vi%oO^9N-%10>Fx6Hp0i16`NidHE`9AVF8?$9@Cp zV$E*revb76%wdNSZ#=7QBy3QIxYLUgTbamTz)eWW`iaz_hk zoJr`fslo}p<+yiwAjLwAvE(tm&*#h2mFPx_sTF(q904JO`v*b#%#N}J>5AF=R^EJ; zie>>G2Kj0sRWXF4|9$r%N!5q$WxqGR#hRGEs;{pJA`R0wYqtazhnM}L3=gR%C3kWc z(+10O8bqy~J^M4m`4g*XZMHS^R^%x;`{R9w(3rp}-)b>y8F;xhg1u+I+G`WC6{V88?$kIR8SzK)5>K%YW16f_o7$a+m} zI{BNEy*13mmhPK*Z)T_@Lbrg=t|RQ79SV|QLu&w4FCAH$%cbMTyX^Db3^_TFRJ2Mc z;KTw33s$jnb#R|2rE?Qs>E&uw24Z-v*YddtHW;?=c=V zbz%y8ZozH6`wEYV7yYxCmJ`NDp4);VO^>t*U_t}5Or{PdUHlFI4_s@;p39rS#n3i$ zHmShXvJo%9q%)1@_ybl$=dtc?OplkFj1DEWU_x~j0Y+Gbk{MT)gZai_RLaVb#T z-QC@tK!M`!8rA3I_U`yt-DI95Q{CdTgG9nmcHNpg zHIpa-v$Q5BWo_&dVPSO>U$B;5(dBei83g3|iMB<4d-$5rtO~o(vn!gKhvPyQ&UqNY z9V=l5@}pd}CHZbLghivSftdd~q5rBKveeRAADk3IiNHiJBQoR{IkrcX`J}e*`Z-Jx za!{lp0bO0!Qr|Cqzq@%XCAM>=d3F(H9JMYE_PchI-bj=rzr`19?%a6}3x>_O5Piw& z47@ne(P??Tz24U-S+oBCoh_3B{o{(PH|b9C7n(bD0g{(#f!(+Kmq$4T>B-nrvjJoEo5rqC zh(14)cV~Y%u}cp2sk>aDk)TfQ*q41i#x)f9F39nF0*ZE+Ca#;rF%WnE8=AVdq>;n- zXd#K7@GOGmDexY_>!KQuL?%M@)nMI6;#IGxQQaG~!VpjT@HOCv^oNyZ-(+xhDAt3G zl>0uDUkOuZ0sS{KMOhCt*)Tm8>T3$i9#GJ{(z=7-UvZ$^xY5@{`zM>8C=+bZF ziN(+HI5juFKTRw{YqAh;K@vV*bT3BSG0ku);JSQCiO>_Nt`4dBD`(v0XJUwAy4cs* z)#(9sf6!|(U*?~n&H9@6Qmy>K3@8pN0tL~U2(T^yvc~|tXA=hKbgB$cF=@^q&aZ`rafx|FVG7kI3ipv4JNlCvyQ(1n-om|G;alMjz zbJLsMQpO-6{0eDM<-F&y5{b>)y@8f)McnosOyx}G`IXk@n2?TO3b#r&-l%4r2`tu& zcKxa=cj_qD#|Pt=D+2NgqIGB-PXKVc>pvcTwhn4@2c{ZAIVpYLq8=NUHdtpqbE=y) zlr=K-{H# zn%_Gh|2=ZY7Z_E<&+n-Xm5C)&I|f0pBk>)N&qgcp>SCQq+e7j%jIC+USuPyHr7J=# zoIhh)f>WPZCbY#jPoH=vbW=nuV9nhg@_ox%_@e|a=|9=kB_Pa5c=GZknQ{c$n&BdB z5i^Is0+DRJm-_D*H6JzIeK|sjheA&?ED{whIO8W=OKw=5Qi<46ei0sb!g>>GA)YqG;sn&{;k*2`fi$LAE9wHt z1BnX<)y)|*fc3cHQgW3fP8sT8xK8slALpfnlq6^~JjHj{Z0MHwY#fL=_Hn7%<)!Y| zEWl!4Mfwlxiv)$r#_99RFNj*OGTYLejeLzd`xqfYo;Y<|X(YuLbNgl`d=y z%(^*4J<-m1m%wnTJI#0=62o&oiv@6anlcXL4Ug^!JlxYitd34)Drz1(|2WR7IUaz!;5jR9{D-(>;LhUCDNy`<*41Xyvl{BAF zHS``hd7X+LdUCkUr7#;kqRtapgFCaI{96-@s>!)1mpixHY217mR9v@YUB8n4kuBv^DV-*Tlra74X@Y(oe80t?Rnr}l8F#nDh^O%3UThGB2Ti!N z#9CRj0sf*$TN=LNG=l}RFT&p5Ci<}SI-geOD+7brT^+iGMRIq_(2NBoX8ox>5or)w z$Fu;v5J7znN=lI20@limNyK{mo+KL497zMsktq1 zb;kNcaBCoIoRyT~>A@JAS;^-phdb{}`6x~Ku*Ql-&*5c!pK7s{*n-pUbcO~IuM?_q zB-wiazGA6i*&CQZ9jNU)=$_rEYo+zR^t5|tezdl`*f}glE3ha@kDv%Jo5>ra{Ga9c ze`XBqvgMI!3J1gQw1+S=sB0m_&pcUKE%8b|QEai&M1s-t2LCGR_Cx0jUAA=DR+RL_ zd5k&|1{v~Roj*%F>Y5ds4IFilR$%Z`KQCkqNAnEYxfL1V#P=4_DoesX*#5H&w}YsT z))-1FkdAx&Q~k+}`Mhbh2kPT)ug+@AQs0{`N~EVK6fuf&vt>{@xPh6V8Hm4phE%$T zf8SKs><0JvJPNTyt1xnF3N#oPjjZsHu_>* z@PEI4$(Q(B$}sl5UvZ)PYupjU49gN?o}zyy4T}Xaue1Fs9?J93Fnjw;bad3zY7yy& zl)#AA?v!>x`yV+ASDx?AT2{r$2M*0zJ!>m6-q%;qCBe8OVisSn-He>_Xe*+0hX znEhdLsgmP&N#9ob)=~=J!|mArxeyDb#-}sf$_}%p8J`qsF^Drf>NjEP#fM~Zw@cIo zLV-L6*kj1-Yk&6Oc&XO=#k<|!#M^{Y7a+zH(2UrNl131rSmjHI4QFnD6pRfLV-=RU zb7gqu3K92`fdt3H3%T)Y_H6?VG?*>v@7}=-Ta3c9-jAc7L>mIE_`qE&5`ddz=I3FU z^-gC(-v_%l6o|7F{(ddOZa(7uG}weUL2kRl6U+B%Sms6GeTis0e$wu-Dr!`3(F{+d zF796XCd5an?;qI?IpxsAQttbYjC_c1#ol7P1W>&*f`|BjGL*w|hi1X?P1a}q(Z%5U zN5Rgc&@p5J~M5OW{Eq1mzmIkOlAkIJZj{%)uZ{OyU*c zJ&y*)bR#aoTn7+NipoNdICBsb4}d`3ipCtdj8H$12^9(bjWb#nkCdm+l|iS@mT|>Q zeRAqD2vUulykGqFbLWJ8kJE}qEIsg2BxgrS&_V=EexQ*1GN?_2YG61?nhB}Wa-H%@ z>)-gmp>k-oX5n{BJF~Lf)5RHC--i0-hW+V*R~nShP&)MOcnC|Y=O=se zPpSanGT~V1Uvu$3A`hlv0ZF6jiVTgE=N^>3G9x0UZIBgKoZOZ8{)U4pPdCqNQI6b(pZiu)cYW| z2~pm}$=sAtlH_4xq({D{dgUrbb`v|dC*-sV28Vh`eEipunIZ4G*%O|bJn!w94I>4^ zC#C-qNPW7RFJqh_ma6W&oJ^8f&w#lb{UikZTU}w)!(yE?FDVi(?P?4fF@5HM77O z7jn$jrS1=yCB_#nx8x@UOD;kY!_Fs8m1EggXF=v-P}qq;HFayhIwtsbYqzslHl;qx zRhQ{8LX$%|tA~X(kG?2`ur@xHq2bbvuthK9L=*_k|mF9+2jYs4E}$!_PPw7Z0cr!&0)HW z4%Q{C`#OJ%Z8JdLU8=DY$GyQ>`p>eyL#Y8R&&|v}bT6^Bv2|9t$=B4B7h@+DH-NGu zzbB=FVxnr#635TC#YxyxJLKZo$!f4(nDM1~u0XGp=4tY)+rX{K(@@2v4UAGU+JH00 z|74|QBQLl}ao#+)y$7dqQn-mt@hKdy^2jX$=t)|}vi@L`e>5LtixpY)J?{j+wJ{nU zDe;^rwsY(_?9iT2KC6U>X$VSok$u#2Kf_ung;CdhMc&?DvM>8_s{WkRY+58Ei6~Jc zHXuu#dQBLKAULWHqSIGv;`nMLQft@rp}2&vzoves*ygEA=BP`P0nyC--L*gd`j-0I z4ILM6SoY5^s9=t50tr(R8ib4RZq*%0l{YQ1A$x3m``dY zwO@~d0ZjO_bmGsKA4nAuf=rRz-zCGk|){9IRdMCMh?Kc#8#0Y|&_dVDp8JA{2Kfl~$FMOe1pZ9sTlR zC4@;iQX#z;7cQ4FMtW=tu$I+7Fx%Q?m|lc_B24N#A1Si>jocZ7gyGxzvwYo&NLgWFIvUl(-le&tgyKsjmEb5TktJ>Nk;J&T z+q~Qg!p>=L1rZ0y|2wHArs{>n_Sw||sxzbZTt6p4OcDO`GZCN{FzDL$)u6Syprn9` zXYYymsS~2j9tbf@>0th;CP)KY2ajv6~`RS z;)M)PLNxVJOf(ive3)uFg4}r3G^AT!v@ZnOnPX~gZcQaoB{k8j)7$HG>+5r;(|Kgb z!?lTus@vZA;KqTQz{Bdv+r*vMcB`Jv;s>p1jB&HN62D>R(;S_y8LLl;EuWRM}5g`^-Fw4CU-&n+Eq+$az0+b$7x zgd93=A8vR4oJ^`8`(e6-HT*uIm@Nvu@Fdu}n$bf1B!IYkLQ(%=KtdobcH$*d26uKB z{k{Li|N6=vI&VNEGV~2U`-&`-c32=VB3{<8>Z%8VVdPSpY`&hh;k2V3STLyhef;zp z!=0-;c9U8mX6q_8ML-5aSzb^s^V{2d6m?ttCh9p!x#RvEG#AlK{N=IL4-!RVoSSQd zHMKYqGSN+Do_*AXfw)}?W*m3p_UV&Y%!nI|jyH@o-KcJRe+7oTx$S7^KLi<@A&kGx{Rc?NV+Z$ z!D3jYq>cZ)BF&9RK0O7SO6TXjToQ`mcCoeP}k+qbE{$StZmLBQCvzn{X!a9t#B zEg$)w4r?=gl}n9>>z_KT!sbWIpoNXntqQkv_ZwhPiyc7Xjbh!s&DNr-Ljz)aeV`#X(nw5H7CY<1@)Z(BM(8P(z-XEvPU38=qUImFlMSK3Kr zendJezQ)kKyz;+W*)q1Z?wX?=)3kp5vePd1?FN%dKKrL%GIE{Rn+Px0%wKiLr;mCV z#VWG5SxA{tf|k_Su`>>jqCmW3MV#Z5!svH7HYlb*i%u@T4M)4=iq!OO zczgAk8Wwa-sD>%un23;d*!@D#vp927TPCy|7v09kI_-i7`H7k(rL`|zCXaFM! z!JDGo-IN3aqNgC;K%2eaOzcDI3Du~^8D(=OR5W?o!`5iIJ?p^+js|1e45IjcC^uT) z=7h})(jrV)(o$n9g->%5&X#E*sH(}w^UqDPl>6RYEzUvbOM{B{UHVC1+74dXW7y># zruS3XsQW{ilskCsn=YU($_Yz}t^!5g%2mG7ZMaTq-LpUymInuRj{iQ;I5vW!4EGxz zrI?LFU$5F1$LCTNCv*KYj;RZi#TDRk(=jA4au=w(ySU7yKlTlH`olBGC2bG;DR1QF z*cxvX#n((AxtJv0oSgHLd$nI^``iSx_q#4hq7*KHTya%FcLRqb@*JR(s`6Bo8^)OP zrAXn71#n^Ug&57}R&6!al)+vjxvnq>ilGHN1JbLCzgc_|nK+INvZPFG&+R zzchMBG$dLFwfIf!vT!-IQufaB+R>Q>apN5N=h(jWYJTY+;!85D9Wp?KX&}{O0x|Ql z&I3M&Mpn6-^5Yzl4hioBt60n}53iEF_N5t8L^J-2gO7}?Y&7^JqLXW!N&oW2Cq68U z#3X@JpKl6qn(R)7uKbt6RZtAAj0zz=nixYV;$`H44d;KT=DFaL8#&baT(57qQorW->o5yR@AISgK} zpyxT0DB7dAYp9V1KDMO$YS+?$o8%(*y>Xm^%r999s&+ujk+D9yTH#d(99 z)&wa$*+b3G6jZ1(>~pR`NYb&Zu)3eD90w${0?~UZoSK*jnx-z4s{wBQZB4<8YlJyo zDP%Lyr~0~;^Xk5T;w!47mWT{|+xdIy zG8uE;*RxAjvC~qlN4dN-a3Xm$S%|;DR7ht8nn6gz4=2M#w2je2qN;aBjVsc%5h3D;@tdYplQ^7 zZEd(iG(?e_x${eugbyUw3-jm5V!p->a>5X9uYTIxE@06G6ofW3FxOh+g}Mp>%>(@? zP}7PZf6LkIdqPYo*>y}FW4A?eJ~fQqONuxTpbQvQS+c~_I3@bu4`jd zf2VGVf04tXrS6Ill72`NYGSIwIj%QET5iu3=5kXgbDPq|)dxUxI_3CBDt)J`L%xHh zbg-l}$-Jyk)bx9b2xNz1YCH&%W@AKeUufKHE3X4A`Du9^kfn6fBpoNj!07Doh;py zYF^DQ0MuY`YazYkR8-}Fz34i+a|P)dV=eZ`)X+USIK{L{!RpM=#ObeBVZ?&2R>A5r zQ$et!$Is4o(Xld2n)lc6F3KcS`I_8HNJOJPH*AJ=KFPf>%9qW{mnauQRyJ<;sUk#| zqz@QXl#iFJ4B{8vO1{K6aLpF$6Vv^0i-$pNfs1Tq00V_UO z%I~+6xooq7upF2!)clGvM%f0KTd{b9=P_K^BOUJ)JP!n;3;BMCyNKIzW}y zbqn?hs5D~J7JS!-=BO%o?0&enzwso3K6~cg4(L){Ni~o|N7OURPP?VLXq9CkT0c_* z$hxTOq!Eyotq&ZF!X@iUj6t?*dlS%(8p-~4_0O3o{K$^uK$e`1jYbd;(l$xVu?>h% zLY{95eSPINN$@idiLP|E37#EJL6c!q*vcP#{3X1`DPGDp_l=Tuo;1FjU1I8_=+q3r zTB&`MyL7B?ViKZMWB}WGr-YEC>Ih1gT%bWgpY`OFHO+loSKB6}^gX>;bu$TEHXLZh zb#?o_()8TyWfkJ(Cd#=eF?GQLQ1543kQ}6uT38gw__ZX~yF|zeDp4yZjk8p1<6Nq3 zta;u1gYuBt*E!)@)5zRsWoHf@Rf6NXBK3Bh(6E72J|TiUWuTUT49b|(-Wdh|eDGgp z(dc*fh61lhHTzWjk>fw#Ssr{CUsO-4m$tnih;^VS=@s%VyXh%Yv-RffW9tZTG{QQY zV=x)J97w0-bYkCeIn322ti=asJT(|y3MgS8LqJ|jp@{IB-mBU>0o$<&M5|`3sUte1 zo9JXce1kB6E>1>GxH6}_(ir<-a}oYua8b~eFtauA9&TVfL77L1Ak z;v&&ad2&}QbxxqSoh`i>#!jRYY*XlUEb~iroqcJr{L~;BWT^qmvyfJ~Le2q!TljL! z*q@DV;h;x0#END`l3CoAlK4$bzp+j&?PG#QtSgy^)r*W%N`0>F)D%JS2(`mQswWML zolSZj5gU(lb~|evy4{wndAzuAg!zOgixe9dKK97(>%K2;S9z#aPR6_NG4|S&0~pN< zL@61i|`gQER`vE{96fU z(|SJ=y)Egj$RQln!dPBvojJL{J6XPyH?h|dh#VLU&e&pNjO7wrX@#K ze$mnpGqZAd8EH7?btR|FZpLNG{Jy3pb?3ANCYe#Krc*F|&n7#7MUpR%5)msOIJ7{tvUxDTIn~dv{stY{wRN z8A#4%ayFaWOSA5KJzNICx@0DOjq_x7+ z3{bmXFY?7|gClVE6h<-u?lc>>ja%Y_)P;1ni|nT8e^@nF*Mvoy63CQ3i4I(aEHNl# z>ODTIU5z}=nyW1N;(nCPhN>AHc-l_>p7`H+;3UNEZn9=UCi0J88h99d!pcs9mC%cpPj~tn+q-j+(LCADvQX2sA{w)`hVITkHvhwgX|{5+&2N zL6UgM6XiSGM=si&4PgbUbpZB@Bh(C7WP+J zFUdC6T%odQW&bM^SIFlY4}G{LCR14ww2mFOYXTizuYuq>;K5#hLSNr2FP(Dt3xjBI6LuxsgaTA#v?#rs! z>b_WHb8@Svc!T>EE2fm`$2+`gVri-NB6Se@P6B2p7sS zX-JdZ)4r$bddG39(y-B2|AAA!;cY@%B$c32)uZZxd`QHY$HpHHb{l;hMn$!MwIq7D zh@9pDmA0C&l(nw5<5+(*F*_lc&#Shazy`&A#!+{PY>PN?*j^B8XdE3rwbAxA`Ca9c z7sP6&lpm@(7r8{?TL9wLtUy@kR-2*LbSZWabX`ML8sTXP@iBvLTcID}`RgUnY$Ceu zUEg@P-JGEB(qRWHdg4@3 zO7=Fgx4}Ueu3QdD!Py7l+oi1rvg6y9V!oncKbnFYYGtb|EEBae4;G0IntzNr*jNz} zc{?K#d3!?>`MiWysNx;-xZvtD*_*SoHn8(r^(CdE0z zX;((tH3e;ZWy+5XFu(m{K`?KH;!P3xf71Eq`6J6w7Vt4Q{}wpI947Klfw^NseDgfLCl9?d95FL=g3mIgRSg|-zC5&0IRJK5skHOfy z$q!`f)h62YWKT+@*tF;PXvEyX_p4X!n9Gz0*i1LQjwDnmZp|5}WH6>>)Qu&`Eihta zv~B0q$1p%=S5_enwGQNwczJR5+xH=GQ8wLwb?uJ&haN>pJJ>DT;%120(x0$$vWRIw zSa)=SWu-uaGR`^M&1*}%i%gwC#!d&qu9x$&$0x=PKMuW?--)WoCQ%&Jca`k1Q-vap z;g-2XzyB=nyKdx>-D7^bGI5%! zsMzHDVZ6P`2!Riw$4}h?m8EKKJgQW+V@&I~!NA0C>%0wrs0~Cwy$jK}TU?tM& zBN7}sQZTytcOa6x?FS{o?$0=;+L$O;B%v`R4A{qG;>p>Hi8)cIZ>E21jueO!(|4%2 z>{zd{B{EqCc94L*)ZB1NBT_9+15y-pLn18M`sAD%GHoKSF(#ZCnP;3}gH&?pVq zys?cF0LuwTLN6NUAnumGD5quvmJ@kAIU?e zSe56%r7&GRC6t{yfv}7$Gt_+WJY<2<+lPXNUfv=j@EWNLX$wts!USdk6!SHqz}?w1 z;~4@er|8cX4N?PE8TxEASI_$i8dU*L9EGdugVz5Qx>> zo(t42%QhZaI^XW`I2%?)6D?RkOSBb`eiz82k%#Us_K1mN+XTO<6jU{O7uJFHJjbEe zUG>tFe065m9>@sP>DI6T#W<8300qK7$3e+?6*DST)?sb}m5{x`WmTJ#Z>erqPI_K& zRl5Aqo-#atP?<^Ucgm4mpAGVR22^Qn#laTh1yRDURH^khO-TMMNRnDB97bjp$lPG@ z(F1L3X~nn64|4wtluv#G(Qrfik&bH~G`r}e2-iyfCV(^uEdSI&S6^KBq9U|CwB$IfO4w4S zO2imFS$heFXyDaKy%kQDOjbDEuzEDLVF{3*{3wi(P zU{5o{MrLtF6-OP)lz4lTKAb6y6r)7#}ubN?-2{hq;qz6MPe2{&Q+n#nfQCUG_q}yS8x(9zBseQ##TqQ{+6x2p|9m?(# zQ&Sz?5J^3eQDIX*W_2m$peROMN2Qzvf`$7f;Nz2-#{7?+pnvnAvx zy~0I^b^4F1(bD+-4wo&SjKe9HeHvDKr8WZUrptK9C6#3yUVEyQrpl4`)5sf}#kyv3 zdgDjT3bw2hu7zvPap7Bt0Fhk6--$BqVsA&v+h;g4=A%EJ9aBj z9>}dRo_kcmF6~Mh`3(m~UZF<)&$hL9Mu8|0U;K`SK7xMw&@}iZ>>r=}uQ(@_5ikqr z-_ACOCvA~KkmZ+uRfZ2(miX^%Bkg&=Sc@TRCNYbO-zNOSZV}T>L2rc_kL1b%ifuS% z!c#2%OS)@@)6@B>i8vDF<~m24wz9T<?B3F6e6i*#%f_(<&POfoHcg8_C(!*l5MXoHZH!mkgRs{_Mjp>=31 zj3&@h=mkQNbpnc6x*w^8bqZLv8f2-hQVr%t=@3KOMfj(kx{89IsV+dBW$ODs4jKsM zPI;7EiBhm>DA%2I|D~K!iJ6ZxuwQ5Jr4li!D(9}8lI6A*IA<-iM(BMU7xPbIEAp~;8#^k99^EeAibxNlgInEs_kn>bSdd%1sP+Sp$-9b`VsnZ zZOREYtH*&dvr8vCy}mufbah<|2c$%l3F^{;GSDE-{;LMnd_^bPZjWx@;H9>;D=TmenG5_l6ZcC__1?0qGfGAv#U+;`@sx z;crKEBcYSG*yeANISuOp<|JF`(n;I9(T7;*G3?X8q%u#JjI43uC7LAtM?K0sMY0Go zrp158iOEc)S;EIpV_#v=h)Qhq6et67+0Dggs44L>zQ|9Q=ciw37(e{pfP-@S4xNMP z!a^J+_Wia^>Er!!naqzx1XGy0TwMmj>oS64{)S%8GQNxtGDUnNbAk=?B3>58Z8;2# zR%Xjz_bym%#9cLIid@IZx4Gh&f!$s%=N!UGehw7B!2opRD>6MVdZ{vsTS@Dz1vMV9 zt9;4*w6)B%Ev2&(cp~eWRd&v>OC4<8j3JZ)*xb;c`OH&MKkJE>)5AYHWwhbK(>^bZ zGw{Ma8475a3Lapb&-1AVi)=z}_;Mkm?%KICS5`_c1+A)InlO-SSZNeFEc^+kK~Qus zPW9=^2OlgO(kT&khkp|Sn*R^=MAUF(Pnfm( zl*WA1CbtNL2L#J*RBPGIT|TF(v;z##t1|ckBNH(b&?8BVqP~0XC2IE!d{x#^*R$QK zfS59`Eimk??&Bt<{{Yp3A~Y0Ecq4LE_b)@CR6L?fwe^*X35XKhV)KWMf0Y-70=mw} zmeF)O+zGKJvjppMR9rxH7(c7t-N2{8=hzQmrByTE(`sQ9IP?{!ojR(Kq0>dYk1Npn z!7S&s!Ve+PhJVAefqFJ~o{tIxF1CFc`&ZGT3O!`PGXEn&Ch3pF@|SMfvYAO*qwyTR z_w9Tz<4_Hz5dH^iVwv9s9(+BybHCgoO~2An5fMd)vH_PLjuf?G``szhrYUfhk*=&u zcn8HyD1E17hh`#wbQ(sYf8?)T;n+Ae(5Xz$zh{BSxHy@0Yg3sOX3<&gEig4~MY+LA znY(V`qezY!?F>%QKarg^Zn^V2bqX)a@3Fm(5B35?N~Rq5*u2&W1mz8b~#)JB1{NeLpX|r-qy%uLZb{#Ptp6N4E9*b zfX|Y6tVjqrs3zqnIf?{Jrf4i63lqaM4+7a58_O>82>sR5%quoMo}31}J^kYJWsYM| zveJEtTe!Pe=4tPzE|PUES2=hj&GZ4=;ymj_NlPYSogw~Yk!(8Wyy*!~(pEvAc(owz z5$iUds9sYv?sD0ySS`p2#CLHE*G+Ka+tyoSR+hE%tV=|+#?u$AdF*zZYMI_%;6kVXw#Z)*LkF6&8zUPbl`|@uFR6Lrry7>4nWlN z1S8WmX!(ui#Un+sjJcTH;(iDgPBBmr=<-f$S2UTKV3|i4jch$*10U~&C*)bQDqA}J zN=0oIwkAMwC}Zs&N3jRn`xD%c$_o#f#V8lm4r6;}U9X)(yB)3<{C@E7t}G%FUHq~E zT>UzTMHy(+u6+eOcx6-fiG=Fb``4fTlxdegy74l;p&Q|4$gL}DPXxF0i$(Qck=Bvj z_wGO)m)*ST&K7-NznS^-8(tm!@E42LV9ADXRV#BI|H>+kDf44ICr^47Gk!jKF?1)gXyS_)cxd(?!WKRtf~(W#^VbcH_K%&p*4>H?DDHVH-Ok_ASiiwbM< z><7T4Oj{n>+;RwuY;~<_&vI+0N>N;=C*3p+OZ=a`TqtwcM!^A&>jpUQ*0e)u3gq29 zm(z=Rha1zVjt&G$O!Rc((D+UCu)mZem=j2Gh2q9kv&Wr^$!Ci~6%HZeGH2JC-Kljl zbo36F!=BPaN)s9u;JqPZRlUXIpK~m3BD#a5%JdY))G%5S^ z5kW4_JUGvMi&n#?+OrTrcvPUxb=`+HQPb@B_TyM$fs3y;X|X1N1X|(xv~~uoA0WK3 z_z})x3+=J9;48Co_wj7*UD<}K0ADal0S#;b47i;l82p#yqF_tj<2#(kj7v-3C>M7X zaZyYA$f*-_QPbWreB?a**&aUaNrt^BGLt2W=)u$0Y<#g=~!T-_r*$~W5gM_<&9 zu4@FJ$1O_t_hWkR$6#ItvwhUG?2C^1`}!zfbIazDA&czNNm+q}Cmo2pckN2$6XDk>fa z?>5ciZ12xQ@i)8T2|PVg@W-s)>a}>{Wv#XcXt_02*KOpqgXV^N_ad1cf3WOp1le{) zYq^~pcFlIH8-*O{$TtygPXN7|0brDKmX3|HT;1t|?<4c3T3e92YC|2~pRk4Vz3!HI zxg2rvcD||H+R@TV0HZh{HeH1xe5n7) zEDpXFNWBAnzw=K|id#ej)yt|F-0^qmFQG0%>kI!qGfRxO!80sNLYC`a3vuo&Do(Ww z)u)c3Y)isv0DsjJLRlNa?Uz8Ls*c8>I~UmxwZg|39fc(sZy(O^h1Ks^W$$F&BZ{8S z)qvFLDZ5tK(W>?rvSFy}C)@iCX!ng;hc2wLOan<9?7x^)I}N2ydNH;J%H;JVL|Xx( z7cB1#NvhAy_8wtURY{j4C)BE{>Xt0Ogc2w;hqI|erH+1eRYc`wXl_v^E3nL1#4!_A z87z9Cb5vGrw)wL4jN^GQfn>(j%{FS3JQ@=u3j*)2L*m=oQlueh0oMEnZlJ+?3FG#Nxzo$X8I{&o91S`XE#7Yu!V$(v z$~4C5+|riLE;@(%cqtJK25wfE3j!ndugfVm{C#hPS}Yc|)^nUe{n0mJWXuZJ-yLzJ zrQq7-Y;#oGf?cgp4(X=_1lrz|JqbX!E<_>Un`>+Fjo;ChAAcRbJr=f@5`2U(N0QbiMDCJx2Sy zqh76xaZJ|{;W&b(2agJ9*4vx?vV6gqFD-UHpQ?a-k#u)8XXJ7FGw$^(I9tnWQ8)+d z;AuJglY5=pXF!Cg(RF5ShKV_QX|wwlUFZE=)#mu9nS)P(zw6o7wPdsl7nOC**~Zf) zF2r2(^gaBd^MU02LWxpQuCggi||*`RGYPv`*rHX zPel^>Mv1m^^?EEK)8~3*91&CV@Y&x$W!`*~je6X){l+NQ6rf>Rz9;VciIYgK))=Si z@awI9RzYYt;WcIz?+68zq3AbOVcsaJ9pa+hba7c(Q#O*cNCZ{5n@=3i2M`;BXKA0L znUiJ>)!K{F22D)1bj%SN(P^X-;mR+n+w}F5+n7-v-(KsQjkZKC$<6%&gZo$XzR!iR zoWYi^){PAPQQ@s32MjJ{@#Vh7Z5h&+zm{ zN!F-*PWVwRsEWCDH*3cw^6lt+Y*Gl(!AC%9LXoMHn|EncJ?ZDff0~#~h!2^!f3)4& zUlwp(mnXWw%cha{L9jp}`0F`~oZIe(iWl~=w*$R3ilaj#CgXG{&3Wc&H2TvzxGr26GHVv`w;j{y?gVhaK~xlJM@X4oEN&_e_m? zrQkAm|D$R74(czdd=l6&_++tDSzi4Otk>xO)ws_`Lqv|RP@d;*i8y!RV+?~57AUU_ zl`q#Cx;P?Z9||w-t9MsfSON%U^q#}@MWKbcnE+~)t?Xc_w& z;Zm6O9d{4JF)F>DS{zV`G__--CxOC2-l9;VC?Q{EW}07SQ6MbAv+hVCQkcVr zY6K>BPiq-`}6pbvW2Kk>%M^!eJ+ahL9M%A@6gc>q(*kV88r@!BpARD4L(6IWz z9`V?6+z&o(Me4j@2|RxAz3qK)*qi5DRFX z0%K?u#5x~^q&_EfiOIQT@DQ~EyN8gRpA}1O_>FgpPV`&YeI!|KMv=eJ2MHh!2y<(n zAJBn&Hcf2YAV^V{?NH&pg-@3J#~5Gtzc|p<)_n9`AbNk7;TZa%W6$==sgV$8I;^`M zf&JAphW!_8&To&s&zWk4l&I(w&>h!MgghENwo92H<()?sEsmcaR z)6Ee3e!>gLYa!Kc{y|6UK>Kb4e8i_5Ek!q|)$0FtSv>l0Br5>voX%L%UzPJRL(Y(z0Gaw{J~M9#`3_Uv)bx~rBHll7kLv-e{g zxn|{Lqkqn3<59h8Ym4X3{;b-Hr|4E1h>VfzCnz<}n7^{h)SuaoTD7v$^*DF7v6xAy z{ni!Z&lhJ%Ensnkyk46&p*$$zNs1gr#TvO^1#ilvIXuPcB3|+UfF4!)`ZJyKa&Tb` z)3I;Jw-*6%Nr#xF$MA(KP$xTV>ob@;=E74_5!UfzUw>C{i1YI#`it2ofRMLNM63J{ zk3fNPpj8px+S)3t|8}|>%l&Z0SfDA$FLNZkD8%|#RHOEfo?JZ9E4wb!EVHEHkm=qZ zJQJIOaAu?%#N25`qt&emwdJd!l9C?U+X7Llbi5NHp(}P4;vI-%rP~mW39p!-o`BKx z@>y?|Q2^*(`qR$mvCo$<9QY-Y1axOEiNifv5wy;rM2FwS@Aif{%Vry2ZF=EuQ7U7Y zT$pU()67@OblB<@t|=v`q98wUO-Z{DL4?yw8OuUYN29RM$4H_I>6Lt*erZn4&o>Ph zp;(R~R$wNHWWyBOv(h9$?qbb{mB{$@ z9G&BAx$BYG2d2u>6>VB-aG;E34eT%EY`EK+>Z|)8)5VeJOyOa-0%o*iv>fO!!7<{2A@gttOWm5;p@E5$nfFK zKENnU*N2LZ2Yf#ykj~f%t-oJq=rqnE@(%CY6rqNozk`c63rY!mNokBxx8}{NwN(1+ zRJk1{mi&h|Tl7i?kYypdBBECGQEBDWzJDMvz3|U4k(t77Ag6;1K@+0p%`oYLCfMKv z9Sycx2)`Yv%H7l+!Xr*+8*(A|C3Fj)en6vG)!E}C`(6S4-UnIx4s9FjXhIsSp72i= zXao_Ce>6}GRfD{UzKKZPO$k$Nqiu6x6Dmwgz5T0J zN)}xA>+`AvVu$^L%CRxa*>S3O(N#dGm0_^i0HmZ-RfLbPi}0;>DDhaH36h+SHRgDO#S#6E>_$!&1;RUt%HBB*B-`np$Os( zpT|52%BSQDD`)czZA?iDN8YAv(mn;d%8(&)(##0wiJaZ%?W#M)Uz?i?msD72`fNFz6x<>nnXGPm zWZs~~R0D6mVEiS&1P8wS{#5-eh0(trp&GOIBI+S}%&|42YNL^ag`bUg)Y~L`5SBLC zQiU(->ib9w1{sa))WDlhV`XSnm~c4F3S6{mwQB?=zHz82Xx;@ z9^&=8gO|!Py{b4K4%pCPxq*&wkO8C8ELtr5l+(^6r~3cPQN%JLGrXk z75m4FVdl9mB-U_;zEexCS*(?mgNe^K&0k@%jdb}#7O3B2lV z`%%&1x9fyCmjOiEneX{v!=_JC*iV26Xxn~{cha#A;n!1wV{SY5^4a!=v56*`ydC*( zV7?b%S{8?b@_V^<6};J7@EEcHbCg{a!u1O2AEH@S`T+<4iBDLGYsWYZy39>}j`U*g zrp@{-HFMO9NPuNDG`g>^1)-cJA#y>21~B7X+f4P@QL7afD7W9Ya6lH5XYHgScRs>) z{na_6I#eZC?dG#urd+mIE((}L$JL)$D%va_W>ZKJ_>19B3W$^OsbBPAu!W8tTkZ&tSPw+yDFYU%8q)rBmNB5_~1_kvew*jENG^ve2r-s(kW$K{NuCN8whY z@Sc3e4Y3^e`3HSc+cXRX=@SwMU5p$7D>1BS>E+dvbgS-!zbWzQ!W*ce ze7IU2e_sV_3pC7=#GPX_6!=F7mF2$QMDqJaLY8mc0_Tqz%AO6fx2(KH833S3o z>3sCyrHeM6ur+iXocRHQ(CBr{GppgWlj+s?Widl%-0Wd&oa4AYELWWFC073x`>Ch% z<>ynr(`&cw)7O`YwR=^e(`@pWw@*E<>%It`H|f5pufR=?*JXiU0*|zv5g?xfT{=ek zj|^zVtn|5x(kNQGlv_HjGps7Lbe1>4O8i-QjwxFPz5#;11Lr9%RN_Lq*eCW-d*g1- zpAy?^+%srIFRwWxOsK8zmshy{igTQ8_N&`&wnu}u;EBEc1fKW5zFb38pVlF4Pv`#S zZfBIlTmI2iTe~NZ^J_=nIfMyssGY5ap7-*nW!{gSTd+#+ycP#}63={qVmCIA!}I=m z0dC6>BV8f$2l;Z-WjBL^12u$Yk{?6b{#ApVzjYriT+|Q8$b7ySxwBXQ1Hyg}zVvUs zx?eLIZFJp;&=p8h!}&T9p56<4xTQ1>pzpe0y!A;Md%v5#1Jq=hJeg((|!&QBVVu_5$z>6AN@2QOP|JN)NPMnmTp{471KQSwflbLm6hAo6ZdMCVWLL* z20gglIf}D$@Z6%!{S-@&t1fh82DsFIQx{T(n&=SfUU=mtn(5+RiT=WUP#o`qe|85S zbYb3GBh1*-5(Us;P?saxYni^L?t!}E+W$C?1asm>RL>D(IEddqw|IjIQNjDjj!wbG z*9WL#m=R#;wtw?cf3#ajVXG+_nU1;-_sAb^h~}QEZQ6N1+p|jFc3>p9S~0RaXem zjXgWi%bG-GHRI$xT=QMgjO0aG=52i)cB9Jv&1~XA<_u=?5IOZ26jkCi6QaX%{gNp+ z5W1mx;0AMum;EI1fy>%t@n-sVNV=)@aaT+<`wdqgzw#Pja`Wf&isHi0xST{iym%HF zU=F?+Zlsc2he>mMuG}ZD6vr2>vPV3oPIPV7a&4c6Dee)+(7dB<;P)}nUN+RJ(g+8@ zq$0(j!~$6{a;T|^iVrQu$~p?u=g3_EtTB+K5s#DM)I=#i)R1WKloa%)t){R-rmjZ! zbupu$xpXkA68zbJj)OXJDj{ z2Qm@%bJhzP`p$o-^*aF`e$Q=hOOdxdzpmWThcw7&U9$#zNaV^pX)=JSWz@BZ@SjF?6LuX2 zf03KdD`)`UB?MOyOKnZ}=#fI^KLR7ffljcvn^y8|_f#%U3xKhPdA?(H&wW_l+~R?= zR=QEEnW2aAE_!_=-)_y@LusHvW_*By#236nngmeTsG%Q2tg@O+sGGNGCJl!jOQ$O| zp~?s*84EZ@{^$GnMCb*M|I%&8Yql9)p=b>Q~e zp*%u$(B|yzKd(rEFd4{kj?Lp->nIpj)9%-m2zl!jMuAKN9*BdgYedR)jW9hUXPkSB ze&yzvqMpBdQZ>3p`o!Q9_ zYUWt0#5%=r39hI@hX$@dWX}qmMP2qiyA~!y!UtD?AW^7{7ztMDpAEYno$JSF&RqxV z$&Ek6kp(+uMp~jZ0Pt9Mg+camVc~Ga#5OnM#mXMr#0W>!Ujs%!D^zYES z=cU#)rys25sq7)aM6r8J*v$s_%u0$xe>(hGX8J3hZ}3@42AU0hf>R};a1SVuvp>ks zaSTCrY6UToRN1$_n5d7Y%9v_kB=ks9XN|I-cde=?BhXpgghcM7#U_5im(J*G#z)~m zw#ZYiOjImSRxG7p&#tLr#lwwxJA`aaMvDUtNFj_<1q-+5aT%tzg-v|x+29}NGMH`_ z%7QZeQJbl0hd_D+P*24e7#53Vh6X96CA(W%3Y+Y=2tal-Rf=Dh(q1C{Ye831`Tbl%kgZ^^M05z)nC6UzO=YrJ1{Pt*{}_ zJJ9;SrXJA)D-Jv^&*dnrYbo&3oTV5gPkGQgVNT$ZQdkvdlUEC)s=wjF94JUNexOxj z@5TB&nU9p=hL8^|)706~$yIOg`kxSYr$dboFS<+uNMe;=(`w|PGw4?6qIb$vhd^5J z6f)6XR1*pP18UthN#-Poxao@)aBIu#hly$#s^dzhc|rL3i~C{lBpTZu0fXp1TSsO4038ba1Ii3*c!RlfN31#XmHHcsD!<8;w}dt)*$kNkm80 z434+24$%`R-nqNv)oD5ESfwS*^}-u$>?sLRs+ZRDF73L?x1=v#KU3}^+S5vT6J){dg9Q;2)e$frw&xiG z>fQb>9gtN!^oCpyQZ=YZZO81d8Z%O1O+vMbcxeLHHNNJI;~vIbGzP4NR;(g! zeU-5?0@xU^mgFo+P8?AT^aG19T^L2eZa$H%AjQoYeL1WxYa1(@`H)BhQUYT&4mpl4 z0m1bO0LV!Yuh2=I@b>fR8Zo?FT3n2b%oZKZu(eC4-umOi2G)Dp%6rkr_Pc#EH(KFaa`f zRU$`-V9=y^w_p$#^|AdhUQ|N#CAIOgU3@g96BkLXWC+kXee8WbI^O(f^U#=(hbqfR z{deoI3c4ObtBns}fJV0F>3EBqNT*Jrm8Hl)Oo}>8Fg4C6WA7G|!fee%N0L1}oUF%y zdq6NcB=3}Azwc9o0LXL51Hv)*7X`1*eP_W%+$6r2p!jL`+al7jmVIf-v~z};KxN|0 z6!-c%lbd}}4YdqqbvB>X_)DB{wn(r-_Mn1#rG;wfCRyD!a3My1J6X#&wt zkWeE>dpK`vT~z6SjD5%{B!1s&)h?5@i*~a>!?WtDbz>CNqNx{a$++)c*lnObZXZWd zNnCAi5dI=6(z9e=VjaB?#}UNy_7cr)ZNz8a0eB;^C^B{?*x6tPuJ-7RYpO=5Pp`$kI9tZTcQ!wWO{wFW@ukAd#8%WKf~TA)%m+0 zTfLGO|2<~>Di*~ReKpdM3(@Zt(j%PskhRW=_q8GxBYeHe*#V`}N+>pXR}L`E8mERHy8fQfP>EbBl;T9$z|Gk&IO z=N4n+YwI^^7&RgBbH=LPvI$u^W17%iROROL<)uj!RRBH1bq)R~sbPa+B;9doS>H$bs&%vu*N?vG_ud<=#GAIhd%{mIuKa(` zUN0Vdx))TE*R{_bSNs=mUw$b(2r%h%trb27M|hr5a#T0X>_7IUYYPPq ze0o+lPhnOs9HfmhwAWFCb&2}S5;1je;fO>*Zu}v`eHu($h#iuTOo65 z-y#32BFQa|x2`3d?0aT{8mtj}H-;kxdP(%X`5ZhB(~yPg@mf_d$~$^5k^w2xwZ>>nc_DYGyq9CJVjAvccyP2`S#(jth>E z?Jg)dTTSY9&I<;ajVb087)hwl+%vv@cz!U!ez;d% zUeoFeCZ=fiq3_RZea}+8eKg`x7a@m6HJPZ}}-5**K88W7Z3+!vbz6 z--$$PilCv?!qyTs0WcJ*tJ5;w7Z^^S!80e)O7DJ`syHXYTXD1u3~0NM%do@XuE`pw zZJ}S~NFNYC!o5|8`8fL$(OR0l9i=p__V2c6Tl8kR2ewVJ;rxrelS2SCR0@a{)&Ov)1a9 zz8t)+yh^7{B}P*dX4P+wsI?#Xu6|GS=N9tNNE1#IT^#&ALdl1JlXy9@RT5Z?dF`QV zeRiCu3R;JW0oV7|Is)_`Cd-?h!dmW>&C7Yfp4xm*?Zm!*uloY8Fi_AQr!auKDuJZ< zWzx?+R&QpmNG3D@(vRgGASt&3ZW&<`PX&Y}Rr3{QY#}09%FHwaWJ{K0`{O9D>=TL_ zx2d`upj{!PZ?2*jD2=1Olh(&EcR<*mNINfJvQ%x5QDtmymF;@w4|qBk|L9M?XZ}a` zuD)kz7yh(!%(GIiQ|%rP?AN6x%NuCNxR9Tgl9EY_U$n z6JP}J`{S?6s7YVHREK_g^mZ8-dyGC=oworMamL-q)benp{Lx;L$mO>2tR1(bF!R5IeBk)7`G`>Dr~~xb&+Fe>bn|K z*V#{VFdDSt*<~Y&tY^uKh`P|T;|EhiIO4Uv5A7$MiMw7Vzn4pC0!(i!xoI0?^!~~1 zIIp`Z3BBwb;m;ULBYdoBdj`AE_6Lf)e9^IqTM3R{QU^@|lP zZHXGEngs#EWlOzMNVhO}YO8<_V!2Lj(2*8pc=3Jgk6=_ZZh(NETgHKRxm>Y$@SQ|K z@I&?+(bz1+J_rnXR#<=NM|y~CG5h%MFvXL-W^egszrG&4GTjryWf>vdO*RxCTQE&q z*vCaU+pESE_FpOTW|&ylt{p2%QBtWZt9)835Da2$F(uRdrP{<<6KavxEP|AcZ!1Qc zav{c(3WY;`cQp#3`>WAc?QUk`Gpi}Jte|csqiCB%b%tfJ3rE!;DC6~RXKj#WF2Xqi z2@@0VB(7rE0UOSWEh#VPS_Vxm!HJHIN!)!1G?30av9pS_~w&6NhVLcYzDB{AVK8qe!?Z|Je%9tQ2-v6Wu?$eNVoA3f8# zzw2Fw%AMfgRxV0ubx{Z(hn&XzB+l1j%vFOa)_p_02?hc2??7AQH%a;E^0QfXnLys@ zhS7d>?^r6$X50svLsorHxLuE4&@y2?zat+urT$%qYMGxh;U6*8}(3C2%mT-RQ^r}24STI;rbS!CSecsT~G&-v~oU+nqpXx}?_ zLZy4NyFjmtjO)p-!*l0_uB(3^Sc)e~<|6h2YDc$GT2%IObXAXvF~aQ#3~Vq{CdKD4 zmOt&~3L41GzI&fUpQIi&#anIgT!qYU4CiK12951gv|e=yblk4Pn~KB6IfgAi61$Z?L_! z_(xv1B;&T*rWC$2tRk8bfT8;WY-eh)@O)Sc38e~PQ$|K^Cl#Ap2i~^Vxix+(ot_8xlvk=4Ly#Nw(jEvpZ9R zwQ?hy4M$L36x8kF?XD*Cb)zgAoV(Qkr=M4_KXVgTu6ARhQ?RG= za{I^S_O8$)IX}Z>=Ur+pOQqeP6J(IyrucQ|UZ+-QQm>>@C=SU1$sky{4y0 zp8SbVuyrZ(0-Pegyt8Ax;`P(^G>*tRWfU4#Nj0-JIl7>Q@(K@Zw#-AIs-KONx0aEP zMVxkj?Hj_##NWlyj_e;aI&oG0B6|CTdE<-2nK>_e zx4A*F3faUx;uvUl*1$V?{?-@^`-cEw*HtbvOO~TaS9A zzeDLK=QJ2T-k>BLjA?W$LQg=67mI7_e*LC$#*ma{v|*7=&c?EF5~7!w@YecPvE{yc zqz-TYLpYNU;M*cr( zkM_4JWq{)WiDDNGLq9+Y0U#<6p+6!VIjAGgh&wh{CWyQJWwASFt^4#D5f&{3I6hHf z`r0^<+lPQbOZ(tDr;%pEG)a$pZ1T5`KNWAERTQbZLvbzrgAC?JVcibDK|AaoIebrT zpqB$MigdYKpamHe9dP7VF?+`A9f{;uTjg7^QqHZRn zEqoqL7}8*H4zQG|Z7swI4`f`9tPPM+>Rr z-Jog@boIgopldGMt8GhzQOxpQWLm2;aqt-_`4wei(3*(xu;_Z=_*o4v`nM9y09sn~~_hChW&Wb}R$&x9F$n zugk`gw=vX-RL1h}MlGxZ7Y$;JIi2#S@(jtp7SWlTkSMKFlMc}-20F61sM3%Nfkav^ zXsQ3a9To`{=^SDW7X2zuk{^NRMX6A!^9JgDqQwnNd4P3QFD3h#%X?xK=)7x{xA7p2bm6@eY?_S{%CD%pj+je>3r?m5y zr1=NQY{wNM$jsZX^f?Ps3$AJB)R~xqJ6oFD-rs$|JGdfUnKQ-e8JMk&{#_sPnXSlq z_P#&}X=xDrVGigCsTns+$&(qx?#?!H`DgAsGnt_*ftYu z20AlfmcywDbm7ZP^F*Sf=xnLom1f5&Db7esG`OJ<5F zwy*}n4YRy~bu-iJsrWJ{4r-kDE+?S;EM)0x2CCISA7q*}1Vcf{XR7Ld^o%53{TNZLd9aYCX^^GW8OA;vsIN zn2<>cqQ<+cZlHksvE>jS+`CZD5uKN3FeGPVbmK2Mc?M&g10B%FkTWmHAwb3 zNF=$|8OnG4xGgHhl2oIg|AAU2DqkgIGUWETdF&hZpwj(lowX--t`7>B`&CkUi+u1} zKz!@XAnCmV`e7}UU%)zpIaQcV9+xHTr(0eO>|3?`hrxLXZ$X&Z^w-0G$sMl4WBfzt zJ_=DzEJsR`^t_YH+j9RPi-RFkgaCFQjBw6pCN6p)Ba9@yRiI(?cG)MyF}y9I;o96F zmnzH{d*xF4E?rEO{P1JU{rBdHsxZvOc3L~Sj*ABmq)?hIR+sZuT`);YwI5Z}vHxCR zi@xA5AZj1_C2C>&Z&|t^B^OcdT)r3qK~RYaW_`NHO=*}|yI+}_9<`aq# zGzriaietc(&Jb=OFwM|5f?_;iJkWss*{*r4IG44%R-b{(oh!X3@|GeWmnx17I;B<< zNRu}d$}gNqsEGTJG18A&1TekG2`FtMST$&PT3LmtjrC{x%^Mf=X@T`g5UM4y#$(FS zNnVgMviIrN?q{b2-sr>e0=2s=HK$t-V>v2ESbYOKqU33oy4j8$v)>c4-dTL*`?;@S%A)`(;ZmMj;2wADzosK8*9!>+I)G2aTNB7 z9`W6&t#SDHQFXT1B)1l!t3~B+SB8qM6?Mk-NNF>BkIKj$4?L8z!>|2g+|EgtmF%4sUIB`J)}n>FLy29#>a-%zqHJI5Tx+u6#Z{BihVaD$JOkG)58IJ+dSy6!ke&#V=ouJ5csGuDsD94 zZy}G>fAqif)@=N~u$KN$Hy8hn9QS_T*i2vYVX8!|XNTx5PWLAj5dLAqq=jFs-tUp; z_b<1xKc#UFy7a~^sln)Vk;I=Q_u!uaQMh@z4B~;9-&tY?=JQA3^1OSc2nsdhCao`X zBzvE*$Gzf4)pZm{GaOn5`(#BXiiJT$glzMFhR8m;<*U1`50#}GgMKbqPHYSz2>O^%$7mb%*6w)Q4 zW$ngK*1;p%&F)8yI}dba$<#d#c>4UEe)><4^!o=;hjICl+|Z{vs(e-1YL&6-*|N=l z24AzqG4BU@Sh(e!UC|1w`?d0{Jzz!3iA!yDdGz8U^X;iMvC&zM|8Kpa#Mn`EA7msj z_teUCu}!rnXXz+SU44my`VoBvThe?JU{+OOjK;JgoLD2KYc#^82qbGbmP{`Z!Q{UYYcajZXa@95z;Cj=Xqy({#=o_U20*L<8#$QP$w&F z6tDQbfhXE$7;KbpIJwnYV3))a%wohcZp?#u?jh7WT8y)(M(G!AJ9@1-1 zk8iVBk(Xs?!?@(t?`902$jf!grzPF5Q3_0i7I0;t6;{!wZ+mp7@!!`ci)m;L!XRJ- zlkxx>O5lxF5FDkss@#_bZ3`p9oHIh$GR7Yua;u#M^Mo4TqkUIe&Sm)!05?3_@tIn6 zQ)b@W&JC{FaX4Zh#x&|6YiDs&}M;M&~z8`aH@2QI?GYa zIridvGJ~9s&j;~9+o?BhKW>!T#Sxy>#Gn&>deV{yP8;it9-O7rMqUDfdVt7}W(%*f zUe{e8Ty12lJJGr^OREbk8eblRha-qF7(L{R(c zUnn%h!Znsmw^0^Z)hVpg;lOqijTeU8is(aE*7_E0pVdC`;X!%iJ%7;dn|;@9&ph+` zC2zCRH9Jbe?VkblmdPxgv4viQv@~YqDN=7;FCwlsJH1Vo18p5!zCTHG5zUNejjS({ zxPaa+%lSqS`*`8|UY$KtclhpbpAud(?JJ|n!Oxq|or52g@1aYe^(BEj>^6tngi7A2 z5EqP4frjt5gIBw9Xmd?2_9NS?eTK#T_6f!kX^Uv$m0BPFrC33Cq&Yil{35xRzU@-R zn0#52cY(Wq^>+K!`5KRZzv_9m0iI22N92)|8o+4Jp-JQxO*QuNzx3Uial9Az-BQ1Z zF?iz%FTB>W^Qt6Uh%o0 zfekQ!|5xtZ9y$@4|0`QH;!<1wE7F5LMlD6Z&!gA#zmym3>k7q#$bO>|+JyW8j}2<) zz{rWQH++?5k9p5sR|y9fO#&)Ro;l9yV%SITcnD>+$v8adagU_<$Oajt22p`)U6&4M zIE-)i7-j5FpFT)S+lbH}#Cmb((dO&A(V4i<9FeJ)Qs*-6-xqy)F!{JO@$uN2apO>R z9U94OvvTTinM*E9OZR;%mgw##lasHT1rou%ap!tPJ8DI<@vC-Kq_QJ0aYs0V53TLN z1s}gy)7TkbbGFVZC)nqt+w!@q<5IX%ZJhY{<5In$7A)P6gM*mSn3XfK{ZUq@6K=VK z3!KU0O+Zv6Gj~)3bcpE+i(!)@IMMn*B~|4o<^x2oXex-ro!_H!9+90wt-X9}8A+sd z@;Oa5rwSWu1aYyF#xjG+(sh!~*cRPLz|<8*9Mjx&)klDtR5$sO@YvqSNx`%^$gtCb zXJ~heMs)o;=6QdufK*dpNMg4Yav0WfF-gw0Q7L=KIBOo%!0cVo>@=|NX-ql{xa5#GPTKwy#)XxM;%XJ#(iS%qbx?k@X zUUJG`l66BV4R@_OYc(^P+5#Z-`S~6X6w6`V&6u0Aq%B+w?JXniY1u zM-PApL}#xIXTIr0mp-w%r?yx@EoL#RFPUpyyZTURlI!gfrdhtu0@^#UAP&4g$t^tB zt*7$!@niX-gy34ajNb-rk3*&3jo1vbQzD(HOSe@)k*kE%!a>yegc{nK_v_b}*|kT~ zHs5D|X$J)U+CsGK-Nr(3kZO|qRHf=g~o@GY@Ky%4nJP4gRvvODnwhTCXH|zqc zy!Yf#Ady)Ne;ruiKla}_#S8cs)yuG9o z4sBC96nK@iwoKQUrhZM<=L+`Sp7Z^<=5>W3H*>RC-OMKe_+WW`8sV^fhFm@Lva&Vr z#F>?soor`Y9F7LE**Lu6Y4$n#a*K*~Vqw(H-H;~V0O8!jmv4T(iiwo(a`tVO@_6Hh z7cz29qs3BT|JbVYu=E0@~M4|q5`<^nClGHz>>SI2B z9?>skVeu^^e%HjRUuq45Ir)SVFd|R7F~7|FF%oSQ$rOE)%KiB169rm}$If`?V^V>K zs>3fWQVtU!f7ubX;!al4Hc097Hm7H1Pp;V=HKkm~r8Hxnn$D;pO1s|2U_!aS9$Z`Z zC8O|j2s^V@tpJ&WR?o(XfW^;QD=TN`5)ff7X;aRlJlHOzg+oKM}RNVR3kUD50(Z9i=B8|^}LX-ckfc13Wt zZL+%(d!G#(#xb$Io)qzjbxHUuaQQowYVPH$)a3+XYGqKC?vCcy%JZjyYsfTh zJ{_LN1-%}^0&-M)$e}tAiOxZ~2Nd3#>=RGXYubHGVqKQXD(QKdb_|_d{c$?EIp%s8 z{y!J#*iIvTj|EXbN7yt3^#isGcD}NyP3$&U<*tp4^G)-WjL4cu%qWQn{*19^$i{n} zXYblH#RASa#~Dtab&6S8@=Pbu0uZfcbSw0?Cto|@5k0`>ZA~~{@=0MM6j`>5<}>y_ z-gux)y&mno*^ALY6t9CxYOjY&i#E>-*42*c(77?2^=>dC%wf$+vmhMlG)YD9rH1cK z)fwvfmi#FU2RmI~^}$(DjQY$H8UMlfFkerv+r=#82$m4IRqlGeapO6E_E27f)|#$T z-oY|gQJ`U~YHw2+sV-N!fdaXkeUNQ)xA8yG=-(Mp&Ct9#o13|QKkC0Zx_yG|xZJ$f zBi?jp|2&#hIgTGy_?^5`CPL6)# zq>lFf@{g+5&NAXEZ+id>t!(|F>XCXR3I(BVBAZCG`IiUt@vCqY_+2PVNb6T(J-;6O zGlS;;U=df|AlvEKlhBuBv~a>_R=YSEc?`Z0k%)T(jipR(!=W`G_P5;HYJ69f2opo2C^A9=SRJ_~mq8L$k>MExBCZvtEmkdw2D&z7#tezU5-X(5nKr_C4w&EdR5a#6KoJOsJ z9>(hJ&>1Eoz=(LW@w2S1u2pJl+sduc5unav^KUePl1=|?mGk&Jh}#)FwU5Ztc002A zDroaCk-JLYYJId4uCYnG&1R_06!!TEQ8DudjF;-&BE>4(3}y|1I3astJjv<~o@?c6 zcnY4|hgo@Bl^gBx=RVYf8jvHV>GB4^kI~57LnH4ohV1R2K@~od{7kiRu4z)6W0hS% zE}^wL6J8Tc90e23Kwc!=1t8U$8cKe*QmmeT0pn5s6lD8h56XY~7t6{3#EF6XEHL)qhN&RYe6$kJek zL-L150@vGMa-B}!5P_F2@%vRY0r2y4)P-9@D-~p=z>M6HZVKeGpKb@W5OF6GQ(VnF z#T96=|8?eDA1QBRYkao;OAFL{G4EVvAA5qD<9w2v1knjI|CQsV++M5H- z`tCOV&+YkcjITgZUgrLwOVMIi>{S{O<;y?qn-Ka09}&4$g!Zr3^h1P&NSBw+@)@bL zFRa$;3Y8^CH`j{3-bk`wR(O^NM<k? zc%{!x5X{})U0Ny|?{l)+;^$Q#G+{^RzxuT$Q?=3J)C#JV9IR#^-&Mp9(pN%IM7eOlzMAN z%*mS)m#sGSP}aT>#%<4p=NzW-4Q}NdUv68QUMaGpal#O3>njbm_mSirgIp>Cm(M?0 zqTaVSm+_MCq&kUN+>-p3`ph2DK@S###VRe z+MdDtkzn>T0U6W5?{aa{a3XjZMjI1d)8~_;hc=gZx$gtvF?mJkkHR#NMO7u3Z=FtCp@Hd!fJ3h3tca zO?`W-s@(|VB~knh-~CkK_)0n8h}UMKG1=qgHa&~kF4P4DZlDA0cPIS+;2+g%$%13G z_{1xVY~Me~Wn?kNas17$T)CMsKn(;c)T$bFDHO|o3+kb{MJozGcDC-X_aiHHAo^|` z8}TDIla6?BNtS8EXD3>$?;vEq2JM!*o1rZ6ef^?$1t__?F)MEYqF7}fxc;jUc#Lp~ z&x7O8SSGXa4d(o04uA5HWhI5Bwu&{qg-tQ34C!4q08R4QceA09zefHDsJH#)RZfbn zu`QEjHlZr#^j#%ZqqM~YdA^Of@-fXauU6J3E8n?L*ykHMqCKFxDu@si=-ODtTGA$6 z?pWxXT_M>jqZ>EUHu<&fyv`>ed%bQ>UrcqwcEKRL4`tB_hfFKhOr(*vc8VoLb+BuSNgMc7QlCFok7u{wcg)) z?S-hBXV+gh@*BR9u7qTb8o)AMJeynV!bj~`A2qiW2b?X2$LgN#C{J$_uyV|j-T*O2 zFuXJDP^0}M98X#1e_b?pm2H0=^o~=wG32ekX#4LbwD;Wx__YDalgnN^)5S^ z!;-xbV2a@*(OBs>@ra{Zl)p=X-S6^k&$*-f0+L0+f}?p>usu*wG+r6Aa+P>u`B?tH zJ3fQqA44ZiDyD=DdAqMlGexg({UZ$EIQ%St$_)U~cGPK0@&wxBN)ZddB6D`{x2Ig? zT1i6|f?PK%klMR}PwJvs>dXYHKj9Z_D4DMh#;8HtcdT_%g&(_jww*Wq{y&V7{H(ec6ese6jclxPNBzZ z8?-xlF)3N#9R~n3OU~L~S0Z2Hb7$NR-|Mo_jvbldyT^cJdo^Np5oWMW6f&$R-{C(13hb1P$fTe33o zn{Z4t*ls|1_hE@*RmZkHu%U2-_xielpPoF3>5-2*KmSxQTcwO}waCp@Bu>5jz~qA* z#>pXf{hUrY+wGULKZs|4Sf`}qbd7a6ZPQyP^vCNY{ZKcLyc$a@h7Oa!Nx4} zqMD>wdI_&?ZD67*RUArwUl;Tj_iUuq05{kRK1q<%(&=xE1?(Xhh zEI7qO@!}BNoj=d}{W-`%lC#Xc_v|&Z))jzCULpa^k=4BFy->=|N39c5!sGAgf!h_} zc)F4S0PBZt%f)Y4h}$KI9Eq8juheIpuxPra0OzNK-)eTRdzAuDHA_@v1_9R+A((`} z8%HZ5RhR=KPz`-cc>=>|DZS5<>m=Y%PlAy<6Q{Usmsa=Txa7ui3X11LcGJIh{%s1r@S2>>E3L!|0b>5Mw2vub+WD*)ORq8tY}xPZH>?rz9%&aO8f!$ zDARALCKuVnV#yP;uwpEiG^gf`>Q|v>nwo$AWR-(_opO($^ohePfd6%)UY2S%;f?NJ zZoPZk`jKw{FVj?KB6Vtgu{KTQnjY@HDeE??h+~63*Um`ep5VYPhLd#}Cm6rutvhm- z7%0UFw{5hxlJ{?yDf@v@#@{!3WmXwB>c>qwU45Mm9J_9r`9qKPnH;OA!~U;rahewu z&*;}>6ujjM9Y`=@SD6_pO|pE+IJb2TMjDWs`Q~-Dyl>R7==slVWA7#Sz>{D^yX6J{ z)#M}YReo$E!aSz^waX*fD!E^6@avO+FvO$#6=$WhC2;Z!&sHYLh1409p!Rzokr;p| zC;pQLt=pI9KpEuaM}wz*xRJ9<_?``()dU<^fA0P2>sS->h>$C_Q#vi}eQ_CoRSrI` zJ41ImcKjvW-5eqOG_CM7jj=wYR1F$bY>A+l4ViPLIy9|HpZ!=Gr;OO1`JmoWtE!Wq zsAAu~>J&|^r+0TgpK*7BzM&0yG{}W%UdkgQ zjHpG6!*K4ux=UB!HvrWpX4BHgDm-Ne>QX32A_tJ)#`GiMg6lwi19yih#&Yj9XKg$SbxN_a@F5#$WVGAVse9U6&m zWB2t+ry-Vzx%(*J;7G?Jufc74dDYJOXv7Z|-cH3dS}(FHZzHUE`>1S?-wro#l2%Dq zP0m{LcQJH?*|$Xb+_LMXwR9w8{Bz^CtFJsEUNCm{wkp9i%4yeGFwPKPJn0J36z4|N z)+ID`Bh_A=>Z%m9FLfI~MVa1(qcVg(2&v7z3>psnpJuDqcpvk+)q1tu6Q%T06cBbB zz^U{3s!;~9sOa_Y>nN%jQBxsKS@l;CIWy+?cL`TXoMl1d5{}=`fk1m(^3DF`+w(1( z+p{$(54%0hs>0F|#y~Cc?4wsf^l%@x24BdAKQ6fn9dz~yHfmn$BSl)qb-eN!h zDb~a=Qv?KXHqE=S7ax>Rj+Fla?nlS7jf2g;t&h#}?4u7`wD9!#jrzKjL@;`|pCu^K zohIqsD6}h`tn^PB4}r`k=rc4&@561ZgrYvg|8=W~(h-qTYI=*gGjYi_f1mh5KXlB- zHXzaxll9E}SQfK-;`o;8W*yTfQHogmh}E};qwo3{9oX6wNDPO-1;qFbxw|NvcfGYO z=@)0C+piwGW<7Il{GA^Fxpfi~PjO3^$0!u`-%suMzfEPHq_rpVXP8s-8NvRJW+Jzu zP!n(i0b<%&A0sO9cx?LuP?C5g4<2V_Yf3Q~7ow~}H5>uXTmZCn{=%moRG9)f8%KZP z>L$hGE%5SooZ3tc)4f%gEF6Wep|fx*onC>N^X+h6l7<`sjM!Qm@*;xM;xG^Af_=!* zm#b^3(fHUq-Zv7&ON4PM4^#K4QpZ7=XguQ5Q0!J^S^*B%PtE3z<1^V_Q)37aGe+0sxfOs?z7`UjbR zd$O8tV!gY$%INrjKYPp{%`;~CptKWFNXjIC0JbY*=z zLxp+HqP57)dfiJL6TO!t^*;M4_l#}K?I1<6COpgD{wF--&v44F$@LUf$9}joy*tz$ z$NI7(LxtD`ULyMZ<8)P1as5kxt7yQKaXHw zFU5wY7H9BMDzor8FF!Y?)0S$fHd>q6RyV?Td-x}FbcWIz%CmsYCnu8Dk5Tc_l}psOAH=&uQCmQN>^5 z&cwz7R5)woUvHGQ425MK3;+J#8K4(37t7kGw>-26%7%Ptl75MMERlMNSeh-!e`Zm8 zjDcQT+O-V1a9Fm&^j&F(^AkzFOxWlDU4rbI<6Hbma=ceXV64zBYYZ-&Lkr>GH49h{ zY;4NN)LHu-OZz4r(~8R=8V?|D_prQwlU&=;6{*Klakt+ONBu$v#Bj)jT5bB@wEaM$ z=Aw4Vjs*wo0J1TruE_p=qGo$I&#MGn<8yLayl-Q+AuZX? z9ifrRBEK@n!oE228(gP5MxpAr5E!xPc@_6diiVNb!|z7ISxajKrb_IUsxMoMW9HtU z`GkkAWp7`q2E0bA5o_f|u2D<2*2n^tF6~g;VI)=d!=`#?bTMGWVwwCLy`xJ(w=;=2 z{C0iQ#;fT|hu1oaB-dXD{(bV!x@`6FK-L0EJ3hK2`}nA#hO*Cnt)uiCk9DR#67K4& ze3_H@q$(knr4)XU%s=jfp<{-04SA~xmEsLx>o03itE|M}GcM`u9rl@1E^!}IzI}vr zh%a5V0 zZVte)ybb-It)X^mOVGgxxN z66-?vcPhbVmOPGxu&Xens(7`WQu}L|e@p1{t%rQK-zXOt{KQ@U%4OJ{2~d`-+>%g{nILsz!N{{eN6g);dB z1~VL*>*~r#Ia^|B4SqB*oeYmYB)sz#;;xcMz7SxKsMU0Qz#v>dix zh(rr`I4g3~X8Kx6ssc=_OgNnIq%YcxBQ6m+rqYfw)eDQz0UXPvi5|R!%l!`zA5%b8 z8&^6;ZhpT<2EHF3HgtlP=K(EdtS(*#+V=!-&4_Vwd zr&><8c(rc$i`~LIg))#5uI<@$1!dcJ7718RGt2=&+-%B`4-wJFr~(BNuX{8suw(46 zt$9(Plopi`evSp5bP|Uer04RH+I|1QdQuflj)f7&bmyPR=ar`z)=5REtwM=oNTqYl z)1U*BXZ7goi86SRTVtqHlUjvIx&j* zE>T96{2{-NOI}wa0+yF`rZ^z8UNQ3=XZG<`cJ?Zw? z7PJhZsGu38m#z3$X}l;;_5qDCWEFOB+BVbQA>E&FYmB-=I6@tCX)sRsfigjE)zh9|~(t3db(k4F=~&K~l80zikb zlNLt2yt-WJ_kMMH7m)N%)f~#~T z#LMNrz;zY4q5b86jo?rmg()Yw*?;D$7UbJrfSXmqp+7hjk^g)m=;U3t^hefz)Ld53 zN53U3kgSZbB-9i5ErYFiPDHgm%GnF$`hi(7Yw~`$*?yJG)FWUZ)a&_TozheRS)Ca)a`ug! z8oDi&K*|HpAC^{Eya^LhBys;wbG?Tf_4s%O%Q#FqFq35c@`o-AL?QLR)qX~loGT1tb*&c*c1+Jm$7MW#ZGg79Cs`oHwO9Ket&*0C!|2?X8?Gne=BR`7WpEj zr!rI)(H5>kv{m)O^7CEKMoz*LgwPtH%>M%S+w#V6R`Z2{&3bpEQdJ z(;f*E+S*h`L+J?)#?8o=BIR%2Vx5Y$v3JsR;>#W=sKfNMb@?`gSO<%=bhX#tjLst{ z1|elDnYm)zqnS-@cd^b1Wn6U<9f}9nogBn^Kj*w!yejp+;VdbInKMLDYY{0`yJp2$ zIUm#|S;8L!lF#R7#&e$_0}Q#EUxVugAQA^OG**%Mj9F&FtihbgtgB`uO)v7r-wu}P zf_d9Jq-n{OcI!dQRb1^%|JHM;J_DfIo_05ZEAOB|mF^A?F zU!kr|Gp7*}sn4zNz zLMBy7MxZXT1?Adt|@@XIg`i}|dRoHNV(SAxFdhdB(mpy=lGfa>@n ziZfP`>1ZA*tyWcP>faaHWoyd0aDcnx!SeE>sTtlBWLtKm#Y~=#i;H z5L75(;5p6xY$ZJTW|PKcL8QM^Jw)4j>|x)5_AkPoOnb*JSVrKFXXqR-&ZoV}zrdV zY}WJ0OULhzHLb}fCTD6dzTKPZv~d8>NzfD4wcL`Fjr}x6=W;tWNXXv7jqx`(fPL5R z|L7!uP54yw$z#ON);+@3DAYD7#04u~ik4FO=Vh6@fXfZ1n;QR7xNhp&mj)qad3L$A z-F$tcOPCYQn$h>w1u`;I3S1+FCCUMxexwo&om+#EFuG(~P?Z|Z?gdywy&&r7pi zgU)J-o!BD9Qtk8>dfue+6|}BVN29uYFk^>~CgB0ge2ZuMRR}?HgHGAIPCRq%+46oo z$QJiQ7dQGX@nV-@?~P_i)+6DKht0l6$}cmLBd*#Wwca%l+*XEMz*Z7?gp&5s$vodb z@)edgedLcxtrKgw-mONC)85mF;MlQqtJRe6UVc1|KME^s4pPpQ2oU+;S9eu0ORwp_ z#e@1mh>%DH5S74A;qkVJ0Kh{jrpU8LQ0mZek6vcn8PRUi8wbSl)u{82A3e69eoT}=RtHahy`sW&!RCXdki`Fc>t&&xs8#E z+h8X>IOzmd*kn`1jZ&X3#Hv!Ph#YJZxe8WTfSDFs9@;%3+*sc-9#l0)Xf6JRcC)uPS0lGI*kn z)bZ#__ab`N$m}rv0>6C%3Dcpb-BM3{f1@PWwRy$U&BYU0H^d&$>t~qjT`|VSNHc|m zf2X;;Uv-zO;d6eMkE_n$fP?W<>PcdinGiQ&l=cEruNvN1I6K2f2ihs{XMH{q&4WQg9oYcqt0^iiCESNRy z?KMW}ctmTa>RnjC^yy&7hP$OXMh$4G9!D_@*3TOYc@^CwulP&44FOQy7praP5#4>@ zgD+*F;LqD!lR3K8oOW=6KF;|2oqDiQPmE+Iv+V5!C|#;mc;Gi}`Q*NIz`c4e!1E!O zx0njlkI-&#L7c09kh``b=F=A16vei%psTIdHe7#HbBuMeM!1;(LpVCtqU-0U^`>#( zR9zM-<8O+4&l19&aOUIT|A7ljku~1|Y@dE|_OK2%cx-(lf)jF)<>Zj9o9e2{nUWHr zZ52to;du|?Zk;}Li}IT~h4{u2S^JMY_Zhn3Dj^PcG~rj#VbIa2Kc* zXvUT1AAbUuZhVPem3l2l0ojmN7e8!^l#9~fz%Z#LPQ>*6Gy4%?&zF8%34`I&x)c1i z>Z}e$`EAdCewckybRjWAIr4`w5+^abCoVXQI@^M`4Gv6asfT{*-lOyQ|0T&jR}P#@ zrXM+Nm=&=O3r}H0_+5g($Q|it15j!n5ArR0RuXo6Ry+@nwVrAFEv7po$!u5EvGQt{ z3beSJM606DTf;#$K_K$0lE^XEw9)yRn<1DBI*|BRnX{k94^1H}x3oyJozXWFy9CG0 zHNNH0>mSxB)`)eVe6PLBybwm z(oOX3xKVew|4R=hfZ4VnGIF=RDiReZ39C4PtUuIth^+pC%=#L>BipXMOt3L`z&4qU zFq!$)*u~{%QW9Hw)Z21gKe?LFO3p7=Ut1{J##*;KVj!oVCmyUr(!hxpC-`&kLIc*N zeUE&czBnvUfn~^--cZZ&yJ9R3>7p%)bS;Qgz_pXB808Ud+BkjPYdTP6|I#>+*8F5M zFXFeas5I?Wk1~~Rq+uVmA>6|V`6q%Pu#9WF%7{Z4hmGv+(O2EZR}*nU-%K*>1v}^a+)OL3tQHxXclZJ(!zOdz;k|X_RZ`D6 z52~(#*3=fwbuAnsr(yGUj?}4Wh0>R+O>C65y_i`4p2_l)go-f32-mc zYgR;zKsZ{Pjzyw`uJcnD7h}r6unITj1a%8wcy;({*B!nnVHT;?!Ju)m?=O6L@c~2!6+>;J#G(_r(aSko`+z@ z9poZ!|8CV^NN7h2%cJO~6=tc=&QQ!0273FEk5w%5`c#KP*WN5FI0NU#2slM)5!7TV zvKrGTwHyv=k$eckdHv4s%+6FzbmeY=IYdanL zO{*c`U|i_4YmLkYG3P7+Gq}g0s&W<<^MJles$SlqtxIOKHTT|vrBHj7Aa6~O72#k0 zTU&0nyh@sjmU)xyiH5d^BL6;ae&3|v9)@y3+Xi>9tZK@f%5(t&?rB(}Q|+IdBl+5n z1XBl(pc9J4HTLC+W=pr#pxg>P?V7k2eN&QFM!MV9XS(Vjbws6$=EY|~L6UdO#V2!; zCYoPMUhV@YnUrv)&RT;rgT1(DpCoz;rocv$%sT0I4CdT=X8reGzKcm^Sf7{uAIhfg z>p8#9x{PI2t2((FUe|-(sQYn-TT=N+2|P|+VYh6{QCO;kL!v~l&yk7BI-y9zqcdhW zD=9Tgy?RrSL7xNE5r3lPmvi==4avQyy7G8yybTNF_4VKLC@d-RBTuyVx-{sMqQ7E$ z_2Db>THBQmnFjpXmSr@&eXH>?=LvB4lJj~=p+1GL@H+Rpy^ai=&R{E<>qTHtOTTwOFM1TM6x|M(!e9$6UJ^$t2X zZp=Kg2>IqJ%<|m01I&nQ;PLxm;`9F_>vT%5ZhFoFe7+4zdRz9fd8YzzoM0+#zA9H& zlA*l6$x1>8g+ZGIy$L4|rdO^@q-B<`WAiVA-lF~FWeA&M4SQ}ww{k)Omt&ZCS4 zu}=oOe?^mz3l{c`z07_^aqulDMb);mi8t`E2ZBr_g__*LUDM<7cMLe^KBOYY`%YlW zK+%lT9a||zQROUW4d8~X3mKfP|8_`20t2zpZ%cR=Gd9kQ!cUBm1G7O~3U+Rro|zPX zaGDdUYP&CRKc0KvacSm|7V%=u=2Z11h(tpbs@`TqR_&6Ns==1nEHw9Ij>g1(%CcD0N?@GdQg9i+6zY`-S#A~A3Q^~n2D|$@Z zdpI7B4|5Ci`7m4X>RVi68N3!}r}8@BENwuqj^zd!!~Rfqm4>uS4@%<1guayZJiKn} z_z^dS#*m&sTEF4B`fXUvTr0YybYs@aL2Mh&`wC)WTj?a0#-1s6u2%3`l&4&?rUSiS z>FBw(`9MwtIZuYzq{`T*M(${T&6(S@cxv;W71-2dddGK&{<_rO zH8uYue5%A!#n~n&uXI18E{7w641?1`0w_%*i$>;}hwk6kDaZM1}V^WRqsCn^awtwD!_<$lv)x;M--I zaa?R^+^mx}`)(<<4PDX8ExLF61)l{3kReO}Due0^-Lj-fG`IM9@&~W{-|4!Gh13MP zva>)Oj9jSDSQ4=O8lC9apfZPOvyYK}Vd00YStL^e8+^p07z;PpV}rTHQu+H|e2bD= zl;(YecGC?>%E#5rS|#JkQ)>;pK!cw8y`JKzjQeE2yGNRPctlGC>TqrSOjzYvNe$Bm#Zo? zcqhn;o`I|Cq{4VgFW(kUUm`bpd`YY?B0z;-O(p#`sCCjz&f2%xwNyJlf|Pppo^=UC zeJQo2Z*gkEx~b?`1InR^*Pq-b)oFm7>J574M6vPrAa&CrQ>!UZtDAMIG{vxou z4>YuJscMCk1+(L|NIRiAk)2G_Ba+dbVVY!t?r{pX;=KgOG}iv7hx}B`cimckU35Tt zjRdy%o2^;Mk;0d_jEMG^?W02zV1K3VxhcDAA zvB-KYR)Yc72UuPCYDAZB+XE{FCA-koD`@7*=|>64Pmeo{WTAmw{n_>R17BYtA%IhS zV69$zAO8+m*rc-CXSUB%y&=gUPy{(4%smy2mcm>SyDQ!%SY0p?!!1m3Npo|8e4$Ae z9_mOh>6JsdGfd}^P9si;Y|w?x0J6U_Mtdi>R2cSD0DJ0E0JVKsb*S!)*MbNW@=8h1 zVm(?0$*GRL)uiLNZCR3aC3E-MUhug2FCJJsIoW>N|1;8PI z2c2Ko$q|&l&rjd@((}p+&%a47^?l$}eBJ3G5oKX^>wYxgT=PQeB7fx__Bky+o?sZQay3p#_5-N2#u5?@-9P@%TMyp_vdEhe2srlOgz}2AncPH7TEv<~T(*3J z1ePGB3bTdJ2&VP+S^qou*Ca&9w|jNv{X!>n;4TFhDOSi3Xuovu6k%L9i zBws#NG9(aF7TDlmt^d^sp_g9_u|i95!rf8{nN}9)O`anEtu>E^oe#N5o<2^VCZ{Ec z`hjIe7)?8Tuv8&#&U>j9s+w*4bHuaCdweF3@O{QLJzU`#-3cSqSgt~iLR2n`Q7%J^ zOGbL1Ro>`e{cEwJ45U#^_h)Yhj zk`$eh@Yt0-=m}4NX*Z#cp81Zk;Ff7_JMIQFw?sMrM4n_EC+a)pvD?&6aw05iZ$u@L zi~&Ax-+OvD=u6SJ;~m?B!$CUoTI>72Iq-+BVRi4lnrFQRCve;*!edw%N+TS*O(?6a zY-SO-k5fW7kwCaniI<%%Z}(r+NWYcHLF)9;CH8AXQI9+_w{;l=A9oQ=L9=>5iEhfp%=8UkKZ#=N65hYY*bFB{XQV9304>>=>Jvy=7 zghV0Quf4N}FCF*(&~)R{E)S3IR?(V)#Q`ZWQ7S@06{PO~7wKSBBCMB*X4M&EE&)2| z&9vn;ynX9!yEL=4Rh-g2DbOUO%!-UtM0U9@FV2YEYz*%D-4Fz2K%S?d02d|@gKPaU zep&{ncJ+<8E1ESX)K!~QYsOh|{k6NMd5o^)bo@6( zG}HE^YpC{x{q zO-&UO>84B5^3&HBIdoNRaSha0wM?Vm;r&gRm4rLbp^H8T6m@m29f9#Qd26ZNMjeA{ z&pvlOv8X*`j;MoFRrFRdYXmLBg4VJ{sx&cVxESH5R|)$?*=o9bSk7TVr`jlEe?}3* zYLwR+?M?*z<|$pYGpdb`<{qS3oJOHk<3FmLW}KOV&+VuzfCGU&+V!nSTWI`h7}<>< zHcFyi8ga8G<^rcZ@ztdD=vF!`C|s}dKg`NQ+Su-4Zf5K$+OwZvw&z6q*IRfGU3lmi z>8(8)kg5!|BU?c8k^}FY$L*D!h@WXJ*Roq8XFO#rQWhR%L1mqfYr#lGB_8f5ox5fv z*etR11^l!98kNf#(F!1ybNmMavqW`fS0&-FYDJX{0u86W9 zr=z9utISUi=I2LE50O83UBm08k6SDOgsbE)@Z07CZVFQ7PfK9i%+i_KS z$b(|~rk5hE^ep{bu#7b^`nbDd6i&i(wwM*<*}0e{ z3N3+H?2$!OiwC?cwdiI9!;JR5GIuHIH}DxNt{ z1%{>lf)%Ow8||1#jb3F7h(MJ;b){W8L4B4rvl9D*P5_wD3~czfQzb-H@kgQ^1403j z^@n|Ly?I%O%9h1`+j}O1ZKsoPSZ62`=-!m~3&;lMgK|0U->5*3-Td{qzAIGQn%uygu$icB4_t3U&rqh$+S;xG6ZSZvLyOLHI<^3snT;{@?ruJqP1Umggc& zZzt)BeaYLCU}X_Q&S#{a3&XwFuGc*&G*)5J#jC(sd0|YBE-IcrmsXtFpB=o_gtkv< zdupiw%0wP$UhX}DjKGAK7vcQ@ve|BZ$9jS}_#DuS{WYS)WuKR<<=55$v(lH#0DgVV zdx?m1Jg0X;oc~1lf1D;j;$HrLyHrA{Fl~#epZR%To8)VuBRoZ4mEPljxsqYMpObs9 zmsUP*z9LBj7Z~Q1Ja5?rpPm3H5>Ln&XwcdBdarJpf)+J0Rb4SNjb#~;_r@kLt z9oY=RJXVfkkGxiq6`<2XpSHZIt5@y2aQ>-l_RcQ*ds(brnvPWiHNU>Ug86$xKY-SH z3nPtg92A_!eOdj5{A+=a_RyMph>u6f;u?c7Z)t;XLTPQ4?)h#-g-MTR(pB0IX2__9 zDglx?(w651Ct)}^Hv*z~Jidgo&t4TM-jQq`N@wwSLu8S@R?-p7t}=2`pxXV%f05Q5 zRpWv2?M@`!sdgLFve{q1W{;fs<8$v}p~m*c{wmGCe`Wj6tZR%%x#{$0c%H#?0!C|o z>J_1uEZ22j)}n9Z#;E4X5iX3#b{d{cVKfdkx4{q8*{eg@CKlsH#;0vMcW(z^1phMa zf(t|{XnY2KG_~aW6tjs}a7k1ch<2%%pLEOc7Busp-nFHT zm)F3*FoVn6%vzTQq_c`-jIy;G9HbmK;lGV}RJ zDMawf>I>wbyp<{VuVXIF&B=-u3>z8=>U}5jccx~eNd!+fwQc())f`$Otwgl5h#~!-(9ug41%{`O-v+9L*JVo7I_pTLkZEfDXli<2mFzB0nvpkxYQTK2jX9*|L%^ci_ zhRKj7F{jI6e$;&f0Wjxk5`E~z{%0U&RoAOk~m8?Dih;R zkyxkUV*i8?L}qhL>`)^Gp|kmZo3tH?qd}QA%EV`$wWN{!)PQc?gr1!2-5haPHbK7t zHD-J$PkL)ckouO(STBAi$T`uLCc8!F`u#w6{yO@l-nHU_is;$mpoTrhvd7DNlzKGp z)uiXoQLgic!1StWJJcE7^n86|pMk9^S6_DYU6^u@$Gh>-jsZhe@z9@7bXa6oC|zd;Hv{7or%=GySt;mMtZ*X|2m z+T}eG>npBV-HL5%K;N&%vsh*L@4D2%50;1#+KvdHjr}vCnC_5^Cuq@v%!(A_*d%d& zs`o6VK!yRjZSxXcY$9#>P$@p+sfrNYiHKX%ZO#EK~>UxYjTi11{UjbE_WFW9{iKy#gwnnTi zbN{Xom!t*?kmW)n7stSnoImMYp#rooIOM&G$~r!`-+SaxXLt_chKYeP#7sh=Rv2<} z29;G&j=QeN6^xz!^J2TlYSAk-Y3E<2(^|#=vuZbaVq9SJ*epek%m>(DOJBBxw+hIw z>xSheqE~AwA$R>*qwC=?9c-S7BMTDy#1ZWuquFJeDHb#5?gtsl&N46Hc zyro90rKW<@u==lxQ@(pTgf5-Y5*M0ZnuQ{DQONL=kLmmY#E3v+-lXGU5RTy-*AF^p6?-&AiO^grc9u6e2M zZ)&dUbaVwyp;LSX|Dd#Qxh9Gr5RO|y zoa-hykAKVT+~t?=VLtX!uUd`4=(jmBzT;dFwB?ZY{gmaMB#I71Mx#6l{8K#QA(>gD zjf;K((4#1SNgv7H+B*%}%4($ZAnxzQeptmrzd2lN&oF|)g9kL&$eOjS(=M1OWDdb< z6f8+R5R~nza~I4nMk-2=4&o@HM7z|;dpP1ezJpq3d#NQ}{__m1{>IJ+I4#;J7>I#r z$8_%qS+>gf!TXmE2M2E3oC4ySyVsVewRLGGm+Bvmi?FRVK}bvo;5oU_??O&fVHS#3iogqHmZJxwbEOk!iSL3%2t zr(iXNEXlt--JJWgTRXg_1Mg~k#I;y+QBiVEMGS$KeJ&~vF)-^utz9LiP2`VTIpGu9 z44$G&%o*5`D!Yak8tw?SlA7I#x(vC``Yl}{1rZtT^#*ggrWhB~Bo@Jc;-7JlHg!TBZ>(f9g0MPU^m?ZC!uB%eVw(@5vp`Od;$P5AuI+CBdEG=)S=C(ExguII|E)^pQi(hj zor<*0wVLO+viIlb1dG1}S;ffZ+wjcny2iQ9#bGuZ(Pz5AOlQ@y4C@F}+4ueIc%w;` zO|pb?RkWHZ%i3ICDfAx1jB<96mg&;@)R=z^f{#@GzLLfLoMeY8 zaHh-BNrp;sB%Rn&Qs9$9RwatsBQzTVqb9JJ4Kht!8ivmB0Q^Gi`JCyoi&$_vPM=Nf z1lfSbxEWK1c~GPaVQ~T?fJ=^G?`tGP;fQq3aZfR%<94*w!?5CxVfZp}I8~`;IsEZS zS;&PaHD<0=Cn2BYgtq7{K=6^SB(xMvs<<7Ztus;AjM)73T+5*XL9x4WL^Q<rXXeGJX}Ljv1Y_jGbfyp2%5>C<5^8mUgw?;|%1RTb#(nEK`t6 zK$?7}>rg9W`gu!t4wU9qFhn_7r~L6+w-MB@Aba$A4@|Qoa3WqhB?E(@N)4v}M878y%BCeCnIAIUx6uq&Bog4(lx3v++ zSwhiVdhnF(0VB@*wTv$%qBG{AKyR52fwl!o6?{1l1X-{IjW?gc0-QIym5 zlH1YI$+CxLQ~Sy5pS2t$xd!m9@!~<(>C5q{563AQBFbB3f}{5m=$bRVvHh?7ea37g z#zC*lA|-zp6A#r(qvsPJE#LsQTsy#fNua5L2%w zGH$z%Pg-v6bJqF1>XT0ntIJQ8-Ao=lQFwgJ<|L4 zN9f@;U&iv7Po~`{@+C7GXLZn~=9)!jQvx zcV~Y;1?drnXKyG=*``euPBp&tC+t*_VHVGPx@_Hi*4Jw_%*Q5!NT%$fl>6b03o&z! zIb#p93vKU_mu0I;*`=vJ-I%yVVIct!T%n_UY&)cqvh zmvoDN(NqRCs_ZCENFcjyq42xF5%Qk&J8^ssso>riK(I$7fZe5^VF^36*Bp zf){{fs1H)*X~R9 z+B`}_jq7%^2}2nBSr#z|t4e}JNJD@*Yd15G79b@`h{ECRqpSa@b2qT4rmHiTXAkPi zK{DkS86YnH8lE2d8Pnx!mWtQ#Qv(R=?SC(U=%totn^zV+z&#&Ldj03%U7`_ReDf05 zukYTyb4Q497)j}O=A8`_&@jcA%mV&%{G0Ti1!<(ZXbE>dEgj9*awC1s?>2qS%U|YC zw&B!2k({mA=#)>MiJ@b&QWg{iqgFs68^^XUTyyhAU&>FNPSB%Dz7nBgltBZeYd{_c z6^2g;+;%SbJ1ky&8QR0+@Q=Im*V6;jrXdH}=GMqqPA&$FYNUh(p^3QwRd}XTx@6 z^hv~7e>j*rQIxbZ=W#dw*8jbOk3zh?P?1kRP8Wt(d!#Cdl=P^<2hOfl*DNe#hxH!=xRji=HOm{$MucaYUPld=Fhz9A6c&B zdQomqfpqe`VmYbfnQ_&<$85_b2it_V1s0rSLPe+d3js2%NGo4gki-m5bDnS>kk((0 zPnb5CHw^F3d%hushF-n+DD8LjY$aSB9Z;n!o{JRH8)Sl}jehfYOy{47L@1IqY445i zZ<>gc``@MeU+4J70lm*d>?LuC`m~3_k(Vkc+JoG}$G^%?2Df|f{l$40x9E-nUYB`z z+S^V?Xq8;e2E1zR%Ncro6}TNx9!gh5b>ny@i0S_Rc-?>qWQ9Awmv7dI%)>*!5Auvbx7AX(6O&dt8K308bvWZc9BVsi_)4LAvkSwuD~7pY!ub?#o#zcM4%$ z34(k<<3C6ML`<*w5;^*bJfz>MIxGK=rmqZZ`v3kGkopn>QHBT`hyqGW*N_}2DJrPI zKu}70BSwdW#86N=hja=EjAn!gQXAd9(J2l0{Qa-{y*=BLUDxM)&ikBKoRghluUea5 z-rqC#L6aSW`Ef%@Xo_N}9;|l4~`4N-10UPQKGW21{!EeINY&>k)TQ z>Mpa0VVO>CM$~tuPA}+yA3dq|Q%+b;?fd&qdfNFocHL7g<5JxJ#n5$9cpZA+Er8Rb zR|gsH)?^-(O8c`{X$Rd$=@IkmEZdOp?~8QGW=)2=L}tR7xBjHKVHz-5t(je??;h*C zgaKmy7T`V%%u#h#Fyr*y3zfSptnWbB25qH?nUh(I!M;dOpT~M&j-mZ7=s|RbkIL+> z&i0VE9*SU|fmr&(;CmPhgd^QI!C4Dh%6HpH0l>{+ZbE#|Acn?Blm(r>Czk%>&f8AJJhGcdOHvR{ z)o|QOEgp*h@V8*N@pD-^Xn}bQorK>$&gb1S^H34ejqG~A9s-rvHK5Q$b;a*kFo=Hr z)VV@!szOwzcz3B!Cd;`{U9yy12ryXaOSLd8qYv;oeoSs6cnw|ky6N-J?wi6_=EXx@ zCP!Y(b!DXuJkF@jMaF0i2eTaa+G%;X*I-WNs5l0*MEL=1;jlLAT#thLhqDpP^}pIv z2Lxj}-)N~altOnT=P2Sj*A7QzmIk|`2UlO0*spD+4Ru#Efp>S&%!)qYWi5M>6Y{H+ z8;^hB>s%4ym#$eqdg9)xop`3iRb7izNSmLAZ@XQj4@9B>1pnjy^L^dWfclVn3|d%W z1zEGZeNMbeZaR|oz0#Dwl=;r{oPHJY`DkWpf-7$9dRY3vX-i>heISmS?|=sEEfZ8x`V` zn)MG$Z}L_dy?|US!cOk`9?uJ`nF4Gi=Gu4-)9vl5M(u{Y$LfwYXI1($lya#0m0{xlMEyrk%IhjP-xH=$ha0&b@Zy=SJb3 zm~}jO#8&j}RlXM5CC+OR&B}1{Y(u-o#${3lq(Vc{EH}^0%eEFm9rug3bk8W!g>Ex4 z<2Rv<;>uVirUsMWTdKC2J?F_@)ffj|D*=Dv%97Ht_v}4RT=!}_RG2^IeAZkhPY@QK zg!|3p;&4)FjkZH~a*HCrDUi#v|6HoD^l?@JWvGv9W&y*M-I^Jt}N!#n8HZ={dseSgI3mhvknNs-AYn-(Y$VVe_}R9y;YTaFLdgl;TC+gS|hpriY;t_ElEG_L6Jx+8Vun zkW#isxR{^>Ma z`}sG&BWl81=Y*{j2$A`Yi-g>~JE~Bsx_E&Y7+`DY$2%NlHzNv@ijglF9_euBZy^zvi|h77%5PYG`SL|!94&GjM*U!CEF03v4`$}t(7hvSx=T)s z0!o(II&BBdc!d#IwxtO3SlZ3)BiZxho)$-`jZY~RbSDqMR6DMxA(`Yk94ellMz>)@xloE#`6BsbHglEkt zkzo+d)2H2wvCfn+sf(;;5K?a{cB=D!OsTcuJ%)vWO2OsT%2NGw;@sV-?uUD?**((l znbKey*|qJWQid_wXQ`{P#KcIM`E2kb#f6{9HrwOa$RJ(3SOP z*q#zy-q5TMxeT~;*E9lB!;ur;jYRAZR^pFOt88RCc^XW0!!EhI zE(5PGzNyqXq*{OX@}~5t>gj3NDEt)D@Ac+jt5Vgg>X!UQW*KiPO_`QW&7=Zw6F1)q z;pBwdmi1sPNt?1|vSvPLP;7w`d3X7Rs#0vY^X1OV$O-|cnwQ)kMLK>Gj>}d1K{Z5Y zCk-dFjKNWer!9eC7s2gmBk8Jw6spQ`6h&b4gNyPHOVeg87T(UIuuTGmf0x ziJH%)ZPfx&A17%&82a(Jljonwik$Kx6oZagP57Wz3Glm|Vu^LXojOzhZ>hA}(GG2st)LJq-+}WTY8z^AxNR{?Gh*urdS6Y(de&*b|>Wo-E2xFxXCx6#`jR zWTBLP$B-LaUb{)z)n;D2_%6!t8kwzgpU;}5orE2!+p@BzaF^H4HDtGhaz@EYHk3hU zQC-x1SURzBM2E}U9hcSLI=Jy9D`ikk@?AEEsk7Dgx!{i`kwC3pAS{h@#8x8Y4NG#A z@o%v+C`aFJoJ-t$+|QNI(_S1@*!XzLVD7VzaODn3qZ>+XTq5_xy@u7<+ilr(`lHLV z*xovakm=CuVazvN@oI{>J^nzQtrw?L?duy@6!heYy#j2~;I&z97 z`zjT>2?;uDhZ7R*Je_;HjBM5xOjfsB-e@jM-cIBH)J_|4O{d6#0r(hlob5@+!g}1@ zb-z|=ZqWRjh14=;ug&Wr_=wHTfAPlp>r##mLJ_e-@Egx+%ACs@v8f@fOi3oUsK`?C zxUmq2Iv;NCRUqGD-})VcDLcVxU}3EQ^N2`I z+7mPIlO~yO1$H5>_!VzNGa$nx@>YUhd8;LcvL#ULdSvheot>W_AWlDX@ix)<)0`Es zp0-7ZXU>bE9=faOFt=A{8mpp16+My6gTKw+op`Dbe~>EZD@sFJcHTSNNi>gN+avGY z{InM;yV3q^F`At?hrt9bwKOE6gfokEO#EuAsaAu?%CU}NaUOLT&Sd&G5^JNj&f-}! zhlxmMr|?iLRdlD286H8it)8r%f{D|OvJs?6ur*T^1f^Rg5}*fVtASSDSh6mebkMLOb3@M8|MrI9?q`Fp3xvi zTLs13OF~GgBV*mA$+onPoV?S})n)U^(}Q}McP-OxrlR7VEk%o1C7GO*eRy&< zEv4vv5If_&D(1U3&B6|#J}7EFy>+@1jItfu?rwhbchX_)XR@~E#y7;ho-lwwbVX&U zQf!yqtcl6cpKDID&%^!xI$P(K`4)eaf5_0&@RIxg`eVENr@c=%wDd%J^6n%kzXYtv z==}o{rO2um;RZ{>JRH~Dcr@b&IZUo!3Ysa1DiRkc={QLt;XV|dk4t;jv+4S!gO=VI z!TSJv+a&6q;D6MDx~w;8y0#R@9FMtdEyTYFQDMA4M2S@BYDP(w@3tnQ<%#9Bt!+^k zo?GEr@6g)6zTfQN5+cXHP`yEq(5_@PG>lTi(e7gzG29}_p=ygR(HdKv?xG_MRGI9D zvW_x^yKVoWbmt>0#?rbXrP#JZ;G=2mqjK7w?UmT;qqnCx<||APLJk6-QUZ6zwm>?( zW0F7l>Q_3^6r|{)y6_e2Gc~OyEM$`)RXg~@?R0w_@l{G+qOiyt{Cc&FL*%>A&&;m* zf}SQu9@q8?nAl%U3Op)S-@QS3!?tYqQtOQ~$XvJ_z3T>!aga>ErTK;__tULr zv93K7`UJ(En%6p5lG{Y_1bK7FNI9I56zA|9^G&D;MR9VLOKv&SMq zSzCL!>;PQwhw+Bn<|m8GRS? zKnCdHY=GGzadYfM7Y{@7V7`5m@v<1N+c033htoQ`l*uV<|P<)km#A9YU%a zm2y`5bqV8fmdJBLI4IS5ocav^;pZzQ7E`zM8Jnn!4MBy=KeoDWl6(!}>~!-K)SFu&7;15|S{M0^Q5jAbxr=M$AO=UNh-uOc83UH$D(2_uUYb1> zA108(vL;^iRl0^^ci+~$isKy{m;Qh&pUt_{iAMUqO&-$mSCMX{t$_uHF8Z?59~CG~ zp?BjyvS9f@!yPYz3>bWjMdz{9YeDGXY9$5m}BczQon5f$f}TA#IAS8->Sf>q_Sv*2Fz)zs@wuDd_pB zi0QM{{HHK)uP6TN)_xI9=dA(;>iS9p_Jto)x01B;r}GDu^R#9!|MU|)&Ub1I?VU3G zR)DY}5x-pq-{oal)9LbHD*O2F z-hO@!r{r}oP*_#;+Zky9PtSdENS#KLy!ZC4X7yc6! z&*7-xZ~WZGS`lJlw2^e&4b=TYg2x;v)dfY>==WiZ<%SF{4Qhe&)N~>WK_MUZB0<6G zuS9=#FIMrV1CG^^oR6<_Jb0YhAp1S1=CrVzxgKk-7V`OnLZ@RD)giU^*emKb;d+A< zs$i+ZQz1+p$>gSkt>YM3ca~!V)h|e|9gXWSb%|@qY1Kn7%#1vKn|csV|C3+YvAF)d zD3a0CWDN@G>tj~|CLnUDy2SnG>-ErspyC^j+1*(N|pmOVCi{Iv21H)z^s<{iJC zKswsmvRcyU(LT$J!x?oHH6sDECB3? zINT8+>`1kzD`Nv%YR7Z2^hO;koLYB#WjY|gO0MMFCM?5bLZ6Y z3sGaL({nz2)55+B-7LsULSi}xqM-ZHeDFac@@ae25iod2q~Rq0!~cg$BdNqJMd zn)<3)VtHiRk|cY@T)^ija7~-aymsj^Xx$7yRJ8wJShI{0MyUi!+Tz$ zoA>$7gUDEJ-fc(SK~5{qExLaB_79cOr_{dspb5xIe79u&kSTEQP`6@fPCMEKN1Ng1 zSveltq0uP&ZCWSyO@~ZZDLZm(`9+BIfD6RSj3*Q zLrG*AYdU$%GRky%T z7Q1Op&6F~w^Un4T%{E#Z>RRO~EB1e=g0JxY?DPl^rV@{tEDyiYO|zt(@b$^CqS>=W zg|Fq1#loFoI)Mz{|I3rY=h75J~$pE^WD!&e^xo13xFLGmc3AY zwNaO`ho2f=w-N#r6J=v9IFH(#!_S{E4ck=fGxN*zuac>1mI^h>@Y4 zYub$Ok1iiZ==wbKYafTdq3qEDYj9!W z@lq&A5j23aHbm}Ob<%xj7D=VTJ02FqK<|C_lX?%V2j}AFUc@ylFou9H4JiCLu0ehj zF2LXJ6a?dq!=@QT1q(Ed59VDAd_K$v@K*99Yolnv0&IHV0q4EgP;^*>xwoc~5rD9; zkl5E3L;ORsBYL^1mBGM+MMhxKEhIB#hU}2a$F~#O;H<#vl~>h|2*@h!I5gzpe0`nC zEeB~B`&+y<;JtCxwIu=iVE*W_QDEV4#o`URC%lZn;0F`0CQ`(@0AvIT(Y^;nERLqq zFAvAp#xj$#?M#9T%4PiBfDY;QWXXH4;;> zGjgr|!!+)&Sj#veye({I<<({s2Vj_c#`CIPYH zig&+b+%ZuKH~9XqbNH@*Rtml<^X&U!OCMLFJCtYxm+On9+8 zsTwU$l8Hq?gq*LTrGFYynv)&HC<}0j8(QUyYxrC&Fs)b6<6RORS08hJ(&NWEzp zsZvEb5#iOJ+jp3=D(ajSGxjm`r>d5jN_$V;w`gZUwHL^9Cc)JEYTO0*o&f+n0EPBc zSTpL{`pKOj8|%uBQ1~%1M=7z7{XItSyftW*Lxx}GS^K?w`j<6Ay)s;eJ?m^LMc%&^@G zG;jU%X?)WrPLJquPO!G|zl!ynH!>R(@!ys7JwY4FH806VzKF4*8+m$23}H8H$Z-5M zVX3JHN*{1K{^pe9bl$moP@tDKkh1^u^y(rFmJ7QWvd4f_XaD456(%ahB>7a4N4pfK zTTWLD2d1+JsZHyR6n0hY2SsIk2R$%(H0=EF-+yb)E}CIjFZs;IoYL!wda=AuqNDH3 z_=nA$Eg2$D&zXIF#4?*ND@ldn*&G8y7*9ID!tth1_jUDxSk7LtvD+rYe=~g+m7kp~ zNa!`C{$G?vw&FN)Z}7f431Hf2yQkoltm6|PAc{iK|GSQbnDOlOqBfq5-_(Vp1tsTl zyW1)kz7AbQQxnfx%y-&=P=JksT(0tVtnhCB%Bz%85e&Y52L0Jb=O#=55z2k3W9_rV zf|jvrZH*K-vmq0=Fk+C}yJqO18I44}{zJ-#BE-3!P+ibpVs|CCqOY|!Dm{vL?D@+@ zQP%^T%_uW#-0RBlmk5!I|Nj22uxU{UcJ?D% z^54fPz3;uX$4)+W=_reef@q`p!Wvp8@>bk)5i^KLsG}{ za6QP%z%kSWlK9vv6*s6GF^PkEAimV;1ROuQSF`PUS znR$?3FF&p>OXhK7ao=rqQZVTA)+W^@@fu|=$qNjo4$svhK)BVEGt7}vV`hseb9T%C_OBOhU{#~3SZ20_R^A5H ze-tZSrrow@xw|ve!4F#eBK1)~{v!LEhWxt0`ohcDz6y7j>LZ7hD7SN#V7^h{b{bYg zoynb6YK^CfcXVnCSmh7bfC5B_t#J@VPl;@795*a4kZsRSe4{)h$0R-ek57xV20I(y zC54vsvcxmK>zSsyHZne%Mxy}Fd2dayFFsqu-|GqN!u;Vj83)6pNeSz|;~sg^caNLS z(qiM8S&W^s=ztoaE8^r@{fo$gK#zzYp~{(TLuxMhjyKEc(67^IZI?3`Y0~$!m+29y zuiMnFL=VD?X{;|OIF}Asq=>&YOdqIykrhd3my3B($W%3wNPAT(bBCS~oFGE92RCQ# zuis(UtxM(YcPn8Wz9aOq@Hk8*m}IR@%SgkG6O%SFu{>qd7rqlDJbx$MV5P11LriBs z4*{9x(cneuz1q&UET+d25SGfhv|o8F46$9 z$TlOx^H39pXD&*7^OTJ4U+2>tp35(N{Us*ykg>p{vOn?@W209v>aGMaH_Rhg(&iD1 zcnXZ%Vjg|-YCd&Qw!}xXr6j;^YkA6;Yu*=8{Tek6i>N4_md(2eek$kXtbplIQC5*jGx&eAWcigWzQxWjYT&Nj0Q+Mn$mbL?~VBo4fJN zCw|jieD%%ck&!!O|FNwfsNS@y-%h;S%)V!3J=6Q~&ra)q8z8K(tPc&DhAh*BA$akH zNOB&g+S z9V-A#!YuN9b3YF(LV3JUb2Bpmz@b#5-z~tKhwS`(RN~K6Q%|eYc#Nz%W%qumRQABz zeb>pNI|2ElO4&v06ms(Gzo=!AjjYjKqIe7C$b%=yX!5PQoj_op5vWzB#ye5l_-wbl zGr`0n;3->t`wi-akOk-0?kNmD1r6LV^A7ptrAD~nM$(994|%ku*ZtZZvus}fHa_VHobRky`*j!@>9;ZKZZz)0(>rbSRP}~twW*&z6I!t#MSn=v>UJNYJ5G!=G0e-tt(8t>17Ejv ze$38A?=H%^`y*o90y7}e#vW+Br1ul}lxHals$xs<4;H>pl{p%+M*v)Wn{0 zZyK@cKJ#acQcIrO%=7`p_NZ#oke{>HZrEOuk=n!H-{{JZp!p{}av2|ggvZ|gdSjfd zv@F#1nc(Y+-Vh51&FWVu;wNGduol=bpqQt-9)(F0pO}?L$DyB+gl6H8ldbp}Ur6ri zb^z}|d|5~EBJ-w4Si|F$zZnd*Q_L(PkfbnI=vg7Xvzm%6Y>QJxtgdcm=x8lWn=kc} zEE3rkIc{k-1?u7Hv^=PzonW}ol%!#m4@Zb07(&&heHHqUZ{4G}7_@>;ej_t!5#{SX7 zH;+ka#XZ!xjJBk`P=cRYcS`5;Vjl9QpWu_bzJ;OOk}9p&!l05+7N2Mmt1R-DFr30` z7~Cf;2cKRaa*l%DvM9DxjH;$~8$i@?_#}EZ{)o;avv@#(9!v!CiT<71VPE}}98I_8 z-bdWo2?8lL{P~2z@IHji0@u-_)by+23o(!g5W)^OoT!jX>Mfb@Gy1 zi;!SbYyZaEJ6fg|&(WZo@mrF1)_A*yEZy~6oN(A+_uw7m`A%xOVpG~+O4sPTY`4Wb2mu%Vl`YH>dJQuDmx|aKgMwPSY+S^x4 z29I*$eu}B)ZffG85u0Kbl1Qn0fZx&lTwHSwD$UYw8zJ9yQzSiDLIpaRqPJU1IX_H=u_pf7uHnV=gPhWrM$;`KcDl~$TOaXYgv=+JQ|X9 zeeE<*HTVVa#^mr6?u$crd$#@96U5m)iz}G1`qQ=g8;anJisA31cN@E)Rtn+{r^XRitDk?Kmt!%5!n;1KORZlD+dJl?tUZ4nubX<^MlM8&eaq zz1H1cu*CXpi(^2`<<={|zfXn#y2(tbYu7w|sPQjG!jDDE@_x|RR)#McuqN0b#p3QY z;<6g%0(LEbZ&|%Yi;1vlG&r+iMZk|_tgcisL@+LLREGqo%K4rb>g26@$IweI3Yt*1kRq7J_-@(zPEk!u4Nk|1@kHB}-%Zdz6Za+8$HotnV^A<$T%I)v z*+(7}I1zB(+ed^nlEip#?hD4-sNr$jV!83yZcqf>a~5WLwL)cahQ4RltlQb{JLRhLw*?GRF z)s;n5^ohs}vY1>jUE|?AP9RkJ0A^|)+}$io^1_Wz=@G%&2|aZ(IUIkWEFnQra7mSXS=+Qt}5PJv8z&x6_i@1XUk`0$qKD!+M;zDyQ9p~(r`sM zL-r_*yKm}oD<}D?e^~p)^u2TK=Rd`yzr}*8Cxy5-%CXcU8mZuruD7yTi*zToxuVD2 zb>YmPLo{#bFaU{0%zh7)!2fnCk(#G!8XPE>hgW-Kt%jB%^2@NZ?K8@!wa3HtFWLgH z)GkRi%_f&J-~%~7zpic0qVm9Z(H|DA0hDy^tmd|2Ztshv>W@ze%pw{wp7WJ@d8?+# zLkvk33McGgo(3z2b+YJ6FH%McP#|y9(SA=7e0-NDJ<_G~{?`zH4p_>3h1SOJHd5nH zyoGw3Zjk5pggVTc6gxp6rKaq>Z4+Fj2dPXZ#)1^tyAv#qj>1wMHFdnKCt`cTXG|03 zuwr&O!I5B6*@G7e^zm|bKK%UENaCn{HLLybdMdhwc41D9Ifkx&t_KwH$X|iJoQ3x@ z_kx2M@^OKInYi3D9gl(eqPpkn;->p|cfU-o1x;=QF)|7hmX5!G6qnq6gQg=#5BhNS z$kTi%DuyJFsmoPlJ6Lnd$9d{_Z%V^!{dEC)ND_*em<~yDoq3QTp6hO}{fCM*=Wm%r z_`>xYS;i`QG^(cMPZ@n6Mh<;)v&F5z?e{k zG4UcWy4pPG^;Ynh2kWvvz)&t-b_Ymo=o(*Xuj#OtzwUtY{L_WK^4I2Jlt(&027o!A z)kFfO%im{2+e*EAYjh?12>r6Y!xl6|Ylt3Rkkj>I-p5_*@0u7maYCGxHA1u6!>+4H~ zBXGI%;fr}&X^6MQ6iOwm0n>(tUf?wLKO3ueeV?%nFAZvO`$|-5By6M`p#O#@@4YZ) z+bAUxE4h6a;?y#H$~5$5lLmsJsuN1J^B;`$Lp=3TZduuuP%u&GnOJ?=yQ1?cKJ+*p9gLMm9mp8Ue2jsW8U}+#os;d`|nLa?) z@t13@=_kSO36eUcx^}VRL!y$09gBk^VopKF&&}UaPFasJV$5^suKklX+ll5P^RRN4 zoTvD+eu8azo_(?ExC9--ei{jV(PBn{Cza+S8pY%yM+P3YhWT_C;QH9~Cq;>opSNNlHhCM7%yQ zBiPuOiB4dTuJ}fx_`*Ep+^6z}M^~cYSE#9n%J1Xk_aa4Kj{fVx|AUJZ>~7Rt>G`Yh z2@h_p{j$B8n=VM6YEPNc{6zGsP@Tl<<RPclpJT}Kop(wi#wN18mP&QWMomy(>|nSt(IQo`fFp`nJzV{?tJ zE=#$Vt@ghG`$u&OeJGT!v%Fo2vjbc?LaK0=oE3$XWasD^efleF&BcsRu3OZN&lc`M!Uw)X`Je}veCb0q zKBtPvV?u}{ui@#=@-5$a0jI=%hWSQh_Nso9?(-+)@)4hDol2pnKC~tVpU6+11oi;^ z#31=)ssBGsRrjBRFELYb6f|u?t>hc_o+mAJLUlK-mTx|=6dyq5E35%%XvQA=YO$uQ z`AMa@UUuO19OCodNBqXGCu-bu%p3o4vBAu9TIEU8q>nAusziv+R}6}N&gvPS*4h9) zjjGX)fz%-$ovoUk_pzSAl;Mka=|HQaqCD3s>^^)EH@&?J2xZ^EV@s(Nazl=2=RZ$c zvZGKo5|A9TvZtd)I+%uHT*vLfPd&clm_ygleC;y$^q=Yy5n&5JRn%N;8c(;vG z79wi%XqzyNbcQ~6I;fKy(<1qXGA4XX<271Ra8DLyZKFi+_)v5AP|!`ny^uqa2u@;WFjareEP|(K^ENuSr_)XrUI9LGI|-x14`-WtC@hS0KlmO(!Pt* z1JZt{v^Y>2%w$OKB28on*yN*&6`Ps{loR4?uaKrR?i#FXYu zSp-1-U~MCLxgi%QQc74W>~{n7OgP{wq0oc#LGH$*gdKe7VK*A&zE490v##1+i1-EYw)6He>DuNkxoyv}+*g|_A9t3~36UGttwCF?H$hFYicXy^qv#pNvkFDV9Y`xlc;23j*Ae=6imKzLi}#cmBvM zK5RGw5>jFweZZ;Q`_ z@JW?s*Pcytd4^qOhLcQe!1NtQl)$v|Xk+e0u)UnZ21(7KSr``ep?OQ%doQ;)|6lfg55#xb9=O3s15Rd2h&T-ht&gc>JwRRUFB4_=Z5m#4xrq9TRp{$LpkTql}vbPS1_{h`}h~ zBq&N_G2$2VA7%b=bBp~DSV*luW$g1`-W+7aat6af#v82v{2$I`24}s^m(o@ROc_nr zWSEIvU?ECclnOXmFPMjt! z?ET`#EBAo1AFIyJxDFb;bQ7z5kY>uo zoEVJFkI6aF?D_IOVzNZ~!c+e-i_xVH4)?L~7{xxE(rZ}~mGs(^V^y|YRZ zcZ9J-W)b5IgR-LlVPQt%pA^PMPXo&*zW2OPAPVyh)dZZQQn%T?!QhzB)!ecBW zL^)*~1OB8$ww}ZeL|5>Sx@tar@Dkw?;&al2UHjrrK{5c7Z;9JwoM7MQN9M9B^718X zZszfE#C*;iYv)pa`BLs;lZRL9pYXJ#?SNs5FlgjPwl7xKZdQLc97rKLCE*znZ2IO; z=K~RqzWix9G&a~C={%GN1?=`!GK-XV;x`v8sg7f@l0ebtmS06t^v2{hzx3lcj`Lwg zf_CjeexaWoUy}CKTL{HaRM&;au&wjP2^)q1)x9M^n}*G^Sw%fm(^L3@(UieV82U0( z7i$o#vB(?EE9Cx0A{|pU5@ha^EcsQsCo@!@1)^oc3==DbxPNx{I|DaY7ZzrqOk`%2HfU5O+5dvD5&@yd0Ae0RA24U5Z# zz1@ELlTk*f82rz&6eGp12{!UJA_3Nmn z=jngLmCUugO9CC3lL`HbNLQeyK-DVU`SxUenQMj=M!`v*tex__s{bS68r3$%{g<3D zCy{xqc?8L8ajBiZ;9dUTglSXgdtVTS9;W>yzt=GVs_K6D@wpgOx>s=QKAB35Vgq@|Cps4}c@6VQG^&4Q-s3Lk1Er2|y>BP_~ zdg?EhlUZZts;MB_0p$8Wo6Z;mcJ)k!-o&)&MO*#YRyJXCHO~=O0kI7vo4CiJQ%v4Q z0$&K}c3&3U-umk)hR+&g5~1N+JB)C2%*EFi;B=bR8_go8c}0%RtBTx^Y-_dj@f4Pv zGuC``k~_9E>W?ZSg;+K|ZTN}NJcE*kd|HS_1m2)iJf1G*iDT2m64srzfUa5p2uJn}KXQJ2Nf3pwAAXE?&n> z;SFf5C^zFi-SK77UG&TRgb_e&T2w03&%~&TY@*4ms}Ca_oqHy+^cNI`nHmAqI?R5r ztb`scEK-2VAj)* zzK%YWxN~X|dZ8ORO(mICllkVA#hhi~;(SynR_u_9f<1;$!ov5hI6XY#+%3>_xN>E! zP?@yVS}Fx$SCg{vwr0la(K}A5EaswFBL4Q8)z%l%yzrru*!^hf9JACM8i z2A-Rr0@WXrix}}&xH{Oc-**LdF7$FUQP=@FD1NPnfy-~P*?99!{&J+>*X#wY zC#*5I-kywHPD1nj^Zmb$y}XE~Gr^Bl6=2q|chwSPQ~PeCHwLwra7=>Q=7d(BxZ{WX z5QuXtU7=A`vxhFAqH=365u{W)I5-#!e4Nm5tu2f{wY4A@#!RV3Zq4@0uQ$v{kl9J_ z%UoE<=PbtC=4y}bj!(|fTWgOwNT(oVQwv6x5A`EMdA{8Y#enD$4DOSAHXl&akSGL) z68osFf^A`|W1+C7$5?>{6V*eu#&! zQ5rRD_Kf6&JMV(z2Gl(Is=e`~MKr=T{PoM_ZjMe)5AmCQ`QvS+@}&|J9P%sXiI&eS zQ_Z}%S(*29@j<304i0Y+@4i{p;f?ctU;}7XO@nDS6_cwKqxtk~6fQL|GX5H1KTpzd z25G{%PkZEZvnpMAVUYx(QRdBHR{g{`*IV_0Ogrw^LNQKf(wDsJLU}2f0Cnkcr5le2 z?wkkzXaNSYX_kPgpG60GaV9_UfZdT0x(0r0{xsM{ced!$IZK?jkKF7G`#z8<~jvQ9PsHbt$uP$t7=++E)Hy z?hR#piHZ8||J*oJFnkkF6I$1Vf|WUU53yD!5-PX&kfk&QUc)%W6`w|w4$;5*_jyyQ zWF+>7tom;xJ8kPi8_k@0I9soI_>ektd&r4~yXCN_!CksI=6a)sF)tlX1*&>~9VnCn zxnr)z$7kts^f%Pe2I+yovL88N`H-6fR-dh9g+6YGYw@WPT zbJtt;1*hFIZXhODehmT8ti~!&(Cw+HK(d`&6u*CUFzB=bhYURJ_w(OcFi(t2b7MI% zr-FnIzODK5V$IzSPt@&@3G*1JmOIWCs4vNa>`jEqzhC%h>DzvO+Uwn$?L2N{t@&St z3>EY^P)?ewZ75VuCj#2N^Gl4T)8skbp_A)FwzZ{bod!09#K)|y6vEyb3rUzqfjlYf zhN~td7&^XDcsRLqDq#!}p4^35w;ltoxV|0z3kK)ez|ZF;N+&hyfWj@S#tthDxwEh! zjmpq3#D~dUOJYWUf29WUhsY+-9r_IhFFb1H{{`9!@zNU#kFoXz1al6BXI~f3QFa`@ zkW*4w$Li;G$_<{mIM0g?R7hC^iLdJ4@`(>c8tCB`6Mxr{+w<#$u2!3gEpzoELTUe( z17`DmyP9`vJfDncy_RgyE>n@3F4WWd(%YJQ9f7zz3cJNrsu0+t(x?)ib=TLj;{UO9 zl~GZ4T~r#RLApUgy1QFSI;2}VhwetYB!@=2ySriNk_M@vL8Rdue81rzYu1|QIrrWZ zd+&2DQ^-R&--YV>dzm23ex|RV zxQJ5ct@P&%Zo|;fA6%W;^M~Vpy1Ir8vl~l-Rq8zz0c^{?TSHNVgiiOYl)bVCC;&)^ zG3didMUr&fSiT!c29Y^@=%bRwHt>j{wabY9YsJ4( zyz*O=G%i%dz9&B|&z?7{6q;_`OGn#_$ zqi*5R2JpY%E*c*In^-om5rgT>0_nanS@8*LiI7JbIB`j;eItGdIs2(50fgt`vkQ(~ z)k1M4>Eb8ZAK~;>=%3-4-dk|-y4k1b^jgnfs`j!jAv%0~muXRwnODA@%clY`_dWG_C4RZdK?F^)MJ(R;m9oSCL6kKjRiumvT1I$A?k2_vhVI2C zV0Et<%6>1Cf^g{rpEJo|UD4mo#Tvd%#z^l#+*Tf^HsS+2s*?Kq%wjxYq7{X*!D}g? zQC9=w?>z&_zY+-nQX-K(>k1~de*W6frliV02_8VOW1&covd>JIADsWzJ(lZ^c#>wj z8oH^NykgOeqILe}9_VX0Zrm5H_3qY~{F6V5<4Lt?ixCpfYg^C|A&W7yF*<$4&jHs{ z6nAgekaAi3TJtyz7`fNH(K~AQSSOd40chwB-yF`rXH=3N1l7h~2YU3HNb@_9h**)i z+o^w%S^B)gq|exSXH8$&#Zvil;u_u(eF1agN*Dywm~xGM#($Kd zN_5AKWC#;Tgq-ApizVI`;8FOGLc7x3rdM0iDC`OCor#!{D`{)I*M8i1+cnd>vGNxoi1{<2MWN8uEl$4tKE2LlNZucJBpR5oxL+7ZR?_j$_g~GM_JD6 zBy=KnS+z_p&OeF`t~bsvN~}uyeJ;+wDsA#L!9yBnAWIU(Z~kJpxZiYKgMY_6ARJ>U z!MGYsqe zvoy#2U;}i+hg{|ym*m9IEy)g~i1*ifthxPJco-t#MaYiq5H=(#8yci8s zeUoVjLqmc(!sKjz*$3J++s=~1ead+42%iu1QTAxN6K~P`!t3{U-7`xJf&$(?H_DHo zoTt@_Nj4pZQu|>O#H8d*Std}s)3Vvmsv#5c1w%l9;2!NNK&3IE4+BgFHiUC4d(qR_ z4YHPyH!02a`f$*OI3p8_(dSf$=!^_qOlxNx=(5mbuLUfeui-~6HR#T>h$)>Zut$Jz zljrB_$_qz-bafRhd=5rx6!1{E&hXqZMHnfL!jq+fr=!Jwha^c#^_dFu&h$`8Fmm^= zIu(#1=9t4=RRVjqk1m45hjm%Z*>RBsixSSwC$bkrurshAMKBw|1_37>x54Zz%zEQS zpRKuBJ`KpyvMqv2atIb`sL+PE@h>rks{|k32b0LF%d|TR8mKdSwxFn|_^Z);irYP& zwV;bLEp*@z(K6JZ4ze}2s`?nOT4?$%UIVv6nwZ&cO!xz@jnhS!vR%^@KqPnOPrO$! zv%VfAl`B&`NPTp5Yo)cX-pm_q869kH_4C#vjm}@*D>fIXD!Od-=fVd=LvO(MDBphZ zlpu*;M4QgrsbL`8B&nZ`;y0Cr540jC9;8K5nCcDHI)LMVrI{U3*<}L$2zCUz>?jlH z(+TjSZxJ)6ri0>`z;;NkZd&4d@a2U>2l^gK>BTiK5Cd3~ z`=*^T5 z^20!_yw|GMbm9~RyN_82KYJNHTN`6EAE{~-`j8$aYY!1CQX6d`U_chq-fKcjIJ|l$ z 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 z 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

Zy`N7CED+lz;0pG5tQi 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

!C^3+$!IuM9B~hJ?js!z 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 literal 0 HcmV?d00001 From 2802172bd3b50aa0635d4548b551a02fec861127 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 23:02:48 -0800 Subject: [PATCH 149/268] Update README.md --- Reference-Platform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 733a0b0..2320d6a 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -1,6 +1,6 @@ # Reference Software Platform - + The Reference Platform is an end to end, open software stack. This product aims to showcase the latest available ARM optimizations, through validation, on a series of hardware platforms. Each reference platform is focused on a unique segment, providing everything from firmware to middleware, while reducing overall complexity and time to market. From 8809362531ff7538b4d809194d7475a647974ca2 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 23:03:42 -0800 Subject: [PATCH 150/268] Removed release status link for IoT Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 2320d6a..60005ba 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -4,7 +4,7 @@ The Reference Platform is an end to end, open software stack. This product aims to showcase the latest available ARM optimizations, through validation, on a series of hardware platforms. Each reference platform is focused on a unique segment, providing everything from firmware to middleware, while reducing overall complexity and time to market. -**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md) / [IoT](Extras/ReleaseStatus/RPB-IoT-Release.md)) +**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) *** From 3676628a44e28c60beb4425e2d0a5e495370b4ff Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 23:04:34 -0800 Subject: [PATCH 151/268] Removed links to release status Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index 60005ba..a337346 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -4,8 +4,6 @@ The Reference Platform is an end to end, open software stack. This product aims to showcase the latest available ARM optimizations, through validation, on a series of hardware platforms. Each reference platform is focused on a unique segment, providing everything from firmware to middleware, while reducing overall complexity and time to market. -**Release Status** ([CE](Extras/ReleaseStatus/RPB-CE-Release.md) / [EE](Extras/ReleaseStatus/RPB-EE-Release.md)) - *** ## Choose your Platform: From 5bfda9e50dfe9a532c879878cd7b3203fa2f6c13 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 12 Dec 2016 23:07:47 -0800 Subject: [PATCH 152/268] Format fix with video image Signed-off-by: Robert Wolff --- Reference-Platform/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/README.md b/Reference-Platform/README.md index a337346..b22b7b0 100644 --- a/Reference-Platform/README.md +++ b/Reference-Platform/README.md @@ -1,6 +1,6 @@ # Reference Software Platform - + The Reference Platform is an end to end, open software stack. This product aims to showcase the latest available ARM optimizations, through validation, on a series of hardware platforms. Each reference platform is focused on a unique segment, providing everything from firmware to middleware, while reducing overall complexity and time to market. From c4e4f514dcb90797081b6c0825fa74b063160817 Mon Sep 17 00:00:00 2001 From: BernardPuel Date: Tue, 13 Dec 2016 09:50:51 +0100 Subject: [PATCH 153/268] Update OE.md Hello Robert, Here is my proposition to render this article more generic and more fit to the principle of OE. Take what you feel acceptable for other partners (you are the boss) ! I do think these articles below may also be more generic if you remove what is not completely linked to OE (but more in a dedicated article like the getting started): # Bootloaders and eMMC partitions # Flashing build artifacts # Proprietary firmware blob Documentation structure is not easy to manage with the diversity but more you describe generic thinks more you simplify your work .... Cheers ! --- Reference-Platform/CECommon/OE.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index 990b4ae..1ab8c0f 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -1,6 +1,7 @@ ## OpenEmbedded and Yocto -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c and HiKey. +This page provides instructions to get started with OpenEmbedded and the Yocto Project. It aims at being generic for any board support. +The board diversity should be addressed through dedicated BSP layer then MACHINE choice. # Introduction @@ -11,15 +12,12 @@ This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are no In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -The support for HiKey is available in the [meta-96boards BSP layer](https://github.com/96boards/meta-96boards). - -These layers have been tested with OpenEmbedded Core layer, and are expected to work with any other standard layers and of course any OpenEmbedded based distributions. +The support for any board is available in the dedicated BSP Layers. These layers have been tested with OpenEmbedded Core layer, and are expected to work with any other standard layers and of course any OpenEmbedded based distributions. The Linux kernel used for these boards is the Reference Platform Kernel (RPK). The graphic stack is based on mesa: * using the freedreno driver for Dragonboard 410c * using the ARM Mali Utgard GPU driver for HiKey +* using the ARM Mali 400 GPU driver for B2260 ## OE Layers @@ -32,8 +30,9 @@ The Linux kernel used for these boards is the Reference Platform Kernel (RPK). T | meta-qt5 | This is a cross-platform toolkit. | | meta-linaro | This layer is used to get the Linaro toolchain. | | meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | -| meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer Edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | -| meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | +| [meta-96boards BSP layer](https://github.com/96boards/meta-96boards) | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer Edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | +| [meta-st-cannes2 BSP Layer](https://github.com/cpriouzeau/meta-st-cannes2) | This is the board support layer for ST B2260 board. | # Package Dependencies From 3b1687c97283dd62972f40bfd1119032059015fb Mon Sep 17 00:00:00 2001 From: Fathi Boudra Date: Tue, 13 Dec 2016 11:06:02 +0200 Subject: [PATCH 154/268] Revert "Update OE.md" --- Reference-Platform/CECommon/OE.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index 1ab8c0f..990b4ae 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -1,7 +1,6 @@ ## OpenEmbedded and Yocto -This page provides instructions to get started with OpenEmbedded and the Yocto Project. It aims at being generic for any board support. -The board diversity should be addressed through dedicated BSP layer then MACHINE choice. +This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c and HiKey. # Introduction @@ -12,12 +11,15 @@ This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are no In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. -The support for any board is available in the dedicated BSP Layers. These layers have been tested with OpenEmbedded Core layer, and are expected to work with any other standard layers and of course any OpenEmbedded based distributions. +The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). + +The support for HiKey is available in the [meta-96boards BSP layer](https://github.com/96boards/meta-96boards). + +These layers have been tested with OpenEmbedded Core layer, and are expected to work with any other standard layers and of course any OpenEmbedded based distributions. The Linux kernel used for these boards is the Reference Platform Kernel (RPK). The graphic stack is based on mesa: * using the freedreno driver for Dragonboard 410c * using the ARM Mali Utgard GPU driver for HiKey -* using the ARM Mali 400 GPU driver for B2260 ## OE Layers @@ -30,9 +32,8 @@ The Linux kernel used for these boards is the Reference Platform Kernel (RPK). T | meta-qt5 | This is a cross-platform toolkit. | | meta-linaro | This layer is used to get the Linaro toolchain. | | meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | -| [meta-96boards BSP layer](https://github.com/96boards/meta-96boards) | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer Edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | -| [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | -| [meta-st-cannes2 BSP Layer](https://github.com/cpriouzeau/meta-st-cannes2) | This is the board support layer for ST B2260 board. | +| meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer Edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | # Package Dependencies From df704879f0335f8c7c823f1d0fb5c0cbb86fe386 Mon Sep 17 00:00:00 2001 From: bernard puel Date: Tue, 13 Dec 2016 14:37:30 +0100 Subject: [PATCH 155/268] Updated OE.md to render more generic --- Reference-Platform/CECommon/OE.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index 990b4ae..045eb01 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -1,6 +1,7 @@ ## OpenEmbedded and Yocto -This page provides instructions to get started with OpenEmbedded and the Yocto Project on the DragonBoard 410c and HiKey. +This page provides instructions to get started with OpenEmbedded and the Yocto Project. It tries (when possible) to be generic for any board supported. +The board diversity should be addressed through dedicated BSP layer then MACHINE choice. # Introduction @@ -11,15 +12,12 @@ This wiki is not an introduction on OpenEmbedded or Yocto Project. If you are no In this wiki, we assume that the reader is familiar with basic concepts of OpenEmbedded. -The support for DragonBoard 410c is available in the [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom). - -The support for HiKey is available in the [meta-96boards BSP layer](https://github.com/96boards/meta-96boards). - -These layers have been tested with OpenEmbedded Core layer, and are expected to work with any other standard layers and of course any OpenEmbedded based distributions. +The support for a dedicated board is available in the dedicated BSP Layer. These layers have been tested with OpenEmbedded Core layer, and are expected to work with any other standard layers and of course any OpenEmbedded based distributions. The Linux kernel used for these boards is the Reference Platform Kernel (RPK). The graphic stack is based on mesa: * using the freedreno driver for Dragonboard 410c * using the ARM Mali Utgard GPU driver for HiKey +* using the ARM Mali 400 GPU driver for B2260 ## OE Layers @@ -32,8 +30,9 @@ The Linux kernel used for these boards is the Reference Platform Kernel (RPK). T | meta-qt5 | This is a cross-platform toolkit. | | meta-linaro | This layer is used to get the Linaro toolchain. | | meta-linaro-backports | This is an experimental layer used to get newer versions into the build which were not part of the release. | -| meta-96Boards | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer Edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | -| meta-qcom (BSP) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | +| [meta-96boards BSP layer](https://github.com/96boards/meta-96boards) | This support layer is managed by Linaro and intended for boards that do not have their own board support layer. Currently used for the HiKey Consumer Edition board, and eventually the Bubblegum-96 board. If a vendor does not support their own layer, it can be added to this layer. | +| [meta-qcom BSP layer](http://git.yoctoproject.org/cgit/cgit.cgi/meta-qcom) | This is the board support layer for Qualcomm boards. Currently supports IFC6410 and the DragonBoard 410c. | +| [meta-st-cannes2 BSP Layer](https://github.com/cpriouzeau/meta-st-cannes2) | This is the board support layer for ST B2260 board. | # Package Dependencies From ce6f96466d64a6251a2c883b79de03a6259a6e92 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 09:07:08 -0800 Subject: [PATCH 156/268] Added .md files for each platform description Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Consumer.md | 14 ++++++++++++++ Reference-Platform/Platforms/Enterprise.md | 15 +++++++++++++++ Reference-Platform/Platforms/IoT.md | 12 ++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 Reference-Platform/Platforms/Consumer.md create mode 100644 Reference-Platform/Platforms/Enterprise.md create mode 100644 Reference-Platform/Platforms/IoT.md diff --git a/Reference-Platform/Platforms/Consumer.md b/Reference-Platform/Platforms/Consumer.md new file mode 100644 index 0000000..38790c4 --- /dev/null +++ b/Reference-Platform/Platforms/Consumer.md @@ -0,0 +1,14 @@ +# Consumer Reference Platform + +The consumer reference platform aims to enable the latest software on a series of embedded hardware platforms. Open source boot firmware and a unified Linux kernel delivers an excellent starting point for your next embedded product. High level components such as ROS, and a standard GPIO library are included to help accelerate robotic enthusiasts and makers. The consumer software stack provides two builds based on Debian and OpenEmbedded. A graphic user interface is included for each variant, and both are validated to ensure quality and a great user experience. + +**Features:** + +- Unified Linux Kernel +- Open Boot Firmware +- Debian and OpenEmbedded Builds +- Desktop Enviroment +- ROS (Robot OS) +- Standard GPIO Library + +*** diff --git a/Reference-Platform/Platforms/Enterprise.md b/Reference-Platform/Platforms/Enterprise.md new file mode 100644 index 0000000..4eb5e5e --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise.md @@ -0,0 +1,15 @@ +# Enterprise Reference Platform + +The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. + +**Features:** + +- Unified Linux Kernel +- Open Boot Firmware + - Compliant with ARM SBSA and SBBR specifications +- Debian and Centos Network Installers +- Openstack and Ceph Reference Deployments +- Built for Big Data Workloads + +*** + diff --git a/Reference-Platform/Platforms/IoT.md b/Reference-Platform/Platforms/IoT.md new file mode 100644 index 0000000..deba881 --- /dev/null +++ b/Reference-Platform/Platforms/IoT.md @@ -0,0 +1,12 @@ +# IoT Reference Platform + +The IoT reference platform’s goal is to provide an end to end open source secure pipeline from gateway devices to endpoints. For the deeply embedded use cases, a Zephyr RTOS baseline is provided to enable a series of hardware platforms, which ships with a rich developer SDK. The gateway is a variant of the Consumer reference platform based on Debian, leveraging the latest in cloud and container technology. Secure updates are not a mere afterthought, instead this software stack has been designed with security and maintainability in mind from day one. + +**Features:** + +- Zephyr RTOS with SDK for endpoints +- Open Boot Firmware for endpoints +- Debian builds for gateways +- Secure update pipeline for all devices + +*** From cff14c3e15fc1c7d1720f36cb429e509d6d3c181 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 16:20:06 -0800 Subject: [PATCH 157/268] Added base content for page - first draft Signed-off-by: Robert Wolff --- .../Enterprise/Installation/README.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index e69de29..d513ad8 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -0,0 +1,47 @@ +# Installation + +This page offers generic installation instructions for the Enterprise Reference Platform on supported hardware. A list of approved hardware can be found in the ["Approved Hardware"](../Hardware/README.md) section of this documentation set. + +*** + +## Step 1: Upgrade firmware to latest version + + + + + + + + +
UEFI/EDK2 + Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2
+ +*** + +## Step 2: Set up PXE on your network + +- Debian: https://wiki.debian.org/PXEBootInstall +- Centos: https://wiki.centos.org/HowTos/NetworkInstallServer + +*** + +## Step 3: Use a PXE to boot a network installer + +Choose your network installer, download or build, and proceed to the installation instructions + +**Network Installers:** + + + + + + + + + + + + +
CentosDownloadInstall
Debian JessieDownloadInstall
+ +*** From 59a4a7b425b89860b5d56a336f4eb7a94e7e2947 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 16:41:10 -0800 Subject: [PATCH 158/268] format change Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/README.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index d513ad8..e6595a3 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -20,8 +20,16 @@ This page offers generic installation instructions for the Enterprise Reference ## Step 2: Set up PXE on your network -- Debian: https://wiki.debian.org/PXEBootInstall -- Centos: https://wiki.centos.org/HowTos/NetworkInstallServer + + + + + + + +
Centos + https://wiki.centos.org/HowTos/NetworkInstallServer
Debian + https://wiki.debian.org/PXEBootInstall
*** @@ -33,12 +41,12 @@ Choose your network installer, download or build, and proceed to the installatio - + - + From e7164e8ad46e59cacdbdeb6289b675676652b432 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:05:15 -0800 Subject: [PATCH 159/268] Added release notes Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 8095c6f..7a44a9d 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -17,5 +17,6 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is #### Resources +- [Release Note](ReleaseNotes.md) - [Previous Releases](PreviousReleases/README.md) - [Document Contribution Policy](../../../ContributionPolicy.md) From c8fb43fbf7eeee3f7e9495277a2e7a00fa11af57 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:05:34 -0800 Subject: [PATCH 160/268] Typo fix Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 7a44a9d..e7b062b 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -17,6 +17,6 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is #### Resources -- [Release Note](ReleaseNotes.md) +- [Release Notes](ReleaseNotes.md) - [Previous Releases](PreviousReleases/README.md) - [Document Contribution Policy](../../../ContributionPolicy.md) From 8c372ba06f45467fad0d0c750d8dbbf302f11137 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:09:24 -0800 Subject: [PATCH 161/268] Added lower relative links Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/GettingStarted/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md index 9bcc90e..6c38615 100644 --- a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md +++ b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md @@ -17,3 +17,11 @@ The enterprise reference platform is targeted to accelerate the high powered ARM *** +## Jump to... + +- [Approved Hardware](../Hardware/README.md) + - This is a list of all tested and approved Enterprise Reference Platform hardware +- [Installation](../Installation/README.md) + - From start to finish, set up your environment and install the Enterprise Reference Platform +- [Support](../Support/README.md) + - Bug reports and current issues, forum access and other useful resources. We want to help you find answers From 1c70f0382c7482d1b02066df004dc15435b3489c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:21:30 -0800 Subject: [PATCH 162/268] Added list of hardware Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Hardware/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Hardware/README.md diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Hardware/README.md new file mode 100644 index 0000000..e7e2d0d --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Hardware/README.md @@ -0,0 +1,12 @@ +# Approved Hardware + +List of approved hardware, ideal for testing the Enterprise Reference Platform. + +- [AMD Overdrive]() +- [LeMaker Cello]() +- [HiSilicon D03]() +- [HiSilicon D05]() +- [APM X-Gene Mustang]() +- [HP Proliant m400]() +- [Qualcomm Q2432]() +- [Cavium Thunder X]() From 26ef3bc165b0c50590e91334bb0f7486039a473d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:22:25 -0800 Subject: [PATCH 163/268] Added installation link at the bottom Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Hardware/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Hardware/README.md index e7e2d0d..bf9c422 100644 --- a/Reference-Platform/Platforms/Enterprise/Hardware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Hardware/README.md @@ -10,3 +10,5 @@ List of approved hardware, ideal for testing the Enterprise Reference Platform. - [HP Proliant m400]() - [Qualcomm Q2432]() - [Cavium Thunder X]() + +Proceed to [Installation](../Installation/README.md) page. From f29a640853136c43a061458bbb3ca63c98d5945d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:27:55 -0800 Subject: [PATCH 164/268] Added content Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Support/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Support/README.md b/Reference-Platform/Platforms/Enterprise/Support/README.md index e69de29..931e61e 100644 --- a/Reference-Platform/Platforms/Enterprise/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Support/README.md @@ -0,0 +1,10 @@ +# Support + +Please take advantage of the many Enterprise Reference Platform resources available to you Linaro and third parties. + +- [Release Note](../ReleaseNotes.md) + - Current release notes for the Enterprise Reference Platform. Includes release notes and known issues. +- [Enterprise Forum](http://www.96boards.org/forums/forum/products/dragonboard410c/) + - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. +- [Report a bug!](../../../Extras/Report_a_bug.md) + - Instructions on how to report bugs for any of our 96Boards hardware and software, this includes the DragonBoard 410c! From 6133d1988a0cfa189679a97562b9adfe0d8dc4f0 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:30:33 -0800 Subject: [PATCH 165/268] Changed description to Report a bug Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Support/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Support/README.md b/Reference-Platform/Platforms/Enterprise/Support/README.md index 931e61e..cccc8b2 100644 --- a/Reference-Platform/Platforms/Enterprise/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Support/README.md @@ -7,4 +7,4 @@ Please take advantage of the many Enterprise Reference Platform resources availa - [Enterprise Forum](http://www.96boards.org/forums/forum/products/dragonboard410c/) - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. - [Report a bug!](../../../Extras/Report_a_bug.md) - - Instructions on how to report bugs for any of our 96Boards hardware and software, this includes the DragonBoard 410c! + - Instructions on how to report Enterprise Reference Platform bugs From dedaca37b95c9fac1379ba53f5db231c0613ca28 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:31:45 -0800 Subject: [PATCH 166/268] Added page Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/ReleaseNotes.md diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md new file mode 100644 index 0000000..b1b33e3 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -0,0 +1,3 @@ +# 16.12 Release Notes - Eneterprise Reference Platform + +< Add when ready here > From 5725019e19af9d274ac0b2b4847b88fc187dd733 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:32:11 -0800 Subject: [PATCH 167/268] Typo fix Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index b1b33e3..3ed5f25 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -1,3 +1,3 @@ -# 16.12 Release Notes - Eneterprise Reference Platform +# 16.12 Release Notes - Enterprise Reference Platform < Add when ready here > From 15cafea595dff821fd64ecac21f73480eef7b51a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:35:07 -0800 Subject: [PATCH 168/268] Removed Downloads for now Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index e7b062b..8b6d408 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -8,8 +8,6 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is - Learn more about the Enterprise Reference Platform, this is an ideal place to start. - [Installation](Installation/README.md) - Installation and build instructions for a variety of your Reference Platform components -- [Downloads](Downloads/README.md) - - Skip straight to your pre-built Reference Platform downloads - [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From 8dd9ff0e9275fb1a8876fceda521af406dc682d9 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:35:38 -0800 Subject: [PATCH 169/268] Removed CE material Signed-off-by: Robert Wolff --- .../Enterprise/PreviousReleases/RPB_15.12/README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/README.md b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/README.md index 25ef139..86bbe02 100644 --- a/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/README.md +++ b/Reference-Platform/Platforms/Enterprise/PreviousReleases/RPB_15.12/README.md @@ -4,10 +4,5 @@ ## Choose your Hardware -#### Consumer Edition -- [HiKey](ConsumerEdition/HiKey/README.md) -- [DragonBoard™ 410c](ConsumerEdition/DragonBoard-410c/README.md) - -#### Enterprise Edition - [D02](EnterpriseEdition/D02/README.md) - [Overdrive](EnterpriseEdition/Overdrive/README.md) From de150d24b28be840363de904b8589132f5a3593a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:45:13 -0800 Subject: [PATCH 170/268] Added links, these are probably not right... Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Hardware/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Hardware/README.md index bf9c422..59e006e 100644 --- a/Reference-Platform/Platforms/Enterprise/Hardware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Hardware/README.md @@ -2,13 +2,13 @@ List of approved hardware, ideal for testing the Enterprise Reference Platform. -- [AMD Overdrive]() -- [LeMaker Cello]() -- [HiSilicon D03]() -- [HiSilicon D05]() -- [APM X-Gene Mustang]() -- [HP Proliant m400]() +- [AMD Overdrive](http://www.amd.com/en-us/innovations/software-technologies/technologies-gaming/over-drive) +- [LeMaker Cello](http://www.lenovator.com/product/103.html) +- [HiSilicon D03](http://open-estuary.org/d03/) +- [HiSilicon D05](http://open-estuary.org/d05/) +- [APM X-Gene Mustang](https://www.apm.com/products/data-center/x-gene-family/x-gene/) +- [HP Proliant m400](https://www.cdw.com/shop/products/HPE-ProLiant-m400-X-Gene-2.4-GHz-64-GB-0-GB/3516636.aspx) - [Qualcomm Q2432]() -- [Cavium Thunder X]() +- [Cavium Thunder X](http://www.cavium.com/ThunderX_ARM_Processors.html) Proceed to [Installation](../Installation/README.md) page. From 0a0a3349c15e6123a81702c5e4e5c5d2bf8bf226 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:46:30 -0800 Subject: [PATCH 171/268] Typo fix Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/GettingStarted/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md index 6c38615..8f6735a 100644 --- a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md +++ b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md @@ -4,7 +4,7 @@ This page is designed to bring you up to speed with the Enterprise Reference Pla ## Introduction -The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. +The Enterprise Reference Platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. **Features:** From 74a7e334a4de636f6d30a5ca4d26b9657fa9c7ca Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:47:38 -0800 Subject: [PATCH 172/268] Added Content Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Firmware/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md new file mode 100644 index 0000000..d5eaa2e --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md @@ -0,0 +1,11 @@ +## UEFI/EDK2 + +EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. + +The reference UEFI/EDK2 tree used by the EE-RPB comes directly from [upstream](https://github.com/tianocore/edk2), based on a specific commit that gets validated and published as part of the Linaro EDK2 effort (which is available at [https://git.linaro.org/uefi/linaro-edk2.git](https://git.linaro.org/uefi/linaro-edk2.git)). + +Since there is no hardware specific support as part of EDK2 upstream, an external module called [OpenPlatformPkg](https://git.linaro.org/uefi/OpenPlatformPkg.git) is also required as part of the build process. + +EDK2 is currently used by 96boards LeMaker Cello, AMD Overdrive, ARM Juno r0/r1/r2, HiSilicon D02 and HiSilicon D03. + +This guide provides enough information on how to build UEFI/EDK2 from scratch, but meant to be a quick guide. For further information please also check the official Linaro UEFI documentation, available at [https://wiki.linaro.org/ARM/UEFI](https://wiki.linaro.org/ARM/UEFI) and [https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build](https://wiki.linaro.org/LEG/Engineering/Kernel/UEFI/build) From 585ba91c7f0c6ea798f343e6b7d2a466f5ba3baf Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:49:16 -0800 Subject: [PATCH 173/268] Added Content Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Firmware/Build.md | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md new file mode 100644 index 0000000..8ccde87 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md @@ -0,0 +1,135 @@ +# Build + +## Pre-Requisites + +Make sure the build dependencies are available at your host machine. + +On Debian/Ubuntu: + +```shell +sudo apt-get install uuid-dev build-essential aisle +``` + +On RHEL/CentOS/Fedora: + +```shell +sudo yum install uuid-devel libuuid-devel aisle +``` + +Also make sure you have the right 'acpica-unix' version at your host system. The current one required by the 16.03/16.06 releases is 20150930, and you can find the packages (debian) at the 'linaro-overlay': + +```shell +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpica-tools_20150930-1.linarojessie.1_amd64.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/acpidump_20150930-1.linarojessie.1_all.deb +wget http://repo.linaro.org/ubuntu/linaro-overlay/pool/main/a/acpica-unix/iasl_20150930-1.linarojessie.1_all.deb +sudo dpkg -i --force-all *.deb +``` + +If cross compiling, you also need to separately add the required toolchains. Ubuntu has a prebuilt arm-linux-gnueabihf toolchain, but not an aarch64-linux-gnu one. + +Download Linaro's GCC 4.9 cross-toolchain for Aarch64, and make it available in your 'PATH'. You can download and use the Linaro GCC binary (Linaro GCC 4.9-2015.02), available at [http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz](http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz) + +```shell +mkdir arm-tc arm64-tc +tar --strip-components=1 -C ${PWD}/arm-tc -xf gcc-linaro-arm-linux-gnueabihf-4.9-*_linux.tar.xz +tar --strip-components=1 -C ${PWD}/arm64-tc -xf gcc-linaro-aarch64-linux-gnu-4.9-*_linux.tar.xz +export PATH="${PWD}/arm-tc/bin:${PWD}/arm64-tc/bin:$PATH" +``` + +## Getting the source code + +UEFI/EDK2: + +```shell +git clone https://github.com/tianocore/edk2.git +git clone https://git.linaro.org/uefi/OpenPlatformPkg.git +cd edk2 +git checkout -b stable-baseline 469e1e1e4203b5d369fdce790883cb0aa035a744 # revision provided by https://git.linaro.org/uefi/linaro-edk2.git +ln -s ../OpenPlatformPkg +``` + +ARM Trusted Firmware (in case it is supported by your target hardware, only used by Juno at this point): + +```shell +git clone https://github.com/ARM-software/arm-trusted-firmware.git +cd arm-trusted-firmware +git checkout -b stable-baseline v1.2 # suggested latest stable release +``` + +UEFI Tools (helpers and scripts to make the build process easy): + +```shell +git clone git://git.linaro.org/uefi/uefi-tools.git +``` + +## Building UEFI/EDK2 for Juno R0/R1 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +export ARMTF_DIR=${PWD}/arm-trusted-firmware +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno +``` + +The output files: + +- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` +- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` + +## Building UEFI/EDK2 for D02 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d02 +``` + +The output file: + +- `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` + +## Building UEFI/EDK2 for D03 + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG d03 +``` + +The output file: + +- `Build/D03/DEBUG_GCC49/FV/D03.fd` + +## Building UEFI/EDK2 for Overdrive + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG overdrive +``` + +The output file: + +- `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` + +## Building UEFI/EDK2 for HuskyBoard / Cello + +```shell +export AARCH64_TOOLCHAIN=GCC49 +export LINARO_EDK2_DIR=${PWD}/edk2 +export UEFI_TOOLS_DIR=${PWD}/uefi-tools +cd ${LINARO_EDK2_DIR} +${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello +``` + +The output file: + +- `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` From e17972823332a69c1514599ee28daa16092ff4fb Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:51:28 -0800 Subject: [PATCH 174/268] Added Content Signed-off-by: Robert Wolff --- .../Installation/Firmware/Install.md | 208 ++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md new file mode 100644 index 0000000..27492c8 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -0,0 +1,208 @@ +# Install + +## Juno R0/R1 + +### Clean flash + +Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: + +```shell +Cmd> flash +Flash> eraseall +Flash> quit +Cmd> usb_on +``` + +This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. + +In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: + +```shell +git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git +``` + +Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE +``` + +Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): + +```shell +cp -rf vexpress-firmware/* /media/recovery +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. + +##### Upgrading UEFI/EDK2 + +If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). + +Export Juno's MMC as a usb storage device on your host machine: + +```shell +Cmd> usb_on +``` + +Then just copy over the UEFI/EDK2 files that were built in the previous steps: + +```shell +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE +cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE +``` + +Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: + +```shell +sync +``` + +Then just power cycle the Juno and the board should see and use the new firmware. + +*** + +## D02 + +Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +### Clean flash + +First make sure the built firmware is available in your FTP server ('PV660D02.fd'): + +```shell +cp PV660D02.fd /srv/tftp/ +``` + +Now follow the steps below in order to fetch and flash the new firmware: + +1. Power off the board and unplug the power supply. +2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) + - The board has two SPI flash chips, and this switch selects which one to boot from. +3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell +4. Push the dial switch **3. CPU0_SPI_SEL** to **on** + - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). +5. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master' like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +6. Exit the EBL console and reboot the board + +### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +*** + +## D03 + +Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. + +### Clean flash + +To do a clean flash you will require access to the board's BMC. + +1. Make sure the board's BMC port is connected, and with a known IP address. +2. Login the BMC website, The username/passwd is root/Huawei12#$. Go to "System", "Firmware Upgrade", and "Browse" to select the UEFI file in hpm format. (Please contact support@open-estuary.org to get the hpm file). +3. Pull out the power cable to power off the board. Find the pin named "COM_SW" at J44. Then connect it with jump cap. +4. Power on the board and connect to the board's serial port. When the screen display message "You are trying to access a restricted zone. Only Authorized Users allowed.", type "Enter", input username/passwd (username/passwd is root/Huawei12#$). +5. After you login the BMC interface which start with "iBMC:/->", use command "ifconfig" to see the modified BMC IP. When you get the board's BMC IP, please visit the BMC website by "https://BMC IP ADDRESS/". +6. Go to "Start Update" (Do not power off during this period). +7. After updating the UEFI firmware, reboot the board to enter UEFI menu. + +### Upgrading firmware + +There are 2 options for updating the firmware, first via network and the second via USB storage. + +Network upgrade: + +1. Make sure the built firmware is available in your FTP server ('D03.fd') +2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' +3. Download and flash the firmware file from the FTP server: +'biosupdate -u -p -f master', like +'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f D03.fd master' +4. Exit the EBL console and reboot the board + +USB storage upgrade: +- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): +'newbios fs1:\' + +On EBL fs1 is for USB first partition, while fs0 the ramdisk. + +*** + +## AMD Overdrive / HuskyBoard / Cello + +### Clean flash + +#### DediProg SF100 + +Use [DediProg SF100](http://www.dediprog.com/pd/spi-flash-solution/sf100) to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +The Dediprog flashing tool is also available for Linux, please check for [https://github.com/DediProgSW/SF100Linux](https://github.com/DediProgSW/SF100Linux) for build and use instructions. + +First unplug the power cord before flashing the new firmware, then erase the SPI flash memory: + +```shell +dpcmd --type MX25L12835F -e +``` + +Now just flash the new firmware: + +```shell +dpcmd --type MX25L12835F -p FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +#### SPI Hook + +Use [SPI Hook](http://www.tincantools.com/SPI_Hook.html) and _flashrom_ to flash the firmware via SPI, by plugging the programming unit into the Overdrive/Husky/Cello board 2x4 pin header (labeled SCP SPI J5 on Overdrive). + +In order to use SPI Hook, make sure _flashrom_ is recent enough. This utility is used to identify, read, write, verify and erase flash chips. You can find the _flashrom_ package in most Linux distributions, but make sure the version at least v.0.9.8. If older, please just build latest from source, by going to [flashrom Downloads](https://www.flashrom.org/Downloads) + +Depending on the size of the firmware image, flashrom might not be able to flash as it will complain that the size of the image is not a perfect match for the size of the SPI (partial flash only supported via the use of layouts). One easy way is just appending 0s at the end of the file, until it got the right size. + +Example for the 4.5M based firmware: + +```shell +dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc +``` + +Connect the SPI cable, unplug the power cord and flash SPI: + +```shell +sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L12845E/MX25L12865E" -w FIRMWARE.rom +``` + +Then just power cycle the board, and it should boot with the new firmware. + +### Upgrading firmware + +There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. + +# Links and References: + +- [ARM - Using Linaro's deliverables on Juno](https://community.arm.com/docs/DOC-10804) +- [ARM - FAQ: General troubleshooting on the Juno](https://community.arm.com/docs/DOC-8396) From 3aa1a8633bcb23396557da14fd955f158a3a5d00 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:53:28 -0800 Subject: [PATCH 175/268] Added relative link at bottom to install page Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Firmware/Build.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md index 8ccde87..a27c172 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md @@ -133,3 +133,7 @@ ${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG cello The output file: - `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` + +*** + +Proceed to [Installation](Install.md) page From a6df4307447fb7927494ea452a8543f9cdcdc15e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:55:18 -0800 Subject: [PATCH 176/268] Small format fix Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Firmware/Install.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md index 27492c8..0999ebd 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -42,7 +42,7 @@ sync Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. -##### Upgrading UEFI/EDK2 +### Upgrade Firmware If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). @@ -94,7 +94,7 @@ Now follow the steps below in order to fetch and flash the new firmware: 'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' 6. Exit the EBL console and reboot the board -### Upgrading firmware +### Upgrade Firmware There are 2 options for updating the firmware, first via network and the second via USB storage. @@ -131,7 +131,7 @@ To do a clean flash you will require access to the board's BMC. 6. Go to "Start Update" (Do not power off during this period). 7. After updating the UEFI firmware, reboot the board to enter UEFI menu. -### Upgrading firmware +### Upgrade Firmware There are 2 options for updating the firmware, first via network and the second via USB storage. @@ -198,7 +198,7 @@ sudo flashrom -p ft2232_spi:type=2232h,port=A,divisor=2 -c "MX25L12835F/MX25L128 Then just power cycle the board, and it should boot with the new firmware. -### Upgrading firmware +### Upgrade Firmware There is currently no easy way to update just the UEFI/EDK2 firmware, so please follow the clean flash process instead. From 55410d48b900f567fe64b9b89bb7d7ab80f43129 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:57:23 -0800 Subject: [PATCH 177/268] Added installation links for each board Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Firmware/Build.md | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md index a27c172..0e6c0f4 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md @@ -78,6 +78,10 @@ The output files: - `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` - `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` +### Proceed to [Installation](Install.md) page + +*** + ## Building UEFI/EDK2 for D02 ```shell @@ -92,6 +96,10 @@ The output file: - `Build/Pv660D02/DEBUG_GCC49/FV/PV660D02.fd` +### Proceed to [Installation](Install.md) page + +*** + ## Building UEFI/EDK2 for D03 ```shell @@ -106,6 +114,10 @@ The output file: - `Build/D03/DEBUG_GCC49/FV/D03.fd` +### Proceed to [Installation](Install.md) page + +*** + ## Building UEFI/EDK2 for Overdrive ```shell @@ -120,6 +132,10 @@ The output file: - `Build/Overdrive/DEBUG_GCC49/FV/STYX_ROM.fd` +### Proceed to [Installation](Install.md) page + +*** + ## Building UEFI/EDK2 for HuskyBoard / Cello ```shell @@ -134,6 +150,6 @@ The output file: - `Build/Cello/DEBUG_GCC49/FV/STYX_ROM.fd` -*** +### Proceed to [Installation](Install.md) page -Proceed to [Installation](Install.md) page +*** From 14286a4718bab273492e761c4dd4495324ff1212 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 17:59:14 -0800 Subject: [PATCH 178/268] Added Content Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Centos/README.md | 216 ++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Centos/README.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Centos/README.md b/Reference-Platform/Platforms/Enterprise/Installation/Centos/README.md new file mode 100644 index 0000000..dbd12bd --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Centos/README.md @@ -0,0 +1,216 @@ +## Installing CentOS 7 - Reference Platform Enterprise + +This guide is not to be a replacement of the official CentOS Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64](https://wiki.centos.org/SpecialInterestGroup/AltArch/AArch64) + +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required CentOS 7 installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Downloading required Grub 2 UEFI files: + +```shell +sudo su - +cd /srv/tftp/ +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/BOOTAA64.EFI +wget http://mirror.centos.org/altarch/7/os/aarch64/EFI/BOOT/grubaa64.efi +``` + +#### Downloading the CentOS 7 Reference Platform installer (e.g. 16.06 release): + +```shell +mkdir /srv/tftp/centos7 +cd /srv/tftp/centos7 +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/images/pxeboot/vmlinuz +wget https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/images/pxeboot/initrd.img +``` + +Creating the Grub 2 config file (`grub.cfg`): + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/ inst.repo=http://mirror.centos.org/altarch/7/os/aarch64/ inst.ks=file:/ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +**Note:** `inst.ks` is required because of the additional linaro-overlay repository (which contains the reference platform kernel rpm package), which is available inside the `initrd.img`. The `inst.ks` contains only one line, which is used by the installer to fetch and install the right kernel package. The content: `repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/`. + +Also check the [RHEL 7](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/chap-anaconda-boot-options.html) and the [anaconda documentation](https://rhinstaller.github.io/anaconda/boot-options.html) for additional boot options. One example is using **ip=eth1:dhcp** if you want to use the second network interface as default. + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── BOOTAA64.EFI +├── centos7 +│   ├── initrd.img +│   └── vmlinuz +├── grubaa64.efi +└── grub.cfg +``` + +Now just make sure that @/etc/dnsmasq.conf@ is pointing out to the right boot file, like: + +```shell +dhcp-boot=BOOTAA64.EFI +``` + +### Booting the installer + +Now boot your platform of choice, selecting PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 15:14:55, Feb 9 2016 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000e80000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 15:18:14 on Feb 9 2016) +Version 2.17.1249. Copyright (C) 2016 American Megatrends, Inc. +BIOS Date: 02/09/2016 15:15:23 Ver: ROD1001A00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install CentOS 7 ARM 64-bit - Reference Platform +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install CentOS 7. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.000000] Booting Linux on physical CPU 0x0 +[ 0.000000] Initializing cgroup subsys cpuset +[ 0.000000] Initializing cgroup subsys cpu +[ 0.000000] Initializing cgroup subsys cpuacct +[ 0.000000] Linux version 4.4.0-reference.104.aarch64 (buildslave@r2-a19) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Tue Mar 1 20:52:15 UTC 2016 +[ 0.000000] Boot CPU: AArch64 Processor [411fd072] +[ 0.000000] efi: Getting EFI parameters from FDT: +[ 0.000000] EFI v2.40 by American Megatrends +[ 0.000000] efi: ACPI 2.0=0x83ff1c3000 SMBIOS 3.0=0x83ff347798 +... +Welcome to CentOS Linux 7 (AltArch) dracut-033-359.el7 (Initramfs)! +... +dracut-initqueue[610]: RTNETLINK answers: File exists +dracut-initqueue[610]: % Total % Received % Xferd Average Speed Time Time Time Current +dracut-initqueue[610]: Dload Upload Total Spent Left Speed +100 287 100 287 0 0 390 0 --:--:-- --:--:-- --:--:-- 389:--:-- --:--:-- 0 +... +Welcome to CentOS Linux 7 (AltArch)! +... +Starting installer, one moment... +anaconda 21.48.22.56-1 for CentOS Linux AltArch 7 started. + * installation log files are stored in /tmp during the installation + * shell is available on TTY2 + * if the graphical installation interface fails to start, try again with the + inst.text bootoption to start text installation + * when reporting a bug add logs from /tmp as separate text/plain attachments +21:06:29 X startup failed, falling back to text mode +================================================================================ +================================================================================ +VNC +. +X was unable to start on your machine. Would you like to start VNC to connect t +o this computer from another computer and perform a graphical installation or co +ntinue with a text mode installation? +. + 1) Start VNC +. + 2) Use text mode +. + Please make your choice from above ['q' to quit | 'c' to continue | + 'r' to refresh]: 2 +[anaconda] 1:main* 2:shell 3:log 4:storage-log 5:program-log +``` + +For the text mode installer, just enter `2` and follow the instructions available in the console. + +Menu items without that are not `[x]` must be set. Enter the menu number associated with the menu in order to configure it. + +### Finishing the installation + +After selecting the install destination, partitioning scheme, root password and users (optional), just enter `b` to proceed with the installation. + +Once the installation is completed, you should be able to simply reboot the system in order to boot into your new CentOS 7 system. + +### Automating the installation with kickstart + +It is possible to fully automate the installer by providing a file called kickstart. The kickstart file is a plain text file, containing keywords that serve as directions for the installation. Check the RHEL 7 [kickstart guide](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-howto.html) for further information about how to create your own kickstart file. + +Kickstart example: + +```shell +cmdline +url --url="http://mirror.centos.org/altarch/7/os/aarch64/" +repo --name="CentOS" --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ +repo --name="Updates" --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ +repo --name="linaro-overlay" --baseurl=http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo/ +lang en_US.UTF-8 +keyboard us +timezone --utc Etc/UTC +auth --useshadow --passalgo=sha512 +rootpw --lock --iscrypted locked +firewall --disabled +firstboot --disabled +selinux --disabled +reboot +network --bootproto=dhcp --device=eth0 --activate --onboot=on +ignoredisk --only-use=sda +bootloader --location=mbr +clearpart --drives=sda --all --initlabel +part /boot/efi --fstype=efi --grow --maxsize=200 --size=20 +part /boot --fstype=ext4 --size=512 +part / --fstype=ext4 --size=10240 --grow +part swap --size=4000 +%packages +wget +net-tools +chrony +%end +%post +useradd -m -U -G wheel linaro +echo linaro | passwd linaro --stdin +%end +``` + +#### Setting up grub.cfg + +Now back to your tftp server, change the original grub.cfg file adding the location of your kickstart file: + +```shell +menuentry 'Install CentOS 7 ARM 64-bit - Reference Platform' --class red --class gnu-linux --class gnu --class os { + linux (tftp)/centos7/vmlinuz ip=dhcp inst.stage2=https://builds.96boards.org/releases/reference-platform/components/centos-installer/16.06/ inst.ks=http://people.linaro.org/~ricardo.salveti/centos-ks.cfg + initrd (tftp)/centos7/initrd.img +} +``` + +In case your system contains more than one network interface, also make sure to add the one to be used via the `ip` argument, like `ip=eth0:dhcp`. + +#### Booting the system + +Now just do a normal PXE boot, and anaconda should automatically load and use the kickstart file provided by grub.cfg. In case there is still a dialog that stops your installation that means not all the installer options are provided by your kickstart file. Get back to official documentation and try to find out what is the missing step. From e5771364ec624110b2b0b0afb40a2fd0bcaa8e8a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:00:03 -0800 Subject: [PATCH 179/268] Added content Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Debian/README.md | 342 ++++++++++++++++++ 1 file changed, 342 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Debian/README.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Debian/README.md b/Reference-Platform/Platforms/Enterprise/Installation/Debian/README.md new file mode 100644 index 0000000..c95ec87 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Debian/README.md @@ -0,0 +1,342 @@ +## Installing Debian "Jessie" 8.5 + +This guide is not to be a replacement of the official Debian Installer documentation, but instead be a quick walkthrough for the network installer. You can find the original documentation at [https://www.debian.org/releases/jessie/arm64/index.html.en](https://www.debian.org/releases/jessie/arm64/index.html.en) + +### Debian Installer + +The released debian-installer from Debian Jessie contains a kernel based on 3.16, which doesn't yet provide support for development boards used by the reference software project. For a complete enterprise experience (including support for tip-based kernel with ACPI support and additional platforms), we also build and publish a custom debian installer that incorporates a more recent kernel. + +Our custom installer changes nothing more than the kernel, and you can also find the instructions to build it from source at the end of this document. + +## Loading debian-installer from the network +### Setting up the TFTP server + +Back to your dnsmasq server (check [this link](../DHCP-TFTP-Server-UEFI.md) for instructions on how to setup your own TFTP/DCHP server), download the required Debian installer files at your tftp-root directory. In this example, this directory is configured to `/srv/tftp`. + +Since the kernel, initrd and GRUB 2 is part of the debian-installer tarball (`netboot.tar.gz`), that is the only file you will need to download and use. + +#### Downloading debian-installer: + +```shell +sudo su - +cd /srv/tftp/ +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.06/netboot.tar.gz +tar -zxvf netboot.tar.gz +``` + +You should now have the following file tree structure: + +```shell +/srv/tftp/ +├── debian-installer +│   └── arm64 +│   ├── bootnetaa64.efi +│   ├── grub +│   │   ├── arm64-efi +│   │   │   ├── acpi.mod +│   │   │   ├── adler32.mod +│   │   │   ├── all_video.mod +│   │   │   ├── archelp.mod +│   │   │   ├── bfs.mod +│   │   │   ├── bitmap.mod +│   │   │   ├── bitmap_scale.mod +│   │   │   ├── blocklist.mod +│   │   │   ├── boot.mod +│   │   │   ├── btrfs.mod +│   │   │   ├── bufio.mod +... +│   │   │   ├── xzio.mod +│   │   │   └── zfscrypt.mod +│   │   ├── font.pf2 +│   │   └── grub.cfg +│   ├── initrd.gz +│   └── linux +├── netboot.tar.gz +└── version.info +``` + +Now just make sure that `/etc/dnsmasq.conf` is pointing out to the right boot file, like: + +```shell +dhcp-boot=debian-installer/arm64/bootnetaa64.efi +``` +## Loading debian-installer from the minimal CD + +Together with the debian-installer netboot files, a minimal ISO is also provided containing the same installer, which can be loaded as normal boot disk media. + +Making a bootable SATA disk / USB stick / microSD card (attention to **/dev/sdX**, make sure that it is your target device first): + +``` +wget https://builds.96boards.org/releases/reference-platform/components/debian-installer/16.06/mini.iso +sudo cp mini.iso /dev/sdX +sync +``` + +Please refer to the [debian-manual](https://www.debian.org/releases/jessie/amd64/ch04s03.html.en) for a more complete guide on creating a CD, SATA disk, USB stick or micro SD with the minimal ISO. + +## Booting the installer + +If you are booting the installer from the network, simply select PXE boot when presented by UEFI (make sure to boot with the right network interface, in case more than one is available). In case you are booting with the minimal ISO via SATA / USB / microSD, simply select the right boot option in UEFI. + +You should see the following (using AMD Seattle's Overdrive as example): + +```shell +NOTICE: BL3-1: +NOTICE: BL3-1: Built : 18:22:46, Nov 23 2015 +INFO: BL3-1: Initializing runtime services +INFO: BL3-1: Preparing for EL3 exit to normal world +INFO: BL3-1: Next image address = 0x8000000000 +INFO: BL3-1: Next image spsr = 0x3c9 +Boot firmware (version built at 18:27:24 on Nov 23 2015) +Version 2.17.1249. Copyright (C) 2015 American Megatrends, Inc. +BIOS Date: 11/23/2015 18:23:09 Ver: ROD0085E00 +Press or to enter setup. +. +>>Checking Media Presence...... +>>Media Present...... +>>Start PXE over IPv4. + Station IP address is 192.168.3.57 + Server IP address is 192.168.3.1 + NBP filename is BOOTAA64.EFI + NBP filesize is 885736 Bytes +>>Checking Media Presence...... +>>Media Present...... + Downloading NBP file... + Succeed to download NBP file. + Fetching Netboot Image +``` + +At this stage you should be able to see the Grub 2 menu, like: + +```shell +Install +Advanced options ... +Install with speech synthesis +. +Use the and keys to change the selection. +Press 'e' to edit the selected item, or 'c' for a command prompt. +``` + +Now just hit enter and wait for the kernel and initrd to load, which automatically loads the installer and provides you the installer console menu, so you can finally install Debian. + +You should see the following: + +```shell +EFI stub: Booting Linux Kernel... +EFI stub: Using DTB from configuration table +EFI stub: Exiting boot services and installing virtual address map... +[ 0.355175] ACPI: IORT: Failed to get table, AE_NOT_FOUND +[ 0.763784] kvm [1]: error: no compatible GIC node found +[ 0.763818] kvm [1]: error initializing Hyp mode: -19 +[ 0.886298] Failed to find cpu0 device node +[ 0.947082] zswap: default zpool zbud not available +[ 0.951959] zswap: pool creation failed +Starting system log daemon: syslogd, klogd. +... + ┌───────────────────────┤ [!!] Select a language ├────────────────────────┐ + │ │ + │ Choose the language to be used for the installation process. The │ + │ selected language will also be the default language for the installed │ + │ system. │ + │ │ + │ Language: │ + │ │ + │ C │ + │ English │ + │ │ + │ │ + │ │ + └─────────────────────────────────────────────────────────────────────────┘ + moves; selects; activates buttons +``` + +### Finishing the installation + +For using the installer, please check the documentation available at [https://www.debian.org/releases/jessie/arm64/ch06.html.en](https://www.debian.org/releases/jessie/arm64/ch06.html.en) + +**NOTE - Cello Only:** In case your mac address is empty (e.g. early boards), you will be required to change your default network mac address in order to proceed with the network install. Please open a shell after booted the installer (the installer offers the shell option at the first menu), and change the mac address as described below. Once changed, simply proceed with the install process. + +``` +~ # ip link set dev enp1s0 address de:5e:60:e4:6b:1f +~ # exit +``` + +Once the installation is completed, you should be able to simply reboot the system in order to boot your new Debian system. + +**NOTE - Cello Only:** If you had to set a valid mac address during the installer, you will be required to also set the mac address in debian, after your first boot. Please change _/etc/network/interfaces_ and add your mac address again, like below: + +``` +root@debian:~# cat /etc/network/interfaces +... +allow-hotplug enp1s0 +iface enp1s0 inet dhcp + hwaddress ether de:5e:60:e4:6b:1f +``` + +### Automating the installation using preseeding + +Preseeding provides a way to set answers to questions asked during the installation process, without having to manually enter the answers while the installation is running. This makes it possible to fully automate the installation over network, when used together with the debian-installer. + +This document only provides a quick way for you to get started with preseeding. For the complete guide, please check the [Debian GNU/Linux Installation Guide](https://www.debian.org/releases/jessie/arm64/apb.html) and [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) + +**Note:** Since we require an external kernel to be installed during the install process, this is done via the `preseed/late_command` argument, so you if you decide to use that command as part of your preseed file, make sure to add the following as part of the multi-line command: + +```shell +d-i preseed/late_command string in-target apt-get install -y linux-image-reference-arm64; # here you can add 'in-target foobar' for additional commands +``` + +#### Creating the preseed file + +Check [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) for a wide list of options supported by the Debian Jessie installer. Your file needs to use a similar format, but customized for your own needs. + +Once created, make sure the file gets published into a network address that can be reachable from your target device. + +Preseed example (`preseed.cfg`): + +```shell +d-i debian-installer/locale string en_US +d-i keyboard-configuration/xkb-keymap select us +d-i netcfg/dhcp_timeout string 60 +d-i netcfg/get_hostname string unassigned-hostname +d-i netcfg/get_domain string unassigned-domain +d-i netcfg/hostname string debian +d-i mirror/country string manual +d-i mirror/http/hostname string httpredir.debian.org +d-i mirror/http/directory string /debian +d-i mirror/http/proxy string +d-i passwd/root-password password linaro123 +d-i passwd/root-password-again password linaro123 +d-i passwd/user-fullname string Linaro User +d-i passwd/username string linaro +d-i passwd/user-password password linaro +d-i passwd/user-password-again password linaro +d-i passwd/user-default-groups string audio cdrom video sudo +d-i time/zone string UTC +d-i clock-setup/ntp boolean true +d-i clock-setup/utc boolean true +d-i partman-auto/disk string /dev/sda +d-i partman-auto/method string regular +d-i partman-lvm/device_remove_lvm boolean true +d-i partman-md/device_remove_md boolean true +d-i partman-auto/choose_recipe select atomic +d-i partman/confirm_write_new_label boolean true +d-i partman/choose_partition select finish +d-i partman/confirm boolean true +d-i partman/confirm_nooverwrite boolean true +popularity-contest popularity-contest/participate boolean false +tasksel tasksel/first multiselect standard, web-server +d-i pkgsel/include string openssh-server build-essential ca-certificates sudo vim ntp +d-i pkgsel/upgrade select safe-upgrade +d-i finish-install/reboot_in_progress note +``` + +In this example, this content is also available at [http://people.linaro.org/~ricardo.salveti/preseed.cfg](http://people.linaro.org/~ricardo.salveti/preseed.cfg) + +#### Setting up grub.cfg + +Now back to your tftp server, change the original `grub.cfg` file adding the location of your preseed file: + +```shell +$ cat /srv/tftp/debian-installer/arm64/grub/grub.cfg +# Force grub to automatically load the first option +set default=0 +set timeout=1 +menuentry 'Install with preseeding' { + linux /debian-installer/arm64/linux auto=true priority=critical url=http://people.linaro.org/~ricardo.salveti/preseed.cfg --- + initrd /debian-installer/arm64/initrd.gz +} +``` + +The `auto` kernel parameter is an alias for `auto-install/enable` and setting it to `true` delays the locale and keyboard questions until after there has been a chance to preseed them, while `priority` is an alias for `debconf/priority` and setting it to `critical` stops any questions with a lower priority from being asked. + +In case your system contains more than one network interface, also make sure to add the one to be used via the `interface` argument, like `interface=eth1`. + +#### Booting the system + +Now just do a normal PXE boot, and debian-installer should automatically load and use the preseeds file provided by `grub.cfg`. In case there is still a dialog that stops your installation that means not all the debian-installer options are provided by your preseeds file. Get back to [example-preseed.txt](https://www.debian.org/releases/jessie/example-preseed.txt) and try to identify what is missing step. + +Also make sure to check debian-installer's `/var/log/syslog` (by opening a shell) when debugging the installer. + +### Building debian-installer from source + +#### Build kernel package and udebs + +Check the Debian [kernel-handbook](http://kernel-handbook.alioth.debian.org/ch-common-tasks.html) for the instructions required to build the debian kernel package from scratch. Since the installer only understands `udeb` packages, it is a good idea to reuse the official kernel packaging instructions and rules. + +You can also find the custom kernel source package created as part of the EE-RPB effort at [https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/](https://builds.96boards.org/snapshots/reference-platform/components/linux/enterprise/latest/) + +#### Rebuilding debian-installer with the new udebs + +To build the installer, make sure you're running on a native `arm64` system, preferably running Debian Jessie. + +Download the installer (from jessie): + +```shell +sudo apt-get build-dep debian-installer +dget http://ftp.us.debian.org/debian/pool/main/d/debian-installer/debian-installer_20150422+deb8u4.dsc +``` + +Change the kernel abi and set a default local preseed (so it can install your kernel during the install process): + +```shell +cd debian-installer-* +cd build +sed -i "s/LINUX_KERNEL_ABI.*/LINUX_KERNEL_ABI = YOUR_KERNEL_ABI/g" config/common +sed -i "s/PRESEED.*/PRESEED = default-preseed/g" config/common +``` + +Download the kernel udebs that you created at the localudebs folder: + +```shell +cd localudebs +wget +cd .. +``` + +Create a local pkg-list to include the udebs created (otherwise d-i will not be able to find them online): + +```shell +cat < pkg-lists/local +ext4-modules-\${kernel:Version} +fat-modules-\${kernel:Version} +btrfs-modules-\${kernel:Version} +md-modules-\${kernel:Version} +efi-modules-\${kernel:Version} +scsi-modules-\${kernel:Version} +jfs-modules-\${kernel:Version} +xfs-modules-\${kernel:Version} +ata-modules-\${kernel:Version} +sata-modules-\${kernel:Version} +usb-storage-modules-\${kernel:Version} +EOF +``` + +Set up the local repo, so the installer can locate your udebs (from localudebs): + +```shell +cat < sources.list.udeb +deb [trusted=yes] copy:/PATH/TO/your/installer/d-i/debian-installer-20150422/build/ localudebs/ +deb http://httpredir.debian.org/debian jessie main/debian-installer +EOF +``` + +Default preseed to skip known errors (as the kernel provided by local udebs): + +``` +cat < default-preseed +# Continue install on "no kernel modules were found for this kernel" +d-i anna/no_kernel_modules boolean true +# Continue install on "no installable kernels found" +d-i base-installer/kernel/skip-install boolean true +d-i base-installer/kernel/no-kernels-found boolean true +d-i preseed/late_command string in-target wget ; dpkg -i linux-image-*.deb +EOF +``` + +Now just build the installer: + +```shell +fakeroot make build_netboot +``` + +You should now find your custom debian-installer at `dest/netboot/netboot.tar.gz`. From 94da6b2384cbffb445dd1e9872129e276981e11a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:00:48 -0800 Subject: [PATCH 180/268] Added relative links to Debian and centos options Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index e6595a3..c346da7 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -43,12 +43,12 @@ Choose your network installer, download or build, and proceed to the installatio - + - +
CentosCentos Download Install
Debian JessieDebian Jessie Download Install
Centos DownloadInstallInstall
Debian Jessie DownloadInstallInstall
From 56238366430d76e45b0458396046d5a13feda369 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:06:17 -0800 Subject: [PATCH 181/268] Added table indicating location Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Firmware/Build.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md index 0e6c0f4..3811135 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md @@ -1,4 +1,12 @@ -# Build + + + + + + + +
UEFI/EDK2Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images +
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2
## Pre-Requisites From f84fe1b80fb93f644bef46d565cc07489b32d919 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:07:02 -0800 Subject: [PATCH 182/268] Added table indicating location Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Firmware/Install.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md index 0999ebd..0e91f08 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -1,4 +1,12 @@ -# Install + + + + + + + +
UEFI/EDK2Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware +
Read more
Learn more about UEFI/EDK2
## Juno R0/R1 From 054d379a5a3f2d496e8957092701fda442f4ff56 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:07:44 -0800 Subject: [PATCH 183/268] Added table indication location Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Firmware/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md index d5eaa2e..855d5f3 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md @@ -1,4 +1,12 @@ -## UEFI/EDK2 + + + + + + + +
UEFI/EDK2Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2 +
EDK2 is a modern, feature-rich, cross-platform firmware development environment for the UEFI and PI specifications. From 0433957d7dfd1ae759f9f5c64ce5f51fbc074adb Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:10:55 -0800 Subject: [PATCH 184/268] Update README.md --- .../Platforms/Enterprise/Installation/Firmware/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md index 855d5f3..4a0c6ff 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md @@ -1,6 +1,6 @@ - + From 21144daa6f121fdd5366021020c74adce4d54e77 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:11:08 -0800 Subject: [PATCH 185/268] Update Build.md --- .../Platforms/Enterprise/Installation/Firmware/Build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md index 3811135..6e639e9 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md @@ -1,6 +1,6 @@
UEFI/EDK2UEFI/EDK2
Go Back
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
- + From f62476a0308e2cc0b3acb4dfcbb520bda4f7340c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 13 Dec 2016 18:11:17 -0800 Subject: [PATCH 186/268] Update Install.md --- .../Platforms/Enterprise/Installation/Firmware/Install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md index 0e91f08..aa11acd 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -1,6 +1,6 @@
UEFI/EDK2UEFI/EDK2
Go Back
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
- +
UEFI/EDK2UEFI/EDK2
Go Back
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware From 42692a4fc3e83f2b9a5bc0624111ed2254205899 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 15 Dec 2016 11:51:51 -0800 Subject: [PATCH 187/268] Update README.md --- Reference-Platform/Platforms/Enterprise/Support/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Support/README.md b/Reference-Platform/Platforms/Enterprise/Support/README.md index cccc8b2..a8d4a5e 100644 --- a/Reference-Platform/Platforms/Enterprise/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Support/README.md @@ -2,7 +2,7 @@ Please take advantage of the many Enterprise Reference Platform resources available to you Linaro and third parties. -- [Release Note](../ReleaseNotes.md) +- [Release Notes](../ReleaseNotes.md) - Current release notes for the Enterprise Reference Platform. Includes release notes and known issues. - [Enterprise Forum](http://www.96boards.org/forums/forum/products/dragonboard410c/) - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. From 4184005a278220f794e7202deee03fa709c70af8 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 15 Dec 2016 11:52:55 -0800 Subject: [PATCH 188/268] Update README.md Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Installation/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index c346da7..e055ad7 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -2,6 +2,8 @@ This page offers generic installation instructions for the Enterprise Reference Platform on supported hardware. A list of approved hardware can be found in the ["Approved Hardware"](../Hardware/README.md) section of this documentation set. +Be sure to check out the [Release Notes](../ReleaseNotes.md) before installing. + *** ## Step 1: Upgrade firmware to latest version From f3e748336e6b49b2bb756ae8c7536fa64f326d4c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 16 Dec 2016 12:53:44 -0800 Subject: [PATCH 189/268] Juno dropped Signed-off-by: Robert Wolff --- .../Installation/Firmware/Install.md | 69 ------------------- 1 file changed, 69 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md index aa11acd..39ad332 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -8,75 +8,6 @@
-## Juno R0/R1 - -### Clean flash - -Power on the board, and (if prompted) press Enter to stop auto boot. Once in Juno's boot monitor, use the following commands to erase Juno's flash and export it as an external storage: - -```shell -Cmd> flash -Flash> eraseall -Flash> quit -Cmd> usb_on -``` - -This will delete any binaries and UEFI settings currently stored in the Juno's flash, then mount the Juno's MMC card as an external storage device on your host PC. - -In order to do a clean flash on Juno, you will also need to flash the firmware provided by ARM, which can be downloaded from the Linaro ARM LT Versatile Express Firmware git tree: - -```shell -git clone -b juno-0.11.6-linaro1 --depth 1 https://git.linaro.org/arm/vexpress-firmware.git -``` - -Then copy over the UEFI/EDK2 files that were built in the previous steps, making sure they get copied to the right firmware folder location: - -```shell -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin vexpress-firmware/SOFTWARE -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin vexpress-firmware/SOFTWARE -``` - -Now just copy all the files that are now available in the 'vexpress-firmware' folder into the mounted MMC card (which is provided as an external storage after calling 'usb_on'): - -```shell -cp -rf vexpress-firmware/* /media/recovery -``` - -Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: - -```shell -sync -``` - -Finally, power cycle the Juno. After it has finished copying the contents of the MMC card into Flash, the board will boot up and run the new firmware. - -### Upgrade Firmware - -If you already have a known working firmware available in your Juno, you simply need to update 'bl1.bin' and 'fip.bin', by mounting Juno's MMC over usb (as described in the procedure for clean flash). - -Export Juno's MMC as a usb storage device on your host machine: - -```shell -Cmd> usb_on -``` - -Then just copy over the UEFI/EDK2 files that were built in the previous steps: - -```shell -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin /media/recovery/SOFTWARE -cp $LINARO_EDK2_DIR/Build/ArmJuno/DEBUG_GCC49/FV/fip.bin /media/recovery/SOFTWARE -``` - -Be sure to issue a sync command on your host PC afterwards, which will guarantee that the copy has completed: - -```shell -sync -``` - -Then just power cycle the Juno and the board should see and use the new firmware. - -*** - ## D02 Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. From 071b6172b36089d90ad6aa27cadf5e6a9e6a347a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 16 Dec 2016 12:54:51 -0800 Subject: [PATCH 190/268] Update Install.md Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Firmware/Install.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md index 39ad332..b077a60 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -8,6 +8,10 @@ +Choose instructions from the approved hardware: + +*** + ## D02 Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. From 20747ad0f2a3578ed1f8f764b4166c387fed9056 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 16 Dec 2016 12:55:56 -0800 Subject: [PATCH 191/268] Removed Juno Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Firmware/Build.md | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md index 6e639e9..7e517e7 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md @@ -8,7 +8,7 @@ -## Pre-Requisites +## Pre-Requisites and Dependencies Make sure the build dependencies are available at your host machine. @@ -70,22 +70,6 @@ UEFI Tools (helpers and scripts to make the build process easy): git clone git://git.linaro.org/uefi/uefi-tools.git ``` -## Building UEFI/EDK2 for Juno R0/R1 - -```shell -export AARCH64_TOOLCHAIN=GCC49 -export LINARO_EDK2_DIR=${PWD}/edk2 -export UEFI_TOOLS_DIR=${PWD}/uefi-tools -export ARMTF_DIR=${PWD}/arm-trusted-firmware -cd ${LINARO_EDK2_DIR} -${UEFI_TOOLS_DIR}/uefi-build.sh -b DEBUG -a $ARMTF_DIR juno -``` - -The output files: - -- `Build/ArmJuno/DEBUG_GCC49/FV/bl1.bin` -- `Build/ArmJuno/DEBUG_GCC49/FV/fip.bin` - ### Proceed to [Installation](Install.md) page *** From e080284903ec4477de2c6bcdede56ecb92c5fe36 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 16 Dec 2016 12:57:34 -0800 Subject: [PATCH 192/268] Fixed format issue for website rendering Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Hardware/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Hardware/README.md index 59e006e..fba00fc 100644 --- a/Reference-Platform/Platforms/Enterprise/Hardware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Hardware/README.md @@ -8,7 +8,7 @@ List of approved hardware, ideal for testing the Enterprise Reference Platform. - [HiSilicon D05](http://open-estuary.org/d05/) - [APM X-Gene Mustang](https://www.apm.com/products/data-center/x-gene-family/x-gene/) - [HP Proliant m400](https://www.cdw.com/shop/products/HPE-ProLiant-m400-X-Gene-2.4-GHz-64-GB-0-GB/3516636.aspx) -- [Qualcomm Q2432]() +- Qualcomm Q2432 - [Cavium Thunder X](http://www.cavium.com/ThunderX_ARM_Processors.html) Proceed to [Installation](../Installation/README.md) page. From d369b2f2a2b3e95dbc084970f2a6d0c25aab374a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 16 Dec 2016 12:59:14 -0800 Subject: [PATCH 193/268] Update README.md --- Reference-Platform/Platforms/Enterprise/Support/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Support/README.md b/Reference-Platform/Platforms/Enterprise/Support/README.md index a8d4a5e..771ad1e 100644 --- a/Reference-Platform/Platforms/Enterprise/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Support/README.md @@ -6,5 +6,5 @@ Please take advantage of the many Enterprise Reference Platform resources availa - Current release notes for the Enterprise Reference Platform. Includes release notes and known issues. - [Enterprise Forum](http://www.96boards.org/forums/forum/products/dragonboard410c/) - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. -- [Report a bug!](../../../Extras/Report_a_bug.md) +- [Report a bug!](../../../Extras/Report-a-bug.md) - Instructions on how to report Enterprise Reference Platform bugs From a5410e38d15b8283485965d26ebde0e01bf94cc5 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Fri, 16 Dec 2016 13:02:08 -0800 Subject: [PATCH 194/268] Changed link to forum Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Support/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Support/README.md b/Reference-Platform/Platforms/Enterprise/Support/README.md index 771ad1e..a597af5 100644 --- a/Reference-Platform/Platforms/Enterprise/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Support/README.md @@ -4,7 +4,7 @@ Please take advantage of the many Enterprise Reference Platform resources availa - [Release Notes](../ReleaseNotes.md) - Current release notes for the Enterprise Reference Platform. Includes release notes and known issues. -- [Enterprise Forum](http://www.96boards.org/forums/forum/products/dragonboard410c/) +- [Enterprise Forum](https://platforms.linaro.org/community/) - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. - [Report a bug!](../../../Extras/Report-a-bug.md) - Instructions on how to report Enterprise Reference Platform bugs From f6d8d16069702111e02d5f70153e3eea2c655aa1 Mon Sep 17 00:00:00 2001 From: Shovan Date: Tue, 20 Dec 2016 15:20:42 +0000 Subject: [PATCH 195/268] Added forum link --- Reference-Platform/Platforms/Enterprise/Support/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Support/README.md b/Reference-Platform/Platforms/Enterprise/Support/README.md index a597af5..f21db2c 100644 --- a/Reference-Platform/Platforms/Enterprise/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Support/README.md @@ -4,7 +4,7 @@ Please take advantage of the many Enterprise Reference Platform resources availa - [Release Notes](../ReleaseNotes.md) - Current release notes for the Enterprise Reference Platform. Includes release notes and known issues. -- [Enterprise Forum](https://platforms.linaro.org/community/) +- [Enterprise Forum](https://discuss.linaro.org/c/erp) - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. - [Report a bug!](../../../Extras/Report-a-bug.md) - Instructions on how to report Enterprise Reference Platform bugs From 63f629a2f6e05b35aa137dfd78cb4b03ea209ffb Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 20 Dec 2016 10:47:26 -0800 Subject: [PATCH 196/268] Added link to download on releases.linaro Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Installation/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index e055ad7..cb1f0ef 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -11,7 +11,7 @@ Be sure to check out the [Release Notes](../ReleaseNotes.md) before installing. + From 98eb52643469dcfaf892da9e11a13a432920d287 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 20 Dec 2016 10:48:42 -0800 Subject: [PATCH 197/268] Added links for Debian and Centos installers Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index cb1f0ef..f3ab14e 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -44,12 +44,12 @@ Choose your network installer, download or build, and proceed to the installatio
UEFI/EDK2 - Download
Get the latest pre-built firmware images
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2
+ +
Centos - DownloadDownload Install
Debian Jessie - DownloadDownload Install
From 15cf5adff67fe20d45d2961f4c951965382e2074 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 20 Dec 2016 10:53:10 -0800 Subject: [PATCH 198/268] Added release notes Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/ReleaseNotes.md | 69 ++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 3ed5f25..395cf68 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -1,3 +1,70 @@ # 16.12 Release Notes - Enterprise Reference Platform -< Add when ready here > +## Reference Platform Kernel + +- 4.9 based, including under-review topic branches to extend hardware platform support +- Unified tree, used by both the CentOS and Debian Reference Platforms +- ACPI and PCIe support +- Single kernel config and binary (package) for all hardware platforms + +## UEFI + +- Tianocore EDK II and OpenPlatformPkg containing reference implementations for Huawei D03/D05, AMD Overdrive and LeMaker Cello + +## Debian + +- Network Installer based on Debian 8.6 "Jessie" +- Unified Reference Platform Kernel based on 4.9 + +## CentOS + +- Network Installer based on CentOS 7.2 16.03 +- Unified Reference Platform Kernel based on 4.9 + +## Enterprise Components +- Docker 1.10.3 +- OpenStack + - Not ready +- Ceph 10.2.3 +- Spark 2.0 +- OpenJDK 8 +- QEMU 2.7 + +## Supported Hardware Platforms + +- AMD Overdrive +- LeMaker Cello +- HiSilicon D03 +- HiSilicon D05 +- APM X-Gene Mustang +- HP Proliant m400 +- Qualcomm Q2432 +- Cavium Thunder X + +## Known Issues + +### CentOS: + +- Using Docker with XFS and Overlay Storage Driver: + - Note that XFS file systems must be created with the -n ftype=1 option enabled for use as an overlay. With the rootfs and any file systems created during system installation, set the --mkfsoptions=-n ftype=1 parameters in the Anaconda kickstart. When creating a new file system after the installation, run the # mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE command. To determine whether an existing file system is eligible for use as an overlay, run the # xfs_info /PATH/TO/DEVICE | grep ftype command to see if the ftype=1 option is enabled. + - https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html +- Installation via USB fails - bug 2655 + +### QDF2432: + +- No support for on-board ethernet (emac) - bug 2603 + +### D03: + +- Only 16 cores enabled (instead of 32) - bug 2635 +- Fails to install/boot Debian/CentOS with the default boot argument - bug 2661 +- Earlycon not working (no console output) - bug 2699 + +### HP-m400 Moonshot: + +- Boot medium is not updated after network installer - bug 2703 + +### Cavium (ThunderX) + +- UEFI boot entry not created after Debian installer finished - bug 2736 + From d1dd0815d0b19246719bed0af251951dc2e63b60 Mon Sep 17 00:00:00 2001 From: Tyler Baker Date: Wed, 21 Dec 2016 09:25:28 -0800 Subject: [PATCH 199/268] ceph: mark it as not ready. --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 395cf68..1e2d92e 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -26,6 +26,7 @@ - OpenStack - Not ready - Ceph 10.2.3 + - Not ready - Spark 2.0 - OpenJDK 8 - QEMU 2.7 From 295ec89b4dae918ffb39a1f821edf58ede0a5c1e Mon Sep 17 00:00:00 2001 From: Tyler Baker Date: Wed, 21 Dec 2016 15:22:52 -0800 Subject: [PATCH 200/268] Release Notes: add links to bugs --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 1e2d92e..4f99294 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -58,14 +58,14 @@ ### D03: - Only 16 cores enabled (instead of 32) - bug 2635 -- Fails to install/boot Debian/CentOS with the default boot argument - bug 2661 -- Earlycon not working (no console output) - bug 2699 +- Fails to install/boot Debian/CentOS with the default boot argument - (https://bugs.linaro.org/show_bug.cgi?id=2661 "bug 2661") +- Earlycon not working (no console output) - (https://bugs.linaro.org/show_bug.cgi?id=2699 "bug 2699") ### HP-m400 Moonshot: -- Boot medium is not updated after network installer - bug 2703 +- Boot medium is not updated after network installer - (https://bugs.linaro.org/show_bug.cgi?id=2703 "bug 2703") ### Cavium (ThunderX) -- UEFI boot entry not created after Debian installer finished - bug 2736 +- UEFI boot entry not created after Debian installer finished - (https://bugs.linaro.org/show_bug.cgi?id=2736 "bug 2736") From 32f73fda26be80af1d8c4a6a47c8d1838aee24e8 Mon Sep 17 00:00:00 2001 From: Tyler Baker Date: Wed, 21 Dec 2016 15:23:57 -0800 Subject: [PATCH 201/268] Release Notes: remove github url markdown for bugs --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 4f99294..db2594c 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -58,14 +58,14 @@ ### D03: - Only 16 cores enabled (instead of 32) - bug 2635 -- Fails to install/boot Debian/CentOS with the default boot argument - (https://bugs.linaro.org/show_bug.cgi?id=2661 "bug 2661") -- Earlycon not working (no console output) - (https://bugs.linaro.org/show_bug.cgi?id=2699 "bug 2699") +- Fails to install/boot Debian/CentOS with the default boot argument - https://bugs.linaro.org/show_bug.cgi?id=2661 +- Earlycon not working (no console output) - https://bugs.linaro.org/show_bug.cgi?id=2699 ### HP-m400 Moonshot: -- Boot medium is not updated after network installer - (https://bugs.linaro.org/show_bug.cgi?id=2703 "bug 2703") +- Boot medium is not updated after network installer - https://bugs.linaro.org/show_bug.cgi?id=2703 ### Cavium (ThunderX) -- UEFI boot entry not created after Debian installer finished - (https://bugs.linaro.org/show_bug.cgi?id=2736 "bug 2736") +- UEFI boot entry not created after Debian installer finished - https://bugs.linaro.org/show_bug.cgi?id=2736 From 045ec8e7350bd131c618c0071f86a3ce756fbd6c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:32:41 -0800 Subject: [PATCH 202/268] Added list of hardware for download pages Signed-off-by: Robert Wolff --- .../Installation/Firmware/Download.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md new file mode 100644 index 0000000..b998fb0 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md @@ -0,0 +1,17 @@ + + + + + + + +
UEFI/EDK2
Go Back
Download
Get the latest pre-built firmware images +
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2
+ +## Choose your Hardware + +- [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/uefi/) +- [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/uefi/) +- [OverDrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/uefi/) + +If you hardware is not listed here, please proceed to [Install](Install.md) page From 56154a9456a17ea6e6ceda6f126c32c3ca7360ce Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:33:17 -0800 Subject: [PATCH 203/268] Added download lin Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Firmware/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md index 4a0c6ff..d7de928 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/README.md @@ -1,7 +1,7 @@ - + - From 3fe307c5904cf68458c2b7dd542572f494943b22 Mon Sep 17 00:00:00 2001 From: Fathi Boudra Date: Wed, 18 Jan 2017 09:47:51 +0200 Subject: [PATCH 236/268] Fix CentOS base version --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index d0e5d6e..5066bf5 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -18,7 +18,7 @@ ## CentOS -- Network Installer based on CentOS 7.2 16.03 +- Network Installer based on CentOS 7.2.1603 - Unified Reference Platform Kernel based on 4.9 ## Enterprise Components From 0dcb75b531d5c64e13e0178e7922b9416e8c1353 Mon Sep 17 00:00:00 2001 From: Gema Gomez Date: Wed, 18 Jan 2017 15:48:17 +0000 Subject: [PATCH 237/268] Adding last changes to the OpenStack documentation for ERP 16.12 --- .../Platforms/Enterprise/OpenStack/README.md | 8 ++- .../Enterprise/OpenStack/docs/architecture.md | 57 +++++++++++++++++++ 2 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 Reference-Platform/Platforms/Enterprise/OpenStack/docs/architecture.md diff --git a/Reference-Platform/Platforms/Enterprise/OpenStack/README.md b/Reference-Platform/Platforms/Enterprise/OpenStack/README.md index f7167b9..86a0e6f 100644 --- a/Reference-Platform/Platforms/Enterprise/OpenStack/README.md +++ b/Reference-Platform/Platforms/Enterprise/OpenStack/README.md @@ -8,7 +8,7 @@ Cloud". The OpenStack packages are built by Linaro and made available in the following location: -TBD +http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo The build scripts for the packages are available in this repository on the `openstack-venvs` folder. These scripts are provided on as is basis, and they @@ -17,7 +17,9 @@ own risk. # Reference Architecture -The reference architecture deploys a cloud that uses Ceph as backend for OpenStack. +The reference architecture deploys a cloud that uses Ceph as backend for OpenStack: + +[https://git.linaro.org/leg/sdi/openstack-ref-architecture.git](https://git.linaro.org/leg/sdi/openstack-ref-architecture.git) See block diagram of how the servers should be connected to the network and how to spread the services on the different hosts on a default configuration in the [architecture document](docs/architecture.md). @@ -25,7 +27,7 @@ spread the services on the different hosts on a default configuration in the [ar # Pre-requisites -1. All the servers are supposed to have CentOS or Debian installed and they are supposed to +1. All the servers are supposed to have Linaro ERP 16.12 installed and they are supposed to have networking configured in a way that they can see/resolve each other's names. 1. The nodes that will be used as Ceph OSDs need to have at least one extra harddrive for Ceph. diff --git a/Reference-Platform/Platforms/Enterprise/OpenStack/docs/architecture.md b/Reference-Platform/Platforms/Enterprise/OpenStack/docs/architecture.md new file mode 100644 index 0000000..ba95e26 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/OpenStack/docs/architecture.md @@ -0,0 +1,57 @@ +# Network Diagram + +This diagram is orientative to show how the physical networks +are expected to be set up. + +The two networks are physical networks segmented between 2 different VLANS. The +internal network is a traditional lab internal network that all the servers can +see. The openstack services will communicate with each other on this +fairly safe network. Outbound traffic on this network is routed through the +external router. + +The "VMS NET" is a 2nd VLAN (can be same or different physical switch). +This network is private with no outbound routes. The compute nodes and the +network node talk over this network using VXLAN to provide private virtualized +networks defined and managed by OpenStack. The network node as a single interface +bridged to the public internet and a range of public IPv4 addresses that can +be assigned as floating IPs to expose VMs to the internet. + +``` ++---+ +---------------------------------+ +---+ +| V | | +--------+ I | +| M | | control-node-1 |eth0 | N | +| S | | mysql, rabbit, ceph-mon | | T | +| | | | | E | +| N | +---------------------------------+ | R +-----+ +| E | | N | |eth0 +| T | +---------------------------------+ | A | +---------------+ +| | | +--------+ L | | | +| | | control-node-2 |eth0 | | | External | +| | | keystone, glance, memcached, | | N | | router | +| | | nova(api etc), neutron-server, | | E | | | +| 1 | | horizon, cinder, ceph-mon | | T | +---------------+ +| 9 | | | | W | |eth1 +| 2 | +---------------------------------+ | O | | +| . | | R | | +| 1 | +---------------------------------+ | K | | +| 6 | | +--------+ | | +| 8 | | control-node-3 |eth0 | | | +| . | | openvswitch_agent, l3_agent, | | | | +| 0 | eth1| dhcp_agent, metadata_agent |eth2 |10 | | +| . +--------+ ceph-mon |__ | . | | +| X | +---------------------------------+ \ |10 | | +| | \___/| . |- | +| | +---------------------------------+ | X | \ \ XXXXX +| | | +--------+ . | \ XXXX X +| | | compute-$X |eth0 | X | \ XX XX +| | eth1| nova-compute, ceph-osd | | | \XX XXX +| +--------+ neutron-openvswitch_agent | | | X Internet X +| | +---------------------------------+ | | XX XXX +| | | | XXXXXXXXXXX +| | +---------------------------------+ | | +| | | +--------+ | +| | | compute-$X |eth0 | | +| | eth1| nova-compute, ceph-osd | | | +| +--------+ neutron-openvswitch_agent | | | ++---+ +---------------------------------+ +---+ +``` From 318c4ee455c6f8845bbfc7cf8303ff49f5162455 Mon Sep 17 00:00:00 2001 From: Ganesh Raju Date: Wed, 18 Jan 2017 15:25:09 -0600 Subject: [PATCH 238/268] Big Data component Installation instructions --- Reference-Platform/Platforms/Enterprise/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index ff16e48..903443c 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -10,6 +10,8 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is - Installation and build instructions for a variety of your Reference Platform components - [OpenStack](OpenStack/README.md) - This section provides all the support code required to deploy a "Developer Cloud" +- [BigData](BigData/README.md) + - Installation instructions for Big Data Components. i.e., Hadoop, Spark and Hive - [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From b63c6e8bd65947ebf3366b9e35398d8927b1327e Mon Sep 17 00:00:00 2001 From: Ganesh Raju Date: Wed, 18 Jan 2017 15:28:26 -0600 Subject: [PATCH 239/268] Add README.md --- .../Platforms/Enterprise/BigData/README.md | 669 ++++++++++++++++++ 1 file changed, 669 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/BigData/README.md diff --git a/Reference-Platform/Platforms/Enterprise/BigData/README.md b/Reference-Platform/Platforms/Enterprise/BigData/README.md new file mode 100644 index 0000000..39ecd88 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/BigData/README.md @@ -0,0 +1,669 @@ +# Big Data + +This file provides all the instructions required to install Big Data components - Hadoop, Spark and Hive + +# Big Data packages + +The following Big data components are built as part of Linaro's Reference Architecture + +* Hadoop 2.7.2 +* Spark 2.0 +* Hive 2.0.1 + +These components were built using Apache BigTop 1.1 and uses ODPi's code base. + + +# About ODPi + +Check out the website https://www.odpi.org/ + +# Prerequisites + +Java 8 (e.g. openjdk-8-jre) installed + +# Linaro Repo + +The package is available at the following repo: + +Debian Jessie - http://repo.linaro.org/debian/erp-16.12-stable/ +CentOS 7 - http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo + +# Installation + +## For Ubuntu + +Add to repo source list (not required if you are using the installer from the Reference Platform): + + $ echo "deb http://repo.linaro.org/debian/erp-16.12-stable/ jessie main" | sudo tee /etc/apt/sources.list.d/linaro-overlay-repo.list + + +Update the source list and install the dependencies: + + $ sudo apt-get update + $ sudo apt-get build-dep build-essential + + +Check Java version + + java -version + +This should print out OpenJDK8. + +Install Hadoop, Spark and Hive + + $ sudo apt-get install -ft jessie bigtop-tomcat bigtop-utils hadoop* spark-core zookeeper ^hive-* hbase oozie + +## For Centos: + +Add to repo source list (not required if you are using the installer from the Reference Platform): + + $ sudo wget http://repo.linaro.org/rpm/linaro-staging/centos-7/linaro-staging.repo -O /etc/yum.repos.d/linaro-overlay.repo + +Update the source list and install the dependencies + + $ sudo yum update + $ sudo yum -y install openssh-server openssh-clients java-1.8.0-openjdk* + + +Install Hadoop, Spark and Hive + + $ sudo yum install -y hadoop* spark* hive* + +# Verifying Hadoop Installation + +Packages would get installed in /usr/lib + +Type hadoop to check if hadoop is installed. + + $ hadoop + +And you should see the following: + + "linaro@debian:~$ hadoop Usage: hadoop [--config confdir] COMMAND where COMMAND is one of: + + fs run a generic filesystem user client version print the version jar run a jar file checknative [-a|-h] check native hadoop and compression libraries availability distcp copy file or directories recursively archive -archiveName NAME -p * create a hadoop archive classpath prints the class path needed to get the credential interact with credential providers + Hadoop jar and the required libraries + daemonlog get/set the log level for each daemon trace view and modify Hadoop tracing settings + or CLASSNAME run the class named CLASSNAME + + Most commands print help when invoked w/o parameters. " + +# Setup, Configuration and Running Hadoop + +## Add Hadoop User + +We need to create a dedicated user (hduser) for running Hadoop. This user needs to be added to hadoop user group: + + $ sudo adduser hduser -G hadoop + +give a password for hduser + + $ sudo passwd hduser + +Add hduser to sudoers list: + +On Debian: + + $ sudo adduser hduser sudo + +On CentOS: + + $ sudo usermod -G wheel hduser + +Switch to hduser + + $ su - hduser + +Generate ssh key for hduser + + $ ssh-keygen -t rsa -P "" + +Press to leave to default file name. +Enable ssh access to local machine + + $ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys + $ chmod 600 $HOME/.ssh/authorized_keys + $ chmod 700 $HOME/.ssh + +Test ssh setup + + $ ssh localhost + $ exit + +## Disabling IPv6 + + $ sudo vi /etc/sysctl.conf + +add the below lines and save + + net.ipv6.conf.all.disable_ipv6 = 1 + net.ipv6.conf.default.disable_ipv6 = 1 + net.ipv6.conf.lo.disable_ipv6 = 1 + +Prefer IPv4 on Hadoop: + + $ sudo vi /etc/hadoop/conf/hadoop-env.sh + +uncomment line + + export HADOOP_OPTS=-Djava.net.preferIPV4stack=true + +Run sysctl to apply the changes: + + $ sudo sysctl -p + +## Configuring the app environment + +Back to the system, we need to configure the app environment by following steps: + + $ sudo mkdir -p /app/hadoop/tmp + $ sudo chown hduser:hadoop /app/hadoop/tmp + $ sudo chmod 750 /app/hadoop/tmp + $ sudo chown hduser:hadoop /usr/lib/hadoop + $ sudo chmod 750 /usr/lib/hadoop + +## Setting up Environment Variables + +Follow the below steps to setup Environment Variables in bash file : + + $ vi .bashrc + +Add the following to the end and save: + + export HADOOP_HOME=/usr/lib/hadoop + export HADOOP_PREFIX=$HADOOP_HOME + export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" + export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec + export HADOOP_CONF_DIR=/etc/hadoop/conf + export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native + export HADOOP_COMMON_HOME=$HADOOP_HOME + export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce + export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs + export YARN_HOME=/usr/lib/hadoop-yarn + export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ + export HADOOP_USER_NAME=hdfs + export CLASSPATH=$CLASSPATH:. + export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.7.2.jar:$HADOOP_HOME/client/hadoop-hdfs-2.7.2.jar:$HADOOP_HOME/hadoop-auth-2.7.2.jar:/usr/lib/hadoop-mapreduce/*:/usr/lib/hive/lib/*:/usr/lib/hadoop/lib/*: + export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") + export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH + + $ source .bashrc + +## Modifying config files + +### core-site.xml + + $ sudo vi /etc/hadoop/conf/core-site.xml + +And add/modify the following settings: Look for property with fs.defaultFS and modify as below: + + + fs.default.name + hdfs://localhost:54310 + The name of the default file system. A URI whose + scheme and authority determine the FileSystem implementation. The + uri's scheme determines the config property (fs.SCHEME.impl) naming + the FileSystem implementation class. The uri's authority is used to + determine the host, port, etc. for a filesystem. + + + +Add this to the bottom before tag: "" + + + hadoop.tmp.dir + /app/hadoop/tmp + A base for other temporary directories. + + +### mapred-site.xml + + $ sudo vi /etc/hadoop/conf/mapred-site.xml + +Modify existing properties as follows: Look for property tag with as mapred.job.tracker and modify as below: + + + mapred.job.tracker + localhost:54311 + The host and port that the MapReduce job tracker runs + at. If "local", then jobs are run in-process as a single map + and reduce task. + + + +### hdfs-site.xml + + $ sudo vi /etc/hadoop/conf/hdfs-site.xml + +Modify existing property as below: + + + dfs.replication + 1 + Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time. + + + + +Make sure the following properties are set correctly as below in hdfs-site.xml + + + hadoop.tmp.dir + /var/lib/hadoop-hdfs/cache/${user.name} + + + + + dfs.namenode.name.dir + /var/lib/hadoop-hdfs/cache/${user.name}/dfs/name + + + + dfs.namenode.checkpoint.dir + /var/lib/hadoop-hdfs/cache/${user.name}/dfs/namesecondary + + + + dfs.datanode.data.dir + /var/lib/hadoop-hdfs/cache/${user.name}/dfs/data + + + +Make sure the following properties are also present: + + + dfs.name.dir + /var/lib/hadoop-hdfs/cache/${user.name}/dfs/nn + + + + dfs.data.dir + /var/lib/hadoop-hdfs/cache/${user.name}/dfs/dn + + + + + dfs.permissions.supergroup + hadoop + + +## Format Namenode + +This step is needed for the first time. Doing it every time will result in loss of content on HDFS. + + $ sudo /etc/init.d/hadoop-hdfs-namenode init + +## Start the YARN daemons + + $ for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i start ; done + + $ sudo /etc/init.d/hadoop-yarn-resourcemanager start + $ sudo /etc/init.d/hadoop-yarn-nodemanager start + +## Validating Hadoop + +Check if hadoop is running. jps command should list namenode, datanode, yarn resource manager. or use ps aux + + $ sudo jps + +or + + $ ps aux | grep java + + +Alternatively, check if yarn managers are running: + + $ sudo /etc/init.d/hadoop-yarn-resourcemanager status + $ sudo /etc/init.d/hadoop-yarn-nodemanager status + +You would see like below: + + " ● hadoop-yarn-nodemanager.service - LSB: Hadoop nodemanager + Loaded: loaded (/etc/init.d/hadoop-yarn-nodemanager) Active: active (running) since Tue 2015-12-22 18:25:03 UTC; 1h 24min ago CGroup: /system.slice/hadoop-yarn-nodemanager.service └─10366 /usr/lib/jvm/java-1.8.0-openjdk-arm64/bin/java -Dproc_node... + + + + Dec 22 18:24:57 debian su[10348]: Successful su for yarn by root Dec 22 18:24:57 debian su[10348]: + ??? root:yarn Dec 22 18:24:57 debian su[10348]: pam_unix(su:session): session opened for ...0) Dec 22 18:24:57 debian hadoop-yarn-nodemanager[10305]: starting nodemanager, ... Dec 22 18:24:58 debian su[10348]: pam_unix(su:session): session closed for ...rn Dec 22 18:25:03 debian hadoop-yarn-nodemanager[10305]: Started Hadoop nodeman... " + +## Run teragen, terasort and teravalidate + + $ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen 1000000 terainput + $ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort terainput teraoutput + $ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teravalidate -D mapred.reduce.tasks=8 teraoutput teravalidate + +## Run a demo application to verify installation + + $ mkdir in + $ cat > in/file << EOFThis is one line + This is another one + EOF + +Add this directory to HDFS: + + $ hadoop dfs -copyFromLocal in /in + +## Run wordcount example provided + + $ hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount /in /out + +Check the output + + $ hadoop dfs -cat /out/* + +## Web Interface + +* http://master:50070/dfshealth.jsp +* http://master:8088/cluster +* http://master:19888/jobhistory (for Job History Server) + +## Stop the Hadoop Services + + $ sudo /etc/init.d/hadoop-yarn-nodemanager stop + $ sudo /etc/init.d/hadoop-yarn-resourcemanager stop + $ for i in hadoop-hdfs-namenode hadoop-hdfs-datanode ; do sudo service $i stop; done + +# SPARK + +'NOTE:' Make sure you have followed above steps to set up Hadoop. +Change to hduser + + $ su - hduser + +## Configuring Spark + + export HADOOP_HOME=/usr/lib/hadoop + export HADOOP_PREFIX=$HADOOP_HOME + export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" + export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec + export HADOOP_CONF_DIR=/etc/hadoop/conf + export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native + export HADOOP_COMMON_HOME=$HADOOP_HOME + export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce + export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs + export YARN_HOME=/usr/lib/hadoop-yarn + export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ + export HADOOP_USER_NAME=hdfs + export CLASSPATH=$CLASSPATH:. + export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.7.2.jar:$HADOOP_HOME/client/hadoop-hdfs-2.7.2.jar:$HADOOP_HOME/hadoop-auth-2.7.2.jar:/usr/lib/hadoop-mapreduce/*:/usr/lib/hive/lib/*:/usr/lib/hadoop/lib/*: + export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") + export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH + export SPARK_HOME=/usr/lib/spark + export PATH=$HADOOP_HOME\bin:$PATH + export SPARK_DIST_CLASSPATH=$HADOOP_HOME\bin\hadoop:$CLASSPATH:/usr/lib/hadoop/lib/*:/usr/lib/hadoop/lib/*:/usr/lib/hadoop-mapreduce/*:. + export CLASSPATH=$CLASSPATH:/usr/lib/hadoop/lib/*:. + + + $ source .bashrc + +## Verifying Spark Installation + + $ $SPARK_HOME/bin/spark-shell --master local[*] + +## Running SparkPi Example + +Once Spark is built successfully, try running the following pi example to calculate value of pi. The number at the end of the command is the number of splits. If needed, you can increase this number to stress out the CPU. + + $ $SPARK_HOME/bin/run-example SparkPi 100 + +# HIVE + +## Setting up environment for Hive + +You can set up the Hive environment by appending the following lines to ~/.bashrc file: + + export HADOOP_HOME=/usr/lib/hadoop + export HADOOP_PREFIX=$HADOOP_HOME + export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib/native" + export HADOOP_LIBEXEC_DIR=/usr/lib/hadoop/libexec + export HADOOP_CONF_DIR=/etc/hadoop/conf + export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native + export HADOOP_COMMON_HOME=$HADOOP_HOME + export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce + export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs + export YARN_HOME=/usr/lib/hadoop-yarn + export HADOOP_YARN_HOME=/usr/lib/hadoop-yarn/ + export HADOOP_USER_NAME=hdfs + export CLASSPATH=$CLASSPATH:. + export CLASSPATH=$CLASSPATH:$HADOOP_HOME/hadoop-common-2.7.2.jar:$HADOOP_HOME/client/hadoop-hdfs-2.7.2.jar:$HADOOP_HOME/hadoop-auth-2.7.2.jar:/usr/lib/hive/lib/*:/usr/lib/hadoop/lib/*:. + export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::") + export PATH=/usr/lib/hadoop/libexec:/etc/hadoop/conf:$HADOOP_HOME/bin/:$PATH + export PATH=$HADOOP_HOME\bin:$PATH + export HIVE_HOME=/usr/lib/hive + export PATH=$PATH:$HIVE_HOME/bin + +The following command is used to execute ~/.bashrc file. + + $ source ~/.bashrc + +## Configuring hive + +To configure Hive with Hadoop, you need to edit the hive-env.sh file, which is placed in the $HIVE_HOME/conf directory. The following commands redirect to Hive config folder and copy the template file: + + $ cd $HIVE_HOME/conf + $ sudo cp hive-env.sh.template hive-env.sh + +Hive installation is completed successfully. Now you require an external database server to configure Metastore. We use Apache Derby database. + +## Downloading and Installing Apache Derby + +Follow the steps given below to download and install Apache Derby: + +## Downloading Apache Derby + +The following command is used to download Apache Derby. It takes some time to download. + + $ cd ~ + $ wget http://archive.apache.org/dist/db/derby/db-derby-10.4.2.0/db-derby-10.4.2.0-bin.tar.gz + + +The following command is used to verify the download: + + $ ls + +On successful download, you get to see the following response: + + db-derby-10.4.2.0-bin.tar.gz + +## Extracting and verifying Derby archive + +The following commands are used for extracting and verifying the Derby archive: + + $ tar zxvf db-derby-10.4.2.0-bin.tar.gz + $ ls + + +On successful download, you get to see the following response: + + db-derby-10.4.2.0-bin + db-derby-10.4.2.0-bin.tar.gz + +Copy the files from the extracted directory to the /usr/local/derby directory: + + $ sudo mv db-derby-10.4.2.0-bin /usr/local/derby + +## Setting up Environment for Derby + +Set up the Derby environment by appending the following lines to ~/.bashrc file: + + $ vi .bashrc + + export DERBY_HOME=/usr/local/derby + export PATH=$PATH:$DERBY_HOME/bin + export CLASSPATH=$CLASSPATH:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar + +The following command is used to execute ~/.bashrc file: + + export DERBY_HOME=/usr/local/derby + export PATH=$PATH:$DERBY_HOME/bin + export CLASSPATH=$CLASSPATH:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar + + $ source ~/.bashrc + +### Create a directory to store Metastore + +Create a directory named data in $DERBY_HOME directory to store Metastore data. + + $ sudo mkdir $DERBY_HOME/data + +Derby installation and environmental setup is now complete. + +## Configuring Metastore of Hive + +Configuring Metastore means specifying to Hive where the database is stored. You can do this by editing the hive-site.xml file, which is in the $HIVE_HOME/conf directory. First of all, copy the template file using the following command: + + $ cd $HIVE_HOME/conf + $ sudo cp hive-default.xml.template hive-site.xml + +Edit hive-site.xml and find entry 'javax.jdo.option.ConnectionURL' and modifiy the value as below: + + hive.exec.scratchdir + /tmp/hive-${user.name} + + hive.exec.local.scratchdir + /tmp/${user.name} + + hive.downloaded.resources.dir + /tmp/${user.name}_resources + + hive.scratch.dir.permission + 733 + +and change the values for the below properties like below: + + + javax.jdo.option.ConnectionURL + jdbc:derby:;databaseName=/usr/lib/hive/tmp/metastore_db;create=true + JDBC connect string for a JDBC metastore + + +Create a file named jpox.properties and add the following lines into it: + + $ sudo vi jpox.properties + + + javax.jdo.PersistenceManagerFactoryClass = + + org.jpox.PersistenceManagerFactoryImpl + org.jpox.autoCreateSchema = false + org.jpox.validateTables = false + org.jpox.validateColumns = false + org.jpox.validateConstraints = false + org.jpox.storeManagerType = rdbms + org.jpox.autoCreateSchema = true + org.jpox.autoStartMechanismMode = checked + org.jpox.transactionIsolation = read_committed + javax.jdo.option.DetachAllOnCommit = true + javax.jdo.option.NontransactionalRead = true + javax.jdo.option.ConnectionDriverName = org.apache.derby.jdbc.ClientDriver + javax.jdo.option.ConnectionURL = jdbc:derby://hadoop1:1527/metastore_db;create = true + javax.jdo.option.ConnectionUserName = APP + javax.jdo.option.ConnectionPassword = mine + +## Verifying Hive Installation + +Before running Hive, you need to create the /tmp folder and a separate Hive folder in HDFS. Here, we use the /user/hive/warehouse folder. You need to set write permission for these newly created folders as shown below: + +Make sure you are using hduser account. If not switch to hduser. + + $ su - hduser + +Now set them in HDFS before verifying Hive. Use the following commands: + + $ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp + $ $HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse + $ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp + $ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse + +'NOTE:' Before invoking hive make sure you have followed above instructions in installing and setting up Hadoop. Make sure hadoop services are running. + +Run Hive metastore service + + $ sudo service hive-metastore start + $ sudo $HIVE_HOME/bin/metatool -listFSRoot + +Create tmp directory to run Hive under. + + $ cd $HIVE_HOME + $ sudo mkdir tmp + $ sudo chown hduser tmp + $ cd tmp + +The following commands are used to verify Hive installation: + + $ $HIVE_HOME/bin/schematool -dbType derby -initSchema + $ hive -hiveconf hive.root.logger=DEBUG,console + +On successful installation of Hive, you get to see the following response: + + Logging initialized using configuration in jar:file:/home/hadoop/hive-0.9.0/lib/hive-common-0.9.0.jar!/hive-log4j.properties + Hive history file=/tmp/hadoop/hive_job_log_hadoop_201312121621_1494929084.txt + …………………. + hive> + +The following sample command is executed to display all the tables: + + hive> show tables; + OK + Time taken: 2.798 seconds + hive> + + +# Errors / Issues and Resolutions + +* If after creating hduser, trying to switch to hduser ( || $ su - hduser || ) gave the following error: + +/* ‘No directory, logging in with HOME=/ # + +Then do the following: +Exit to root user delete the hduser and recreate it. + + $ exit + $ sudo userdel hduser + $ sudo useradd -d /home/hduser -G hadoop -m hduser + +* If Teragen, TeraSort and TeraValidate error out with 'permission denied' exception. The following steps can be done: + + $ sudo groupadd supergroup + $ sudo usermod -g supergroup hduser + +* If for some weird reason, if you notice the config files (core-site.xml, hdfs-site.xml, etc) are empty. + +You may have delete all the packages and re-run the steps of installation from scratch. + + /* Error while formatting namenode With the following command: + + $ sudo /etc/init.d/hadoop-hdfs-namenode init + +* If you see the following error: WARN net.DNS: Unable to determine local hostname -falling back to "localhost" java.net.UnknownHostException: centos: centos at java.net.InetAddress.getLocalHost(InetAddress.java:1496) at org.apache.hadoop.net.DNS.resolveLocalHostname(DNS.java:264) at org.apache.hadoop.net.DNS.(DNS.java:57) + +Something is wrong in the network setup. Please check /etc/hosts file. + + $ sudo vi /etc/hosts + +The hosts file should like below: + + 127.0.0.1 localhost localhost.localdomain #hostname should have the output of $ hostname + + ::1 localhost + +Also try the following steps: + + $ sudo rm -Rf /app/hadoop/tmp + $ hadoop namenode -format + +* If you see the below error with Hive while doing 'schematool -initSchema -dbType derby': + + 'Error:' FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000) org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !! Underlying cause: java.io.IOException : Schema script failed, errorcode 2 Use --verbose for detailed stacktrace. *** schemaTool failed *** + +Following actions need to be taken to resolve: + + $ cd $HIVE_HOME/tmp + mv metastore_db metastore_db.tmp + ../bin/schematool -initSchema -dbType derby + + +* If you get the following error with Hive: + + Error: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection. org.datanucleus.exceptions.NucleusDataStoreException: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection. + +Resolution is: delete all .lck files in $HIVE_HOME/tmp directory \ No newline at end of file From 263c3f422bb29686abbc2b857295adf24f0b3cf5 Mon Sep 17 00:00:00 2001 From: Alan Bennett Date: Thu, 19 Jan 2017 15:27:16 -0800 Subject: [PATCH 240/268] Update ReleaseNotes.md --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 5066bf5..8ef8098 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -36,7 +36,7 @@ - HiSilicon D05 - APM X-Gene Mustang - HP Proliant m400 -- Qualcomm Q2432 +- Qualcomm QDF2432 Software Development Platform (SDP) - Cavium Thunder X ## Known Issues @@ -69,7 +69,7 @@ - [2720](https://bugs.linaro.org/show_bug.cgi?id=2720) CentOS/Debian: CONFIG_ARM64_VA_BITS=48 breaks userspace - [2351](https://bugs.linaro.org/show_bug.cgi?id=2351) LTP: openat03 TBROK errno=EINVAL(22) Invalid argument -### QDF2432: +### Qualcomm QDF2432 Software Development Platform (SDP): - [2663](https://bugs.linaro.org/show_bug.cgi?id=2663) Debian: 'qemu-sys - tem-aarch64 -cpu host' causes host reboot - [2646](https://bugs.linaro.org/show_bug.cgi?id=2646) LTP: Kernel crashes in syscalls/ipc/msgctl10 test From 436f7df8c0381170a90db1403db61aa7bdd002b4 Mon Sep 17 00:00:00 2001 From: vchong Date: Sun, 22 Jan 2017 18:53:01 +0900 Subject: [PATCH 241/268] RPB1606: CE: HiKey: InstallDebianRPB: Add header number for LeMaker --- .../RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md index d14bb67..20b2af5 100644 --- a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md +++ b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -205,7 +205,7 @@ This section show how to install the Linaro based Debian operating system to you If you are still having trouble setting up fastboot, click here for a short tutorial video -2 - **Boot HiKey into Fastboot mode using J15 header** +2 - **Boot HiKey into Fastboot mode using J601 (LeMaker) / J15 (CircuitCo) header** - Link pins 1 and 2 - Link pins 5 and 6 From 4bf54f31c9302a051fbe316d12e898ffafae3bf9 Mon Sep 17 00:00:00 2001 From: Fathi Boudra Date: Wed, 25 Jan 2017 07:35:00 +0200 Subject: [PATCH 242/268] Add a link to openstack-venvs --- Reference-Platform/Platforms/Enterprise/OpenStack/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/OpenStack/README.md b/Reference-Platform/Platforms/Enterprise/OpenStack/README.md index 86a0e6f..5ea8162 100644 --- a/Reference-Platform/Platforms/Enterprise/OpenStack/README.md +++ b/Reference-Platform/Platforms/Enterprise/OpenStack/README.md @@ -11,7 +11,7 @@ location: http://repo.linaro.org/rpm/linaro-overlay/centos-7/repo The build scripts for the packages are available in this repository on the -`openstack-venvs` folder. These scripts are provided on as is basis, and they +[`openstack-venvs`](https://git.linaro.org/leg/sdi/openstack-ref-architecture.git/tree/openstack-venvs) folder. These scripts are provided on as is basis, and they are tailored specifically for Linaro's building environment. Use only at your own risk. From c62c7e7cc3f8a2ff16d16e833b88434ca58c17ad Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:03:51 -0800 Subject: [PATCH 243/268] Remove getting started section Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 903443c..93e1ab8 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -4,8 +4,6 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is ## Contents -- [Getting Started](GettingStarted/README.md) - - Learn more about the Enterprise Reference Platform, this is an ideal place to start. - [Installation](Installation/README.md) - Installation and build instructions for a variety of your Reference Platform components - [OpenStack](OpenStack/README.md) From d6cfb1ffcaf0d678fb021b2e3dc974ed94d1180a Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:16:53 -0800 Subject: [PATCH 244/268] Added one more level for ERP - description and forwarding Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/README.md | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 93e1ab8..34c3d26 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -1,22 +1,14 @@ -# Enterprise Reference Platform - Documentation +# Enterprise Reference Platform -A comprehensive guide to using the Enterprise Reference Platform. This guide is written by the Linaro team with community contributions and links to third-party content. +The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. For more information and support please visit the [ERP forum](https://discuss.linaro.org/c/erp). -## Contents +**Features:** -- [Installation](Installation/README.md) - - Installation and build instructions for a variety of your Reference Platform components -- [OpenStack](OpenStack/README.md) - - This section provides all the support code required to deploy a "Developer Cloud" -- [BigData](BigData/README.md) - - Installation instructions for Big Data Components. i.e., Hadoop, Spark and Hive -- [Support](Support/README.md) - - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers +- Unified Linux Kernel +- Open Boot Firmware + - Compliant with ARM SBSA and SBBR specifications +- Debian and Centos Network Installers +- Openstack and Ceph Reference Deployments +- Built for Big Data Workloads *** - -#### Resources - -- [Release Notes](ReleaseNotes.md) -- [Previous Releases](PreviousReleases/README.md) -- [Document Contribution Policy](../../../ContributionPolicy.md) From 4366a7d7000dc9e59e5e53adf022754ab7822e59 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:18:10 -0800 Subject: [PATCH 245/268] Changed getting started to documentation Signed-off-by: Robert Wolff --- .../Enterprise/Documentation/README.md | 20 +++++++++++++ .../Enterprise/GettingStarted/README.md | 29 ------------------- 2 files changed, 20 insertions(+), 29 deletions(-) create mode 100644 Reference-Platform/Platforms/Enterprise/Documentation/README.md delete mode 100644 Reference-Platform/Platforms/Enterprise/GettingStarted/README.md diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/README.md new file mode 100644 index 0000000..57404f1 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Documentation/README.md @@ -0,0 +1,20 @@ +A comprehensive guide to using the Enterprise Reference Platform. This guide is written by the Linaro team with community contributions and links to third-party content. + +## Contents + +- [Installation](Installation/README.md) + - Installation and build instructions for a variety of your Reference Platform components +- [OpenStack](OpenStack/README.md) + - This section provides all the support code required to deploy a "Developer Cloud" +- [BigData](BigData/README.md) + - Installation instructions for Big Data Components. i.e., Hadoop, Spark and Hive +- [Support](Support/README.md) + - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers + +*** + +#### Resources + +- [Release Notes](ReleaseNotes.md) +- [Previous Releases](PreviousReleases/README.md) +- [Document Contribution Policy](../../../ContributionPolicy.md) diff --git a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md deleted file mode 100644 index d075575..0000000 --- a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Getting Started - -This page is designed to bring you up to speed with the Enterprise Reference Platform. You will find categorized information, links to additional resources, and paths forward to take you deeper into the platform. - -## Introduction - -The Enterprise Reference Platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. - -**Features:** - -- Unified Linux Kernel -- Open Boot Firmware - - Compliant with ARM SBSA and SBBR specifications -- Debian and Centos Network Installers -- Openstack and Ceph Reference Deployments -- Built for Big Data Workloads - -*** - -## Jump to... - -- [Approved Hardware](../Hardware/README.md) - - This is a list of all tested and approved Enterprise Reference Platform hardware -- [Installation](../Installation/README.md) - - From start to finish, set up your environment and install the Enterprise Reference Platform -- [OpenStack](../OpenStack/README.md) - - This section provides all the support code required to deploy a "Developer Cloud" -- [Support](../Support/README.md) - - Bug reports and current issues, forum access and other useful resources. We want to help you find answers From 5c804f3778b36f18bd68e6f3b0ad46aa6795c690 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:18:43 -0800 Subject: [PATCH 246/268] Added title for page Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Documentation/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/README.md index 57404f1..23c9285 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/README.md @@ -1,3 +1,5 @@ +# Enterprise Reference Platform - Documentation + A comprehensive guide to using the Enterprise Reference Platform. This guide is written by the Linaro team with community contributions and links to third-party content. ## Contents From 3a87a278755c4a018aafd539bd49807f7cbfd603 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:19:39 -0800 Subject: [PATCH 247/268] Changed some relative links Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Documentation/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/README.md index 23c9285..ddf0bf9 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/README.md @@ -17,6 +17,6 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is #### Resources -- [Release Notes](ReleaseNotes.md) -- [Previous Releases](PreviousReleases/README.md) -- [Document Contribution Policy](../../../ContributionPolicy.md) +- [Release Notes](../ReleaseNotes.md) +- [Previous Releases](../PreviousReleases/README.md) +- [Document Contribution Policy](../../../../ContributionPolicy.md) From 51beb7c2496aa7925f9bc9f0274f6c22c785ca91 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:20:59 -0800 Subject: [PATCH 248/268] Changed location to documentation folder Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/{ => Documentation}/BigData/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/BigData/README.md (99%) diff --git a/Reference-Platform/Platforms/Enterprise/BigData/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/BigData/README.md similarity index 99% rename from Reference-Platform/Platforms/Enterprise/BigData/README.md rename to Reference-Platform/Platforms/Enterprise/Documentation/BigData/README.md index 39ecd88..2d6ab52 100644 --- a/Reference-Platform/Platforms/Enterprise/BigData/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/BigData/README.md @@ -666,4 +666,4 @@ Following actions need to be taken to resolve: Error: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection. org.datanucleus.exceptions.NucleusDataStoreException: Cannot get a connection, pool error Could not create a validated object, cause: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection. -Resolution is: delete all .lck files in $HIVE_HOME/tmp directory \ No newline at end of file +Resolution is: delete all .lck files in $HIVE_HOME/tmp directory From 3637ac595604208dfd517e9cf4c00779ede407b5 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:22:11 -0800 Subject: [PATCH 249/268] Delete README.md --- Reference-Platform/Platforms/Enterprise/Downloads/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/Downloads/README.md diff --git a/Reference-Platform/Platforms/Enterprise/Downloads/README.md b/Reference-Platform/Platforms/Enterprise/Downloads/README.md deleted file mode 100644 index e69de29..0000000 From 77d8cfa8c9d750786e649c00af97a913db0c49e0 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:24:11 -0800 Subject: [PATCH 250/268] Changed location of hardware docs Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/{ => Documentation}/Hardware/README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Hardware/README.md (100%) diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/Hardware/README.md similarity index 100% rename from Reference-Platform/Platforms/Enterprise/Hardware/README.md rename to Reference-Platform/Platforms/Enterprise/Documentation/Hardware/README.md From 8a7f6c2cb56d12b2bcf7adbd086c1cfc4184a551 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:28:15 -0800 Subject: [PATCH 251/268] Moved folders around for new workflow Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/.DS_Store | Bin 0 -> 6148 bytes .../EECommon/DHCP-TFTP-Server-UEFI.md | 0 .../EECommon/Install-CentOS-7.md | 0 .../EECommon/Install-Debian-Jessie.md | 0 .../EECommon/Install-Fedora-23.md | 0 .../EECommon/ODPi-BigTop-Hadoop-Config-Run.md | 0 .../EECommon/ODPi-Hadoop-Installation.md | 0 .../EECommon/OpenStack-Liberty.md | 0 .../EECommon/UEFI-EDK2-Guide-EE.md | 0 .../Installation/Centos/README.md | 0 .../Installation/Debian/README.md | 0 .../Installation/Firmware/Build.md | 0 .../Installation/Firmware/Download.md | 0 .../Installation/Firmware/Install.md | 0 .../Installation/Firmware/README.md | 0 .../{ => Documentation}/Installation/README.md | 0 .../{ => Documentation}/OpenStack/README.md | 0 .../OpenStack/docs/architecture.md | 0 .../PreviousReleases/README.md | 0 .../RPB_15.12/EnterpriseEdition/README.md | 0 .../PreviousReleases/RPB_15.12/Highlights.md | 0 .../PreviousReleases/RPB_15.12/Known-Issues.md | 0 .../PreviousReleases/RPB_15.12/README.md | 0 .../RPB_16.03/EnterpriseEdition/Cello/README.md | 0 .../RPB_16.03/EnterpriseEdition/D02/README.md | 0 .../RPB_16.03/EnterpriseEdition/D03/README.md | 0 .../EnterpriseEdition/DHCP-TFTP-Server-UEFI.md | 0 .../EnterpriseEdition/HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Install-CentOS-7.md | 0 .../EnterpriseEdition/Install-Debian-Jessie.md | 0 .../EnterpriseEdition/Install-Fedora-23.md | 0 .../ODPi-BigTop-Hadoop-Config-Run.md | 0 .../ODPi-Hadoop-Installation.md | 0 .../EnterpriseEdition/OpenStack-Liberty.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../RPB_16.03/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/UEFI-EDK2-Guide-EE.md | 0 .../EnterpriseEdition/X-Gene-Mustang/README.md | 0 .../PreviousReleases/RPB_16.03/Highlights.md | 0 .../PreviousReleases/RPB_16.03/Known-Issues.md | 0 .../PreviousReleases/RPB_16.03/README.md | 0 .../RPB_16.03/ReleaseStatus-16.03.md | 0 .../RPB_16.06/EECommon/DHCP-TFTP-Server-UEFI.md | 0 .../RPB_16.06/EECommon/Install-CentOS-7.md | 0 .../RPB_16.06/EECommon/Install-Debian-Jessie.md | 0 .../RPB_16.06/EECommon/Install-Fedora-23.md | 0 .../EECommon/ODPi-BigTop-Hadoop-Config-Run.md | 0 .../EECommon/ODPi-Hadoop-Installation.md | 0 .../RPB_16.06/EECommon/OpenStack-Liberty.md | 0 .../RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md | 0 .../RPB_16.06/EnterpriseEdition/Cello/README.md | 0 .../RPB_16.06/EnterpriseEdition/D02/README.md | 0 .../RPB_16.06/EnterpriseEdition/D03/README.md | 0 .../EnterpriseEdition/HP-ProLiant-m400/README.md | 0 .../EnterpriseEdition/Overdrive/README.md | 0 .../EnterpriseEdition/Q2432LZB/README.md | 0 .../RPB_16.06/EnterpriseEdition/README.md | 0 .../EnterpriseEdition/ThunderX/README.md | 0 .../EnterpriseEdition/X-Gene-Mustang/README.md | 0 .../PreviousReleases/RPB_16.06/Highlights.md | 0 .../PreviousReleases/RPB_16.06/Known-Issues.md | 0 .../PreviousReleases/RPB_16.06/README.md | 0 .../{ => Documentation}/Support/README.md | 0 63 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Reference-Platform/Platforms/Enterprise/.DS_Store rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/Install-CentOS-7.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/Install-Debian-Jessie.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/Install-Fedora-23.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/OpenStack-Liberty.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/EECommon/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Installation/Centos/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Installation/Debian/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Installation/Firmware/Build.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Installation/Firmware/Download.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Installation/Firmware/Install.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Installation/Firmware/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Installation/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/OpenStack/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/OpenStack/docs/architecture.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_15.12/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_15.12/Highlights.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_15.12/Known-Issues.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_15.12/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-CentOS-7.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Debian-Jessie.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/Install-Fedora-23.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/OpenStack-Liberty.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/Highlights.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/Known-Issues.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.03/ReleaseStatus-16.03.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/DHCP-TFTP-Server-UEFI.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/Install-CentOS-7.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/Install-Debian-Jessie.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/Install-Fedora-23.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/ODPi-BigTop-Hadoop-Config-Run.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/ODPi-Hadoop-Installation.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/OpenStack-Liberty.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EECommon/UEFI-EDK2-Guide-EE.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/Cello/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/D02/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/D03/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/HP-ProLiant-m400/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/Overdrive/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/Q2432LZB/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/ThunderX/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/EnterpriseEdition/X-Gene-Mustang/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/Highlights.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/Known-Issues.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/PreviousReleases/RPB_16.06/README.md (100%) rename Reference-Platform/Platforms/Enterprise/{ => Documentation}/Support/README.md (100%) diff --git a/Reference-Platform/Platforms/Enterprise/.DS_Store b/Reference-Platform/Platforms/Enterprise/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 25 Jan 2017 08:33:15 -0800 Subject: [PATCH 252/268] Delete .DS_Store --- .../Platforms/Enterprise/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/.DS_Store diff --git a/Reference-Platform/Platforms/Enterprise/.DS_Store b/Reference-Platform/Platforms/Enterprise/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Wed, 25 Jan 2017 08:35:09 -0800 Subject: [PATCH 253/268] Added links at bottom of page Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 34c3d26..4a6ed8b 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -12,3 +12,8 @@ The enterprise reference platform is targeted to accelerate the high powered ARM - Built for Big Data Workloads *** + +Before you begin... + +1. Check out our list of ["Approved Hardware"](Documentation/Hardware/README.md) +2. Proceed to the ["Installation page"](Documentation/README.md) From f838f654e544911af6e22bc50b919b094981d9f5 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:35:34 -0800 Subject: [PATCH 254/268] Format fix Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 4a6ed8b..bfb0d0d 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -13,7 +13,7 @@ The enterprise reference platform is targeted to accelerate the high powered ARM *** -Before you begin... +## Before you begin... 1. Check out our list of ["Approved Hardware"](Documentation/Hardware/README.md) 2. Proceed to the ["Installation page"](Documentation/README.md) From dfd15fefc5d05ecd5b93e2a760a41cf51ee4b59c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:45:02 -0800 Subject: [PATCH 255/268] Relative link fix Signed-off-by: Robert Wolff --- .../Documentation/Installation/Firmware/Download.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/Installation/Firmware/Download.md b/Reference-Platform/Platforms/Enterprise/Documentation/Installation/Firmware/Download.md index e71f2e0..b3eb0eb 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/Installation/Firmware/Download.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/Installation/Firmware/Download.md @@ -12,9 +12,9 @@ > Note: If hardware is not linked, [contact distributor](../../Hardware/README.md) for more information on available firmware. -- [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/uefi/) -- [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/uefi/) -- [OverDrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/uefi/) +- [D03](http://releases.linaro.org/reference-platform/enterprise/latest/uefi/release/d03/) +- [D05](http://releases.linaro.org/reference-platform/enterprise/latest/uefi/release/d05/) +- [OverDrive](http://releases.linaro.org/reference-platform/enterprise/latest/uefi/release/overdrive/) - X-Gene - m400 - QDF2432 From d2a937d1f7a37b4b4163578056818a00a092c4f4 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Wed, 25 Jan 2017 08:45:52 -0800 Subject: [PATCH 256/268] Relative link fix Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Documentation/Installation/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/Installation/README.md index e70931b..676fb07 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/Installation/README.md @@ -2,7 +2,7 @@ This page offers generic installation instructions for the Enterprise Reference Platform on supported hardware. A list of approved hardware can be found in the ["Approved Hardware"](../Hardware/README.md) section of this documentation set. -Be sure to check out the [Release Notes](../ReleaseNotes.md) before installing. +Be sure to check out the [Release Notes](../../ReleaseNotes.md) before installing. *** From 0d58dfbddaa3d2475e659a094a77b2d62f9e9832 Mon Sep 17 00:00:00 2001 From: Victor Chong Date: Mon, 6 Feb 2017 03:23:36 +0000 Subject: [PATCH 257/268] rpb: hikey: InstallDebianRPB: Add fip.bin Add instructions to download and flash fip.bin as well Signed-off-by: Victor Chong --- .../ConsumerEdition/HiKey/InstallDebianRPB.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md index 20b2af5..d330c8d 100644 --- a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md +++ b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -19,20 +19,20 @@ This page provides download and installation instructions inteded for those inte #### Step 1: Read about the SD Card Method -The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. +The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. This method requires the following hardware: - HiKey with power supply - Host Linux machine (Linux, Mac OS X, or Windows) - MicroSD card with 4GB or more of storage - USB Mouse and/or keyboard -- HDMI Monitor with full size HDMI cable +- HDMI Monitor with full size HDMI cable *** #### Step 2: Download SD Card Image -**Debian Linux Reference Software Platform - SD Card Image** +**Debian Linux Reference Software Platform - SD Card Image** [SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-debian-jessie-alip-sdcard-*.img.gz) @@ -87,7 +87,7 @@ lsblk ```shell cd -#Example: +#Example: # = /home/YourUserName/Downloads #For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. cd /home/YourUserName/Downloads @@ -161,7 +161,7 @@ Before clicking "OK": #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -184,9 +184,10 @@ This method requires the following hardware: *** -#### Step 3: Download Boot image and Root File System +#### Step 3: Download Boot firmware, image and Root File System -- **Debian Boot** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-boot-linux-*.uefi.img.gz)) +- **Debian Boot firmware** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/fip.bin)) +- **Debian Boot image** ([**Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-boot-linux-*.uefi.img.gz)) - **Debian Rootfs** (**Download**) *** @@ -236,6 +237,7 @@ $ sudo fastboot devices ```shell $ sudo fastboot flash ptable .img $ sudo fastboot reboot +$ sudo fastboot flash fastboot fip.bin $ sudo fastboot flash boot .uefi.img $ sudo fastboot flash system hikey-rootfs-debian-jessie-alip-YYYYMMDD-nnn.emmc.img ``` From c57ee406763af946f11047cc9f1ba11f6c48523b Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Mon, 6 Feb 2017 07:57:53 -0800 Subject: [PATCH 258/268] Fixed relative link for previous releases. Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Documentation/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/README.md index ddf0bf9..c3a243a 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/README.md @@ -18,5 +18,5 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is #### Resources - [Release Notes](../ReleaseNotes.md) -- [Previous Releases](../PreviousReleases/README.md) +- [Previous Releases](PreviousReleases/README.md) - [Document Contribution Policy](../../../../ContributionPolicy.md) From 74e2d5cb8723e022a21971e86d2b9f389a97a8f2 Mon Sep 17 00:00:00 2001 From: Victor Chong Date: Tue, 7 Feb 2017 18:07:13 +0000 Subject: [PATCH 259/268] RPB1606: CE: HiKey: InstallAOSP: Update link and instruction Signed-off-by: Victor Chong --- .../RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md index 317256b..5ff06bb 100644 --- a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md +++ b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md @@ -10,7 +10,7 @@ #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -76,7 +76,7 @@ $ sudo fastboot devices 0123456789abcdef fastboot ``` ->Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/wiki/HiKey-Board-Recovery) and return to this step once your board is ready +>Note: If your HiKey is not being detected by fastboot, you might want to try [Board Recovery](https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey/Installation/BoardRecovery.md) and return to this step once your board is ready 3 - **Set HiKey into Recovery Mode using J15 header** @@ -97,6 +97,7 @@ GPIO3-1 | Link 5-6 | open ```shell $ sudo fastboot flash ptable ptable-aosp-8g.img $ sudo fastboot reboot +$ sudo fastboot flash fastboot fip.bin $ sudo fastboot flash boot boot_fat.uefi.img $ sudo fastboot flash cache cache.img $ sudo fastboot flash system system.img From 6590ac3dbf49b7e2f301d9911cc2aef7717a4ee4 Mon Sep 17 00:00:00 2001 From: Shovan Date: Tue, 21 Feb 2017 10:35:28 +0000 Subject: [PATCH 260/268] Fixed Broken url --- .../Platforms/Enterprise/Documentation/Support/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md index f21db2c..2c65af1 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md @@ -6,5 +6,5 @@ Please take advantage of the many Enterprise Reference Platform resources availa - Current release notes for the Enterprise Reference Platform. Includes release notes and known issues. - [Enterprise Forum](https://discuss.linaro.org/c/erp) - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. -- [Report a bug!](../../../Extras/Report-a-bug.md) +- [Report a bug!](/Reference-Platform/Extras/Report-a-bug.md) - Instructions on how to report Enterprise Reference Platform bugs From c80b29934c8cbeeb322803e762287d9a4de80de5 Mon Sep 17 00:00:00 2001 From: Shovan Date: Tue, 21 Feb 2017 10:47:21 +0000 Subject: [PATCH 261/268] Fixed broken link --- .../Platforms/Enterprise/Documentation/Support/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md index 2c65af1..5fe96b3 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md @@ -8,3 +8,6 @@ Please take advantage of the many Enterprise Reference Platform resources availa - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. - [Report a bug!](/Reference-Platform/Extras/Report-a-bug.md) - Instructions on how to report Enterprise Reference Platform bugs + + + From 0315895285167ee1871d2cbc28fa0f1fbc2ef7f4 Mon Sep 17 00:00:00 2001 From: Shovan Date: Tue, 21 Feb 2017 10:51:26 +0000 Subject: [PATCH 262/268] Fixing broken link Report a bug is not rendering on the website. I and hard linking to website page --- .../Platforms/Enterprise/Documentation/Support/README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md b/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md index 5fe96b3..04b0b5b 100644 --- a/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md +++ b/Reference-Platform/Platforms/Enterprise/Documentation/Support/README.md @@ -6,8 +6,5 @@ Please take advantage of the many Enterprise Reference Platform resources availa - Current release notes for the Enterprise Reference Platform. Includes release notes and known issues. - [Enterprise Forum](https://discuss.linaro.org/c/erp) - The Enterprise Reference Platform has its very own forum. If you can't find a pre-existing thread that addresses your issue, start your own and let the community help out. -- [Report a bug!](/Reference-Platform/Extras/Report-a-bug.md) +- [Report a bug!](http://platforms.linaro.org/documentation/Reference-Platform/Extras/Report-a-bug.md/) - Instructions on how to report Enterprise Reference Platform bugs - - - From 9f56d8ededbe286029379e51be3b5968bf547fbd Mon Sep 17 00:00:00 2001 From: Victor Chong Date: Fri, 24 Feb 2017 10:09:37 +0000 Subject: [PATCH 263/268] hikey: Fix description of ptable file Fixes: https://github.com/Linaro/documentation/issues/30 Reported-by: Tony Zhang Signed-off-by: Victor Chong --- .../ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md | 4 ++-- .../ConsumerEdition/HiKey/InstallDebianRPB-16.03.md | 4 ++-- .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 4 ++-- .../ConsumerEdition/HiKey/InstallDebianRPB.md | 12 ++++++------ .../ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md | 4 ++-- .../ConsumerEdition/HiKey/InstallDebianRPB-16.03.md | 4 ++-- .../ConsumerEdition/HiKey/InstallAOSPRPB.md | 2 +- .../ConsumerEdition/HiKey/InstallDebianRPB.md | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md index 317256b..415a761 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md @@ -10,7 +10,7 @@ #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -26,7 +26,7 @@ This method requires the following hardware: >Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** Build Folders (**Binaries** / **Image**) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md index 2928cb4..744c704 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md @@ -8,7 +8,7 @@ #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -24,7 +24,7 @@ This method requires the following hardware: > Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** **ptable-linux.img** ([**4G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-4g.img) / [**8G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-8g.img)) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md index 317256b..415a761 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md @@ -10,7 +10,7 @@ #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -26,7 +26,7 @@ This method requires the following hardware: >Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** Build Folders (**Binaries** / **Image**) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md index d14bb67..76134c2 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -19,20 +19,20 @@ This page provides download and installation instructions inteded for those inte #### Step 1: Read about the SD Card Method -The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. +The SD card method allows you to place a microSD card into the HiKey to automatically boot and install the Linux Desktop onto the board. This method is generally simpler and should be used by beginners. This method requires the following hardware: - HiKey with power supply - Host Linux machine (Linux, Mac OS X, or Windows) - MicroSD card with 4GB or more of storage - USB Mouse and/or keyboard -- HDMI Monitor with full size HDMI cable +- HDMI Monitor with full size HDMI cable *** #### Step 2: Download SD Card Image -**Debian Linux Reference Software Platform - SD Card Image** +**Debian Linux Reference Software Platform - SD Card Image** [SD Card Image - Direct Download](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/hikey-debian-jessie-alip-sdcard-*.img.gz) @@ -87,7 +87,7 @@ lsblk ```shell cd -#Example: +#Example: # = /home/YourUserName/Downloads #For this example we assume the "Debian SD Card Install Image" is in the Downloads folder. cd /home/YourUserName/Downloads @@ -161,7 +161,7 @@ Before clicking "OK": #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -177,7 +177,7 @@ This method requires the following hardware: > Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** **ptable-linux.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-8g.img)) diff --git a/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md index 317256b..415a761 100644 --- a/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md +++ b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallAOSPRPB-16.03.md @@ -10,7 +10,7 @@ #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -26,7 +26,7 @@ This method requires the following hardware: >Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** Build Folders (**Binaries** / **Image**) diff --git a/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md index 2928cb4..744c704 100644 --- a/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md +++ b/Reference-Platform/Releases/RPB_16.03/ConsumerEdition/HiKey/InstallDebianRPB-16.03.md @@ -8,7 +8,7 @@ #### Step 1: Read about the Fastboot Method -Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. +Fastboot is supported by the board and can be used for installs. This is for advanced users who are most likely modifying/customizing source code and will need to download such updates to the board for test/execution. This method requires the following hardware: - HiKey with power supply @@ -24,7 +24,7 @@ This method requires the following hardware: > Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** **ptable-linux.img** ([**4G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-4g.img) / [**8G Download**](https://builds.96boards.org/releases/reference-platform/debian/hikey/16.03/bootloader/ptable-linux-8g.img)) diff --git a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md index 5ff06bb..b361b99 100644 --- a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md +++ b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallAOSPRPB.md @@ -26,7 +26,7 @@ This method requires the following hardware: >Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** Build Folders (**Binaries** / **Image**) diff --git a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md index d330c8d..1450860 100644 --- a/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md +++ b/Reference-Platform/Releases/RPB_16.06/ConsumerEdition/HiKey/InstallDebianRPB.md @@ -177,7 +177,7 @@ This method requires the following hardware: > Note: Some files have 4G and 8G options, download file which best matches your HiKey board. - All HiKey **CircuitCo boards** will use the **4G files** -- All HiKey **LeMaker 1G boards** will use the **4G files** +- All HiKey **LeMaker 1G boards** will use the **8G files** - All HiKey **LeMaker 2G boards** will use the **8G files** **ptable-linux.img** ([**4G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-4g.img) / [**8G Download**](http://builds.96boards.org/releases/reference-platform/debian/hikey/16.06/bootloader/ptable-linux-8g.img)) From 68e66c77fb6b2e51e08bede484b96e085dbd910f Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Sun, 2 Apr 2017 09:48:06 -0700 Subject: [PATCH 264/268] Fixed broken link to OE doc Signed-off-by: Robert Wolff --- .../PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md index 7f936e4..946227c 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md @@ -28,4 +28,4 @@ *** - Access **bootloader** build from source instructions [here](BuildSourceBL.md) -- Access **OpenEmbedded** build from source instructions [here](../../CECommon/OE.md) +- Access **OpenEmbedded** build from source instructions [here](../../../../CECommon/OE.md) From 1d9265c1603393078d5f9ff1e80bbc093a1007b9 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Sun, 2 Apr 2017 09:49:20 -0700 Subject: [PATCH 265/268] Fixed broken links to known issues doc Signed-off-by: Robert Wolff --- .../RPB_16.06/ConsumerEdition/HiKey/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md index 946227c..6d680fb 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md @@ -14,14 +14,14 @@ |:-----------------------------:| | [Install Instructions](InstallDebianRPB.md) | | [Build from Source](BFSDebianRPB.md) | -| [Known issues](../../../Known-Issues.md) | +| [Known issues](../Known-Issues.md) | | **CE AOSP** | |:---------------------------:| | [Install Instructions](https://source.android.com/source/devices.html) | -| [Known issues](../../../Known-Issues.md) | +| [Known issues](../Known-Issues.md) | From f1c823542aa723bdc0c316126a0182bb84de0b6d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Sun, 2 Apr 2017 09:49:58 -0700 Subject: [PATCH 266/268] Fixed links to known issues doc Signed-off-by: Robert Wolff --- .../RPB_16.06/ConsumerEdition/HiKey/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md index 6d680fb..8425c2e 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/HiKey/README.md @@ -14,14 +14,14 @@ |:-----------------------------:| | [Install Instructions](InstallDebianRPB.md) | | [Build from Source](BFSDebianRPB.md) | -| [Known issues](../Known-Issues.md) | +| [Known issues](../../Known-Issues.md) | | **CE AOSP** | |:---------------------------:| | [Install Instructions](https://source.android.com/source/devices.html) | -| [Known issues](../Known-Issues.md) | +| [Known issues](../../Known-Issues.md) | From 52e86b36d315b2fffa616f15404786705392d6fb Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Sun, 2 Apr 2017 09:50:47 -0700 Subject: [PATCH 267/268] Fixed broken links to OE and Known Issues docs Signed-off-by: Robert Wolff --- .../RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md index cb2b5f5..44907f8 100644 --- a/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md +++ b/Reference-Platform/Platforms/Consumer/PreviousReleases/RPB_16.06/ConsumerEdition/DragonBoard-410c/README.md @@ -10,8 +10,8 @@ |:-----------------------------:| | [Install Instructions](InstallDebianRPB-16.06.md) | | [Build from Source](BFSDebianRPB-16.06.md) | -| [Known issues](../../../Known-Issues.md) | +| [Known issues](../../Known-Issues.md) | *** -- Access generic **OpenEmbedded** build from source instructions [here](../../../CECommon/OE.md) +- Access generic **OpenEmbedded** build from source instructions [here](../../../../CECommon/OE.md) From 24d54c6b3018318f03946748fc0bafa6afb9d545 Mon Sep 17 00:00:00 2001 From: Nicolas Dechesne Date: Tue, 23 May 2017 11:31:08 +0200 Subject: [PATCH 268/268] Update OE.md --- Reference-Platform/CECommon/OE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/CECommon/OE.md b/Reference-Platform/CECommon/OE.md index 045eb01..06d0fa7 100644 --- a/Reference-Platform/CECommon/OE.md +++ b/Reference-Platform/CECommon/OE.md @@ -85,7 +85,7 @@ To manage the various git trees and the OpenEmbedded environment, a repo manifes To initialize your build environment, you need to run: mkdir oe-rpb && cd oe-rpb - repo init -u https://github.com/96boards/oe-rpb-manifest.git -b krogoth + repo init -u https://github.com/96boards/oe-rpb-manifest.git -b morty repo sync source setup-environment []
UEFI/EDK2
Go Back
Download
Get the latest pre-built firmware images
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2 From 90449bb3c51c1e55de420f0846711e7fbcb15aac Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:34:06 -0800 Subject: [PATCH 204/268] Added download link Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Firmware/Install.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md index b077a60..83ccfd4 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -1,7 +1,7 @@ - + From 8cf45481c49160f93b2be4dca42e1f7dabd178f5 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:34:42 -0800 Subject: [PATCH 205/268] Added download link Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Firmware/Build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md index 7e517e7..b4fc0e5 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Build.md @@ -1,7 +1,7 @@
UEFI/EDK2
Go Back
Download
Get the latest pre-built firmware images
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2
- + From 8b3b14c1cd515b96f4270401f8fbc857f5587dc4 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:36:37 -0800 Subject: [PATCH 206/268] Changed a relative link for unavailable boards Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Firmware/Download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md index b998fb0..ec566c1 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md @@ -14,4 +14,4 @@ - [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/uefi/) - [OverDrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/uefi/) -If you hardware is not listed here, please proceed to [Install](Install.md) page +If you hardware is not listed here, please proceed back to the [Installation](../README.md) page and begin from **Step 2** From 7936a56619ace3276b9b75fa82abf6af8061369f Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:41:17 -0800 Subject: [PATCH 207/268] Added list of hardware with links to installer downloads Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Centos/Download.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md new file mode 100644 index 0000000..ded589f --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md @@ -0,0 +1,9 @@ +# Choose your Hardware + +- [Overdrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/centos-installer/) +- [X-Gene](http://releases.linaro.org/reference-platform/enterprise/apm/x-gene/16.12/centos-installer/) +- [Thunder X](http://releases.linaro.org/reference-platform/enterprise/cavium/thunderx/16.12/centos-installer/) +- [m400](http://releases.linaro.org/reference-platform/enterprise/hpe/m400/16.12/centos-installer/) +- [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/centos-installer/) +- [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/centos-installer/) +- [QDF2432](http://releases.linaro.org/reference-platform/enterprise/qualcomm/qdf2432/16.12/centos-installer/) From afbf47595a03a7cdf1ddd273470cc62fc6b5d2fa Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:42:16 -0800 Subject: [PATCH 208/268] Added download relative links to installers Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index f3ab14e..7eab629 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -44,12 +44,12 @@ Choose your network installer, download or build, and proceed to the installatio
UEFI/EDK2
Go Back
Download
Get the latest pre-built firmware images
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2
+ +
Centos - DownloadDownload Install
Debian Jessie - DownloadDownload Install
From 1311594f8896036244d828f0e802a5f357255733 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:42:53 -0800 Subject: [PATCH 209/268] Added install relative link Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/Centos/Download.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md index ded589f..71d4484 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md @@ -7,3 +7,5 @@ - [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/centos-installer/) - [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/centos-installer/) - [QDF2432](http://releases.linaro.org/reference-platform/enterprise/qualcomm/qdf2432/16.12/centos-installer/) + +Proceed to [Install](Install.md) From 2ea9a16012e9355878a8ba78666c9d75b12e2e0c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:43:31 -0800 Subject: [PATCH 210/268] Update Download.md --- .../Platforms/Enterprise/Installation/Centos/Download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md index 71d4484..ce93d20 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md @@ -8,4 +8,4 @@ - [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/centos-installer/) - [QDF2432](http://releases.linaro.org/reference-platform/enterprise/qualcomm/qdf2432/16.12/centos-installer/) -Proceed to [Install](Install.md) +Proceed to [Install](README.md) From f76d9f94e345a24a46db3efbaccd0a831ad54b3e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:43:57 -0800 Subject: [PATCH 211/268] Update Download.md --- .../Platforms/Enterprise/Installation/Centos/Download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md index ce93d20..059a627 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md @@ -8,4 +8,4 @@ - [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/centos-installer/) - [QDF2432](http://releases.linaro.org/reference-platform/enterprise/qualcomm/qdf2432/16.12/centos-installer/) -Proceed to [Install](README.md) +Proceed to [Install](README.md) page From d9696d5c754b69c7fbac1afac3c69c0b68761b09 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:45:12 -0800 Subject: [PATCH 212/268] Added links to download options for installers Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Debian/Download.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md new file mode 100644 index 0000000..aba871a --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md @@ -0,0 +1,11 @@ +# Choose your Hardware + +- [Overdrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/debian-installer/) +- [X-Gene](http://releases.linaro.org/reference-platform/enterprise/apm/x-gene/16.12/debian-installer/) +- [Thunder X](http://releases.linaro.org/reference-platform/enterprise/cavium/thunderx/16.12/debian-installer/) +- [m400](http://releases.linaro.org/reference-platform/enterprise/hpe/m400/16.12/debian-installer/) +- [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/debian-installer/) +- [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/debian-installer/) +- [QDF2432](http://releases.linaro.org/reference-platform/enterprise/qualcomm/qdf2432/16.12/debian-installer/) + +Proceed to [Install](README.md) page From 1c52cc224d1bcf9d8977410ecb88e26be5d90f92 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 12:47:49 -0800 Subject: [PATCH 213/268] Update README.md Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Installation/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index 7eab629..947ab75 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -11,7 +11,7 @@ Be sure to check out the [Release Notes](../ReleaseNotes.md) before installing. + From 88dab20bd45cb19d398c7793008a30e22b36ce4e Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 14:06:50 -0800 Subject: [PATCH 214/268] Update Download.md Signed-off-by: Robert Wolff Note: If hardware is not linked, [contact distributor](../../Hardware/README.md) for more information on available firmware. + - [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/uefi/) - [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/uefi/) - [OverDrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/uefi/) +- X-Gene +- m400 +- QDF2432 +- Thunder X -If you hardware is not listed here, please proceed back to the [Installation](../README.md) page and begin from **Step 2** +Proceed back to the [Installation](../README.md) page From 1ff57f7f821b60212f79f1915d4b240282479bb3 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 14:08:08 -0800 Subject: [PATCH 215/268] Update Download.md --- .../Platforms/Enterprise/Installation/Firmware/Download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md index 553ad02..8a8925a 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md @@ -20,4 +20,4 @@ - QDF2432 - Thunder X -Proceed back to the [Installation](../README.md) page +Proceed back to the [Installation](../Install.md) page From 170f78748b72ce7cdf680c891c6c7adef7266e61 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Thu, 22 Dec 2016 14:08:18 -0800 Subject: [PATCH 216/268] Update Download.md --- .../Platforms/Enterprise/Installation/Firmware/Download.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md index 8a8925a..e71f2e0 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Download.md @@ -20,4 +20,4 @@ - QDF2432 - Thunder X -Proceed back to the [Installation](../Install.md) page +Proceed back to the [Installation](Install.md) page From c4e9c31c014b6d3c72b206598b79fb6908da7b8d Mon Sep 17 00:00:00 2001 From: Ricardo Salveti de Araujo Date: Thu, 5 Jan 2017 16:10:10 -0200 Subject: [PATCH 217/268] Update ReleaseNotes.md Adding additional bug links. --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index db2594c..7fdc43d 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -49,15 +49,15 @@ - Using Docker with XFS and Overlay Storage Driver: - Note that XFS file systems must be created with the -n ftype=1 option enabled for use as an overlay. With the rootfs and any file systems created during system installation, set the --mkfsoptions=-n ftype=1 parameters in the Anaconda kickstart. When creating a new file system after the installation, run the # mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE command. To determine whether an existing file system is eligible for use as an overlay, run the # xfs_info /PATH/TO/DEVICE | grep ftype command to see if the ftype=1 option is enabled. - https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html -- Installation via USB fails - bug 2655 +- Installation via USB fails - https://bugs.linaro.org/show_bug.cgi?id=2655 ### QDF2432: -- No support for on-board ethernet (emac) - bug 2603 +- No support for on-board ethernet (emac) - https://bugs.linaro.org/show_bug.cgi?id=2603 ### D03: -- Only 16 cores enabled (instead of 32) - bug 2635 +- Only 16 cores enabled (instead of 32) - https://bugs.linaro.org/show_bug.cgi?id=2635 - Fails to install/boot Debian/CentOS with the default boot argument - https://bugs.linaro.org/show_bug.cgi?id=2661 - Earlycon not working (no console output) - https://bugs.linaro.org/show_bug.cgi?id=2699 From 5a84e8f569c205805f557477fe73e7465640f815 Mon Sep 17 00:00:00 2001 From: Slimlogic Ltd Date: Fri, 13 Jan 2017 16:52:50 +0000 Subject: [PATCH 218/268] Update Install.md --- .../Installation/Firmware/Install.md | 48 +------------------ 1 file changed, 1 insertion(+), 47 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md index 83ccfd4..05ad24e 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/Firmware/Install.md @@ -12,52 +12,6 @@ Choose instructions from the approved hardware: *** -## D02 - -Flashing D02 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. - -### Clean flash - -First make sure the built firmware is available in your FTP server ('PV660D02.fd'): - -```shell -cp PV660D02.fd /srv/tftp/ -``` - -Now follow the steps below in order to fetch and flash the new firmware: - -1. Power off the board and unplug the power supply. -2. Push the dial switch **3. CPU0_SPI_SEL** to **off** (check [http://open-estuary.com/d02-2/](http://open-estuary.com/d02-2/) for the board picture) - - The board has two SPI flash chips, and this switch selects which one to boot from. -3. Power on the device, stop the boot from the serial console, and get into the the 'Embedded Boot Loader (EBL)' shell -4. Push the dial switch **3. CPU0_SPI_SEL** to **on** - - **NOTE:** make sure to run the step above before running 'biosupdate' (as it modifies the flash), or else the backup BIOS will also be modified and there will be no way to unbrick the board (unless sending it back to Huawei). -5. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master' like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' -6. Exit the EBL console and reboot the board - -### Upgrade Firmware - -There are 2 options for updating the firmware, first via network and the second via USB storage. - -Network upgrade: - -1. Make sure the built firmware is available in your FTP server ('PV660D02.fd') -2. Stop UEFI boot, select 'Boot Manager' then 'Embedded Boot Loader (EBL)' -3. Download and flash the firmware file from the FTP server: -'biosupdate -u -p -f master', like -'D02 > biosupdate 10.0.0.10 -u anonymous -p anonymous -f PV660D02.fd master' -4. Exit the EBL console and reboot the board - -USB storage upgrade: -- Copy the '.fd' file to a FAT32 partition on USB (UEFI can only recognize FAT32 file system), then run the following command (from **EBL**): -'newbios fs1:\' - -On EBL fs1 is for USB first partition, while fs0 the ramdisk. - -*** - ## D03 Flashing D03 requires the board to have a working ethernet connection to the FTP server hosting the firmware (since the recovery UEFI image provides an update path via FTP fetch + flash). Flashing also requires entering the Embedded Boot Loader (EBL). This can be reached by typing 'exit' on the UEFI shell that will bring you to a bios-like menu. Goto 'Boot Manager' to find EBL. @@ -130,7 +84,7 @@ Depending on the size of the firmware image, flashrom might not be able to flash Example for the 4.5M based firmware: ```shell -dd if=/dev/zero of=FIRMWARE.ROM ibs=512K count=23 obs=1M oflag=append conv=notrunc +truncate --size=16M FIRMWARE.rom ``` Connect the SPI cable, unplug the power cord and flash SPI: From 960a058213b81b59f8c7357a2c328bfc20dc53f7 Mon Sep 17 00:00:00 2001 From: Martin Stadtler Date: Mon, 16 Jan 2017 16:22:51 +0000 Subject: [PATCH 219/268] Update ReleaseNotes.md --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 7fdc43d..30fd563 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -24,9 +24,8 @@ ## Enterprise Components - Docker 1.10.3 - OpenStack - - Not ready + - Mitaka - Ceph 10.2.3 - - Not ready - Spark 2.0 - OpenJDK 8 - QEMU 2.7 @@ -34,7 +33,6 @@ ## Supported Hardware Platforms - AMD Overdrive -- LeMaker Cello - HiSilicon D03 - HiSilicon D05 - APM X-Gene Mustang From 07e83523a5f1cc73e33395f63e06c80af64aaf4d Mon Sep 17 00:00:00 2001 From: Martin Stadtler Date: Mon, 16 Jan 2017 16:48:00 +0000 Subject: [PATCH 220/268] Added OpenStack release note notes --- .../Platforms/Enterprise/ReleaseNotes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 30fd563..f0511c7 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -67,3 +67,13 @@ - UEFI boot entry not created after Debian installer finished - https://bugs.linaro.org/show_bug.cgi?id=2736 +### The SDI (OpenStack) components are released with the following known bugs: + +- 2549 "Ethernet hotplug fails on 16.06" - this is a known bug that +hasn't been fixed for this release. +- 2805 "dhcp lease is not freed after instance deleted" - this was a +regression on the kernel that is being fixed. A new validated kernel +will land next week with this fix in it. +- 2819 "Volume hot plug not working in 16.12" - This is a known issue +with this release that hasn't been fixed. + From 02db3fd7df6f897765d3fec0606041e7a2ca3f51 Mon Sep 17 00:00:00 2001 From: Fathi Boudra Date: Mon, 16 Jan 2017 19:25:27 +0200 Subject: [PATCH 221/268] release notes: use oneliner for OpenStack version/name --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index f0511c7..a9ecae8 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -23,8 +23,7 @@ ## Enterprise Components - Docker 1.10.3 -- OpenStack - - Mitaka +- OpenStack Mitaka - Ceph 10.2.3 - Spark 2.0 - OpenJDK 8 From 9297e5029f5a54a567605aee53bdbd9352035354 Mon Sep 17 00:00:00 2001 From: Slimlogic Ltd Date: Mon, 16 Jan 2017 17:26:20 +0000 Subject: [PATCH 222/268] Update ReleaseNotes.md --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index a9ecae8..7f76a12 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -9,7 +9,7 @@ ## UEFI -- Tianocore EDK II and OpenPlatformPkg containing reference implementations for Huawei D03/D05, AMD Overdrive and LeMaker Cello +- Tianocore EDK II and OpenPlatformPkg containing reference implementations for Huawei D03/D05 and AMD Overdrive ## Debian From 10e57be57d53cd478d0bb99de4454ea8fa689545 Mon Sep 17 00:00:00 2001 From: Milosz Wasilewski Date: Mon, 16 Jan 2017 23:05:51 +0000 Subject: [PATCH 223/268] ReleaseNotes: added known issues Known issues for hardware platforms and CentOS were added. Bugs are sorted in descending ID order Signed-off-by: Milosz Wasilewski --- .../Platforms/Enterprise/ReleaseNotes.md | 55 ++++++++++++++----- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 7f76a12..1ae6ce8 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -46,33 +46,60 @@ - Using Docker with XFS and Overlay Storage Driver: - Note that XFS file systems must be created with the -n ftype=1 option enabled for use as an overlay. With the rootfs and any file systems created during system installation, set the --mkfsoptions=-n ftype=1 parameters in the Anaconda kickstart. When creating a new file system after the installation, run the # mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE command. To determine whether an existing file system is eligible for use as an overlay, run the # xfs_info /PATH/TO/DEVICE | grep ftype command to see if the ftype=1 option is enabled. - https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html -- Installation via USB fails - https://bugs.linaro.org/show_bug.cgi?id=2655 + +- [2801](https://bugs.linaro.org/show_bug.cgi?id=2801) sort out qemu/qemu-ev packaging in linaro-overlay for CentOS 7 +- [2778](https://bugs.linaro.org/show_bug.cgi?id=2778) qemu-system-aarch64 doesn't pull ipxe-roms-qemu package +- [2743](https://bugs.linaro.org/show_bug.cgi?id=2743) LTP: growfiles test cases failed +- [2728](https://bugs.linaro.org/show_bug.cgi?id=2728) openssl test suite test_req and test_verify failed exit major All +- [2725](https://bugs.linaro.org/show_bug.cgi?id=2725) No source RPM found for openssh-6.6.1p1-25.el7.aarch64 major All +- [2720](https://bugs.linaro.org/show_bug.cgi?id=2720) CentOS/Debian: CONFIG_ARM64_VA_BITS=48 breaks userspace +- [2701](https://bugs.linaro.org/show_bug.cgi?id=2701) libhugetlbfs test cases counters.sh heap-overflow and heapshrink failed +- [2694](https://bugs.linaro.org/show_bug.cgi?id=2694) CentOS: overlayfs: upper fs needs to support d_type +- [2681](https://bugs.linaro.org/show_bug.cgi?id=2681) Install will fail if RTC date is incorrect due to https +- [2655](https://bugs.linaro.org/show_bug.cgi?id=2655) kickstart file not available in ISO image +- [2363](https://bugs.linaro.org/show_bug.cgi?id=2363) LTP: # profil01 profil failed to record anything +- [2356](https://bugs.linaro.org/show_bug.cgi?id=2356) LTP: open14.c check file permissions failed normal All +- [2351](https://bugs.linaro.org/show_bug.cgi?id=2351) LTP: openat03 TBROK errno=EINVAL(22) Invalid argument normal All ### QDF2432: -- No support for on-board ethernet (emac) - https://bugs.linaro.org/show_bug.cgi?id=2603 +- [2663](https://bugs.linaro.org/show_bug.cgi?id=2663) Debian: 'qemu-sys - tem-aarch64 -cpu host' causes host reboot +- [2646](https://bugs.linaro.org/show_bug.cgi?id=2646) LTP: Kernel crashes in syscalls/ipc/msgctl10 test +- [2603](https://bugs.linaro.org/show_bug.cgi?id=2603) No support for on-board ethernet (emac) + +### D05: + +- [2788](https://bugs.linaro.org/show_bug.cgi?id=2788) kernel oops during hns_dsaf probe +- [2770](https://bugs.linaro.org/show_bug.cgi?id=2770) UEFI occasionally hangs +- [2715](https://bugs.linaro.org/show_bug.cgi?id=2715) CentOS: ngingx-apache-bench reports request failures +- [2712](https://bugs.linaro.org/show_bug.cgi?id=2712) network port is slow when using encrypted connection (SSH) +- [2657](https://bugs.linaro.org/show_bug.cgi?id=2657) Confusing Ethernet port sequence ### D03: -- Only 16 cores enabled (instead of 32) - https://bugs.linaro.org/show_bug.cgi?id=2635 -- Fails to install/boot Debian/CentOS with the default boot argument - https://bugs.linaro.org/show_bug.cgi?id=2661 -- Earlycon not working (no console output) - https://bugs.linaro.org/show_bug.cgi?id=2699 +- [2792](https://bugs.linaro.org/show_bug.cgi?id=2792) BMC bootdevice doesn't work with UEFI +- [2788](https://bugs.linaro.org/show_bug.cgi?id=2788) kernel oops during hns_dsaf probe +- [2774](https://bugs.linaro.org/show_bug.cgi?id=2774) System stucked when manually enabled function graph tracer and echo function_graph > /sys/kernel/debug/tracing/current_tracer +- [2732](https://bugs.linaro.org/show_bug.cgi?id=2732) LuvOS next doesn't boot on d03 +- [2699](https://bugs.linaro.org/show_bug.cgi?id=2699) Earlycon not working (no console output) +- [2661](https://bugs.linaro.org/show_bug.cgi?id=2661) Fails to install/boot Debian/CentOS with the default boot argument +- [2657](https://bugs.linaro.org/show_bug.cgi?id=2657) Confusing Ethernet port sequence +- [2635](https://bugs.linaro.org/show_bug.cgi?id=2635) Only 16 cores enabled (instead of 32) ### HP-m400 Moonshot: -- Boot medium is not updated after network installer - https://bugs.linaro.org/show_bug.cgi?id=2703 +- [2703](https://bugs.linaro.org/show_bug.cgi?id=2703) Boot medium is not updated after network installer ### Cavium (ThunderX) -- UEFI boot entry not created after Debian installer finished - https://bugs.linaro.org/show_bug.cgi?id=2736 +- [2773](https://bugs.linaro.org/show_bug.cgi?id=2773) UEFI Runtime regions are not aligned to 64 KB - buggy firmware? +- [2736](https://bugs.linaro.org/show_bug.cgi?id=2736) UEFI boot entry not created after Debian installer finished +- [2700](https://bugs.linaro.org/show_bug.cgi?id=2700) LTP test case oom01 restarted serial-getty and NetworkManager.service +- [2332](https://bugs.linaro.org/show_bug.cgi?id=2332) fork: Resource temporarily unavailable when building linux normal ThunderX ### The SDI (OpenStack) components are released with the following known bugs: -- 2549 "Ethernet hotplug fails on 16.06" - this is a known bug that -hasn't been fixed for this release. -- 2805 "dhcp lease is not freed after instance deleted" - this was a -regression on the kernel that is being fixed. A new validated kernel -will land next week with this fix in it. -- 2819 "Volume hot plug not working in 16.12" - This is a known issue -with this release that hasn't been fixed. +- [2819](https://bugs.linaro.org/show_bug.cgi?id=2819) "Volume hot plug not working in 16.12" - This is a known issue with this release that hasn't been fixed. +- [2805](https://bugs.linaro.org/show_bug.cgi?id=2805) "dhcp lease is not freed after instance deleted" - this was a regression on the kernel that is being fixed. A new validated kernel will land next week with this fix in it. +- [2549](https://bugs.linaro.org/show_bug.cgi?id=2549) "Ethernet hotplug fails on 16.06" - this is a known bug that hasn't been fixed for this release. From d562f2c774a2975bb9ad847231176e7d8b8310ad Mon Sep 17 00:00:00 2001 From: Milosz Wasilewski Date: Mon, 16 Jan 2017 23:12:23 +0000 Subject: [PATCH 224/268] ReleaseNotes: Added debian known issues Signed-off-by: Milosz Wasilewski --- .../Platforms/Enterprise/ReleaseNotes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index 1ae6ce8..b96f5c0 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -61,6 +61,15 @@ - [2356](https://bugs.linaro.org/show_bug.cgi?id=2356) LTP: open14.c check file permissions failed normal All - [2351](https://bugs.linaro.org/show_bug.cgi?id=2351) LTP: openat03 TBROK errno=EINVAL(22) Invalid argument normal All +### Debian: + +- [2748](https://bugs.linaro.org/show_bug.cgi?id=2748) LTP: containers sub test case netns_breakns and netns_comm failed +- [2747](https://bugs.linaro.org/show_bug.cgi?id=2747) LTP test case isofs failed on D03, Thunderx and moonshot running Debian +- [2745](https://bugs.linaro.org/show_bug.cgi?id=2745) LTP: quota_remount_test01 failed on Debian Running on D03, moonshot and Thunderx platforms. +- [2744](https://bugs.linaro.org/show_bug.cgi?id=2744) LTP: writev01, writev03, writev04 test cases failed +- [2720](https://bugs.linaro.org/show_bug.cgi?id=2720) CentOS/Debian: CONFIG_ARM64_VA_BITS=48 breaks userspace +- [2351](https://bugs.linaro.org/show_bug.cgi?id=2351) LTP: openat03 TBROK errno=EINVAL(22) Invalid argument + ### QDF2432: - [2663](https://bugs.linaro.org/show_bug.cgi?id=2663) Debian: 'qemu-sys - tem-aarch64 -cpu host' causes host reboot @@ -70,6 +79,7 @@ ### D05: - [2788](https://bugs.linaro.org/show_bug.cgi?id=2788) kernel oops during hns_dsaf probe +- [2786](https://bugs.linaro.org/show_bug.cgi?id=2786) raid0 performance worse on debian comparing to centos - [2770](https://bugs.linaro.org/show_bug.cgi?id=2770) UEFI occasionally hangs - [2715](https://bugs.linaro.org/show_bug.cgi?id=2715) CentOS: ngingx-apache-bench reports request failures - [2712](https://bugs.linaro.org/show_bug.cgi?id=2712) network port is slow when using encrypted connection (SSH) From 9a0e8b8665f785095a7b5af4e6247920ecda8edb Mon Sep 17 00:00:00 2001 From: Milosz Wasilewski Date: Tue, 17 Jan 2017 13:13:23 +0000 Subject: [PATCH 225/268] ReleaseNotes: Removed resolved/fixed bugs Signed-off-by: Milosz Wasilewski --- Reference-Platform/Platforms/Enterprise/ReleaseNotes.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md index b96f5c0..d0e5d6e 100644 --- a/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md +++ b/Reference-Platform/Platforms/Enterprise/ReleaseNotes.md @@ -47,7 +47,6 @@ - Note that XFS file systems must be created with the -n ftype=1 option enabled for use as an overlay. With the rootfs and any file systems created during system installation, set the --mkfsoptions=-n ftype=1 parameters in the Anaconda kickstart. When creating a new file system after the installation, run the # mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE command. To determine whether an existing file system is eligible for use as an overlay, run the # xfs_info /PATH/TO/DEVICE | grep ftype command to see if the ftype=1 option is enabled. - https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html -- [2801](https://bugs.linaro.org/show_bug.cgi?id=2801) sort out qemu/qemu-ev packaging in linaro-overlay for CentOS 7 - [2778](https://bugs.linaro.org/show_bug.cgi?id=2778) qemu-system-aarch64 doesn't pull ipxe-roms-qemu package - [2743](https://bugs.linaro.org/show_bug.cgi?id=2743) LTP: growfiles test cases failed - [2728](https://bugs.linaro.org/show_bug.cgi?id=2728) openssl test suite test_req and test_verify failed exit major All @@ -105,7 +104,6 @@ - [2773](https://bugs.linaro.org/show_bug.cgi?id=2773) UEFI Runtime regions are not aligned to 64 KB - buggy firmware? - [2736](https://bugs.linaro.org/show_bug.cgi?id=2736) UEFI boot entry not created after Debian installer finished - [2700](https://bugs.linaro.org/show_bug.cgi?id=2700) LTP test case oom01 restarted serial-getty and NetworkManager.service -- [2332](https://bugs.linaro.org/show_bug.cgi?id=2332) fork: Resource temporarily unavailable when building linux normal ThunderX ### The SDI (OpenStack) components are released with the following known bugs: From 6de8190b3b64fc87494b92b332a2efc95b4a4e65 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 07:43:37 -0800 Subject: [PATCH 226/268] Added OpenStack md information Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/OpenStack/README.md | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Reference-Platform/Platforms/Enterprise/OpenStack/README.md diff --git a/Reference-Platform/Platforms/Enterprise/OpenStack/README.md b/Reference-Platform/Platforms/Enterprise/OpenStack/README.md new file mode 100644 index 0000000..f7167b9 --- /dev/null +++ b/Reference-Platform/Platforms/Enterprise/OpenStack/README.md @@ -0,0 +1,105 @@ +# OpenStack + +This repository provides all the support code required to deploy a "Developer +Cloud". + +# OpenStack packages + +The OpenStack packages are built by Linaro and made available in the following +location: + +TBD + +The build scripts for the packages are available in this repository on the +`openstack-venvs` folder. These scripts are provided on as is basis, and they +are tailored specifically for Linaro's building environment. Use only at your +own risk. + +# Reference Architecture + +The reference architecture deploys a cloud that uses Ceph as backend for OpenStack. + +See block diagram of how the servers should be connected to the network and how to +spread the services on the different hosts on a default configuration in the [architecture document](docs/architecture.md). + +# Pre-requisites + + +1. All the servers are supposed to have CentOS or Debian installed and they are supposed to +have networking configured in a way that they can see/resolve each other's names. + +1. The nodes that will be used as Ceph OSDs need to have at least one extra harddrive for Ceph. + +1. The networking node should have 3 NICs connected as described in the [architecture document](docs/architecture.md). + +# Configuration + +Some example configuration files are provided in this repo as example, go through them and +generate the equivalent ones for your particular deployment: + + ansible/hosts.example + group_vars/all + +Ensure to use host names, instead of ips to avoid some known deployment issues. + +The playbook assumes your own files are in a folder called `ansible/secrets`, so the recommendation +is to place your files there. + +# The deployment + +The deployment can be split in two different parts. Ceph and OpenStack. + +## Deploying Ceph + +1) Monitors are deployed and the cluster bootstrapmd: + + ansible-playbook -K -v -i ./hosts ./site.yml --tags ceph-mon + +Check that the cluster is up and running by connecting to one of the monitors +and checking: + + ssh server1 + ceph daemon mon.server1 mon_status + +2) OSDs assume a full hard drive is dedicated to Ceph at least. A default +configuration if all the servers that will be OSDs have the same HD layout +can be spedified in group_vars/all as follows: + +``` +ceph_host_osds: + - sbX + - sbY + - sbZ +``` + +If some server has a different configuration, this will be specified in the +hostvars folder, in a file with the name of your server. For example: + +``` +$ cat hostvars/server1 + +ceph_host_osds: + - sbZ + - sbY +``` + +After configuring, the OSDs are deployed as follows: + + ansible-playbook -K -v -i ./secrets/hosts ./site.yml --tags ceph-osd + +2.1) In the case of setting up a cluster from scratch where ceph has been installed +previously, there is an option to force the resetting of all the disks (this +option WILL DELETE all the data on the OSDs). This option is not +idempotent, use at your own risk. It is safe to use if you have cleanly deployed +the machine and the disk to be used as OSD had a previously installed Ceph: + + --extra-vars 'ceph_force_prepare=true' + +## Deploying OpenStack + +OpenStack is deployed using Ansible with the playbook defined in the "ansible" +directory. You'll need to create the files "deployment-vars" and "hosts" to +match your environment. There are examples to help guide you. Once those files +are in place, OpenStack can be deployed with: + + ansible-playbook -K -v -i secrets/hosts site.yml From e2462ddb789048a82a4da13ec8df4edbbfc582a1 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 07:45:04 -0800 Subject: [PATCH 227/268] Added OpenStack option Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/README.md b/Reference-Platform/Platforms/Enterprise/README.md index 8b6d408..ff16e48 100644 --- a/Reference-Platform/Platforms/Enterprise/README.md +++ b/Reference-Platform/Platforms/Enterprise/README.md @@ -8,6 +8,8 @@ A comprehensive guide to using the Enterprise Reference Platform. This guide is - Learn more about the Enterprise Reference Platform, this is an ideal place to start. - [Installation](Installation/README.md) - Installation and build instructions for a variety of your Reference Platform components +- [OpenStack](OpenStack/README.md) + - This section provides all the support code required to deploy a "Developer Cloud" - [Support](Support/README.md) - From bug reports and current issues, to forum access and other useful resources, we want to help you find answers From 7c7033691cad5ce8477aac20daccf700ecb6712d Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 07:56:25 -0800 Subject: [PATCH 228/268] Remove hw choice for downloads page Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Centos/Download.md | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md deleted file mode 100644 index 059a627..0000000 --- a/Reference-Platform/Platforms/Enterprise/Installation/Centos/Download.md +++ /dev/null @@ -1,11 +0,0 @@ -# Choose your Hardware - -- [Overdrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/centos-installer/) -- [X-Gene](http://releases.linaro.org/reference-platform/enterprise/apm/x-gene/16.12/centos-installer/) -- [Thunder X](http://releases.linaro.org/reference-platform/enterprise/cavium/thunderx/16.12/centos-installer/) -- [m400](http://releases.linaro.org/reference-platform/enterprise/hpe/m400/16.12/centos-installer/) -- [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/centos-installer/) -- [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/centos-installer/) -- [QDF2432](http://releases.linaro.org/reference-platform/enterprise/qualcomm/qdf2432/16.12/centos-installer/) - -Proceed to [Install](README.md) page From ae4a56a8eee28b228ec86f42dc74411702dd88fc Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 07:56:49 -0800 Subject: [PATCH 229/268] Remove hw choice for downloads page Signed-off-by: Robert Wolff --- .../Enterprise/Installation/Debian/Download.md | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md diff --git a/Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md b/Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md deleted file mode 100644 index aba871a..0000000 --- a/Reference-Platform/Platforms/Enterprise/Installation/Debian/Download.md +++ /dev/null @@ -1,11 +0,0 @@ -# Choose your Hardware - -- [Overdrive](http://releases.linaro.org/reference-platform/enterprise/amd/overdrive/16.12/debian-installer/) -- [X-Gene](http://releases.linaro.org/reference-platform/enterprise/apm/x-gene/16.12/debian-installer/) -- [Thunder X](http://releases.linaro.org/reference-platform/enterprise/cavium/thunderx/16.12/debian-installer/) -- [m400](http://releases.linaro.org/reference-platform/enterprise/hpe/m400/16.12/debian-installer/) -- [D03](http://releases.linaro.org/reference-platform/enterprise/huawei/d03/16.12/debian-installer/) -- [D05](http://releases.linaro.org/reference-platform/enterprise/huawei/d05/16.12/debian-installer/) -- [QDF2432](http://releases.linaro.org/reference-platform/enterprise/qualcomm/qdf2432/16.12/debian-installer/) - -Proceed to [Install](README.md) page From 5f8bbef24e6c941bb5eb009bb73c5f82d9776ebd Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 07:57:40 -0800 Subject: [PATCH 230/268] Added new download link for installers Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/Installation/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index 947ab75..756d2f0 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -44,12 +44,12 @@ Choose your network installer, download or build, and proceed to the installatio
UEFI/EDK2 - Download
Get the latest pre-built firmware images
Download
Get the latest pre-built firmware images
Build
Instructions for building latest firmware images
Install
Instructions on how to install firmware
Read more
Learn more about UEFI/EDK2
+ +
Centos - DownloadDownload Install
Debian Jessie - DownloadDownload Install
From 59b02025f74ad9e54386c2bd5190450258708529 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 08:18:55 -0800 Subject: [PATCH 231/268] Added support forum to top level text Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise.md b/Reference-Platform/Platforms/Enterprise.md index 4eb5e5e..f97e4fe 100644 --- a/Reference-Platform/Platforms/Enterprise.md +++ b/Reference-Platform/Platforms/Enterprise.md @@ -1,6 +1,6 @@ # Enterprise Reference Platform -The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. +The enterprise reference platform is targeted to accelerate the high powered ARMv8 servers in both datacenter and cloud vertical markets. Industry standard firmware (SBBR and SBSA) and a unified Linux kernel are provided for all the supported platforms, simplifying software maintenance and deployment. The high level components such as Openstack, Ceph, Hadoop, and KVM are rigorously validated for each distribution. The enterprise software stack provides two builds based on Debian and Centos. The goal is to help bridge the gap between older technology present in today’s distributions and the latest ARM server optimizations. For more information and support please visit the [ERP forum](https://discuss.linaro.org/c/erp). **Features:** From 71d6b0aeddca3d6b1ab375fda2f906bf6fe90701 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 09:12:37 -0800 Subject: [PATCH 232/268] Removed Cello Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Hardware/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Hardware/README.md index fba00fc..8d98538 100644 --- a/Reference-Platform/Platforms/Enterprise/Hardware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Hardware/README.md @@ -3,7 +3,6 @@ List of approved hardware, ideal for testing the Enterprise Reference Platform. - [AMD Overdrive](http://www.amd.com/en-us/innovations/software-technologies/technologies-gaming/over-drive) -- [LeMaker Cello](http://www.lenovator.com/product/103.html) - [HiSilicon D03](http://open-estuary.org/d03/) - [HiSilicon D05](http://open-estuary.org/d05/) - [APM X-Gene Mustang](https://www.apm.com/products/data-center/x-gene-family/x-gene/) From cd0189996157f8333404f53ef78f6a67d4caddf9 Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 09:14:09 -0800 Subject: [PATCH 233/268] Added link for Qualcomm Board Signed-off-by: Robert Wolff --- Reference-Platform/Platforms/Enterprise/Hardware/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Hardware/README.md b/Reference-Platform/Platforms/Enterprise/Hardware/README.md index 8d98538..1844242 100644 --- a/Reference-Platform/Platforms/Enterprise/Hardware/README.md +++ b/Reference-Platform/Platforms/Enterprise/Hardware/README.md @@ -7,7 +7,7 @@ List of approved hardware, ideal for testing the Enterprise Reference Platform. - [HiSilicon D05](http://open-estuary.org/d05/) - [APM X-Gene Mustang](https://www.apm.com/products/data-center/x-gene-family/x-gene/) - [HP Proliant m400](https://www.cdw.com/shop/products/HPE-ProLiant-m400-X-Gene-2.4-GHz-64-GB-0-GB/3516636.aspx) -- Qualcomm Q2432 +- [Qualcomm Q2432](https://developer.qualcomm.com/) - [Cavium Thunder X](http://www.cavium.com/ThunderX_ARM_Processors.html) Proceed to [Installation](../Installation/README.md) page. From d04e79aae956b0517417875d815ac3c2c58f368c Mon Sep 17 00:00:00 2001 From: Robert Wolff Date: Tue, 17 Jan 2017 09:19:39 -0800 Subject: [PATCH 234/268] Added openstack option Signed-off-by: Robert Wolff --- .../Platforms/Enterprise/GettingStarted/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md index 8f6735a..d075575 100644 --- a/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md +++ b/Reference-Platform/Platforms/Enterprise/GettingStarted/README.md @@ -23,5 +23,7 @@ The Enterprise Reference Platform is targeted to accelerate the high powered ARM - This is a list of all tested and approved Enterprise Reference Platform hardware - [Installation](../Installation/README.md) - From start to finish, set up your environment and install the Enterprise Reference Platform +- [OpenStack](../OpenStack/README.md) + - This section provides all the support code required to deploy a "Developer Cloud" - [Support](../Support/README.md) - Bug reports and current issues, forum access and other useful resources. We want to help you find answers From 431dba1150f81a5011fcc313e6001c4d6e720a08 Mon Sep 17 00:00:00 2001 From: Fathi Boudra Date: Wed, 18 Jan 2017 09:45:56 +0200 Subject: [PATCH 235/268] Update README.md --- Reference-Platform/Platforms/Enterprise/Installation/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Reference-Platform/Platforms/Enterprise/Installation/README.md b/Reference-Platform/Platforms/Enterprise/Installation/README.md index 756d2f0..e70931b 100644 --- a/Reference-Platform/Platforms/Enterprise/Installation/README.md +++ b/Reference-Platform/Platforms/Enterprise/Installation/README.md @@ -48,7 +48,7 @@ Choose your network installer, download or build, and proceed to the installatio
Install
Debian Jessie + Debian Download Install