The opportunity now given to play with a mainframe computer in your GNS3 network simulator environment, you just need to follow the steps below.
========= ========== ===== =====
========= ============ ====== ======
=== === ==== ===== =====
=== ========= ====== ======
=== ======== =============
=== ========= =============
=== === ==== === === ===
========= ============ ===== = =====
========= ========== ===== =====
Before you start with the project, you have to read a bit about what components you will need to integrate together:
Debian – https://en.wikipedia.org/wiki/Debian
Hercules – https://en.wikipedia.org/wiki/Hercules_(emulator)
IBM z/OS – https://en.wikipedia.org/wiki/Z/OS
GNS3 – https://en.wikipedia.org/wiki/Graphical_Network_Simulator-3
You have to complete the following requirements:
- Install GNS3 (2-2-0)
- Install Debian 10 (preferably on Vmware first. The Vmware system will be the base system to make the working image that later on will be deployed to GNS3)
- Install Hercules Mainframe emulator software, c3270 terminal emulator and screen on the top of Debian 10 Vmware Image (
apt-get install -y c3270 hercules screen ) - Find an IBM z/OS Installer Media: ‘IBM ZOS 1.10’ . You have to find on the internet the z/OS ADCD 1.10 (Development and Support) release which has the embedded disks and the minimum hercules configuration.
You should find an Image Set that contains both the z/OS 1.10 disk images and adjusted Hercules configuration like this:
#********************************************************************
# CONFIGURAGION FILE FOR ADCD Z/OS 1.10 SUMMER *
#********************************************************************
# FOR ALL THE LOADPARM OPTIONS VISIT: *
# http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.ADCD.GLOBAL.HTML(READ110S)' *
#********************************************************************
# CUSTOM LOADPARM OPTIONS *
# SA - LOADS ALL LIBRARIES AND STARTS UP AUTOMATION (JES2) *
# J3 - LOADS ALL LIBRARIES AND STARTS UP BASIC z/OS SYSTEM (JES3) *
#********************************************************************
ARCHMODE z/Arch
OSTAILOR z/OS
CPUSERIAL 08A89F
CPUMODEL 7060
LPARNAME DUZA
LOADPARM 0A82SAM1
MODEL UBUNTU
PLANT ZZ
MAINSIZE 1856
HERCPRIO -20
CPUPRIO -20
DEVPRIO -20
DEVTMAX 0
TODRAG 2
NUMCPU 4
SYSEPOCH 1900
TZOFFSET -0000
PANTITLE "ADCD z/OS 1.10 on Hercules"
PANRATE FAST
CNSLPORT 23
PGMPRDOS LICENSED
#********************************************************************
# SYMBOLS DEFINITION *
#********************************************************************
DEFSYM DASD "/home/ehrocha/hercules/images/Z110/DASD"
DEFSYM PROD "/home/ehrocha/hercules/images/Z110/PROD"
DEFSYM PRTR "/home/ehrocha/hercules/images/Z110/PRTR"
#********************************************************************
# ORIGINAL ADCD z/OS 1.10 SUMMER IMAGES *
#********************************************************************
000F 1403 $(PRTR)/IBM/PRTR.000F
0A80 3390 $(DASD)/IBM/JARES1.CCKD
0A81 3390 $(DASD)/IBM/JARES2.CCKD
0A82 3390 $(DASD)/IBM/JASYS1.CCKD
0A83 3390 $(DASD)/IBM/JAUSS1.CCKD
0A84 3390 $(DASD)/IBM/JAPRD1.CCKD
0A85 3390 $(DASD)/IBM/JAPRD2.CCKD
0A86 3390 $(DASD)/IBM/JAPRD3.CCKD
0A87 3390 $(DASD)/IBM/JAIMS1.CCKD
0A88 3390 $(DASD)/IBM/JACIC1.CCKD
0A89 3390 $(DASD)/IBM/JADB91.CCKD
0A8A 3390 $(DASD)/IBM/JADB92.CCKD
0A8B 3390 $(DASD)/IBM/JADB93.CCKD
0A8C 3390 $(DASD)/IBM/JAWAS1.CCKD
0A8D 3390 $(DASD)/IBM/JAWAS2.CCKD
0A8E 3390 $(DASD)/IBM/JAWAS3.CCKD
0A8F 3390 $(DASD)/IBM/SARES1.CCKD #LOADPARM 0A99SAM1
0A91 3390 $(DASD)/IBM/JADIS1.CCKD
0A92 3390 $(DASD)/IBM/JADIS2.CCKD
0A93 3390 $(DASD)/IBM/JADIS3.CCKD
0A94 3390 $(DASD)/IBM/JADIS4.CCKD
0A95 3390 $(DASD)/IBM/JADIS5.CCKD
0A96 3390 $(DASD)/IBM/JADIS6.CCKD
#********************************************************************
# CUSTOM IMAGES *
#********************************************************************
# VOLUME NAMING CONVENTION *
# .-----> 1 CHAR SYSPLEX NAME (SYSPLX "A") *
# |.--.-> 3 CHAR PURPOSE RES=SYSRES SPL=SPOOL CKP=CHECKPOINT *
# || \> USR=USER CFG=SYS PAG=PAGE SMS=SMS *
# || .-> SEQUENCE OR SYSCLONE FOR CONFIGURATION VOLUME *
# VV V *
# xxxxxx *
#********************************************************************
0AA0 3390 $(DASD)/SYS/SYS001.CCKD
0AA1 3390 $(DASD)/SYS/SPL001.CCKD
0AA2 3390 $(DASD)/SYS/SPL002.CCKD
0AA3 3390 $(DASD)/SYS/SPL003.CCKD
0AA4 3390 $(DASD)/SYS/SPL004.CCKD
0AA5 3390 $(DASD)/SYS/SPL005.CCKD
0AA6 3390 $(DASD)/SYS/CKP001.CCKD
0AA7 3390 $(DASD)/SYS/CKP002.CCKD
0AA8 3390 $(DASD)/SYS/PAG001.CCKD
0AA9 3390 $(DASD)/SYS/PAG002.CCKD
0AAA 3390 $(DASD)/SYS/USS001.CCKD
0AAB 3390 $(DASD)/SYS/AUT001.CCKD
0AAC 3390 $(DASD)/SYS/EQQ001.CCKD
0AAD 3390 $(DASD)/SYS/DMP001.CCKD
0AAF 3390 $(DASD)/SYS/AZZSAD.CCKD
0AB0 3390 $(DASD)/SYS/USR001.CCKD
0AB1 3390 $(DASD)/SYS/USR002.CCKD
0AB2 3390 $(DASD)/SYS/USR003.CCKD
0AB3 3390 $(DASD)/SYS/USR004.CCKD
0AB4 3390 $(DASD)/SYS/USR005.CCKD
#********************************************************************
# DISPLAY TERMINALS *
#********************************************************************
0700 3270
#0701 3270
0702.14 3270
#********************************************************************
# CTCI COMMUNICATION DEVICES *
#********************************************************************
0E20.2 LCS 10.0.1.20
#********************************************************************
# HOST OS TIPS/TRICKS *
#********************************************************************
#sudo /sbin/sysctl -w net.ipv4.conf.eth0.proxy_arp=1
#sudo /sbin/sysctl -w net.ipv4.conf.eth0.proxy_arp=1
Create a ‘hercules’ local user on your debian machine
adduser hercules
Setup a file structure like this:
hercules@hercules:~$ cd /home/hercules
hercules@hercules:~$ ls
MAINFRAME
You should have the CONF, DASD and PRTR folders
hercules@hercules:~/MAINFRAME$ ls -all
total 20
drwxr-xr-x 5 hercules hercules 4096 Oct 12 10:25 .
drwxr-xr-x 6 hercules hercules 4096 Oct 14 10:11 ..
drwxr-xr-x 2 hercules hercules 4096 Oct 16 13:48 CONF
drwxr-xr-x 4 hercules hercules 4096 Oct 13 14:02 DASD
drwxr-xr-x 2 hercules hercules 4096 Oct 12 10:25 PRTR
Hercules config:
hercules@hercules:~/MAINFRAME/CONF$ ls -all
total 16
drwxr-xr-x 2 hercules hercules 4096 Oct 19 13:56 .
drwxr-xr-x 5 hercules hercules 4096 Oct 12 10:25 ..
-rw-r--r-- 1 hercules hercules 4966 Oct 16 13:48 ADCD_LINUX.CONF
Modify the following sections in the config
-DASD / PROT/ PRTR sections location (path to the right absolute path in your system, for example /home/hercules/MAINFRAME)
-CNSLPORT (to 2323)
-CTCI COMMUNICATION DEVICES (assign two LAN ip address that the emualted mainframe can use on your local network)
cat /hercules/MAINFRAME/CONF/ADCD_LINUX.CONF
#********************************************************************
# CONFIGURAGION FILE FOR ADCD Z/OS 1.10 SUMMER *
#********************************************************************
# FOR ALL THE LOADPARM OPTIONS VISIT: *
# http://dtsc.dfw.ibm.com/MVSDS/'HTTPD2.ADCD.GLOBAL.HTML(READ110S)' *
#********************************************************************
# CUSTOM LOADPARM OPTIONS *
# SA - LOADS ALL LIBRARIES AND STARTS UP AUTOMATION (JES2) *
# J3 - LOADS ALL LIBRARIES AND STARTS UP BASIC z/OS SYSTEM (JES3) *
#********************************************************************
ARCHMODE z/Arch
OSTAILOR z/OS
CPUSERIAL 08A89F
CPUMODEL 7060
LPARNAME DUZA
LOADPARM 0A82SAM1
MODEL UBUNTU
PLANT ZZ
MAINSIZE 1856
HERCPRIO -20
CPUPRIO -20
DEVPRIO -20
DEVTMAX 0
TODRAG 2
NUMCPU 4
SYSEPOCH 1900
TZOFFSET -0000
PANTITLE "ADCD z/OS 1.10 on Hercules"
PANRATE FAST
CNSLPORT 2323
PGMPRDOS LICENSED
#********************************************************************
# SYMBOLS DEFINITION *
#********************************************************************
DEFSYM DASD "/home/hercules/MAINFRAME/DASD"
DEFSYM PROD "/home/hercules/MAINFRAME/PROD"
DEFSYM PRTR "/home/hercules/MAINFRAME/PRTR"
#********************************************************************
# ORIGINAL ADCD z/OS 1.10 SUMMER IMAGES *
#********************************************************************
000F 1403 $(PRTR)/IBM/PRTR.000F
0A80 3390 $(DASD)/IBM/JARES1.CCKD
0A81 3390 $(DASD)/IBM/JARES2.CCKD
0A82 3390 $(DASD)/IBM/JASYS1.CCKD
0A83 3390 $(DASD)/IBM/JAUSS1.CCKD
0A84 3390 $(DASD)/IBM/JAPRD1.CCKD
0A85 3390 $(DASD)/IBM/JAPRD2.CCKD
0A86 3390 $(DASD)/IBM/JAPRD3.CCKD
0A87 3390 $(DASD)/IBM/JAIMS1.CCKD
0A88 3390 $(DASD)/IBM/JACIC1.CCKD
0A89 3390 $(DASD)/IBM/JADB91.CCKD
0A8A 3390 $(DASD)/IBM/JADB92.CCKD
0A8B 3390 $(DASD)/IBM/JADB93.CCKD
0A8C 3390 $(DASD)/IBM/JAWAS1.CCKD
0A8D 3390 $(DASD)/IBM/JAWAS2.CCKD
0A8E 3390 $(DASD)/IBM/JAWAS3.CCKD
0A8F 3390 $(DASD)/IBM/SARES1.CCKD #LOADPARM 0A99SAM1
0A91 3390 $(DASD)/IBM/JADIS1.CCKD
0A92 3390 $(DASD)/IBM/JADIS2.CCKD
0A93 3390 $(DASD)/IBM/JADIS3.CCKD
0A94 3390 $(DASD)/IBM/JADIS4.CCKD
0A95 3390 $(DASD)/IBM/JADIS5.CCKD
0A96 3390 $(DASD)/IBM/JADIS6.CCKD
#********************************************************************
# CUSTOM IMAGES *
#********************************************************************
# VOLUME NAMING CONVENTION *
# .-----> 1 CHAR SYSPLEX NAME (SYSPLX "A") *
# |.--.-> 3 CHAR PURPOSE RES=SYSRES SPL=SPOOL CKP=CHECKPOINT *
# || \> USR=USER CFG=SYS PAG=PAGE SMS=SMS *
# || .-> SEQUENCE OR SYSCLONE FOR CONFIGURATION VOLUME *
# VV V *
# xxxxxx *
#********************************************************************
0AA0 3390 $(DASD)/SYS/SYS001.CCKD
0AA1 3390 $(DASD)/SYS/SPL001.CCKD
0AA2 3390 $(DASD)/SYS/SPL002.CCKD
0AA3 3390 $(DASD)/SYS/SPL003.CCKD
0AA4 3390 $(DASD)/SYS/SPL004.CCKD
0AA5 3390 $(DASD)/SYS/SPL005.CCKD
0AA6 3390 $(DASD)/SYS/CKP001.CCKD
0AA7 3390 $(DASD)/SYS/CKP002.CCKD
0AA8 3390 $(DASD)/SYS/PAG001.CCKD
0AA9 3390 $(DASD)/SYS/PAG002.CCKD
0AAA 3390 $(DASD)/SYS/USS001.CCKD
0AAB 3390 $(DASD)/SYS/AUT001.CCKD
0AAC 3390 $(DASD)/SYS/EQQ001.CCKD
0AAD 3390 $(DASD)/SYS/DMP001.CCKD
0AAF 3390 $(DASD)/SYS/AZZSAD.CCKD
0AB0 3390 $(DASD)/SYS/USR001.CCKD
0AB1 3390 $(DASD)/SYS/USR002.CCKD
0AB2 3390 $(DASD)/SYS/USR003.CCKD
0AB3 3390 $(DASD)/SYS/USR004.CCKD
0AB4 3390 $(DASD)/SYS/USR005.CCKD
#********************************************************************
# DISPLAY TERMINALS *
#********************************************************************
0700 3270
#0701 3270
0702.14 3270
#********************************************************************
# CTCI COMMUNICATION DEVICES *
#********************************************************************
0E20.2 3088 CTCI /dev/net/tun 1500 192.168.2.30 192.168.2.31 255.255.255.255
#********************************************************************
# HOST OS TIPS/TRICKS *
#********************************************************************
#sudo /sbin/sysctl -w net.ipv4.conf.eth0.proxy_arp=1
#sudo /sbin/sysctl -w net.ipv4.conf.eth0.proxy_arp=1
Start-up the z/OS mainframe in hercules (this stage you can still stay under vmware, not necessary to move the image yet under GNS)
Specs for the virtual machine bootstrapping first quick the z/os:
- CPU: 8x preferred for the first run, later 4x cpu enough for running
- Memory: 16GB
- Disk: minimum 50GB, 100GB preferred
Start a terminal for running the hercules daemon
screen -S hercules
Start the hercules mainframe emulator binary pointing to the proper z/os config
sudo hercules -f ~/MAINFRAME/CONF/ADCD_LINUX.CONF
After hercules started up, you should see the following console messges:
![](http://modernhackers.com/wp-content/uploads/2019/10/01-z-os-start-hercules-940x759.jpg)
![](http://modernhackers.com/wp-content/uploads/2019/10/02-z-os-start-hercules-940x601.jpg)
Detach the ‘hercules session
ctrl + a d
Open a terminal session for the c3270 terminal client
screen -S c3270
c3270 localhost 2323
![](http://modernhackers.com/wp-content/uploads/2019/10/03-z-os-c3270-hercules.jpg)
Detach the c3270 session
CTRL + a + d
Attach back the ‘hercules’ session
screen -r hercules
Startup the z/os mainframe with IPL command
After issuing the ipl comand, this can either take up to 60-90 minutes for the first start (based on your machine speed). When you start second time it can be done within 10 minutes.
ipl a80
![](http://modernhackers.com/wp-content/uploads/2019/10/04-z-os-hercules-ipl-940x719.jpg)
You can switch back to the c3270 terminal to see the console logs, when the c3270 console messages stops flowing, you should be ready to with a login
![](http://modernhackers.com/wp-content/uploads/2019/10/05-z-os-hercules-c3270-startup.jpg)
![](http://modernhackers.com/wp-content/uploads/2019/10/06-z-os-hercules-c3270-startup.jpg)
Create a secondary c3270 terminal
screen -S c3270-2
Connect to the c3270 again in the second terminal, this stage you should be able to see the z/os login screen:
c3270 localhost 2323
![](http://modernhackers.com/wp-content/uploads/2019/10/07-z-os-hercules-c3270-login-screen.jpg)
Input: TSO
Hit Enter
![](http://modernhackers.com/wp-content/uploads/2019/10/08-z-os-hercules-c3270-login-screen.jpg)
Password: SYS1
![](http://modernhackers.com/wp-content/uploads/2019/10/09-z-os-hercules-c3270-login-screen.jpg)
Hit Enter Again
![](http://modernhackers.com/wp-content/uploads/2019/10/10-z-os-hercules-c3270-login-screen.jpg)
You logged in:
![](http://modernhackers.com/wp-content/uploads/2019/10/11-z-os-hercules-c3270-logged-in.jpg)
You will need to setup the network, type “3.4” to the Option ===> prompt
![](http://modernhackers.com/wp-content/uploads/2019/10/12-z-os-hercules-c3270-network-setup.jpg)
Hit Enter
![](http://modernhackers.com/wp-content/uploads/2019/10/13-z-os-hercules-c3270-network-setup.jpg)
You will need to replace IBMUSER Dsname Level to ‘DUZA’
![](http://modernhackers.com/wp-content/uploads/2019/10/14-z-os-hercules-c3270-network-setup.jpg)
Hit Enter
![](http://modernhackers.com/wp-content/uploads/2019/10/15-z-os-hercules-c3270-network-setup.png)
Page / navigate with F8 key to DUZA.TCPPARMS line
Stand with the cursor before DUZA.TCPPARMS with 3 characters and input an ‘E’ character
![](http://modernhackers.com/wp-content/uploads/2019/10/16-z-os-hercules-c3270-network-setup.png)
Hit Enter
![](http://modernhackers.com/wp-content/uploads/2019/10/17-z-os-hercules-c3270-network-setup.png)
Stand to line Profile and input ‘E’ character to the first character position
![](http://modernhackers.com/wp-content/uploads/2019/10/18-z-os-hercules-c3270-network-setup.png)
Hit Enter
![](http://modernhackers.com/wp-content/uploads/2019/10/19-z-os-hercules-c3270-network-setup.png)
Navigate to aroind line 90 and make sure you have the same settings setup, especially for CTCA1 DE\viC|E, CTC1 LINK and end of the config START CTCA1
![](http://modernhackers.com/wp-content/uploads/2019/10/20-z-os-hercules-c3270-network-setup.png)
000090 DEVICE CTCA1 CTC e20
000091 LINK CTC1 CTC 1 CTCA1
000092
000093 HOME
000094 192.168.0.210 CTC1
000095
000096 GATEWAY
000097 192.168.0.1 = CTC1 1492 HOST
000098
000099 DEFAULTNET 192.168.0.5 CTC1 1492
...
000109 START CTCA1
Save the modified file – issue SAVE to the COMMAND input area and hit enter
SAVE
End editing with issue the ‘END’ command and hit an Enter:
END
Detach this c3270-2 terminal and go back to the first c3270 console terminal and re-start TCP/IP networking
STOP TCPIP
Hit Enter
![](http://modernhackers.com/wp-content/uploads/2019/10/21-z-os-hercules-c3270-network-restart-tcpip.png)
After a few minutes you should get that TCPIP is STOPPED
![](http://modernhackers.com/wp-content/uploads/2019/10/21-z-os-hercules-c3270-network-restart-tcpip-v2.png)
Issue START TCPIP and hit Enter
START TCPIP
![](http://modernhackers.com/wp-content/uploads/2019/10/23-z-os-hercules-c3270-network-restart-tcpip.png)
You need to enable IP forwarding on the Debian host, which running Hercules:
root@hercules:~# echo '1' > /proc/sys/net/ipv4/conf/all/proxy_arp
root@hercules:~# echo '1' > /proc/sys/net/ipv4/conf/all/forwarding
Validate that the virtual mainframe is accessible through TCP/IP connection:
![](http://modernhackers.com/wp-content/uploads/2019/10/24-z-os-hercules-c3270-network-validate-tcpip.png)
Telnet to the z/os mainframe’s unix shell
telnet 192.168.2.30 1023
In few seconds you should get the following login screen
![](http://modernhackers.com/wp-content/uploads/2019/10/25-z-os-telnet.png)
Provide IBMUSER / SYS1 credentials
![](http://modernhackers.com/wp-content/uploads/2019/10/26-z-os-telnet.png)
Stop the z/os mainframe. In order to do that you need to go back to the main c3270 terminal session and issue the following commands:
S SHUTSYS
![](http://modernhackers.com/wp-content/uploads/2019/10/27-z-os-shutdown-system.png)
After few minutes, when you see shutdown complete, you will need to issue an additional stage shutdown command:
Z EOD
![](http://modernhackers.com/wp-content/uploads/2019/10/28-z-os-shutdown-system.png)
After succesful shutdown you should see
![](http://modernhackers.com/wp-content/uploads/2019/10/29-z-os-shutdown-system.png)
Now you are ready to transfer the working hard disk image to GNS3
in GNS3 go to Edit / Preferences / QEMU / QEMU VMs and click to New
![](http://modernhackers.com/wp-content/uploads/2019/10/30-z-os-create-gns3-appliance-940x685.png)
![](http://modernhackers.com/wp-content/uploads/2019/10/31-z-os-create-gns3-appliance.png)
![](http://modernhackers.com/wp-content/uploads/2019/10/32-z-os-create-gns3-appliance.png)
![](http://modernhackers.com/wp-content/uploads/2019/10/33-z-os-create-gns3-appliance.png)
After the wizard uploading your z/os image to your GNS3 instance, you will be ready to start using in GNS3
![](http://modernhackers.com/wp-content/uploads/2019/10/34-z-os-qemu-template-gns3.png)
![](http://modernhackers.com/wp-content/uploads/2019/10/35-z-os-qemu-template-gns3.png)
![](http://modernhackers.com/wp-content/uploads/2019/10/36-z-os-qemu-template-gns3-940x684.png)
You should be able to drag and drop the zOS machine to your projects
![](http://modernhackers.com/wp-content/uploads/2019/10/00-z-os-mainframe-in-gns3-1-940x711.png)
You should be able to open a console connection to the host os first (Debian) which is holding the Hercules emulator, where you will need to start hercules, c3270 terminal and start-up the z/os like described above again.
![](http://modernhackers.com/wp-content/uploads/2019/10/37-z-os-gns3-940x762.png)
![](http://modernhackers.com/wp-content/uploads/2019/10/38-z-os-gns3-940x759.png)
![](http://modernhackers.com/wp-content/uploads/2019/10/39-z-os-gns3-940x759.png)