> 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 perform a dry run to validate things.
cd $THOME/tribblix-build ./make-dist -R 38 -N ./make-dist -R 38 -N minimal
Or for omnitribblix, it's:
cd $THOME/tribblix-build ./make-lx-dist -R 38 -N ./make-lx-dist -R 38 -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 add extra overlays
at install time without hauling the packages 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 38 -M 256m
or
cd /packages/localsrc/Tribblix/tribblix-build mkdir /export/tribblix/dist ./make-lx-dist -R 38 -M 256m
or
cd /packages/localsrc/Tribblix/tribblix-build mkdir /export/tribblix/dist.minimal ./make-dist -R 38 -M 276m minimal
or
cd /packages/localsrc/Tribblix/tribblix-build mkdir /export/tribblix/dist.minimal ./make-lx-dist -R 38 -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 m38 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-0m38.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.