| .. This work is licensed under a Creative Commons Attribution 4.0 International License. |
| .. SPDX-License-Identifier: CC-BY-4.0 |
| .. Copyright (C) 2019 Wind River Systems, Inc. |
| |
| INF Developer Guide |
| =================== |
| |
| .. contents:: |
| :depth: 3 |
| :local: |
| |
| 1. About the INF project |
| ************************ |
| |
| This project is a reference implementation of O-Cloud infrastructure which is based on StarlingX, and it supports multi-OS. |
| |
| * Currently the following OS are supported: |
| |
| * Debian 11 (bullseye) |
| * CentOS 7 |
| * Yocto 2.7 (warrior) |
| |
| Notes: |
| * Debian based is the recommended platfrom. |
| * The intended audiences of this guide are the developers who want to develop/integrate apps in INF platform, if you just want to install and deploy INF platform, you can ignore this guide and read the `INF Installation Guide`_ |
| |
| .. _`INF Installation Guide`: https://docs.o-ran-sc.org/projects/o-ran-sc-pti-rtp/en/latest/installation-guide.html |
| |
| 1.1 About the Debian based implementaion |
| ---------------------------------------- |
| The project provde wrapper scripts to automate all the steps of `StarlingX Debian Build Guide`_ to build out the reference platform as an installable ISO image. |
| |
| .. _`StarlingX Debian Build Guide`: https://wiki.openstack.org/wiki/StarlingX/DebianBuildEnvironment |
| |
| 1.2 About the CentOS based implementaion |
| ---------------------------------------- |
| The project provde wrapper scripts to automate all the steps of `StarlingX Build Guide`_ to build out the reference platform as an installable ISO image. |
| |
| .. _`StarlingX Build Guide`: https://docs.starlingx.io/developer_resources/build_guide.html |
| |
| 1.3 About the Yocto based implementation |
| ---------------------------------------- |
| |
| The project provde wrapper scripts to pull all required Yocto/OE layers to build out the reference platform as an installable ISO image. |
| |
| To contribute on this project, basic knowledge of Yocto/OpenEmbedded is needed, please refer to the following docs if you want to learn about how to develop with Yocto/OpenEmbedded: |
| |
| - `Yocto dev manual`_ |
| - `OpenEmbedded wiki`_ |
| |
| .. _`Yocto dev manual`: https://www.yoctoproject.org/docs/2.6.3/dev-manual/dev-manual.html |
| .. _`OpenEmbedded wiki`: http://www.openembedded.org/wiki/Main_Page |
| |
| |
| 2. How to build the INF project |
| ******************************* |
| |
| 2.1 How to build the Debian based image |
| --------------------------------------- |
| |
| 2.1.1 Prerequisite for Debian build environment |
| +++++++++++++++++++++++++++++++++++++++++++++++ |
| |
| NOTE: The build system for Debian requires a Linux system with Docker and python 3.x installed. The the following steps have been tested on CentOS 7 and Ubuntu 20.04. |
| |
| * Refer to `Install docker on ubuntu`_ or `Install docker on centos`_ to install docker. |
| * Refer to `Configure_Debian_build_environment`_ to install prerequisite packges and configure for Debian build environment. |
| |
| .. _`Install docker on ubuntu`: https://docs.docker.com/engine/install/ubuntu/ |
| .. _`Install docker on centos`: https://docs.docker.com/engine/install/centos/ |
| .. _`Configure_Debian_build_environment`: https://wiki.openstack.org/wiki/StarlingX/DebianBuildEnvironment#Configure_build_environment |
| |
| 2.1.2 Use wrapper script build_inf_debian.sh to build the Debian based image |
| ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| |
| :: |
| |
| # Get the wrapper script to build the debian image |
| $ wget -O build_inf_debian.sh 'https://gerrit.o-ran-sc.org/r/gitweb?p=pti/rtp.git;a=blob_plain;f=scripts/build_inf_debian/build_inf_debian.sh;hb=HEAD' |
| |
| $ chmod +x build_inf_debian.sh |
| $ WORKSPACE=/path/to/workspace |
| $ ./build_inf_debian.sh -w ${WORKSPACE} |
| |
| If all go well, you will get the ISO image in: |
| ${WORKSPACE}/prj_output/inf-image-debian-all-x86-64.iso |
| |
| 2.2 How to build the CentOS based image |
| --------------------------------------- |
| |
| NOTE: This only supports build on CentOS 7 which will be EOL 30 Jun 2024. |
| |
| 2.2.1 Prerequisite for CentOS build environment |
| +++++++++++++++++++++++++++++++++++++++++++++++ |
| |
| NOTE: This step needs the user has sudo permission. |
| |
| :: |
| |
| # Get the wrapper script for preparing the build environment |
| $ wget -O build_inf_prepare.sh https://gerrit.o-ran-sc.org/r/gitweb?p=pti/rtp.git;a=blob_plain;f=scripts/build_inf_centos/build_inf_prepare_jenkins.sh;hb=HEAD |
| |
| $ chmod +x build_inf_prepare.sh |
| $ WORKSPACE=/path/to/workspace |
| $ ./build_inf_prepare.sh -w ${WORKSPACE} |
| |
| 2.2.2 Use wrapper script build_inf_centos.sh to build the CentOS based image |
| ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| |
| :: |
| |
| # Get the wrapper script to build the centos image |
| $ wget -O build_inf_centos.sh 'https://gerrit.o-ran-sc.org/r/gitweb?p=pti/rtp.git;a=blob_plain;f=scripts/build_inf_centos/build_inf_centos.sh;hb=HEAD' |
| |
| $ chmod +x build_inf_centos.sh |
| $ WORKSPACE=/path/to/workspace |
| $ ./build_inf_centos.sh -w ${WORKSPACE} |
| |
| If all go well, you will get the ISO image in: |
| ${WORKSPACE}/prj_output/inf-image-centos-all-x86-64.iso |
| |
| |
| 2.3 How to build the Yocto based image |
| -------------------------------------- |
| |
| 2.3.1 Prerequisite for Yocto build environment |
| ++++++++++++++++++++++++++++++++++++++++++++++ |
| |
| * Your host need to meet the requirements for Yocto, please refer to: |
| |
| * `Compatible Linux Distribution`_ |
| * `Supported Linux Distributions`_ |
| * `Required Packages for the Build Host`_ |
| |
| The recommended and tested host is Ubuntu 16.04/18.04 and CentOS 7. |
| |
| * To install the required packages for Ubuntu 16.04/18.04: |
| |
| .. _`Compatible Linux Distribution`: https://www.yoctoproject.org/docs/2.7.3/brief-yoctoprojectqs/brief-yoctoprojectqs.html#brief-compatible-distro |
| .. _`Supported Linux Distributions`: https://www.yoctoproject.org/docs/2.7.3/ref-manual/ref-manual.html#detailed-supported-distros |
| .. _`Required Packages for the Build Host`: https://www.yoctoproject.org/docs/2.7.3/ref-manual/ref-manual.html#required-packages-for-the-build-host |
| |
| :: |
| |
| $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \ |
| build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \ |
| xz-utils debianutils iputils-ping make xsltproc docbook-utils fop dblatex xmlto \ |
| python-git |
| |
| * To install the required packages for CentOS 7: |
| |
| :: |
| |
| $ sudo yum install -y epel-release |
| $ sudo yum makecache |
| $ sudo yum install gawk make wget tar bzip2 gzip python unzip perl patch \ |
| diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo chrpath socat \ |
| perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue perl-Digest-SHA \ |
| python34-pip xz which SDL-devel xterm |
| |
| 2.3.2 Use wrapper script build_inf_yocto.sh to setup build the Yocto based image |
| ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| |
| :: |
| |
| # Get the wrapper script with either curl or wget |
| $ curl -o build_inf_yocto.sh 'https://gerrit.o-ran-sc.org/r/gitweb?p=pti/rtp.git;a=blob_plain;f=scripts/build_inf_yocto/build_inf_yocto.sh;hb=HEAD' |
| $ wget -O build_inf_yocto.sh 'https://gerrit.o-ran-sc.org/r/gitweb?p=pti/rtp.git;a=blob_plain;f=scripts/build_inf_yocto/build_inf_yocto.sh;hb=HEAD' |
| |
| $ chmod +x build_inf_yocto.sh |
| $ WORKSPACE=/path/to/workspace |
| $ ./build_inf_yocto.sh -w ${WORKSPACE} |
| |
| If all go well, you will get the ISO image in: |
| ${WORKSPACE}/prj_output/inf-image-yocto-aio-x86-64.iso |
| |