很多人初學mainframe都覺得比較困難,就是因為mainframe不像unix或linux,在自己的PC機上很容易就可以搭建起來。但是mainframe操作系統z/OS又不像AIX,只有在IBM的power機上才可以安裝運行。在普通的x86或者x64平臺上搭建z/OS的虛擬系統,是完全可行的。當然,理論上講,Mac OS上也是可以虛擬出z/OS的,只是,還沒聽說有人試過。
想要在自己的PC上搭建一個z/OS虛擬系統,你需要以下幾樣東西:
一臺PC機,最好有2GHz CPU,1G以上內存,硬盤空間10G足矣
z/OS系統的卷文件。
卷文件有兩種,一種是DEMOPKG,只對IBM內部員工發行。另外一種是ADCD,可惜,這一種卷文件也不是免費的,只針對IBM合作伙伴和mainframe用戶發行,但是,通過某些非正常途徑,也是可以獲取到的,只要用于非商業目的,也無大礙,低調一點就好,你懂的。
電驢上一位無私的哥們,也提供了ADCD z/OS 1.9的下載源。地址是:http://www.verycd.com/topics/280391/
本文將以ADCD z/OS 1.6作為范例搭建虛擬z/OS,啟動和配置過程與此處下載的1.9并無很大差別。如果哪位需要1.6的卷文件,可以在此留下email。
3270客戶端。
- 最常用的當然是IBM Personal Communication,簡稱PCOM,該軟件只能運行于windows平臺,并且功能強大,也是最常用的3270客戶端。PCOM并非是免費軟件,但是你也可以很容易獲得該軟件,之前提到的verycd鏈接里就可以下載。同樣,保持低調。
- TN3270也是一種不錯的選擇,雖然TN3270也并非免費,但是你可以通過在其官網注冊,即可獲得一個evaluation licence,有效期30天。詳情請訪問TN3270官網:http://www.sdisw.com
- 據我所知,目前唯一免費且開源的3270客戶端就是x3270了,可以在http://x3270.bgp.nu下載到源碼或者安裝包(windows和Linux平臺皆可安裝)。另外,目前很流行的發行版Ubuntu linux,在其官方源也提供了x3270下載,可以通過命令sudo apt-get install x3270安裝。
Hercules
正是有了Hercules,在PC機上虛擬z/OS操作系統才成為了現實。這是一個完全免費開源的軟件,Hercules官網http://www.hercules-390.org/提供了hercules在windows,linux和Mac OS平臺上的安裝包以及源碼。該網站上也有許多關于使用和配置hercules的文章,有興趣可以常上去看看。
另外,如果你使用的是windows系統,為了操作方便,也可以下一個Hercules GUI,下載鏈接是http://www.softdevlabs.com/Hercules/hercgui-index.html,此處,需要注意一個叫Fish Lib的動態鏈接庫,需要把這個DLL文件解壓后跟HercGUI放在同一路徑下,這樣就不會運行的時候報錯了。并且HercGUI要求安裝VC Redistributable package,去微軟的網站下載安裝就好了。
TCP/IP支持軟件,可選,不是必須安裝的
說這個東東是TCPIP支持軟件其實有點勉強。其實是網絡封包抓取工具,使用這個可以在hercules上開啟tcpip,讓你的z/OS系統可以在你的物理局域網中使用FTP,DB2 DRDA等等,對于初學mainframe的人,這個不是必須的。沒有這個也一樣可以在自己的機器上運行z/OS的。所以,開啟TCPIP將會在以后的文章中單獨討論。這里僅僅列出幾個可選的封包抓取工具,他們是:CTCI-W32,WinPCap,FishPack和TunTap32。需要注意的是,根據PC機所使用的操作系統版本不同,這類工具所需要的版本也是不一樣的,不是任何一種搭配都可以保證成功的在z/OS上開啟TCP/IP的。我在Windows XP 32bit上使用WinPCAPC 4.0成功的開啟了TCPIP,在win7下就失敗了。
在linux下也可以選擇一個類似于WinpCap的工具,名為libpcap,Ubuntu的官方源里也可以下載到。
說了這么多,發現有點亂,還是整理一個check list吧
在Windows平臺下:
1. http://www.verycd.com/topics/280391/ 下載卷文件(后綴名為CCKD的),PCOM和配置文件zOS1.9.cnf
2. http://www.hercules-390.org/ 下載Hercules 3.07安裝包,注意你的系統是32bit還是64bit的,選擇相應的下載
3. 安裝Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package,google一下就可以了
4. http://www.softdevlabs.com/Hercules/hercgui-index.html 下載Hercules Windows GUI –Version 1.11.1以及FishLib
5. http://www.winpcap.org/ 下載winpcap 4.0
6. http://www.softdevlabs.com/Hercules/ctci-w32-index.html 下載CTCI-W32
在Linux平臺下(以Ubuntu為例):
1. http://www.verycd.com/topics/280391/ 下載卷文件(后綴名為CCKD的)和配置文件zOS1.9.cnf
2. http://www.hercules-390.org/ 下載Hercules 3.07 source tarball。redhat也可以下載RPM包
3. 安裝x3270,使用命令sudo apt-get update,然后sudo apt-get install x3270
4. 安裝LibpCap,使用命令sudo apt-get install libpcap
注:在以上第一步所下載的CCKD文件在linux中直接使用可能會報錯,說無法識別的格式。這是因為該CCKD文件是通過windows下的hercules壓縮而來。所以,這里需要將CCKD文件在windows中還原為CKD,然后copy到linux下重新壓縮為CCKD文件即可。一個3390-3卷對應的CKD文件大約是2.8GB,如果要進行轉換,中途可能需要比較多的磁盤空間,壓縮完成后,卷文件大小與原CCKD文件基本一樣。具體方法在之后講到在linux下啟動z/os的時候再說。
首先,我們約定以下幾個路徑,以便存放z/OS模擬環境所需的各項文件和程序:
D:\ADCDV1R6 所有與模擬環境相關的東西都放在這個目錄下
D:\ADCDV1R6\ZOSV1R6 存放卷文件,即CCKD文件
D:\ADCDV1R6\Config 存放啟動配置文件
D:\ADCDV1R6\HercGUI-1.11.1 存放Hercules GUI和FishLib
D:\ADCDV1R6\hercules-3.07 存放Hercules的可執行文件和CTCI-W32
D:\ADCDV1R6\Log 存放系統運行日志
這樣安排文件夾,可以把所有與z/OS模擬器運行相關的程序和文件都集中在一起,這樣在系統重裝,或者換另一臺PC機運行的時候,只需要備份D盤下的ADCDV1R6文件夾,并且安裝winpcap和PCOM就可以了。
然后,對照《準備工作》一文中的各項下載的文件,對應放入以上文件夾:
1. CCKD文件放入D:\ADCDV1R6\ZOSV1R6,cnf配置文件放入D:\ADCDV1R6\Config,PCOM稍后安裝
2. Hercules-3.07,下載ZIP包,解壓后放入D:\ADCDV1R6\hercules-3.07,注意不要多設置了一層文件夾,即D:\ADCDV1R6\hercules-3.07下面就是Hercules的運行文件了,而不是解壓后的hercules-3.07文件夾,也就是說不要存在一個D:\ADCDV1R6\hercules-3.07\hercules-3.07文件夾。
3. VC++ Redistribute pack,這個自行默認安裝就好了。如果已經安裝過就跳過這一步。(裝了office的機器一般都有這個了,直接跳過)
4. 將HercGUI和FishLib解壓縮放入D:\ADCDV1R6\HercGUI-1.11.1
5. WinPCap也是在windows下默認安裝就好
6. CTCI-W32壓縮包里包括了FishPack, TunTap32和TT32Test,一并解壓縮放入D:\ADCDV1R6\hercules-3.07即可。
最后,安裝PCOM,一路點下一步,全部用默認設置就可以了。
在運行Hercules之前,還需要編輯一下Config文件夾下的配置文件。在配置文件中,以#開頭的行表示注釋。需要注意的是如下配置文件中,紅色字體所標出的部分。
- LOADPARM是z/OS在IPL時需要用到的參數,參數選擇不同,z/OS中啟動后,運行的組件也不同,此參數見文章最后所附的LOADPARM Description。
- MAINSIZE表示Hercules占用的物理內存大小,單位是MB,如果內存夠大,最好設為1024,在這里暫且設為832,建議不要小于512,否則MIPS會很低,系統運行會非常的慢。
- NUMCPU表示虛擬的主機有多少個CPU,如果CPU不夠強悍,就改為1吧,我的物理機上用的是Intel Core-Due E6400,設為2,運行起來速度還不錯。
- Display Terminals 表示3270終端的數量,演示所用的3270終端號是從0700開始的,以十六進制記錄,如0700-0710則表示16個端口,其中0700是控制臺專用端口,0701至0710為用戶連接端口。
- 然后是后面的DASD Device那一段,需要注意的是,要把所有下載的CCKD文件都列進去,這一段的每一行分為三個部分,第一個是設備編號,如0A80,第二個是設備類型,如3390,第三個是卷文件的路徑和文件名,這里可以寫絕對路徑也可以是相對路徑。個人覺得相對路徑比較好,因為寫相對路徑,在還盤復制后,不需要重新配置這個文件。
- 最后一段CTC Adapters是跟啟動TCPIP有關的,這里暫且放在那里,以后再說。
#
# Hercules Emulator Control file...
# Description: zos160
# MaxShutdownSecs: 15
#
#
# System parameters
#
ARCHMODE z/Arch
CNSLPORT 3270
CONKPALV (3,1,10)
CPUMODEL 2064
CPUSERIAL 011519
CPUVERID 00
ECPSVM NO
LOADPARM 0A8232M1
LPARNAME HERCULES
MAINSIZE 832
MOUNTED_TAPE_REINIT DISALLOW
NUMCPU 2
OSTAILOR Z/OS
PANRATE 30
PGMPRDOS LICENSED
SHCMDOPT NODIAG8
SYSEPOCH 1900
TIMERINT 50
TZOFFSET -0000
YROFFSET 0
HERCPRIO 0
TODPRIO -20
DEVPRIO 8
CPUPRIO 15
# Display Terminals
0700-0708 3270
# DASD Devices
0A80 3390 ..\ZOSV1R6\Z6RES1.cckd
0A81 3390 ..\ZOSV1R6\Z6res2.cckd
0A82 3390 ..\ZOSV1R6\Z6SYS1.cckd
0A83 3390 ..\ZOSV1R6\Z6uss1.cckd
0A84 3390 ..\ZOSV1R6\Z6uss2.cckd
0A85 3390 ..\ZOSV1R6\Z6CIC1.cckd
0A86 3390 ..\ZOSV1R6\Z6db81.cckd
0A87 3390 ..\ZOSV1R6\Z6db82.cckd
0A88 3390 ..\ZOSV1R6\Z6ims1.cckd
0A89 3390 ..\ZOSV1R6\Z6was1.cckd
0A8A 3390 ..\ZOSV1R6\Z6was2.cckd
0AC1 3390 ..\ZOSV1R6\page01.cckd
0AC2 3390 ..\ZOSV1R6\page02.cckd
0AC3 3390 ..\ZOSV1R6\dump01.cckd
0AC4 3390 ..\ZOSV1R6\dump02.cckd
0AC5 3390 ..\ZOSV1R6\work01.cckd
0AC6 3390 ..\ZOSV1R6\work02.cckd
0AC7 3390 ..\ZOSV1R6\user01.cckd
0AC8 3390 ..\ZOSV1R6\user02.cckd
0AC9 3390 ..\ZOSV1R6\user03.cckd
0ACA 3390 ..\ZOSV1R6\user04.cckd
0AD1 3390 ..\ZOSV1R6\Z6TL01.CCKD
0AD2 3390 ..\ZOSV1R6\Z6TL02.CCKD
0AD3 3390 ..\ZOSV1R6\Z6TL03.CCKD
0AD4 3390 ..\ZOSV1R6\Z6TL04.CCKD
# CTC Adapters
0E20-0E21 CTCI 192.168.1.110 192.168.1.100
好了,現在就可以開機了。
--------------------------------------------------------------------------------
首先,找到D:\ADCDV1R6\HercGUI-1.11.1\HercGUI.exe (64bit系統中是運行HercGUI64.exe),雙擊運行后,出現下面的窗口,這就是Hercules GUI了

