Giter Club home page Giter Club logo

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

Contributors

shengzhou avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.