Daytrip and Mushrooms

Took the new car for a spin… hmm I got it up to 4500rpms passing that damn slow truck on the uphill passing lane; never on the rimutakas before have I got it above 2500rpms. Still engine noise didn’t change at all and once I was past the truck and moving again the temp guage settled down again.

Running in low gears almost stationary behind that truck the temp hit 95 (manuals says at 120 stop… but normally it sits at 80); once past the truck it was down to a stable 82 within minutes and back to 80 when I started the downhill run.

Anyway I was planning a round trip to stonehenge aotearoa then to awaiti gardens, as I have been driving past those signs for years and it was about time I followed them.

Bonus… on the way I passed parkvale mushroom farm and picked up 6Kg of mushrooms for 32 bucks; and no I don’t know what to do with them all yet, they are just stored on the spare bed at the moment.

Anyway pics from stonehenge aotearoa were taken; I probably won’t visit there again.

I will definately visit again Awaiti Gardens. Lots of pics from awaiti gardens here, it is a beautifull place even if the ponds are a little out of control now. The tea rooms looked nice as well, but I need to find someone to take with me before I have a reason to try those; sigh, missing T again.

Stopped at one of the farm shops on the way back and got healthy stuff I will probably have to throw out when it goes off (maybe cougettes go with mushrooms ?, dunno what to do with all the avacados, oranges went in the fruit bowl (after I threw out the ones that were in there; hmm must check that bowl more than once every three months). And I’m not sure what to do with the rest; but I felt healthy buying it so it’s good for me :-).

Posted in Home Life | Comments Off on Daytrip and Mushrooms

My birthday, actually purchased something

As a general rule in past years my birthday has just been another boring day.

My only purpose in the last few years has been stuffing money away into a account for someone I care about that doesn’t want anything to do with me (and no it is not my ex as she just gets the house as my will forgives all my loans to the trust, but all the cash/super/etc and other assets will go to T).

But I must be my midlife crisis. This time instead of stuffing a spare $20K into that account to keep the balance in my main account low I just spent it on a birthday present for myself instead; as below.

P1000369B

A second hand (jap import < 75000k) E350 (badged as a E500 for some reason) that in around the town driving with the current low petrol prices does 1.5Km distance for every dollar of petrol. However once it is on the open roads out the back of masterton where it can sit at 100kph (which is pretty much at idle) it seems to run on vapour, the gas guage doesn't seem to move on decent open roads. So many buttons, I downloaded the manual for the car. Like many cars it is supposed to be driven slowly for the first 1000K, the manual clearly states that while running in the engine it should be kept at low revs and the speed should not exceed 140Kpm while running it in. After it is run in depending on the tires fitted 240Kpm+ should be fine. Shame the max speed limit in NZ is 100Kpm (well the state of the roads dictate that); but it does explain why I getter much better mileage on the open road, it may be able to switch to 3rd or at a pinch 4th gear. In NZ there will never be an opertunity for it to switch into the higher gears which is why I guess the mileage/petrol ratio is so different between round town and open road driving; 50-60Kpm is still 2nd gear and idling. But hey, midlife crisis and I have a new toy.

Posted in personal | Comments Off on My birthday, actually purchased something

Installing the DevStack release of OpenStack on F21

Losely based upon the single machine setup page at http://docs.openstack.org/developer/devstack/guides/single-machine.html. This is the additional steps you really should do if you want to use it.

It assumes you already have a host system configured for running VMs, with a bridged interface you can assign to the DevStack VM, in my examples br0. This post is on getting DevStack running in a VM, not on how to setup bridging so I am not covering setting up bridging here; you should already have it setup if you are already using VMs.

Initial VM setup

Download the latest Fedora 21 Desktop Live CD/DVD from fedoraprject.org
Use the Fedora 21 Live Desktop CD to install an OS into a VM, a sample command is provided below.

  1. customise the disk serial to avoid conflicts with any VMs you already use
  2. customise the console (graphics) port to avoid conflicts with any VMs you already use
  3. customise the MAC address conflicts with any VMs you already use
  4. if you want a virtual disk larger than 30Gb customise that also

As root run the command below, with customisations as noted above

