Building an ISO from the Source Code for Photon OS

This document describes how to build an ISO from the source code for Photon OS, the open-source minimalist Linux operating system from VMware that is optimized for cloud computing platforms, VMware vSphere deployments, and applications native to the cloud.

Folder Layout

Here is the structure of the directories on GitHub that contain the source code for Photon OS:

photon/
├── Makefile
├── README
├── Dockerfile
├── Vagrantfile
├── SPECS        # RPM SPEC files
├── common       # Build, packaging config
├── docs         # Documentation
├── installer    # Installer used at runtime
├── support      # Build scripts
└── tools

How to Build the ISO

The following process for building the ISO assumes that the following prerequisites are in place:

  • A build operating system running the 64-bit version of Ubuntu 14.04 or later
  • Packages: bison, gawk, g++, createrepo, python-aptdaemon, genisoimage, texinfo, python-requests
  • Docker
  • Downloaded the source code from the Photon OS repository on GitHub into $HOME/workspaces/photon.

Here's how to install the packages on Ubuntu:

sudo apt-get -y install bison gawk g++ createrepo python-aptdaemon genisoimage texinfo python-requests libfuse-dev libssl-dev uuid-dev libreadline-dev kpartx git bc

Here's how to get Docker:

wget -qO- https://get.docker.com/ | sh

Here's how to make the ISO, assuming you checked out the workspace under $HOME/workspaces/photon:

cd $HOME/workspaces/photon
sudo make iso

The ISO is created at $HOME/workspaces/photon/stage/photon.iso

How to Use the Cached Toolchain and RPMS

mkdir $HOME/photon-cache
sudo make iso PHOTON_CACHE_PATH=$HOME/photon-cache

Directory format of PHOTON_CACHE_PATH is as follows.

photon-cache/
├──tools-build.tar.gz
├──RPMS/x86-64/*.rpm
└──RPMX/noarch/*.rpm

How to Use Cached Sources

mkdir $HOME/photon-sources
sudo make iso PHOTON_SOURCES_PATH=$HOME/photon-sources

Directory format of PHOTON_SOURCES_PATH is as follows.

photon-sources/
├──src1.tar.gz
├──src2.tar.gz
└──...

Where are the Build Logs?

$HOME/workspaces/photon/stage/LOGS

Building RPMs from their Source RPMs

For instructions on how to install and build a package on Photon OS from the package's source RPM, see the Photon OS Administration Guide.

Complete Build Environment Using Vagrant

A Vagrantfile is available to ensure a quick standup of a development or build environment for Photon. This Vagrantfile uses a box called photon-build-machine that is created through a Packer template available under support/packer-templates; see the README.md for more information on how to build photon-build-machine.

Photon Vagrant Box

As with the build-machine a Packer template is available under support/packer-templates to build a Photon based Vagrant box running Docker, see the README.md for more information on how to build it.

Automated Build Environment and Vagrant Boxes

Convenience make targets also exist to build both the photon-build-machine and the photon Packer templates as well as building a fresh ISO using the photon-build-machine. See the README.md for details.

results matching ""

    No results matching ""