> Creating ISO images

There are some assumptions in the build process based on my personal environment, namely that lots of stuff is present under the directory /packages/localsrc/Tribblix which I have as an environment variable THOME. You'll need THOME set for much of the following to work.

Initial setup

You'll need quite a few repositories checked out. The actual scripts used for image construction are in the tribblix-build repo.

cd $THOME
git clone https://github.com/tribblix/tribblix-build

You'll also need to have the build and relevant overlay repos.

cd $THOME
git clone https://github.com/tribblix/build
git clone https://github.com/tribblix/overlays
git clone https://github.com/tribblix/overlays.lx
git clone https://github.com/tribblix/overlays.sparc

You'll also need to have a set of illumos and release packages, and a local set of packages from the build repo (those are expected to be found in $THOME/pkgs). If you don't want to build them yourself, then look at zap copy-package-repo.

Checking it will work

Constructing an ISO needs quite a lot of things in place, so you will a dry run to validate things.

cd $THOME/tribblix-build
./make-dist -R 36 -N
./make-dist -R 36 -N minimal

Or for omnitribblix, it's:

cd $THOME/tribblix-build
./make-lx-dist -R 36 -N
./make-lx-dist -R 36 -N minimal

The -N flag is for a dry-run. The -R flag specifies the release, which tells it which illumos and release packages to include. It will always use the most recent version of all the other packages. The check will print out the names of all the packages it find, and hopefully it will find everything. If it doesn't then you'll have to make sure you have everything; the check should tell you what's missing.

There are possible variant ISO images that can be created. The most common ones are the regular ISO and the minimal/server ISO. You can create others.

The ISO image contains 2 distinct sets of packages. The first is those installed in the live image. The second is those packages shipped in the pkgs directory on the ISO, so that users can install extra overlays without hauling them over the network.

The starting list of installed packages is the core-tribblix overlay, which is present in all images. The regular ISO also has the base-iso overlay which has a broad selection of device drivers; you can build a different ISO with base-iso replaced by another overlay - typically this might be used to generate cloud images with the base-cloud overlay which has a limited set of drivers appropriate to installation on the much more controlled cloud environment. And the minimal image uses base-server rather than base-iso.

In the relevant overlay repo there will be a file overlays.iso (or overlays.foo.iso for the foo variant). This basically lists the overlays whose packages will be shipped on the ISO, so to create an ISO with a specific set of overlays you can either modify the base overlays.iso or create your own variant.

Building an ISO

Once the check is clean, you can build an ISO. This needs to be done as root. And remember $THOME won't be inherited by root.

cd /packages/localsrc/Tribblix/tribblix-build
mkdir /export/tribblix/dist
./make-dist -R 36 -M 256m

or

cd /packages/localsrc/Tribblix/tribblix-build
mkdir /export/tribblix/dist
./make-lx-dist -R 36 -M 252m

or

cd /packages/localsrc/Tribblix/tribblix-build
mkdir /export/tribblix/dist.minimal
./make-dist -R 36 -M 276m minimal

or

cd /packages/localsrc/Tribblix/tribblix-build
mkdir /export/tribblix/dist.minimal
./make-lx-dist -R 36 -M 272m minimal

What it's doing here is staging everything into /export/tribblix/dist or /export/tribblix/dist.minimal and using that to create the ISO. So you can then look around in /export/tribblix/dist to see what it's actually installed.

Obviously, you'll need to remove (or move) an old staging area before each build.

The -M flag specifies the size of the bootable ramdisk image. The above values are the ones used for the m36 release. If you install more or fewer drivers or applications into the live image, this value will need to be adjusted. You can see it's slightly different for each image. I try and keep it as small as reasonable to give the best experience on small systems.

The ISO image should end up in /var/tmp.

Testing

The simplest way of testing the image is to boot it up in bhyve. For example, as root:

zap create-zone -t bhyve \
-z bhyve1 -x 192.168.1.238 \
-I /var/tmp/tribblix-0m36.iso \
-V 8G

and then create a socket so you can see the console

socat TCP-LISTEN:5905,reuseaddr,fork UNIX-CONNECT:/export/zones/bhyve1/root/tmp/vm.vnc

then as yourself start up a vncviewer

vncviewer :5

You should be able to go through the live boot and do an install. Once that's done, you can reboot without the CD present:

zap remove-cd -z bhyve1 -r

and do the socat and vncviewer steps again to see the console as the installed system boots.


Index | Previous Section


tribblix@gmail.com :: GitHub :: Privacy