qemu-img create -f qcow2 devstack-fc21.qcow2 30G   # < --- creates a 30Gb virtual disk
virt-install --name devstack-fc21 \
 --virt-type kvm \
 --connect=qemu:///system \
 --ram 4096 \
 --vcpus=1,maxvcpus=2 \
 --description "OpenStack devstack instance" \
 --cdrom=./Fedora-Live-Workstation-x86_64-21-5.iso \
 --os-type=linux \
 --boot cdrom,hd,menu=on \
 --disk=devstack-fc21.qcow2,size=30,format=qcow2,error_policy=enospace,serial=WD-WMAP00000008 \
 --graphics vnc,port=5905 \
 --noautoconsole \
 --noreboot \
 --network bridge=br0,mac=52:54:00:95:5f:bb

Then as any user connect to the VM with the command below (if you changed the port in the install script change here also).

remote-viewer vnc://localhost:5905 --display :0 &

Use the icon on the Live desktop to install to local disk, with the following setup; well you may want to changethe passwords, for my VM I keep it simple.

  1. Disk format should be just swap (size your choice) and / , plus the / filesystem should be ext4 and use all remaining space
  2. create a user named “stack”, password stack
  3. set the root password as “stack”
  4. let the install complete, reboot when prompted at the end of the install

In the rebooted VM, logon as root

  1. vi /etc/selinux/config and set SELINUX to permissive or disabled
  2. use ifconfig to locate the name of your interface card
  3. set a static ip-address suitable for your home network by editing /etc/sysconfig/network-scripts/ifup-eth0 (assuming eth0 was your interface name, if not change eth0 to your interface name in the filename and NAME= parameter), sample contents are below; and the file will already initially exist as a dhcp config if you used the correct interface name
TYPE="Ethernet"
BOOTPROTO="static"
BROADCAST=192.168.1.255
DNS1=127.0.0.1
DNS2=192.168.1.1
GATEWAY=192.168.1.1
IPADDR=192.168.1.172
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eth0"
UUID="16271b24-6f06-45e8-968d-096ddfa52fa1"
ONBOOT="yes"
HWADDR="52:54:00:95:5F:BB"
PEERDNS="yes"
PEERROUTES="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
SEARCH=localhost

Reboot the VM again to make sure the ip-address change works.

Install the DevStack implementation

  1. Log into the VM as the root user
  2. enter the command ‘ yum -y install git ‘, if the command fails check /etc/resolv.conf and if needed add the line ‘nameserver 192.168.1.1’ and repeat the yum command (if you have to add the nameserver something is wrong in your network config file
  3. a temporary requirement for package install is adding the stach user to the sudoers file, use the command ‘ echo “stack ALL=(ALL) NOPASSWD: ALL” >> /etc/sudoers ‘
  4. logoff from the root user
  5. Login to the VM as the stack user
  6. enter the command ‘ git clone https://git.openstack.org/openstack-dev/devstack ‘ to install the packages needed (this is where the sudoers entry is needed)
  7. edit devstack/local.conf and customise to suit your network (floating ip-range etc), as a mininimum set the admin password, ip-address of the VMs interface, and the floating ip-range. As always, an example is below
[[local|localrc]]
ADMIN_PASSWORD=mark
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
FIXED_RANGE=10.31.1.0/24
FLOATING_RANGE=192.168.200.0/25
HOST_IP=192.168.1.172
DEST=/opt/stack
LOGDAYS=3
SCREEN_LOGDIR=$DEST/logs/screen

Once the local.conf is setup, still as the stack user and still in the devstack directory

  1. run the command ‘ ./stack.sh ‘

The ./stack.sh command can take a long time complete as it will download all the repository packages needed for OpenStack to run as well as sample image files etc for devstack (I would recomend allowing it to run overnight, or longer if needed).

Once installed, make it work

The OpenStack environment is running at this point; glance and nova commands will work, you can logon to the web interface to define users and projects, everything looks great right.

Wrong, if you shutdown the VM it all stops working, the rejoin-script.sh will not work unless the additional steps are done, that is because services required for OpenStack to run are either not started on reboot or ones we do not want running are.

So , logoff the stack user, logon as the root user and enter the commands below to ensure that OpenStack services are available again after the rejoin-stack.sh after reboots.

  1. systemctl disable firewalld.service
  2. systemctl enable mariadb.service
  3. systemctl enable httpd.service
  4. systemctl enable rabbitmq-server.service

Also now would be a good time to (optional)

  • edit /etc/sodoers and remove the line added earlier to allow the stack user all sudo access; it is no longer needed unless you want to reclone
  • vi /home/stack/devstack/local.conf, add to the end a line containing RECLONE=no

Once you have done all that reboot again to make sure the mariadb and httpd services start, and the firewalld does not.

Reactivating Devstack/OpenStack after a reboot

This needs to be done after each reboot.

  1. Logon as the stack user
  2. cd devstack
  3. ./rejoin-stack.sh

It should all be available again if you followed all the customisation steps throughout this post.

Post-Install customisation

To let the stack user issue nova and glance commands you need to set environment variables for the stack user (and any other user). For the stack user it is best to issue the commands interactively rather than have them in the user profile (.bashrc) to avoid issues in running the rejoin-stack.sh command.

For the stack user use the commands

source /home/stack/devstack/functions
source /home/stack/devstack/openrc admin
source /home/stack/devstack/eucarc admin

You will want to create your own OpenStack projects and add users to them, I would recomend creating a unix user with the same name as the user that will be added as an OpenStack user in teh stack group; and customise that users profile so it can issue OpenStack commands against the default project for the user. I of course use the user mark :-)… change references to mark to the user you create and marks-projects to the project you will create.
As the root user

