Personal packages in SmartOS global zone
Maybe you've the same problem as me, some "really really important" package is missing in the SmartOS global zone. I'm not 100% sure if this is the right way how it works, but it works for me :-)
For this customization you should know, that you must create your own SmartOS build and image.
So we starting with a SmartOS build environment. Please follow the good and helpful instructions from the wiki page. I've not so much memory as required, because is running my build environment on some Hetzner server, but it works also. If it fails for unknown reason run
gmake world again. Don't spend all your time in front of your computer, a full build could take an hour ;-)
There are two ways for modification, need a full binary build of some package (for example munin-node or nano) or deploy some bash scripts and config modifications.
/content/smartos-live # My smartos src directory overlays # Overlays that contains extra scripts/config files projects # Contains illumos git src, extra packages, etc. illumos # The illumos clone from git (via configure) illumos-extra # The extra packages build for SmartOS (gnupg, openssl, etc.) proto # Prototyping folder, contain live content after `gmake world`
Add shell scripts
This could also be used to deploy binary scripts, but it isn't recommended maybe they need to be linked to some libraries, etc.
In the SmartOS source directory (after cloning and configure your environment) you will find a folder called
overlay. Create a folder with your company name or your name (for example
/content/smartos-live/ overlays/ order generic/ smartos/ skylime/ manifest usr/ sbin/ zrep
My example will deploy the
zrep shell script to
/usr/sbin/zrep. You must create a
manifest file which contains the information of folder and file creation.
# type folder|file mode user group d usr/sbin 0755 root bin f usr/sbin/zrep 0755 root bin
Also modify the
order file and add the folder path to the list (if you didn't run
/content/smartos-live/overlay/smartos /content/smartos-live/overlay/generic /content/smartos-live/overlay/skylime
After building a new package (
gmake world && gmake live) this will contains
Add binary files / custom software
You are missing
nano or you like
munin-node in the global zone to get some stats? I think this is they way it should go. We will have a look at the illumos-extra repository from Joyent. This contains a lot of extra software that will be build and installed in the global zone. So why not doing the same as they do :-)
First create a folder with the software you would like include in the global zone, we choose
nano. So you will have the following folder structure:
Please note that most of the folders in
projects will be automatically cloned from git at the
Download the source code of your software as tar (.gz/.bz2) archive an place it in the folder. Create a
Makefile, maybe by copying a file from another folder.
nano is a nice software with a
./configure script, no special hack is required. So you could use a simple
VER = nano-2.2.6 include ../Makefile.defs include ../Makefile.targ LDFLAGS = $(T32_LDFLAGS) -zassert-deflib all: all_autoconf install: all mkdir -p $(DESTDIR)/usr/bin ginstall -m 0555 $(BASE)/$(VER.32)/src/nano $(DESTDIR)/usr/bin/nano mkdir -p $(DESTDIR)/usr/share/man/man1 ginstall -m 0444 $(BASE)/$(VER.32)/doc/man/nano.1 \ $(DESTDIR)/usr/share/man/man1
If everything works and your required software build without an error you should modify the
Makefile in the
projects/illumos-extra folder. Also modify the
manifest file in the
projects/illumos-extra folder, to deploy the files and folders.
Tip: I used
gmake first from the
/content/smartos-live folder and than checked the
proto folder about the files.
Maybe you must modify the
tools/build_live file to increase the
usr image size. In the script change the variable
After all you could use
gmake world && gmake live to create your personal SmartOS version.