Author Lionel B. Dyck - April 24, 2025 E-mail: LBDyck@gmail.com
zopen refers to the zopen community which is an Open Mainframe Project
where the community contributes ports of Linux tools. As of the time I'm
writing this there are 231 repositories ranging from less to git to perl
to curl to vim and neovim - well you get the idea. The zopen community
can be found on GitHub at https://github.com/zopencommunity so, for now, you'll
need to be able to access GitHub to use these tools.
If you want to experiment with these ported tools then you have to install them
using their easy to follow Quick Start guide
https://zopen.community/#/Guides/QuickStart.md - note that since you probably
don't already have curl installed that you'll have to use the alternate
process which is equally easy.
Note: that git and curl and several other tools are included in the
IBM Open Enterprise Foundation which you can read about here
https://ibm.com/products/open-enterprise-foundation-zos - in a nutshell it
is a no-charge package available with z/OS and installable via SMP/E and
comes with full IBM support for all included tools. It will not be as
current as the zopen community set of tools but it may suffice for your,
and your companies, requirements.
The zopen community tools are installed in a UNIX System Services filesystem
and it is highly recommended that you create a new ZFS for it. The
reason for this recommendation is that to install the full compliment of the 231
repositories (some of which contain multiple tools) will require approximately 9,000
cylinders of z/OS disk space. My working ZFS is allocated at 12,000 cylinders to
allow for growth. It is doubtful that your OMVS home directory filesystem will be
large enough to contain this amount of data.
So you will need to allocate a ZFS for this purpose which means you must be able
to allocate a z/OS ZFS dataset of an appropriate size. You may need to talk with
your storage administrators or systems programmers before doing this (unless you are
one of them).
Then the easy part is creating a mount point for the ZFS. If you are doing this
for your own testing then you can create the mount point under your home directory,
or you can use another location (again see the storage admins or sysprogs).
Before going further you need to check if you
have "read access to the BPX.SUPERUSER resource in the Facility class". This may require checking with your storage admins, sysprogs, or security admins. This is required to be able to mount the new ZFS using the techniques mentioned below. If you do not have this access then you will need to request from your storage admins or sysprogs that they update the BPXPRMxx member in the system PARMLIB to mount your ZFS once you have completed the steps below.
Once you know that you can allocate the new ZFS issue a variation of the following
command (be sure to change the hlq to a valid high level qualifier):
zfsadm define -aggregate 'hlq.zopen.zfs' -volumes xxxxxx -cylinders 12000See https://www.ibm.com/docs/en/zos/3.1.0?topic=commands-zfsadm-define for more
information on the zfsadm define options. You may not need to use -volumes if you can specify a SMS class.
Next the ZFS needs to be formatted so use this command (*be sure to change the hlq):
zfsadm format -aggregate 'hlq.zopen.zfs'A mount point is just an empty directory in a filesystem. If this is just for your own testing and experimentation then create it under your home directory. If others will be using it then create it somewhere that you have other filesystems mounted (again check with your storage admins or sysprogs).
The command to make the mount point is:
cd xxx
mkdir zopenWhere xxx is either your home directory or where you want to create the directory.
Using a name of zopen is suggested so that it is immediately recognized.
Now that you have the ZFS and a mount point it is time to mount the ZFS so you can use it.
If you have access to the BPX.SUPERUSER resource then you can issue these commands:
su
mount 'hlq.zopen.zfs' /xxx/zopen
exitThe su enables superuser and the exit returns from that elevated state.
Action Be sure to change the hlq to the high level qualifier used when creating the ZFS and change the /xxx/ to point to where you created the mount point.
Note if you do not have superuser capability then you'll have to wait for your storage admins or sysprogs to do the mount after updating the system PARMLIB.
Follow the instructions to install the zopen tools.
The key point to deal with is that the ZFS must be mounted so that it can be used. The options are:
If you do not have mount authority because you do not have read access to the BPX.SUPERUSER resource then your storage admins or sysprogs will have to add a MOUNT statement into the system PARMLIB BPXPRMxx member that will cause the mount to occur after each system IPL.
Update your .profile to add these statements early on:
if mount | grep -q "/xxx/zopen" then
echo "Filesystem for zopen is mounted."
else
tsocmd "mount filesystem('hlq.zopen.zfs') mountpoint('/xxx/zopen/') type(zfs) mode(rdwr)"
echo "Filesystem for zopen is now mounted."
fi
. ./do-zopenThe reason for using tsocmd is that it makes it easier to get into SuperUser state without using the su command.
Action change the hlq to the hlq selected when the ZFS is created.
The do-zopen shell script is this set of code and assumes that it is working with the zopen filesystem that is mounted under your home directory. (change as appropriate). The test for a .nozot file is a way that you can bypass the zopen-config configuration process for that shell session. Just issue a touch .nozot to create the file and then logoff and back on again. Use a rm .nozot to remove it when you don't need to bypass the zopen-config.
if [ -f .nozot ]; then
echo ' '
echo ".nozot file found so no zopen"
echo ' '
else
echo Starting zopen config
. ~/zopen/etc/zopen-config --override-zos-tools
echo Finished zopen config
fiNote the --override-zos-tools is optional and instructs the configuration process to use the zopen community versions of tools instead of those that come with z/OS such as grep cat touch df and more. Just remove it if you want to use the tools that come with z/OS.