NEWUSER=mark
NEWPROJ="marks-projects"
chmod 750 /home/stack   # so new user can run stack environment scripts
useradd -g stack ${NEWUSER}
cat < < EOF >> ~${NEWUSER}/.bashrc
source /home/stack/devstack/functions
source /home/stack/devstack/openrc ${NEWUSER} ${NEWPROJ}
source /home/stack/devstack/eucarc ${NEWUSER} ${NEWPROJ}
EOF

Before logging on as that new user go to http://static-ip-addr-you-chose; logon to OpenStack as the admin user (password is what you set in local.conf before you ran stack.sh); create the new project and when creating the project use the option on the project user field to create the new user matching the unix user you created.

If that is not done when you logon as the new user you created the source commands will fail with authorisation errors as there is no user defined to openstack that can return the requested credentials.

Trouble Shooting

  • the web interface does not load. You either did not disable firewalld or did not enable httpd; or both
  • the glance command, nova command, and wem interface return getway errors. You did not enable the mariadb database
  • the keyboard keymapping is all screwed up; welcome to Fedora 21. Synergy changes @ to omega, a physical console on a F21 machine flips @ and ” around, and various other wierd changes depending on access method to a F21 machine. I have keycode mapping changes I use for the console and synergy but they are not usefull here. Keyboard keys becoming remapped in random ways is a F21 feature I hope they fix one day, but it is not an openstack issue it is a F21 issue

Additionally if you want to allow ssh into a Fedora instance (as well as opening port tcp/22 to it in the instance configuration) when you create the instance in the post configuration options use the below; changing apaswd to a passwork you will remember of course

#cloud-config
password: apasswd
ssh_pwauth: True

The above I required in earlier version of DevStack/OpenStack which had broken the console interface to instances, so allowing direct root login was the only way to get into the instance; it is handy for troubleshooting just don’t allow it on anything publically facing.

Summary

The install instructions at http://docs.openstack.org/developer/devstack/guides/single-machine.html are extremely basic install onto anything. They don’t cover OS specific customisations not should they.

This post is for F21 customisation should I need to redo it all again later. It will produce a stable VM image that works OK after reboots.

Posted in Virtual Machines | Comments Off on Installing the DevStack release of OpenStack on F21

Wings Over Wiarapa 2015

Bad weather in WN, metservice website said sunny in Masterton so decided to go to Castlepoint for a swim.

Never got there, in Mastertom there was a sign pointing to the airshow, heck it only happens once every two years and everbody should follow signs right.

I thought I would go there for a hour and carry on to castlepoint for a swim. About three hours later I was still there and sunburnt, so flagged castlepoint.

There were not just old planes there, there was a lot of old army equipment (jeeps, tanks, etc. and yes a plane); and event tractors.

And they had a chitty-chitty-bang-bang clone, that even had up to date road registration.
P1000281

