ubuntu 编译 hercules 主机安装 z/OS 教程

前言背景

现在程序员行业挺抢手,Java, Python 等等程序语言各大公司都有很大的需求,当中有一个行业,其实比较容易忽略,就是银行的程序员。银行系统其实有各种程序员需要,无论 Java, Python, 还是 Cobol 都很需要人手的。可是刚毕业的宝宝们大多选 Java,Python 这些,Cobol 却没啥人问津,加上刚毕业学生其实也不知道如何学 Cobol。

开始之前先简单比较一下:主机程序员 跟 Java 程序员

主机程序员 Java 程序員
流行程度 非常不流行 非常流行
行业 银行,大型保险公司,政府 各种公司都需要
工资 100+30% 100%
竞争 没啥人会,抢的人不多 大多人都会,很多人跟你抢
技术 基本 Cobol,JCL,DB2 除了基本Java,要求使用多种框架技术 e.g. Spring, MyBatis, Hibernate, Database
前景

10-20年,只要系统没更换,平常比较稳定

比较长远

今天老程序员在这里分享一下,如何自己搭建一个学习主机开发的环境。

安装前规划

安装 z/OS 其实有很多选择

可以安装在虚拟器,也可以装在实体机器上

可以在 Windows 上安装,也可以在 Linux 上安装

z/OS 是操作系统,有不同版本,MVS -> OS380 -> OS390 -> z/OS

MVS 是开源可以免费取得的,一般公司使用的是 IBM z/OS 最新版本 z/OS V2R4

普通学习机用 z/OS V1R10 也足够

(如果是学习资金非常充足的,可以到 IBM 官网申请 zPDT 个人版学习系统,也是 Linux)

这里示范的是用实体机器 Ubuntu 系统,自行编译 hercules,再跑 z/OS V1R10

实体机器: Xeon E3 1240 V2 老 CPU + 32GB RAM + 120GB SSD + Ubuntu 20.04 LTS

实体机器 IP: 192.168.50.15

