Skip to content
Machine Image Build Environment
PHP Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Removed test_smartos and test_imgmg Aug 30, 2016
etc Updated to latest. Removed old Aug 30, 2016
lib Updated min_platform Mar 9, 2018
logs Initial release Jun 19, 2013
LICENSE Create LICENSE Nov 22, 2015

MIBE (Machine Image Build Environment)

MIBE is a build environment for SmartOS images ise by the Image Team, but it's not an officially supported solution.



  • mi_home/bin - Holds scripts to handle repository operations and build images.

    • bin/repo_cloneall - Clones latest Joyent Machine Image repositories into mi_home/repos.
    • bin/repo_pullall - Pulls latest Joyent Machine Image repositories into mi_home/repos.
    • bin/repo_init - Initializes a new Machine Image repository and populates standard build files.
    • bin/build_smartos - Image builder for SmartOS images.
  • mi_home/etc - Where configuration files for repositories are kept.

    • etc/repos.conf - Git server repository configuration on where to get Machine Image repos from.
    • etc/repos.list - Git repository list of Joyent Machine Image repositories. This is updated as more images are made public.
  • mi_home/lib - Includes directory for mibe.

  • mi_home/images - Final image dumps are stored here.

  • mi_home/logs - Logging directory for image builds.

  • mi_home/repos - Build repositories.


Clone the mibe repository in /opt (or wherever has space to store image files):

# cd /opt
# git clone
# export PATH=$PATH:/opt/mibe/bin

Run repo_cloneall to grab the updated Joyent Machine Image build repositories. They will be pulled down into mibe_home/repos.

# repo_cloneall

Create a VM (SmartOS) for building images:

# cat <<EOF > mibezone1.json
  "brand": "joyent",
  "image_uuid": "9eac5c0c-a941-11e2-a7dc-57a6b041988f",
  "alias": "mibezone1",
  "hostname": "mibezone1",
  "max_physical_memory": 512,
  "quota": 20,
  "nics": [
      "nic_tag": "admin",
      "ip": "dhcp",
      "primary": "true"

Run vmadm create to create it:

# vmadm create -f mibezone1.json

To build an example image we specify the base image, the vm to use (uuid of mibezone1), and the repository build files:

# cd /opt/mibe/repos
# build_smartos base64-13.2.1 629be403-f1e6-4c54-a4fc-dad4c4f25658 mi-example

build_smartos - version 1.0.0
Image builder for SmartOS images

* Sanity checking build files and environment..                       OK.
* Halting build zone (629be403-f1e6-4c54)..                           OK.
* Configuring build zone (629be403-f1e6-4c54) to be imaged..          OK.
* Booting build zone (629be403-f1e6-4c54)..                           OK.
* Copying in mi-example/copy files..                                  OK.
* Creating image motd and product file..                              OK.
* Installing packages list..                                          OK.
* Executing the customize file..                                      OK.
* Halting build zone (629be403-f1e6-4c54)..                           OK.
* Un-configuring build zone (629be403-f1e6-4c54)..                    OK.
* Creating image file and manifest..                                  OK.

Image:    /home/mibe/images/example-1.0.0.zfs.gz
Manifest: /home/mibe/images/example-1.0.0.dsmanifest

The built image will be stored at mi_home/images/example-1.0.0.*

You can’t perform that action at this time.