flexbuild's Introduction
What is Flexbuild ----------------- Flexbuild is an integrated build framework with build and installation. It builds desired images and firmwares for various components (linux, u-boot, uefi, ppa, rcw, apps) and Debian/Ubuntu based distro userland. - support cross build on any x86 Linux host machine for ARM arch target - support native build on aarch64/armhf machine for ARM arch target - generate custom aarch64/armhf Debian/Ubuntu userland integrated configurable upstream packages and proprietary components. How to build various components and Ubutnu based userland with Flexbuild ------------------------------------------------------------------------- 1. clone flexbuild git repo $ git clone ssh://github.com/qoriq-open-source/flexbuild.git $ cd flexbuild 2. check default build.cfg as per actual need, check manifest/<machine>.manifest to match actual machine. 3. build single or all desired components to generate target images/firmwares/userland tarball $ ./flex-builder Usage: flex-builder <option> <parameters> [<option> <parameters>] option: -m, --machine target machine -a, --arch target arch to override default arch, valid: 'arm64', 'arm32' -b, --boottype type of boot media, valid argument: 'nor', 'sd' -j, --jobs the number of build jobs -c, --component specify single or all components to build, valid argument: linux|uboot|uefi|ppa|rcw: build single component only firmware: build all firmwares(u-boot,uefi,ppa,rcw,linux,etc) apps: build all apps tool(restool,fmc,usdpaa,dpdp,dce,etc) all: build all components(linux, firmware, apps) -i, --instruction instruction to generate target image, valid argument: mkfw: generate firmware image for NOR/SD boot mkinstaller: generate flex_installer_<arch>.itb mkbootpart: generate boot partion tarball contained kernel,dtb,installer mkrfs: generate ubuntu userland integrated specified packages and apps components -h, --help print help info e.g. ./flex-builder -c uboot -m ls2088ardb // build u-boot for machine ls2088ardb ./flex-builder -c linux -a arm64 // build linux for arm64 ./flex-builder -c apps -a arm64 // build all apps components for arm64 machines ./flex-builder -c firmware -m ls1043ardb // build all firmwares for machine ls1043ardb ./flex-builder -i mkfw -m ls2088ardb -b nor // generate firmware image for norboot on ls2088ardb machine ./flex-builder -i mkinstaller -a arm64 // generate flex_installer_arm64.itb for all arm64 machines ./flex-builder -i mkbootpart -a arm64 // generate stuff for boot partition contained kernel, dtb, installer, etc ./flex-builder -i mkrfs -a arm64 // generate Ubuntu userland contained proprietary apps components Install distro with flex-installer ---------------------------------- case 1: online install custom distro to SD/USB/SATA disk which is connected to ARM arch development board run ./flex-builder -i mkinstaller -a arm64 to generate flex_installer_arm64.itb) put flex_installer_arm64.itb to tftp server directory. for arm64: => tftp a0000000 flex_installer_arm64.itb => bootm a0000000#<board-name> e.g. <board-name>: ls1012ardb, ls1012afrdm, ls1021atwr, ls1043ardb, ls1046ardb, ls2088ardb for arm32: => tftp a0000000 flex_installer_arm32.itb => bootm a0000000#<board-name> e.g. <board-name>: ls1021atwr, ls1043ardb, ls1046ardb, ls1012ardb, ls1012frdm after entering Linux prompt, run 'flex-installer' command. Usage: flex-installer OPTION [ARG] [OPTION [ARG]] OPTION: -m : media type of the target disk, e.g. sd, usb, sata -d : distro name, e.g. 'ubuntu', 'centos', 'debian' -n : network interface name to configure network by DHCP, e.g. eth0, optionally -h : print help info for example: flex-installer -m sd -d ubuntu -n eth0 or flex-installer --bootpart=http://10.192.208.75/dash/Dash-kernel/lsdk-1703/bootpartition_arm64.tgz \ --rootfs=http://10.192.208.75/dash/Ubuntu/lsdk-1703/xenial_arm64_rootfs.tgz --device=/dev/mmcblk0 case 2: offline install custom distro(ubuntu/debian/centos) to SD/USB/SATA disk connected on Linux host machine a. insert SD/USB/SATA storage device to Linux Host machine b. $ git clone https://github.com/qoriq-open-source/flexbuild.git && cd flexbuild c. $ ./flex-installer --bootpart=build/images/bootpartition_arm64.d --rootfs=build/images/xenial_arm64_rootfs.d --device=/dev/sdx (note: sdx should be actual device name on your host) How to program firmware to SD card ---------------------------------- take ls1043ardb for example: under u-boot: run "./flex-builder -i mkfw -m ls1043ardb -b sd" to generate firmware_1s1043ardb_sdboot_xxx.img for sdboot => tftp a0000000 firmware_1s1043ardb_sdboot_xxx.img => mmc write a0000000 8 1fff8 => cpld reset sd under Linux: $ ./flex-installer --firmware=firmware_1s1043ardb_sdboot_xxx.img --startblock=8 --device=/dev/mmcblk0 How to boot distro from SD card under u-boot -------------------------------------------- after installing distro by flex-installer, automation script is programmed into SD card for quick boot distro => mmc read a0000000 4E08 1; source a0000000 How to add proprietary component to ubuntu userland --------------------------------------------------- a. add new BUILD_<component> to build.cfg b. Edit packages/qoriq-apps/Makefile to support new <component> c. run ./flex-builder -c apps -a <arch> to get new <component> built d. run ./flex-builder -i mkrfs -a <arch> to get new <component> included in ubuntu userland How to add additional upstream packages to ubuntu userland ---------------------------------------------------------- a. add desired packages to packages/additional_packages_list b. run ./flex-builder -i mkrfs -a <arch> c. install the new Ubuntu userland to target machine via flex-installer How to enable/disable various components to be compiled ------------------------------------------------------- set BUILD_<component> to y or n in build.cfg to include/exclude the specified <component>.
flexbuild's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.