While I was there they had a simulation of a couple of choppers doing a combat pickup, one fired flares as part of the simulation of securing a combat zone. As Wiarapa is a fire hazard area at the moment that provided a change to snap a fire service helicopter dumping water on the runway as soon as they had finished.
P1000218

I got a lot of blue sky shots trying to track the plane flashing past, but persistence got a few good ones.
P1000308

Anyway, I got a lot of good pictures of planes in flight and on the ground (ok some of the ground shots were of planes I missed/blue-skyed in the air). But I have stuffed a few hundred in the photo section of my website.

I suppose I will have to go to castlepoint tomorrow now; or probably just one of the WN beaches; or possibly none depending on how bad this sunburn is in the morning… I wasn’t planning on spending 4hrs in the sun, oops.

Posted in personal | Comments Off on Wings Over Wiarapa 2015

Fedora 21 – My upgrade notes and issues

Backups were a pain, clonezille kept reporting bitsum errors backing up the home filesystem of my Dev server, filesystem checks found no errors.

So downloaded the latest release of clonezilla and burnt it to a DVD. It failed to boot on my Dev server…opps that has a CD drive not a DVD drive. I stuplidly had my blank CD container on the floor, doggie had pee’ed on it; off to the shops for more blank CDs, then burnt it to CD and finally started a backup for my Dev server.
Used the DVD copy to backup my spare desktop (and backup VM host machine) while that was happening.

And started upgrading all my machines using yum. I have never had a sucessfull upgrade using fedup and of course preupgrade is no longer supported; so yum is always the safest way I have found to upgrade. One major advantage of using yum is that is will also upgrade using all the repositories you have configured (if possible, see below); using the Fedora ISO’s or fedup will only use the Fedora repositories which will pretty much guarantee package conflicts if you have ever added another repository.

The steps are basically as below. If there are any incompatibilities between versions the yum distro-sync will report them; packages with conflicts need to be removed, there should not be many of them.
I had to only “rpm -e simplescreenrecorder async-http-client libbtctl directfb” for the upgrade to work.

yum update
reboot
yum check   (and fix any problems, reboot if needed)
yum -y distro-sync --releasever=21 --obsoletes
reboot

Major issues found

  • There is no F21 Dropbox repoistory yet. All yum commands against the F21 version must include “–disablerepo=Dropbox” in order for them to work
  • The F21 version of hercules does not work correctly. It will freeze/hang, and if it is running screens in roll-delete mode they do not roll… my x3270 client is on a f17 machine and consistent problems with F21 hercules, no problems with F20 hercules; c3270 connections from F21 have the same issue. Could be a c3270 and hercules interoprability problem but either way hercules on f21 is currently unusable. I rolled back to the prior F20 disk image to resolve the issue; means webserver cannot be upgraded

Unusual issues found

On one Gnome desktop the keymap changed for F21, the @ key produced ” when used from a Gnome session on the local console (and ” produced @, they have buggered the keymap). If used via synergy to remotely manage the desktop the @ symbol is replaced by the omega symbol.
Issues occurs after Gnome login. @ can be used in a password at login but not in any terminal sessions or used to unlock the screen after the screen saver comes on; so it is within the Gnome environment. Also as ssh’ing into the servers from F20 and F17 machines accepts the @ key correctly… yup, its something Gnome changes when it starts up.