然后點擊菜單欄中的File->Preference,對照本文開始所建的幾個文件夾如下,然后確定

然后點擊菜單欄中的Command->Power On,選擇Config文件夾下的配置文件,打開

出現以下對話框,若不修改CPU數和內存大小,則無需設置,直接確定

然后,在下圖對話框中,點選YES,然后OK

確定后,Hercules即開始運行,此時防火墻可能會彈出是否允許Hercules訪問網絡的報警,全部允許即可。

左側框中會列出所有的卷,然后看右側最下面的message box,如果沒有異常,則Hercules mount所有卷成功。
此時,還沒有3270 session連接到mainframe,所以左側的Display Terminals處只顯示了終端號,未顯示終端IP。
現在,打開PCOM,開始->IBM Personal Communications->Start or Configure session

點New Session。

點Link Parameters

如上圖,填入IP和Port,并且可以勾選Auto-Reconnect。點OK,回到Customize Communication對話框

點Session Parameter

然后一路OK,回到PCOM的Session窗口

好了,第一個PCOM session已經連上了,看看Device Number,是0700,那么這個session就是控制臺了,只要Hercules還在運行,那么這個session就不能關掉,一定要記住這一點。
在這里,可以用Ctrl+Home來定位光標,也可以通過File->Run the same來運行同樣的一個session。
此時,最好通過File->Save,來保存一個WS文件,下次直接雙擊這個WS文件就可以開啟session了。
到這里,z/OS還沒有開始啟動,我們回到Hercules GUI窗口,點菜單欄里的Command->IPL/Load

