-= 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 ; patch -p0 < " - 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 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 [image_size_in_KB] 2. Build ELWIX system into direct device ./install2dev 3. Build ELWIX system into separate compressed binary images for u-boot embedded devices ./install2uboot 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 or Best regards Michael Pounov ----- ELWIX - Embedded LightWeight unIX -