kazuya@ubuntu: ~
$ uname -a
Linux ubuntu 5.4.0-81-generic #91-Ubuntu SMP Thu Jul 15 19:09:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
kazuya@ubuntu: ~
$ ifconfig
eno1: flags=4163  mtu 1500
        inet 192.168.50.15  netmask 255.255.255.0  broadcast 192.168.50.255
        inet6 fe80::76d0:2bff:fe28:c17f  prefixlen 64  scopeid 0x20
        ether *****************  txqueuelen 1000  (Ethernet)
        RX packets 310  bytes 39339 (39.3 KB)
        RX errors 0  dropped 59  overruns 0  frame 0
        TX packets 203  bytes 26107 (26.1 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xf7400000-f7420000  

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 27  bytes 3059 (3.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27  bytes 3059 (3.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

另外,还要自己定2个 IP 用来给 Ubuntu 和 z/OS 之间内部联系,可以随便选,按 Hercules 官网教学,定为

192.168.200.1  (这个给 z/OS 用)

192.168.200.2 (这个给 Ubuntu 用)

Ubuntu 要连去 z/OS,连 192.168.200.1 就可以

例如: 在 Ubuntu 里要连去 z/OS ftp

kazuya@ubuntu: ~
$ ftp 192.168.200.1

虽然 192.168.200.1/2 是内部联系,如果有另外一个机器,例如,另一台实体机器 Mac (IP 192.168.50.11),要连到 Ubuntu 内的 z/OS,也可以容易配置

下一步就是取得所需的 z/OS,这个自己发灰,下面是 z/OS V1R10 v1.10 版本

包括了 DB2, WAS, IMS, Java 等等,可以挺全面的学习

网上大多数是带副档名 e.g. .CCKD 有没有都是一样

这些劵,下了在 Linux 或 Windows 都是通用的

最底下的 hercules.cnf 是 Hercules 的配置档,是灵魂

而 UAPP01, USRG01, UTMP01 是自己建立的劵, 用来在 z/OS 放自己的东西

UAPP01 一会用来放 HFS 新版的 Java SDK J8.0

USRG01 放自己写的 Program, Script 等等

UTMP01 用来放暂存,例如解压档暂存

SYSCPK 是額外的編譯工具劵,例如學習 RPG 等等

可以用 hercules 自带的工具 dasdinit 来建立新的劵

例如:建立 USRG01 3390 是劵的格式带不同格式,3390 大概可以装 900MB 东西

dasdinit -a /home/kazuya/zos/USRG01 3390 USRG01

zzsacard.bin 是一个还原小工具,Hercules 里自带的,hercules.cnf 里面要配置,所以,复制出来,.cnf 统一指向本地目录

kazuya@ubuntu: ~/zos
$ pwd
/home/kazuya/zos
kazuya@ubuntu: ~/zos
$ ls -l | grep kazuya
-rwxrwxrwx 1 kazuya kazuya  529743872 Aug 22 22:08 SARES1
-rwxrwxrwx 1 kazuya kazuya   30970765 Aug 22 22:08 SYSCPK
-rwxrwxrwx 1 kazuya kazuya  226248596 Aug 22 22:08 ZACIC1
-rwxrwxrwx 1 kazuya kazuya  170905505 Aug 22 22:08 ZADB81
-rwxrwxrwx 1 kazuya kazuya  308625683 Aug 22 22:08 ZADB82
-rwxrwxrwx 1 kazuya kazuya 1111670784 Aug 22 22:08 ZADB83
-rwxrwxrwx 1 kazuya kazuya 1107853312 Aug 22 22:08 ZADB84
-rwxrwxrwx 1 kazuya kazuya  201001999 Aug 22 22:08 ZADB91
-rwxrwxrwx 1 kazuya kazuya  835317373 Aug 22 22:08 ZADB92
-rwxrwxrwx 1 kazuya kazuya  565875480 Aug 22 22:08 ZADIS1
-rwxrwxrwx 1 kazuya kazuya  459112448 Aug 22 22:08 ZADIS2
-rwxrwxrwx 1 kazuya kazuya  288735232 Aug 22 22:08 ZADIS3
-rwxrwxrwx 1 kazuya kazuya  801079296 Aug 22 22:08 ZADIS4
-rwxrwxrwx 1 kazuya kazuya  690978816 Aug 22 22:08 ZADIS5
-rwxrwxrwx 1 kazuya kazuya  933675008 Aug 22 22:08 ZADIS6
-rwxrwxrwx 1 kazuya kazuya  242821373 Aug 22 22:08 ZAIMS1
-rwxrwxrwx 1 kazuya kazuya  878364452 Aug 22 22:08 ZAPRD1
-rwxrwxrwx 1 kazuya kazuya  716280541 Aug 22 22:08 ZAPRD2
-rwxrwxrwx 1 kazuya kazuya  968475738 Aug 22 22:08 ZAPRD3
-rwxrwxrwx 1 kazuya kazuya      34307 Aug 22 22:08 ZAPRD4
-rwxrwxrwx 1 kazuya kazuya  564331245 Aug 22 22:08 ZARES1
-rwxrwxrwx 1 kazuya kazuya  403303341 Aug 22 22:08 ZARES2
-rwxrwxrwx 1 kazuya kazuya   94654623 Aug 22 22:08 ZASYS1
-rwxrwxrwx 1 kazuya kazuya  682986497 Aug 22 22:08 ZAUSS1
-rwxrwxrwx 1 kazuya kazuya 1296174118 Aug 22 22:08 ZAWAS1
-rwxrwxrwx 1 kazuya kazuya 1520287744 Aug 22 22:08 ZAWAS2
-rwxrwxrwx 1 kazuya kazuya 1691123712 Aug 22 22:08 ZAWAS3

-rwxrwxr-x 1 kazuya kazuya       2997 Aug 22 09:37 hercules.cnf
-rw-rw-r-- 1 kazuya kazuya      29520 Aug 21 21:47 zzsacard.bin
-rwxrwxrwx 1 kazuya kazuya  949663232 Aug 22 22:02 UAPP01
-rwxrwxrwx 1 kazuya kazuya  949663232 Aug 22 10:13 USRG01
-rwxrwxrwx 1 kazuya kazuya  949663232 Aug 22 22:02 UTMP01

编译 hercules

Hercules 是一个模拟器,装了可以跑不同的 z/OS 操作系统,就像在 Windows 上要跑 Linux,可以装 VMWare Player, Virtual Box 或自带的 Windows Hyper-V。

目前 Hercules 带2个版本,官网的 Hercules 已经没更新了,不过还是可用的,最新是 3.13。

http://www.hercules-390.eu

建议使用由 SDL 维护的版本,名字叫 hyperion,SDL 全名叫 Software Development Laboratories 是一个叫 David 的人维护,SDL 也开发 GUI 版本 Windows 程序和 CTCI-Win (用来在 Windows 上主客联网的工具),SDL 的工具是收费的,但可以试用,而且是不限时,不限功能。

https://github.com/SDL-Hercules-390/hyperion

首先,git clone 把 hyperion 下载回来

kazuya@ubuntu: ~/tmp
$ pwd
/home/kazuya/tmp
kazuya@ubuntu: ~/tmp
$ git clone https://github.com/SDL-Hercules-390/hyperion.git

然后给 ubuntu apt update upgrade 和安装基本编译工具 

sudo apt update
sudo apt upgrade
sudo apt install m4 make autoconf automake cmake flex build-essential regina-rexx libbz2-dev libregina3-dev zlib1g-dev unzip c3270 ncat libltdl-dev

 然后切换到 hyperion 目录,先跑 bldlvlck 来检查一下系统编译需求是否满足,然后,再 make,-j8 可以根据实际机器 CPU core 核心数来设,这样编译快一点,例如 Xeon E3 1240 V2 是4核,支援超线程,所以,4x2,设为 8

cd /home/tmp/hyperion
./util/bldlvlck
./configure
make clean
make -j8

sudo make install

编译好了,建议 make install 把 hercules 安装到用户程序目录,像下面

这样运行 hercules 也不用输完整路径 /home/tmp/hyperion/hercules,直接 hercules 就可以

kazuya@ubuntu: /usr/local/bin
$ ls -ltr
total 24216
-rwxr-xr-x 1 root root  15347 Aug 21 21:32 voldsext.cmd
-rwxr-xr-x 1 root root   1376 Aug 21 21:32 dasdlist
-rwxr-xr-x 1 root root 627576 Aug 21 21:32 cckdcdsk
-rwxr-xr-x 1 root root 627128 Aug 21 21:32 cckdcomp
-rwxr-xr-x 1 root root 663696 Aug 21 21:32 cckddiag
-rwxr-xr-x 1 root root 627320 Aug 21 21:32 cckdswap
-rwxr-xr-x 1 root root 627608 Aug 21 21:32 cckdcdsk64
-rwxr-xr-x 1 root root 627160 Aug 21 21:32 cckdcomp64
-rwxr-xr-x 1 root root 664376 Aug 21 21:32 cckddiag64
-rwxr-xr-x 1 root root 627344 Aug 21 21:32 cckdswap64
-rwxr-xr-x 1 root root 658768 Aug 21 21:32 convto64
-rwxr-xr-x 1 root root 654704 Aug 21 21:32 cckdmap
-rwxr-xr-x 1 root root 650872 Aug 21 21:32 dasdcat
-rwxr-xr-x 1 root root 679056 Aug 21 21:32 dasdconv
-rwxr-xr-x 1 root root 675272 Aug 21 21:32 dasdcopy
-rwxr-xr-x 1 root root 630056 Aug 21 21:32 dasdinit
-rwxr-xr-x 1 root root 678472 Aug 21 21:32 dasdconv64
-rwxr-xr-x 1 root root 678352 Aug 21 21:32 dasdcopy64
-rwxr-xr-x 1 root root 630072 Aug 21 21:32 dasdinit64
-rwxr-xr-x 1 root root 642944 Aug 21 21:32 dasdisup
-rwxr-xr-x 1 root root 914056 Aug 21 21:32 dasdload
-rwxr-xr-x 1 root root 914064 Aug 21 21:32 dasdload64
-rwxr-xr-x 1 root root 669040 Aug 21 21:32 dasdls
-rwxr-xr-x 1 root root 637504 Aug 21 21:32 dasdpdsu
-rwxr-xr-x 1 root root 699008 Aug 21 21:32 dasdseq
-rwxr-xr-x 1 root root 625656 Aug 21 21:32 dasdser
-rwxr-xr-x 1 root root 621088 Aug 21 21:32 dmap2hrc
-rwxr-xr-x 1 root root 627176 Aug 21 21:32 hercules
-rwxr-xr-x 1 root root 647480 Aug 21 21:32 hetget
-rwxr-xr-x 1 root root 627640 Aug 21 21:32 hetinit
-rwxr-xr-x 1 root root 675928 Aug 21 21:32 hetmap
-rwxr-xr-x 1 root root 654136 Aug 21 21:32 hetupd
-rwxr-xr-x 1 root root 672040 Aug 21 21:32 maketape
-rwxr-xr-x 1 root root 712560 Aug 21 21:32 tapecopy
-rwxr-xr-x 1 root root 637256 Aug 21 21:32 tapemap
-rwxr-xr-x 1 root root 639744 Aug 21 21:32 tapesplt
-rwxr-xr-x 1 root root 805480 Aug 21 21:32 vmfplc2
-rwxr-xr-x 1 root root 622440 Aug 21 21:32 hercifc
-rwxr-xr-x 1 root root 624112 Aug 21 21:32 herclin
lrwxrwxrwx 1 root root     10 Aug 21 21:32 fba2cfba -> ./dasdcopy
lrwxrwxrwx 1 root root     10 Aug 21 21:32 ckd2cckd -> ./dasdcopy
lrwxrwxrwx 1 root root     10 Aug 21 21:32 cfba2fba -> ./dasdcopy
lrwxrwxrwx 1 root root     10 Aug 21 21:32 cckd2ckd -> ./dasdcopy
lrwxrwxrwx 1 root root     12 Aug 21 21:32 fba2cfba64 -> ./dasdcopy64
lrwxrwxrwx 1 root root     12 Aug 21 21:32 ckd2cckd64 -> ./dasdcopy64
lrwxrwxrwx 1 root root     12 Aug 21 21:32 cfba642fba -> ./dasdcopy64
lrwxrwxrwx 1 root root     12 Aug 21 21:32 cckd642ckd -> ./dasdcopy64
kazuya@ubuntu: /usr/local/bin
$ 

然后,修改一下 vi ~/.profile,把 /usr/loca/lib/hercules library 路径加上 LD_LIBRARY_PATH

这样运行 hercules,才可找到所需的 library

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/local/lib/hercules
#setleds -D +num
~                                                                                                                                                                                                                           
                                                                                                                                                                                                             
~                                                                                                                                                                                                                           
~                                                                                                                                                                                                                           
~                                                                                                                                                                                                                           
".profile" 30L, 901C                           
sudo ldconfig

配置 z/OS

z/OS 配置挺简单就是修改 hercules.cnf,下面以超线程8核为例子,/home/kazua/zos 改为自己机器的路径

#
# Hercules Emulator Control file...
#
# Description:       
# MaxShutdownSecs:   15
# LoadUnit:          0A80
# RCFile:            
# LogoFile:          
# IgnoreParseErrors: 0
# HercGUI Version:   1.17.0.5541
#

#  System parameters

ARCHLVL              z/Arch

MAXCPU               8
ENGINES              CP,CP,CP,CP,CP,CP,CP,CP
NUMCPU               8

AUTO_SCSI_MOUNT      NO
CNSLPORT             3270
CONKPALV             (3,1,10)
CODEPAGE             default
CPUMODEL             3090
CPUSERIAL            012345
CPUVERID             FD
DEVTMAX              8
DIAG8CMD             ENABLE NOECHO
ECPSVM               YES TRAP
HTTP                 PORT 80 NOAUTH
MODPATH              /usr/local/lib/hercules
LEGACYSENSEID        DISABLE
NETDEV               /dev/net/tun
LOADPARM             0A95DCM1
#LOADPARM             0A82CS
LPARNUM              01
LPARNAME             HERCULES
MAINSIZE             8192
MANUFACTURER         HRC
MODEL                EMULATOR "" "" ""
MOUNTED_TAPE_REINIT  DISALLOW
OSTAILOR             Z/OS
PANOPT               FULLPATH
PANOPT               RATE=500
PANOPT               TITLE=z/OS
PGMPRDOS             LICENSED
PLANT                ZZ
SHCMDOPT             DISABLE NODIAG8
SYSEPOCH             1900
TIMERINT             50
TRACEOPT             TRADITIONAL
TZOFFSET             +0800
XPNDSIZE             0
YROFFSET             0

#  Card Readers

000C    3505    /home/kazuya/zos/zzsacard.bin

#  Card Punches

000D    3525    /home/kazuya/zos/punch00d.txt ascii

#  Line Printers

000E    1403    /home/kazuya/zos/print00e.txt crlf

#  Console Printers

0009    3215-C  / noprompt

#  Display Terminals

0700.5  3270

#  Disk Drives

0A80    3390    /home/kazuya/zos/ZARES1
0A81    3390    /home/kazuya/zos/ZARES2
0A82    3390    /home/kazuya/zos/SARES1
0A83    3390    /home/kazuya/zos/ZADB81
0A84    3390    /home/kazuya/zos/ZADB82
0A85    3390    /home/kazuya/zos/ZADB83
0A86    3390    /home/kazuya/zos/ZADB84
0A87    3390    /home/kazuya/zos/ZADB91
0A88    3390    /home/kazuya/zos/ZADB92
0A89    3390    /home/kazuya/zos/ZACIC1
0A8A    3390    /home/kazuya/zos/ZADIS1
0A8B    3390    /home/kazuya/zos/ZADIS2
0A8C    3390    /home/kazuya/zos/ZADIS3
0A8D    3390    /home/kazuya/zos/ZADIS4
0A8E    3390    /home/kazuya/zos/ZADIS5
0A8F    3390    /home/kazuya/zos/ZADIS6
0A90    3390    /home/kazuya/zos/ZAIMS1
0A91    3390    /home/kazuya/zos/ZAPRD1
0A92    3390    /home/kazuya/zos/ZAPRD2
0A93    3390    /home/kazuya/zos/ZAPRD3
0A94    3390    /home/kazuya/zos/ZAPRD4
0A95    3390    /home/kazuya/zos/ZASYS1
0A96    3390    /home/kazuya/zos/ZAUSS1
0A97    3390    /home/kazuya/zos/ZAWAS1
0A98    3390    /home/kazuya/zos/ZAWAS2
0A99    3390    /home/kazuya/zos/ZAWAS3
0A9A    3390    /home/kazuya/zos/USRG01
0A9B    3390    /home/kazuya/zos/SYSCPK
0A9C    3390    /home/kazuya/zos/UAPP01
0A9D    3390    /home/kazuya/zos/UTMP01

#  Communication Devices


0E20.2  CTCI    192.168.200.1   192.168.200.2

z/OS 开机可以选择要起动的不同程序,在 LOADPARM 设置,下面 0A95DCM1,是指到 0A95,DCM1,冷起动包括 DB2, CICS, WAS,就是大部分学习要用到的东西,0A82CS 是最基本的起动,不起动 DB2, CICS, WAS 这些,LOADPARM 还有好多其他选择

LOADPARM             0A95DCM1
#LOADPARM             0A82CS

0A95    3390    /home/kazuya/zos/ZASYS1

主机起动叫 IPL initial program load,就是开始程序加载,就是开机
起动主要分2种 COLD START 和 WARM START,我比较喜用冷起动 COLD START,就是每次起动都初始化例如 log 等等
在现实环境,大多数不会 COLD START,WARM START 起动比较快多了

起飞!!

hercules 要建立层网络管导,要用 sudo 来起动,在 Windows 也是要用 Administrator 来起的,不然 CTCI-WIN 起不了

kazuya@ubuntu: ~
$ sudo hercules -f /home/kazuya/zos/hercules.cnf

 在真正 IPL 前,先在 ubuntu 再开一个 tty session 用 c3270 连上去,用来作 主控制台

kazuya@ubuntu: ~
$ c3270 localhost 3270

然后输入 IPL A80
A80 是指到 0A80 ZRES01

 第一次起动会提示初启化 在 主控制台 输入 R 00,I
R 是 REPLY 回复提示码 00,回复值 I

IXC404I SYSTEM(S) ACTIVE OR IPLING: P390
IXC420D REPLY I TO INITIALIZE SYSPLEX ADCDPL, OR R TO REINITIALIZE XCF

R 00,I

等一会起动就完成了

然后,ubuntu 再多开一个 tty session

kazuya@ubuntu: ~
$ c3270 localhost 3270

 这里我们可以登陆 TSO 或 CICS

TSO 是 Time Sharing Option 就是一台机分享很多用使用,主机程序员就是用这个界面连到主机做日常开发,就像 Linux 用 ssh 或 putty 连一样
CICS 是 主机的 GUI 界面,用来接受用户输入输出,就像 网页 Browser 界面,或 C# GUI 程序

输入 l tso 然后按 Enter 

输入 IBMUSER
系统自有一堆账号,平常用 IBMUSER 就可以

然后输入密码,预设 IBMUSER 或 SYS1

按 Enter  

 

按 Enter 就可以去到 ISPF 互动界面,程序99%时间就是在这里编辑 Cobol 代码,操作主机等等

网络配置

z/OS V1R10 网络配置修改 PROF1 配置档就可以

在 ISPF Command => =2 进入 Edit Entry Panel 编辑界面
然后输入 ADCD.Z110.TCPPARMS(PROF1)

ISPF 里可以用 F7 F8 往上下翻,在左边命令输入 i 可加行,d 可以删行
编辑完 在 Command => save 然后 F3 或 exit 可以退出

网络配置我们给 z/OS 定义个 CTCA 和 CTCI 设备
 

 然后定义 z/OS 本机 IP HOME 192.168.200.1

 网关指向 192.168.200.2 Ubuntu

 然后,START CTCA 设备就可以

路由方面 在 ubuntu 加个 tun0 和 路由把去 192.168.200.1 z/OS 的包路由到 tun0

sudo ufw default allow routed
sudo ufw route allow in on tun0 out on wlo1
sudo ufw route allow in on wlo1 out on tun0
sudo sysctl -w net.ipv4.ip_forward=1
sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1

**Remark: Network interface is wlo1 for wireless network


这样,网络就通了,可以 ftp,ssh,web 取存 z/OS 

如果 ubuntu 开了 ufw 防火墙,要让下面通过

如果有第三台机器要存取 Ubuntu 内的 z/OS,例如上面说的 Mac (IP 192.168.50.11),防火墙也要让其通过
内网本机学习的新手,可以先关 ufw

kazuya@ubuntu: ~
$ netstat -in
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eno1      1500    24814      0   4003 0         14691      0      0      0 BMRU
lo       65536     3542      0      0 0          3542      0      0      0 LRU
tun0      1500        0      0      0 0            14      0      0      0 PRU
kazuya@ubuntu: ~
$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.50.1    0.0.0.0         UG        0 0          0 eno1
192.168.50.0    0.0.0.0         255.255.255.0   U         0 0          0 eno1
192.168.200.1   0.0.0.0         255.255.255.255 UH        0 0          0 tun0
kazuya@ubuntu: ~
$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
21/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
3270/tcp                   ALLOW       Anywhere                  
Anywhere                   ALLOW       192.168.200.1             
Anywhere                   ALLOW       192.168.50.11             
22/tcp (v6)                ALLOW       Anywhere (v6)             
21/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
3270/tcp (v6)              ALLOW       Anywhere (v6)             

Anywhere on tun0           ALLOW FWD   Anywhere on eno1          
Anywhere on eno1           ALLOW FWD   Anywhere on tun0          
Anywhere (v6) on tun0      ALLOW FWD   Anywhere (v6) on eno1     
Anywhere (v6) on eno1      ALLOW FWD   Anywhere (v6) on tun0     

kazuya@ubuntu: ~
$ 

第三台机器 例如 Mac IP 192.168.50.11 要想连到 Ubuntu 里面的 z/OS

在 Mac 里加个路由,把 192.168.200.X 去路由去 192.168.50.15 Ubuntu 机器就可以

/Users/kazuya
$ sudo route -n add -net 192.168.200.0/24 192.168.50.15
$ netstat -rn |grep "192.168.200"
Routing tables

Internet:
Destination        Gateway            Flags        Netif Expire
default            192.168.50.1       UGScg          en0       
...
192.168.200        192.168.50.15      UGSc           en0       

 这样其他机器就可以连上 z/OS,例如下面 Mac 连上 z/OS ftp,其他 ssh, 和 web 也可以

vi ~/.ssh/config

Host 192.168.200.1
    KexAlgorithms +diffie-hellman-group1-sha1
    HostKeyAlgorithms +ssh-rsa


ssh [email protected]

安装新版 Java SDK J8.0

z/OS 自带的 Java SDK 比较旧,可以到 IBM 官网下载最新版
SDK8_31bit_readme.txt 也要一并下载,里面有如何解压缩步骤

步骤是 先下到 Java J8.0 .PAX 压缩包
然后在 z/OS 加个新券,上面的 UAPP01 就是 HFS
HFS 在 z/OS 里改名为,例如 JVA800.HFS
然后,修改 USER.PARMLIB(BPXPRMDB)
从 ADCD.Z110.PARMLIB 里覆制到 USER.PARMLIB 修改
然后,挂上去,这样开机后,OMVS 就有 /usr/lpp/java 载点可放 Java SDK
UTMP01 HFS 也一并挂上去用来作解压缩暂存
然后,透过 ftp binary mode 上传
 

https://www.ibm.com/support/pages/java-sdk-products-zos

z/OS 关机

在生产环境 z/OS 是绝少关机,在学习环境,可以用以下步骤关机
关机指令要视乎开机 LOADPARM,开机起了什么,关机就要关上

首先,退出 ISPF IBMUSER TSO session 就是 按 F3 Exit 所有版面
回到 READY 提示,输入 logoff

然后,按 Ctrl+] 键退出返回 c3270 界面,再输入 exit 退出 c3270

然后,转入 c cicsa 关掉 CICS GUI 界面

然后,转入 -db9g stop db2 停了 DB2

然后,等 DB2 READY FOR START COMMAND,就可以输入 s shutall 来把其他服务例如 ftpd, sshd, httpd, mq 等等都停了

然后,回复 r 03,y, 回复 STOP ZFS

 

可以输入 D A,L 或按 F10 键更新画面

然后,输入 $p jes2,term 去把 JOB ENTRY SYSTEM 停了 

 然后,输入 f dlf,mode=drain

然后,输入 p dlf

 最后,F10 等到只剩 00000,输入 z eod

 最后,等到 HALT EOD SUCCESSFUL

然后,回到 hercules 界面

然后,回到 hercules 界面,在界面可以用 Esc 键互相切换 资源面页 

然后,回到 hercules 命令界面,输入 exit 就可以 

你可能感兴趣的:(主机开发,主机,z/OS)