填入上面兩項,然后點OK,這是z/OS就開始啟動過程了

10.啟動錯誤

走到這里不動了就回車(MF里面的enter是ctrl)

按回車時會提示如何輸入

按照提示輸入r 00,i

輸入s jes2,,,parm='FORMAT,NOREQ'
注:第一次IPL需要JES2 COLD START

這個要登陸后解決。將HFS開頭的data set全部catalog

用d a,l來查看啟動起來的服務

11.登陸。
一般運行至少有2個terminal, 通常其中一個為3270 Console(控制大機用的),其它為TSO Terminal。

去掉登陸的打印提示:
[LT]
IgnoreWCCStartPrint=Y
UndefinedCode=Y
UndefinedDBCSChar=Y
PS:在PCOMM中,選擇File -> Save As... 你就可以看到你的配置文件(.ws)保存的地方


默認用戶 密碼 權限
ADCDMST ADCDMST (RACF special authority)
IBMUSER IBMUSER (RACF special authority)
SYSADM SYSADM (DB2 and RACF special auth)
SYSOPR SYSOPR (DB2 and RACF special auth)
ADCDA - ADCDZ TEST
OPEN1 - OPEN3 SYS1
看看Hercules GUI窗口右上角的MIPS參數,這個參數越大,說明你的z/OS運行得越順暢。如果MIPS很小,可以試試改變配置文件里MAINSIZE的值來調整一下,記住MAINSIZE千萬不能大于物理內存,否則,MIPS將會只有零點幾。
好了,回到PCOM的控制臺session。

