Build guide for Layered build
Added step by step guidelines for users to do layered build. Story: 2007223 Change-Id: I25326cab06dd1fab743a946bfd92c9240f93bb25 Signed-off-by: Poornima <poornima.y.n@intel.com>
This commit is contained in:
parent
8bfe26449b
commit
79a84abac3
@ -1,6 +1,8 @@
|
||||
=============
|
||||
Layered Build
|
||||
=============
|
||||
.. _Layered-Build:
|
||||
|
||||
=======================
|
||||
Layered Build Reference
|
||||
=======================
|
||||
|
||||
What is build layering?
|
||||
-----------------------
|
||||
|
@ -9,6 +9,8 @@ R3.0 and earlier release.
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
.. _Requirements:
|
||||
|
||||
------------
|
||||
Requirements
|
||||
------------
|
||||
@ -37,6 +39,8 @@ A workstation computer with:
|
||||
http://lists.starlingx.io/pipermail/starlingx-discuss/2018-July/000136.html for more details)
|
||||
* Public SSH key
|
||||
|
||||
.. _Development-environment-setup:
|
||||
|
||||
-----------------------------
|
||||
Development environment setup
|
||||
-----------------------------
|
||||
@ -139,6 +143,8 @@ Install tools project
|
||||
|
||||
cd $HOME/tools/
|
||||
|
||||
.. _Prepare_the_base_Docker_image:
|
||||
|
||||
-----------------------------
|
||||
Prepare the base Docker image
|
||||
-----------------------------
|
||||
@ -208,6 +214,8 @@ The creation of the StarlingX ISO relies on a repository of RPM binaries,
|
||||
RPM sources, and tar compressed files. This section describes how to build
|
||||
this CentOS mirror repository.
|
||||
|
||||
.. _Run_building_Docker_container:
|
||||
|
||||
*****************************
|
||||
Run building Docker container
|
||||
*****************************
|
||||
@ -458,6 +466,8 @@ Build the image:
|
||||
|
||||
build-iso
|
||||
|
||||
.. _Build-installer:
|
||||
|
||||
---------------
|
||||
Build installer
|
||||
---------------
|
||||
|
@ -9,6 +9,7 @@ Developer Resources
|
||||
:maxdepth: 1
|
||||
|
||||
build_guide
|
||||
layered_build_guide
|
||||
Layered_Build
|
||||
code-submission-guide
|
||||
navigate_source_code
|
||||
|
859
doc/source/developer_resources/layered_build_guide.rst
Normal file
859
doc/source/developer_resources/layered_build_guide.rst
Normal file
@ -0,0 +1,859 @@
|
||||
===================
|
||||
Layered Build Guide
|
||||
===================
|
||||
This section describes the steps for layered build and building an ISO image
|
||||
from a StarlingX R4.0 release onwards.
|
||||
|
||||
For more detailed explanation of layered build, please refer :ref:`Layered-Build`.
|
||||
|
||||
.. contents::
|
||||
:local:
|
||||
:depth: 1
|
||||
|
||||
-------------------
|
||||
:ref:`Requirements`
|
||||
-------------------
|
||||
Layered build has the same requirements as StarlingX R3.0 build.
|
||||
Click the heading above for details.
|
||||
|
||||
------------------------------------
|
||||
:ref:`Development-environment-setup`
|
||||
------------------------------------
|
||||
Layered build uses the same development environment setup as StarlingX R3.0 build.
|
||||
Click the heading above for details.
|
||||
|
||||
--------------------
|
||||
Build compiler layer
|
||||
--------------------
|
||||
|
||||
*****************************
|
||||
Prepare the base Docker image
|
||||
*****************************
|
||||
|
||||
Follow :ref:`Prepare_the_base_Docker_image` for creating the base StarlingX
|
||||
image with changes only in localrc file as below.
|
||||
Since, we are building compiler layer, create and modify only localrc
|
||||
file. Make sure to set the project and layer as compiler and user name as
|
||||
desired. For example:
|
||||
|
||||
::
|
||||
|
||||
# tbuilder localrc
|
||||
MYUNAME=<your user name>
|
||||
PROJECT=compiler
|
||||
HOST_PREFIX=$HOME/starlingx/workspace
|
||||
HOST_MIRROR_DIR=$HOME/starlingx/mirror
|
||||
LAYER=compiler
|
||||
|
||||
.. _Build-the-CentOS-mirror-repository-compiler:
|
||||
|
||||
**********************************
|
||||
Build the CentOS mirror repository
|
||||
**********************************
|
||||
|
||||
The creation of the StarlingX ISO relies on a repository of RPM binaries,
|
||||
RPM sources, and tar compressed files. This section describes how to build
|
||||
this CentOS mirror repository.
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Run building Docker container
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Follow the :ref:`building docker container <Run_building_Docker_container>` for
|
||||
more details.
|
||||
At the end of this procedure, you will be inside the Starlingx container.
|
||||
|
||||
Quick command summary is as below:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
bash tb.sh env
|
||||
bash tb.sh run
|
||||
bash tb.sh exec
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Download source code repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#. Inside the building Docker container, start the internal environment:
|
||||
|
||||
::
|
||||
|
||||
eval $(ssh-agent)
|
||||
ssh-add
|
||||
|
||||
|
||||
#. Use the repo tool to create a local clone of the manifest git repository
|
||||
based on the “master” branch for compiler layer.
|
||||
|
||||
::
|
||||
|
||||
cd $MY_REPO_ROOT_DIR
|
||||
repo init -u https://opendev.org/starlingx/manifest -b master -m compiler.xml
|
||||
|
||||
#. Synchronize code for compiler layer using command below:
|
||||
|
||||
::
|
||||
|
||||
repo sync -j`nproc`
|
||||
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Download packages
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
#. Inside the Docker container, enter the following commands to download
|
||||
the required packages to populate the CentOS mirror repository:
|
||||
|
||||
::
|
||||
|
||||
cd $MY_REPO_ROOT_DIR/stx-tools/centos-mirror-tools && bash download_mirror.sh
|
||||
|
||||
#. Monitor the download of packages until it is complete. When the download
|
||||
is complete successfully with no missing packages, the following message appears:
|
||||
|
||||
::
|
||||
|
||||
step #5: done successfully
|
||||
sudo rm -rf /tmp/stx_mirror_4d2URF
|
||||
IMPORTANT: The following 3 files are just bootstrap versions. Based on them, the workable images
|
||||
for StarlingX could be generated by running "update-pxe-network-installer" command after "build-iso"
|
||||
- ./output/stx-r1/CentOS/pike/Binary/LiveOS/squashfs.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/initrd.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/vmlinuz
|
||||
|
||||
Success
|
||||
|
||||
***************
|
||||
Verify packages
|
||||
***************
|
||||
|
||||
#. Verify no missing or failed packages exist:
|
||||
|
||||
::
|
||||
|
||||
cat logs/*_missing_*.log
|
||||
cat logs/*_failmoved_*.log
|
||||
|
||||
#. In case missing or failed packages do exist, which is usually caused by
|
||||
network instability (or timeout), you need to download the packages
|
||||
manually or re-run the download command given in previous step.
|
||||
Doing so assures you get all RPMs listed in *centos_srpms_3rdparties.lst,
|
||||
centos_srpms_centos.lst, centos_srpms_centos3rdparties.lst*.
|
||||
|
||||
******************
|
||||
Packages structure
|
||||
******************
|
||||
|
||||
The following is a general overview of the packages structure resulting from
|
||||
downloading the packages for compiler layer:
|
||||
|
||||
::
|
||||
|
||||
/localdisk/designer/<user>/<project>/stx-tools/centos-mirror-tools/output
|
||||
.
|
||||
└── stx-r1
|
||||
└── CentOS
|
||||
└── pike
|
||||
├── Binary
|
||||
│ ├── noarch
|
||||
│ └── x86_64
|
||||
├── downloads
|
||||
│ └── puppet
|
||||
├── layer_build_info
|
||||
├── layer_image_inc
|
||||
├── layer_pkg_lists
|
||||
├── layer_wheels_inc
|
||||
└── Source
|
||||
|
||||
*******************************
|
||||
Copy CentOS mirror repository
|
||||
*******************************
|
||||
Exit from the building Docker container. Run the following commands:
|
||||
|
||||
#. Navigate to CentOS mirror directory *mirror/CentOS* under your *starlingx*
|
||||
workspace directory:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/starlingx/mirror/CentOS/
|
||||
|
||||
#. Copy the built CentOS mirror repository *$HOME/starlingx/mirror/* workspace
|
||||
directory. Make sure to insert the <user>:
|
||||
|
||||
::
|
||||
|
||||
cp -r $HOME/starlingx/workspace/localdisk/designer/<user>/compiler/stx-tools/centos-mirror-tools/output/stx-r1 .
|
||||
|
||||
***************************
|
||||
Create a tarball repository
|
||||
***************************
|
||||
|
||||
#. Enter the StarlingX container using below command:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
./tb.sh exec
|
||||
|
||||
#. Copy downloaded CentOS tarballs into StarlingX repo
|
||||
|
||||
::
|
||||
|
||||
ln -s /import/mirrors/CentOS/stx-r1/CentOS/pike/downloads/ $MY_REPO/stx/
|
||||
|
||||
Alternatively, you can run the "populate_downloads.sh" script to copy the
|
||||
tarballs instead of using a symlink:
|
||||
|
||||
::
|
||||
|
||||
bash populate_downloads.sh /import/mirrors/CentOS/stx-r1/CentOS/pike/
|
||||
|
||||
**************
|
||||
Build packages
|
||||
**************
|
||||
|
||||
#. **Temporal!** Build-Pkgs Errors. Be prepared to have some missing /
|
||||
corrupted rpm and tarball packages generated during
|
||||
:ref:`Build-the-CentOS-mirror-repository-compiler`, which will cause the next step
|
||||
to fail. If that step does fail, manually download those missing /
|
||||
corrupted packages.
|
||||
|
||||
#. Update the symbolic links:
|
||||
|
||||
::
|
||||
|
||||
bash generate-cgcs-centos-repo.sh /import/mirrors/CentOS/stx-r1/CentOS/pike/
|
||||
|
||||
#. Build the packages:
|
||||
|
||||
::
|
||||
|
||||
build-pkgs
|
||||
build-pkgs --installer
|
||||
|
||||
------------------
|
||||
Build distro layer
|
||||
------------------
|
||||
|
||||
.. _Build-the-CentOS-mirror-repository-distro:
|
||||
|
||||
**********************************
|
||||
Build the CentOS mirror repository
|
||||
**********************************
|
||||
|
||||
The creation of the StarlingX ISO relies on a repository of RPM binaries,
|
||||
RPM sources, and tar compressed files. This section describes how to build
|
||||
this CentOS mirror repository.
|
||||
|
||||
If you were building compiler layer, exit from container and enter the tools
|
||||
directory using below commands:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
|
||||
Since, we are building distro layer, modify localrc file. Make sure to set the
|
||||
project and layer as distro. For example:
|
||||
|
||||
::
|
||||
|
||||
# tbuilder localrc
|
||||
MYUNAME=<your user name>
|
||||
PROJECT=distro
|
||||
HOST_PREFIX=$HOME/starlingx/workspace
|
||||
HOST_MIRROR_DIR=$HOME/starlingx/mirror
|
||||
LAYER=distro
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Run building Docker container
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Follow the :ref:`building docker container <Run_building_Docker_container>` for
|
||||
more details.
|
||||
At the end of this procedure, you will be inside the Starlingx container.
|
||||
|
||||
Quick command summary is as below:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
bash tb.sh env
|
||||
bash tb.sh run #Need not give, If the container was created earlier.
|
||||
bash tb.sh exec
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Download source code repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
#. Inside the building Docker container, start the internal environment:
|
||||
|
||||
::
|
||||
|
||||
eval $(ssh-agent)
|
||||
ssh-add
|
||||
|
||||
|
||||
#. Use the repo tool to create a local clone of the manifest git repository
|
||||
based on the “master” branch for compiler layer.
|
||||
|
||||
::
|
||||
|
||||
cd $MY_REPO_ROOT_DIR
|
||||
repo init -u https://opendev.org/starlingx/manifest -b master -m distro.xml
|
||||
|
||||
#. Synchronize code for compiler layer using command below:
|
||||
|
||||
::
|
||||
|
||||
repo sync -j`nproc`
|
||||
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Download packages
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
#. Inside the Docker container, enter the following commands to download
|
||||
the required packages to populate the CentOS mirror repository:
|
||||
|
||||
::
|
||||
|
||||
cd $MY_REPO_ROOT_DIR/stx-tools/centos-mirror-tools && bash download_mirror.sh
|
||||
|
||||
#. Monitor the download of packages until it is complete. When the download
|
||||
is complete, the following message appears:
|
||||
|
||||
::
|
||||
|
||||
step #5: done successfully
|
||||
sudo rm -rf /tmp/stx_mirror_UIQ675
|
||||
IMPORTANT: The following 3 files are just bootstrap versions. Based on them, the workable images
|
||||
for StarlingX could be generated by running "update-pxe-network-installer" command after "build-iso"
|
||||
- ./output/stx-r1/CentOS/pike/Binary/LiveOS/squashfs.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/initrd.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/vmlinuz
|
||||
|
||||
Success
|
||||
|
||||
***************
|
||||
Verify packages
|
||||
***************
|
||||
|
||||
#. Verify no missing or failed packages exist:
|
||||
|
||||
::
|
||||
|
||||
cat logs/*_missing_*.log
|
||||
cat logs/*_failmoved_*.log
|
||||
|
||||
#. In case missing or failed packages do exist, which is usually caused by
|
||||
network instability (or timeout), you need to download the packages
|
||||
manually.
|
||||
Doing so assures you get all RPMs listed in *centos_srpms_3rdparties.lst,
|
||||
centos_srpms_centos.lst, centos_srpms_centos3rdparties.lst*.
|
||||
|
||||
******************
|
||||
Packages structure
|
||||
******************
|
||||
|
||||
The following is a general overview of the packages structure resulting from
|
||||
downloading the packages for distro layer:
|
||||
|
||||
::
|
||||
|
||||
/localdisk/designer/<user>/distro/stx-tools/centos-mirror-tools/output
|
||||
.
|
||||
└── stx-r1
|
||||
└── CentOS
|
||||
└── pike
|
||||
├── Binary
|
||||
│ ├── EFI
|
||||
│ │ └── BOOT
|
||||
│ │ └── fonts
|
||||
│ ├── images
|
||||
│ │ └── pxeboot
|
||||
│ ├── isolinux
|
||||
│ ├── LiveOS
|
||||
│ ├── noarch
|
||||
│ └── x86_64
|
||||
├── downloads
|
||||
│ └── puppet
|
||||
│ └── packstack
|
||||
│ └── puppet
|
||||
│ └── modules
|
||||
├── layer_build_info
|
||||
├── layer_image_inc
|
||||
├── layer_pkg_lists
|
||||
├── layer_repos
|
||||
│ └── compiler
|
||||
│ └── std
|
||||
│ ├── repodata
|
||||
│ └── repodata.upstream
|
||||
├── layer_wheels_inc
|
||||
└── Source
|
||||
|
||||
*******************************
|
||||
Copy CentOS mirror repository
|
||||
*******************************
|
||||
Exit from the building Docker container. Run the following commands:
|
||||
|
||||
#. Navigate to CentOS mirror directory *mirror/CentOS* under your *starlingx*
|
||||
workspace directory:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/starlingx/mirror/CentOS/
|
||||
|
||||
#. Copy the built CentOS mirror repository *$HOME/starlingx/mirror/* workspace
|
||||
directory. Make sure to insert the <user>:
|
||||
|
||||
::
|
||||
|
||||
cp -r $HOME/starlingx/workspace/localdisk/designer/<user>/distro/stx-tools/centos-mirror-tools/output/stx-r1 .
|
||||
|
||||
***************************
|
||||
Create a tarball repository
|
||||
***************************
|
||||
|
||||
#. Enter the StarlingX container using below command:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
./tb.sh exec
|
||||
|
||||
#. Copy downloaded CentOS tarballs into StarlingX repo
|
||||
|
||||
::
|
||||
|
||||
ln -s /import/mirrors/CentOS/stx-r1/CentOS/pike/downloads/ $MY_REPO/stx/
|
||||
|
||||
Alternatively, you can run the "populate_downloads.sh" script to copy the
|
||||
tarballs instead of using a symlink:
|
||||
|
||||
|
||||
::
|
||||
|
||||
populate_downloads.sh /import/mirrors/CentOS/stx-r1/CentOS/pike/
|
||||
|
||||
|
||||
**************
|
||||
Build packages
|
||||
**************
|
||||
|
||||
#. **Temporal!** Build-Pkgs Errors. Be prepared to have some missing /
|
||||
corrupted rpm and tarball packages generated during
|
||||
:ref:`Build-the-CentOS-mirror-repository-distro`, which will cause the next step
|
||||
to fail. If that step does fail, manually download those missing /
|
||||
corrupted packages.
|
||||
|
||||
#. Update the symbolic links:
|
||||
|
||||
::
|
||||
|
||||
bash generate-cgcs-centos-repo.sh /import/mirrors/CentOS/stx-r1/CentOS/pike/
|
||||
|
||||
This step creates the repo directory, following is the output on the console
|
||||
for a successful repo directory creation for the <user> stx:
|
||||
|
||||
::
|
||||
|
||||
Copying comps.xml file.
|
||||
Createing yum repodata.
|
||||
Directory walk started
|
||||
Directory walk done - 51 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Source/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Directory walk started
|
||||
Directory walk done - 0 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/rt/Source/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Directory walk started
|
||||
Directory walk done - 1450 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Directory walk started
|
||||
Directory walk done - 0 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/rt/Binary/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Copying mock.cfg.proto file.
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/BOOTX64.EFI
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/fonts/unicode.pf2
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/grub.cfg
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/grubx64.efi
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/images/efiboot.img
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/images/pxeboot/initrd.img
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/images/pxeboot/vmlinuz
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/boot.msg
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/grub.conf
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/initrd.img
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/isolinux.bin
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/isolinux.cfg
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/memtest
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/splash.png
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/vesamenu.c32
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/isolinux/vmlinuz
|
||||
Creating symlink for /localdisk/designer/stx/distro/cgcs-root/cgcs-centos-repo/Binary/LiveOS/squashfs.img
|
||||
Creating folder EFI
|
||||
Creating folder EFI/BOOT
|
||||
Creating folder EFI/BOOT/fonts
|
||||
Creating folder images
|
||||
Creating folder images/pxeboot
|
||||
Creating folder isolinux
|
||||
Creating folder LiveOS
|
||||
Done creating repo directory
|
||||
|
||||
#. Build the packages:
|
||||
|
||||
::
|
||||
|
||||
build-pkgs
|
||||
build-pkgs --installer
|
||||
|
||||
|
||||
-----------------
|
||||
Build flock layer
|
||||
-----------------
|
||||
|
||||
.. _Build-the-CentOS-mirror-repository-flock:
|
||||
|
||||
**********************************
|
||||
Build the CentOS mirror repository
|
||||
**********************************
|
||||
|
||||
The creation of the StarlingX ISO relies on a repository of RPM binaries,
|
||||
RPM sources, and tar compressed files. This section describes how to build
|
||||
this CentOS mirror repository.
|
||||
|
||||
If you were building distro layer, exit from container and enter the tools
|
||||
directory using below commands:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
|
||||
Since, we are building flock layer, modify localrc file. Make sure to set the
|
||||
project and layer as flock. For example:
|
||||
|
||||
::
|
||||
|
||||
# tbuilder localrc
|
||||
MYUNAME=<your user name>
|
||||
PROJECT=flock
|
||||
HOST_PREFIX=$HOME/starlingx/workspace
|
||||
HOST_MIRROR_DIR=$HOME/starlingx/mirror
|
||||
LAYER=flock
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Run building Docker container
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Follow the :ref:`building docker container <Run_building_Docker_container>` for
|
||||
more details.
|
||||
At the end of this procedure, you will be inside the Starlingx container.
|
||||
|
||||
Quick command summary is as below:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
bash tb.sh env
|
||||
bash tb.sh run #Need not give, If the container was created earlier.
|
||||
bash tb.sh exec
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Download source code repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
||||
#. Inside the building Docker container, start the internal environment:
|
||||
|
||||
::
|
||||
|
||||
eval $(ssh-agent)
|
||||
ssh-add
|
||||
|
||||
|
||||
#. Use the repo tool to create a local clone of the manifest git repository
|
||||
based on the “master” branch for flock layer.
|
||||
|
||||
::
|
||||
|
||||
cd $MY_REPO_ROOT_DIR
|
||||
repo init -u https://opendev.org/starlingx/manifest -b master -m flock.xml
|
||||
|
||||
#. Synchronize code for compiler layer using command below:
|
||||
|
||||
::
|
||||
|
||||
repo sync -j`nproc`
|
||||
|
||||
~~~~~~~~~~~~~~~~~
|
||||
Download packages
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
#. Inside the Docker container, enter the following commands to download
|
||||
the required packages to populate the CentOS mirror repository:
|
||||
|
||||
::
|
||||
|
||||
cd $MY_REPO_ROOT_DIR/stx-tools/centos-mirror-tools && bash download_mirror.sh
|
||||
|
||||
#. Monitor the download of packages until it is complete. When the download
|
||||
is complete, the following message appears:
|
||||
|
||||
::
|
||||
|
||||
step #5: done successfully
|
||||
sudo rm -rf /tmp/stx_mirror_ievdiA
|
||||
IMPORTANT: The following 3 files are just bootstrap versions. Based
|
||||
on them, the workable images for StarlingX could be generated by
|
||||
running "update-pxe-network-installer" command after "build-iso"
|
||||
- ./output/stx-r1/CentOS/pike/Binary/LiveOS/squashfs.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/initrd.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/vmlinuz
|
||||
|
||||
***************
|
||||
Verify packages
|
||||
***************
|
||||
|
||||
When the download is not successful, the following message appears:
|
||||
|
||||
::
|
||||
|
||||
IMPORTANT: The following 3 files are just bootstrap versions. Based
|
||||
on them, the workable images for StarlingX could be generated by
|
||||
running "update-pxe-network-installer" command after "build-iso"
|
||||
- ./output/stx-r1/CentOS/pike/Binary/LiveOS/squashfs.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/initrd.img
|
||||
- ./output/stx-r1/CentOS/pike/Binary/images/pxeboot/vmlinuz
|
||||
|
||||
Warning: Not all download steps succeeded. You are likely missing files.
|
||||
|
||||
|
||||
You can verify and list missing or failed packages using below command:
|
||||
|
||||
::
|
||||
|
||||
cat logs/*_missing_*.log
|
||||
cat logs/*_failmoved_*.log
|
||||
|
||||
In case missing or failed packages do exist, which is usually caused by
|
||||
network instability (or timeout), you need to download the packages
|
||||
manually.
|
||||
Doing so assures you get all RPMs listed in *centos_srpms_3rdparties.lst,
|
||||
centos_srpms_centos.lst, centos_srpms_centos3rdparties.lst*.
|
||||
|
||||
******************
|
||||
Packages structure
|
||||
******************
|
||||
|
||||
The following is a general overview of the packages structure resulting from
|
||||
downloading the packages for flock layer:
|
||||
|
||||
::
|
||||
|
||||
/localdisk/designer/<user>/flock/stx-tools/centos-mirror-tools/output
|
||||
|
||||
└── stx-r1
|
||||
└── CentOS
|
||||
└── pike
|
||||
├── Binary
|
||||
│ ├── EFI
|
||||
│ │ └── BOOT
|
||||
│ │ └── fonts
|
||||
│ ├── images
|
||||
│ │ └── pxeboot
|
||||
│ ├── isolinux
|
||||
│ ├── LiveOS
|
||||
│ ├── noarch
|
||||
│ └── x86_64
|
||||
├── downloads
|
||||
│ └── puppet
|
||||
├── layer_build_info
|
||||
├── layer_image_inc
|
||||
├── layer_pkg_lists
|
||||
├── layer_repos
|
||||
│ ├── compiler
|
||||
│ │ └── std
|
||||
│ │ ├── repodata
|
||||
│ │ └── repodata.upstream
|
||||
│ └── distro
|
||||
│ ├── installer
|
||||
│ │ ├── repodata
|
||||
│ │ └── repodata.upstream
|
||||
│ ├── rt
|
||||
│ │ ├── repodata
|
||||
│ │ └── repodata.upstream
|
||||
│ └── std
|
||||
│ ├── repodata
|
||||
│ └── repodata.upstream
|
||||
├── layer_wheels_inc
|
||||
└── Source
|
||||
|
||||
|
||||
*******************************
|
||||
Copy CentOS mirror repository
|
||||
*******************************
|
||||
Exit from the building Docker container. Run the following commands:
|
||||
|
||||
#. Navigate to CentOS mirror directory *mirror/CentOS* under your *starlingx*
|
||||
workspace directory:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/starlingx/mirror/CentOS/
|
||||
|
||||
#. Copy the built CentOS mirror repository *$HOME/starlingx/mirror/*
|
||||
workspace directory:
|
||||
|
||||
::
|
||||
|
||||
cp -r $HOME/starlingx/workspace/localdisk/designer/<user>/flock/stx-tools/centos-mirror-tools/output/stx-r1 .
|
||||
|
||||
***************************
|
||||
Create a tarball repository
|
||||
***************************
|
||||
|
||||
#. Enter the StarlingX container using below command:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
./tb.sh exec
|
||||
|
||||
#. Copy downloaded CentOS tarballs into StarlingX repo
|
||||
::
|
||||
|
||||
ln -s /import/mirrors/CentOS/stx-r1/CentOS/pike/downloads/ $MY_REPO/stx/
|
||||
|
||||
Alternatively, you can run the "populate_downloads.sh" script to copy the
|
||||
tarballs instead of using a symlink:
|
||||
|
||||
::
|
||||
|
||||
populate_downloads.sh /import/mirrors/CentOS/stx-r1/CentOS/pike/
|
||||
|
||||
#. Exit from the container. On the host machine, create mirror binaries:
|
||||
|
||||
::
|
||||
|
||||
mkdir -p $HOME/starlingx/mirror/CentOS/stx-installer
|
||||
cp $HOME/starlingx/mirror/CentOS/stx-r1/CentOS/pike/Binary/images/pxeboot/initrd.img $HOME/starlingx/mirror/CentOS/stx-installer/initrd.img
|
||||
cp $HOME/starlingx/mirror/CentOS/stx-r1/CentOS/pike/Binary/images/pxeboot/vmlinuz $HOME/starlingx/mirror/CentOS/stx-installer/vmlinuz
|
||||
cp $HOME/starlingx/mirror/CentOS/stx-r1/CentOS/pike/Binary/LiveOS/squashfs.img $HOME/starlingx/mirror/CentOS/stx-installer/squashfs.img
|
||||
|
||||
**************
|
||||
Build packages
|
||||
**************
|
||||
|
||||
#. Enter the StarlingX container using below command:
|
||||
|
||||
::
|
||||
|
||||
cd $HOME/tools/
|
||||
./tb.sh exec
|
||||
|
||||
#. **Temporal!** Build-Pkgs Errors. Be prepared to have some missing /
|
||||
corrupted rpm and tarball packages generated during
|
||||
:ref:`Build-the-CentOS-mirror-repository-flock`, which will cause the next step
|
||||
to fail. If that step does fail, manually download those missing /
|
||||
corrupted packages.
|
||||
|
||||
#. Update the symbolic links:
|
||||
|
||||
::
|
||||
|
||||
bash generate-cgcs-centos-repo.sh /import/mirrors/CentOS/stx-r1/CentOS/pike/
|
||||
|
||||
Following is the output:
|
||||
|
||||
::
|
||||
|
||||
Copying comps.xml file.
|
||||
Createing yum repodata.
|
||||
Directory walk started
|
||||
Directory walk done - 1 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Source/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Directory walk started
|
||||
Directory walk done - 0 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/rt/Source/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Directory walk started
|
||||
Directory walk done - 1892 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Directory walk started
|
||||
Directory walk done - 40 packages
|
||||
Temporary output repo path: /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/rt/Binary/.repodata/
|
||||
Preparing sqlite DBs
|
||||
Pool started (with 5 workers)
|
||||
Pool finished
|
||||
Copying mock.cfg.proto file.
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/BOOTX64.EFI
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/fonts/unicode.pf2
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/grub.cfg
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/EFI/BOOT/grubx64.efi
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/images/efiboot.img
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/images/pxeboot/initrd.img
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/images/pxeboot/vmlinuz
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/boot.msg
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/grub.conf
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/initrd.img
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/isolinux.bin
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/isolinux.cfg
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/memtest
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/splash.png
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/vesamenu.c32
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/isolinux/vmlinuz
|
||||
Creating symlink for /localdisk/designer/stx/flock/cgcs-root/cgcs-centos-repo/Binary/LiveOS/squashfs.img
|
||||
Creating folder EFI
|
||||
Creating folder EFI/BOOT
|
||||
Creating folder EFI/BOOT/fonts
|
||||
Creating folder images
|
||||
Creating folder images/pxeboot
|
||||
Creating folder isolinux
|
||||
Creating folder LiveOS
|
||||
Done creating repo directory
|
||||
|
||||
|
||||
#. Build the packages:
|
||||
|
||||
::
|
||||
|
||||
build-pkgs
|
||||
|
||||
-------------------
|
||||
Build StarlingX ISO
|
||||
-------------------
|
||||
|
||||
Build the image:
|
||||
|
||||
::
|
||||
|
||||
build-iso
|
||||
|
||||
----------------------
|
||||
:ref:`Build-installer`
|
||||
----------------------
|
||||
Layered build has the same procedure for build installer as StarlingX R3.0 build
|
||||
except for the changes in path of files as below. Click the heading above for details.
|
||||
|
||||
#. The steps covered by the script **update-pxe-network-installer** is detailed in
|
||||
$MY_REPO/stx/stx-metal/installer/initrd/README. This script creates three files on
|
||||
/localdisk/loadbuild/stx/flock/pxe-network-installer/output.
|
||||
|
||||
#. The path for **build_srpm.data** is $MY_REPO/stx/metal/installer/pxe-network-installer/centos/.
|
||||
|
Loading…
x
Reference in New Issue
Block a user