The workaround for the keymappimg issue for synergy remote control only was found in a five year old post from when fedora 10 introduced the same problems (http://superuser.com/questions/77734/synergy-linux-keyboard-problem).


Create a file ~/.Xmodmap on the F21 machine and add the following to it:
keycode 24 = q Q at at at at

You can activate it straight away with:
xmodmap ~/.Xmodmap

The command must be run manually from a terminal session (or ssh session) after each reboot which is a minor pain.

This does not fix the issue of the @ and ” keys being remapped from the physically attached keyboard.
I may have to install the KDE desktop to see if that resolves the issue; although I quite like gnome.
This is a major issue for me as I use @ in passwords.

I’m not sure if this occurred on the laptop as well as I would have synergy’ed directly into that when upgrading it. So need to retest there.

Posted in Unix | Comments Off on Fedora 21 – My upgrade notes and issues

mvs3.8j and using smp4 to locate where a OS module is used

In trying to make modifications to some of the supplied operating code I was finding it quite frustrating going through the source code trying to guess which FMID I needed to apply module changes to. In many cases I was guessing through a range of FMIDs documented as being installed on the Turnkey3 documentation pages until I found one that didn’t report a mismatch.

One issue with that approach was it identified some of the FMIDs had PTFs installed that were not documented in the installed PTF documentation page on the Turnkey3 site. At that point I decided to read the SMP4 manual.

And joy, SMP provides a function that will tell you exactly what executable load module a program I am enhancing (or breaking) will be linked into along with the FMID.

A batch job to do that is

//MARKSMPL JOB  (SMP),'LIST SMP4 INFO',CLASS=A,MSGCLASS=A,REGION=4096K
//HMASMP  EXEC PGM=HMASMP,PARM='DATE=U',REGION=5120K,TIME=1440
//SYSUT1   DD  UNIT=WORK,SPACE=(1700,(600,100))
//SYSUT2   DD  UNIT=WORK,SPACE=(1700,(600,100))
//SYSUT3   DD  UNIT=WORK,SPACE=(1700,(600,100))
//SYSUT4   DD  UNIT=WORK,SPACE=(80,(2,2))
//SYSPRINT DD  SYSOUT=*
//ASMPRINT DD  SYSOUT=*
//CMPPRINT DD  SYSOUT=*
//COPPRINT DD  SYSOUT=*
//LKDPRINT DD  SYSOUT=*
//E37PRINT DD  SYSOUT=*
//UPDPRINT DD  SYSOUT=*
//ZAPPRINT DD  SYSOUT=*
//*************************** SMP DATASETS *********************
//SMPOUT   DD  SYSOUT=*
//SMPLOG   DD  DUMMY
//SMPTLIB  DD  UNIT=3350,VOL=SER=SMP004,DISP=OLD
//SMPACDS  DD  DISP=SHR,DSN=SYS1.SMPACDS
//SMPACRQ  DD  DISP=SHR,DSN=SYS1.SMPACRQ
//SMPCDS   DD  DISP=SHR,DSN=SYS1.SMPCDS
//SMPCRQ   DD  DISP=SHR,DSN=SYS1.SMPCRQ
//SMPMTS   DD  DISP=SHR,DSN=SYS1.SMPMTS
//SMPPTS   DD  DISP=SHR,DSN=SYS1.SMPPTS
//SMPSTS   DD  DISP=SHR,DSN=SYS1.SMPSTS
//SMPSCDS  DD  DISP=SHR,DSN=SYS1.SMPSCDS
//SMPWRK1  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK2  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK3  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK4  DD  UNIT=WORK,SPACE=(CYL,(1,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK5  DD  UNIT=WORK,SPACE=(CYL,(30,10,250))
//************************ DO SOME LISTING **********************
//SMPPTFIN DD   DUMMY
//SMPCNTL  DD   *
 LIST CDS MOD(IEFAB421) XREF .
 LIST CDS MOD(IEFAB434) XREF .
/*
//

Which provides the information I needed to determine exactly what my changed code will affect when it is installed as a usermod.

     DATE 14.351  TIME 09:41:55      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0001

HMA4240    HMASMP EXEC PARM = 'DATE=U'
 LIST CDS MOD(IEFAB421) XREF .
     DATE 14.351  TIME 09:41:55      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0002

SMPCDS  MODULE ENTRIES


  NAME

IEFAB421  LASTUPD         = JCLIN    TYPE=UPD
          LIBRARIES       = DISTLIB=AOSB3
          FMID            = FBB1221
          RMID            = UZ58427
          LMOD            = IEFW21SD
          SYSMOD HISTORY  = SYSMOD   TYPE       DATE   MCS       ---------- STATUS ----------
                            EBB1102  FUNCTION  00.000  MOD                 ACC            RGN
                            FBB1221  FUNCTION  00.000  MOD                 ACC            RGN
                            UZ58427  PTF       74.164  MOD       APP       ACC

     DATE 14.351  TIME 09:41:58      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0003

HMA2050    LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00


 LIST CDS MOD(IEFAB434) XREF .
     DATE 14.351  TIME 09:41:58      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0004

SMPCDS  MODULE ENTRIES


  NAME

IEFAB434  LASTUPD         = JCLIN    TYPE=UPD
          LIBRARIES       = DISTLIB=AOSB3
          FMID            = EBB1102
          RMID            = UZ59776
          LMOD            = IEFW21SD
          SYSMOD HISTORY  = SYSMOD   TYPE       DATE   MCS       ---------- STATUS ----------
                            EBB1102  FUNCTION  00.000  MOD                 ACC            RGN

     DATE 14.351  TIME 09:42:02      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0005

HMA2050    LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00

It will also provide a full summary of everything belonging to a function if you use “LIST CDS SYSMOD FUNCTION .” But thats a lot of output so not listed here.

The SMP4 manual at the mvs3.8j level is available at bitsavers.org, but as I refer to it a lot it is also available here as GC28-0673-6_SMP_SysPgmrGde_Sep80OCR.pdf.

Posted in MVS3.8J | Comments Off on mvs3.8j and using smp4 to locate where a OS module is used

Fletcher is learning how to use a computer

Actually, as he sleeps on my lap when I’m working he has always managed during the odd yawn/stretch episode to manipulate the keyboard.

Most of the time he intuitively manages to use the keyboard before I can save the work any most of the open windows; and he seems to have learnt a few keyboard shortcuts to abort out programs without saving even I don’t know.

But he is obviously interested in taking over all the programming work himself these days. Here he is taking a publicity photo from his office.
IMG_0213

Posted in Home Life | Comments Off on Fletcher is learning how to use a computer

Created an OpenStack image for mvs3.8j

Of interest to mvs3.8j hobbiests, probably not unless they want to run it on an OpenStack cloud; which they would probably need to be running at home as rackspace does not allow custom images installed.

Ok, to be truthful it is actually a Fedora 20 cloud-init enabled image. With hercules being the application that is installed on the image.

When booted into an instance it will automatically start hercules running my customised copy of Turnkey3.

As long as you associate a floating ip for the instance and open port 3270/tcp to the instance all you have to do is boot the instance, wait a while, and connect a 3270 emulator to the ip-address assigned on port 3270 for a TSO session.

But if you don’t want to fire up a kvm VM and would prefer a cloud fire-up/tear-down environment it is possible.

But I have added the image as an option in the hercules section of my website covering ‘how to obtain a working copy’ for those that may not want a live-DVD/live-USB solution.

Ok, real reason, I just wanted to do it.
And it’s tested and working; a new mvs38j system can be deployed and running in minutes as a standard OpenStack instance.

It’s available from my website page explaining the mvs3.8j OpenStack image if anyone is interested.

Posted in MVS3.8J | Comments Off on Created an OpenStack image for mvs3.8j

An update on the previous post

My intent is to create new console display commands. As MVS3.8J predates the ability to define new commands in the mpflist (actually it predates the mpflist the only option is to modify the appropriate source files for the operating system.

Found the source that needs to be modified

Making progress in reading through the MVS3.8J source files; so far I am fairly sure

  • The console commands are all routed through IEE0403D (in MVSSRC.SYM101.F12) which then calls the appropriate module
  • The module that manages the display commands is IEE3503D (in MVSSRC.SYM101.F13), somewhere to start from
  • The sysgen macro SGIEF441 is apparently used to assemble those and all the many interwined dependant modules into lpalib

Complications identified

  • I do not particularly want to do a new sysgen (well I do, but thats to gen new devices for another issue) so knowning the relevant sysgen macro is SGIEF441 is just commented here for others who may want to look at doing this properly
  • IEE3503D is an alias to IGC0003D, and apparently linked into that program rather than being a standalone module (have not found where the source for IGC0003D lives yet), the SYS1.LPALIB entry for IEE3503D is an alias to IGC0003D
  • also IEE0003D (the SVC34 handler) (which is not in sys1.lpalib,sys1.svclib or sys1.linklib) … is apparently also an alias to IGC0003D also (from somewhere, only comments in various source modules indicate that however), so IGC0003D is a bad thing to break
  • all these interconnecting modules branch to each other with the “R R15,V(module)” then “BR R15” method, so they are either all linked in together or absolutely must be in memory (need to read another manual, or play and find out)
  • did I mention all these are sysgen’ed, and all (apart from IEE0003D I cannot find in a load library) live in the primary LPA area

This has the potential to be as messy as when I was fiddling about replacing SVC modules; but I learnt a little from that :-). Whether it can be applied here I guess I will find out.

Current implementation plan

The easiest way forward I can see is for me (as I don’t want to do a new sysgen just for this, and I want to back out easily when (when not if) I break it is to

  1. find a way to identify all the modules linked into IGC0003D
  2. customise IEE3503D source code to link to my custom command handler before it branches to the program that spits out the “invalid command” console message (returning safely back if it is not one I handle to continue to the invalid command), store in a custom load library
  3. relink IGC0003D with all the modules I found linked into it (todo) but replacing the IEE3503D procedure in IGC0003D with mine and store the new IGC0003D in a custom load library
  4. adjust my MLPA list member (well create a new one) to include the new module and IPL with the CLPA and MLPA options to bring it in
  5. undoubtably followed by an IPL with CLPA and my old mlpa member to get back to a working system :-) and months of debugging

Or, depending on whether I find BR R15,V(progname) requires the progname to be in the same linked module or just in memory I might try removing the alias to IGC0003D and MLPA’ing in my copy. I expect that to break things but is certainly the fastest way to break things :-).

However, where did I put my doco on using MLPA… I think in mvs3.8J modules MLPA’ed in must also live in sys1.lpalib or sys1.svclib anyway so I may have to replace the existing program (after backing up the system of course).

Current possible diversions

My current method of searching for source using existing utilities is one large job file that kicks off three jobs (due to mvs3.8j limit of 254 jobsteps I need three jobs) to perform a ‘pdsscan’ to locate members containing text strings I am looking for; one file scanned per job step and lots of output to wade through from a text prrinter file (impossible to view the output via Q due to so many jobsteps).

I need a program that takes a datatset prefix (ie: mvssrc or sys1), searches the catalogs to find all the datasets, reads the vtoc entry for the datasets to see if they are either dsorg=po+recfm=fb/f or dsorg=ps+recfm=fb/f (ie: ignore load libraries and vsam files etc), search for matching text in the files (different method depending on po or ps dataset of course), and therefore creates one output report to look at containing only datasets and members that matched. One report is easier to look through that 200+ saying no match found.

I find myself needing this program more and more often as I start trying to find out what connects where in all the OS source files. You can expect to find one in my website download section in a few weeks.

Current activites

It is a lovely sunny day outside. But as Teodora would not be the slightest bit interested in going on a picnic with me no matter how nice the weather I will stick to staying inside and coding; at least assemblers still talk to me.

  • cloned a copy of my test mvs3.8j system to break
  • extracted IEE3503D, want to see how many unresolved external modules a linkedit will throw out as a starting point
  • started work on the file scanning programi; I thing I’m going to need it
  • and trying to work out what live rodent the damn cat has just let lose in the house this time, scream
Posted in MVS3.8J | Comments Off on An update on the previous post

Oops, and where is the damb console command code

In the MVS3.8J section; if you don’t play with that move along.

The Oops was the number macro library I posted on the website in the mvs38j section yesterday was buggy; the main issue was there was a character 2 where there should have been a character 0, in assembler when addressing memory that’s a big oops. It works now :-).

Now the main post, “where is the damn command code”.

I see another few months (or years) of frustration ahead poking through the mvs3.8j source code for me.

In z/OS I believe you can use the MPF list to define new console commands; shame MPF doesn’t exist for mvs3.8j.

All I want to do is add a new display command available at the console, ie : D xxx.

So all I have to do is find the OS source code routine that handles console commands and insert/zap the new command so it runs the command instead of saying invalid display command.

All I have to do… I could search all the source PDS files to see what members contain the string “D” but that will not get me anywhere; I assume they all will.

I guess todo next weekend will be to find what module issues the “command invalid” error message, and over the next few months try and identify every module that calls that one.

Just because it irritates me.
The command I wanted to emulate was simply “D SMF”. As a temporary workaround I am using “S DSMF” and have also discovered that CMD1 can return the same info with #CS. But why settle for workarounds.

I may never find the OS code I need to modify; but it will keep me amused (or frustrated) for a few months anyway; until I find it or give up.

Posted in MVS3.8J | Comments Off on Oops, and where is the damb console command code