這里,綠色信息代表正常,紅色的表示有錯誤或者警告,白色的信息如果有一個編號(如上圖的*02),則需要操作員做應答,這里需要應答的信息是r 02,y
輸入后按鍵盤右邊的CTRL鍵(IBM PCOM默認的確認鍵是鍵盤右邊的CTRL)
通過PCOM打開一個相同的session。

出現以上畫面時,輸入logon ibmuser,以IBMUSER用戶的身份登錄,出現打印信息對話框時,直接cancel就好了。

輸入IBMUSER用戶的密碼,然后確認

恭喜,成功登陸。到此,啟動過程完畢。
--------------------------------------------------------------------------------
下一個問題就是如何關機了。
回到PCOM控制臺session

在下面命令行處,輸入S Shutdown,按右Ctrl,則z/OS關機過程開始

上圖所示,出現的*05白色信息表示在關機開始時,還有用戶登錄到了z/OS,如果不打算等用戶退出就關機,在下方輸入命令r 05,fstop

幾分鐘后,出現如上圖所示的SHUTDOWN - ENDED信息后,表示z/OS關機過程基本上結束,在下方命令行輸入quiesce,確認后回到HercGUI窗口

此時,上方的那個指針不在偏轉,MIPS和INSTCOUNT數值也不便動了,說明所有CPU都已經停下來了。
點菜單Command->Power Off,關閉Hercules電源

