File:  [ELWIX - Embedded LightWeight unIX -] / elwix / BUILD.txt
Revision 1.7: download - view: text, annotated - select for diffs - revision graph
Thu Mar 11 13:59:50 2021 UTC (3 years, 8 months ago) by misho
Branches: MAIN
CVS tags: elwix2_8, elwix2_7, HEAD, ELWIX2_7, ELWIX2_6
ver 2.6

 -= How-to build ELWIX system project =-
=========================================
$Id: BUILD.txt,v 1.7 2021/03/11 13:59:50 misho Exp $
=========================================

 I. Intro
 	Before starting any work on ELWIX must we prepare environment.

What this means ::
 - We must downloading freebsd sources from CVS/SVN repository and put on separate place from /usr/src.
Set in config/rc.elwix variable BSDSRC="..." with place where you get freebsd sources.
 - We gather from ELWIX CVS repository kodicom_mux project. After this we need to patch our freebsd
sources like that "cd <where you put freebsd sources>; patch -p0 < <kodicom_mux/contrib/kodicom.patch>"
 - We must checkout from ELWIX CVS repository core libraries "libait*" , "embedtools", "embedaddons" 
and GPLv2 "gpl/*" projects
 - Optional download of 3th party software for ELWIX firmware. Project name is embedaddon from ELWIX CVS

 II. Fresh FreeBSD source tree
 	1. When you get new FreeBSD source tree. You should apply patches
		./apply_patches.sh

 III. Build system process
 	1. Init build structures with clean directory tree
		./build_init.sh <filename of project config>
		Result after its work is cleaned previous storage and created new structure for build process
	2. Cross compile entire userland software
		./build_world.sh
		Result from build_world.sh. Cross built whole FreeBSD project and 
			prepared cross build scripts for ELWIX further build processes.
	3. Cross compile ELWIX kernel
		./build_kernel.sh
		Result from ./build_kernel.sh. Cross built two kernels. One for ELWIX Base image without
			embedded RootFS and another with RootFS for ELWIX RootFS images.
	4. Cross compile ELWIX tools
		./build_tools.sh
		Result from ./build_tools.sh. Cross built ELWIX core tools, libraries and services.
		Produced ELWIX system package file elwix-pkg.frm 
	5. Cross compile optional 3th party software 
		./build_3thparty.sh
		Result from build_3thparty.sh. Cross built optional 3th party software for project.
		Produced ELWIX system image file elwix-firmware2.sys
---------------------------------------------------------------------------------
	6. Now is moment for build BaseFS ELWIX system
		./build_base.sh
		Result from build_base.sh. Built ELWIX Base OS version.
		All software will be installed directly on flash/disk storage.
		Script leave ready to install archive and compressed kernel.gz
		Example for ready for install archive: ELWIX-2.6_x86_base_128mb_i386_2017-10-10.tar.gz
---------------------------------------------------------------------------------
	7. Moment comes for build big system binary and inject rootfs image into kernel
		./build_rootfs.sh
		Result from build_rootfs.sh.
		Cross built and leave image rootfs.img which was been injected into kernel.
		Script prepared compressed kernel with embedded zero stage image of ELWIX into kernel_rootfs.gz
	8. Make romfs image and build big fat second stage firmware image
		./build_romfs.sh
		Result from build_romfs.sh. Script collected files and prepare first stage ELWIX image.
		Produced ELWIX system image file elwix-firmware.sys
	9. Now is moment for build RootFS ELWIX system
		./build_fs.sh
		Result from build_fs.sh. Built ELWIX RootFS OS versions.
		All software will be installed as images on flash/disk storage.
		Script produced two version of ELWIX OS:
			- RootFS small image which consume more RAM because all software is into memory drives.
			Example for ready for install archive: ELWIX-2.6_x86_rootfs_64mb_i386_2017-10-10.tar.gz
			- RootFS image which partially installed base tools directly onto flash.
			Example for ready for install archive: ELWIX-2.6_x86_rootfsext_128mb_i386_2017-10-10.tar.gz
---------------------------------------------------------------------------------

 Ok, now we did ELWIX version and placed to build/release directory like tar.gz file

 Example of produced tar balls::
 	ELWIX_X.X_target_{base|rootfs|rootfsext}_size_arch_date.tar.gz

 III. Build storage image
 	1. Build ELWIX system into binary fs image file
		./install2img <ELWIX_X.X_target_.....tar.gz> [image_size_in_KB]
	2. Build ELWIX system into direct device
		./install2dev </dev/daX> <ELWIX_X.X_target_.....tar.gz>
	3. Build ELWIX system into separate compressed binary images for u-boot embedded devices
		./install2uboot <kernel|kernel_rootfs|rootfs|bin|vendor>

 IV. Emergency default address
 	IP: 10.254.254.254/30
	VLAN: 4093

	You should setup at your side 10.254.254.253/30 on VLAN 4093

 IV. Information
	For more information
 	Michael Pounov <misho@elwix.org> or <support@elwix.org>

 Best regards
   Michael Pounov
-----
ELWIX - Embedded LightWeight unIX -

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>