在信息框中出現Hercules terminated之后,可關掉該窗口。
注意:
1. 在啟動hercules時,系統可能出現各種需要應答的信息,具體情況要具體分析,不同信息的處理方式是不同的,如果不知道怎么辦,把控制臺上的信息copy到google里搜一下看看。
2. 為了防止在PCOM登陸z/OS時出現打印對話框,可以用記事本打開保存的PCOM session的WS文件,在文件最后加入如下內容后,保存退出。
[LT]
IgnoreWCCStartPrint=Y
UndefinedCode=Y
UndefinedDBCSChar=Y
3. 關于IPL參數LOADPARM
在啟動z/OS的時候,本文所用的啟動參數是0A8032M1,這里的32代表冷啟動,啟動了TSO,CICS,DB2,WAS,JES2。也可以將這里的32換成以下參數來根據需要啟動不同的組件
LOADPARM list(z/OS 1.6)
CS CLPA and cold start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc.
00 Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc.
WS Warm start of JES2. Base z/OS system functions i.e. no CICS, DB2, IMS, WAS, etc.
DC CLPA, brings in CICS LPA modules, cold start of JES2, starts up DB2 and CICS.
DB Warmstart of JES2 and starts the DB2 and CICS.
DI CLPA and cold start of JES2 and loads the IMS Libraries. IMS must be manually started.
CC CLPA and cold start of JES2, loads the CICS Libraries, starts up CICS, no DB2.
CW Warm start of JES2, and starts up CICS.
7C CLPA, cold start of JES2, starts up DB2 V7, no CICS.
7W Warm start of JES2, starts up DB2 V7, no CICS.
8C CLPA, cold start of JES2, starts up DB2 v8, no CICS.
8W Warm start of JES2, starts up DB2 v8, no CICS.
IC CLPA and cold start of JES2 and load the IMS Libraries, start IMS, no DB2 or CICS.
IW Warm start of JES2 start IMS, no DB2 or CICS.
AC CLPA and cold start of JES2 load IMS and CICS libraries, start IMS, DB/2, and CICS.
AW Warmstart of JES2. start IMS, DB/2, and CICS.
BC CLPA and cold start of JES2, load WAS libraries, WAS is manually started
BW Warmstart of JES2. WAS is manually started.
99 Points to IODF99 for IPL on MP3000. Reply 00,SYSP=xx were xx is any of the above options i.e. for cics only
4.ADCD z/OS 1.6卷文件的內容
1, VOLUME的內容(z/OS 1.6)
VOLUME UCB Contents
Z6RES1 A80 - Res Volume 1 - Required for IPL
Z6RES2 A81 - Res Volume 2 - Required for IPL
Z6SYS1 A82 - IPLPARM, JES2 Spool, Public Work Volume, Mastercat required for IPL
Z6USS1 A83 - USS Root and accompanying HFS files - required for IPL
Z6USS2 A84 - Supplemental HFS files - required for IPL
Z6DIS1 A85 - Distribution Lib volume 1
Z6DIS2 A86 - Distribution Lib volume 2
Z6DIS3 A87 - Distribution Lib volume 3
Z6DIS4 A88 - Distribution Lib volume 4
Z6DIS5 A89 - Distribution Lib volume 5
Z6WAS1 A8A - Websphere Application Server Distribution Libs
Z6WAS2 A8B - Websphere Application Server Target Libs
Z6DB81 A8C - DB2 V8.1 Target Libs
Z6DB82 A8D - DB2 V8.1 Distribution Libs
Z6CIC1 A8E - CICS TS 2.3 Target and Dlibs
Z6IMS1 A8F - IMS 8.1 Target and Dlibs
SARES1 A90 - Stand Alone IPL volume
解決登陸時出現的錯誤。
系統在IPL的時候問IEA101A時,需要確認member LOAD99里面是否有SYSPARM和IEASYM這兩個參數







遇到HFS錯誤時,把HFS開頭的data set全部catalog



已經被catalog了