今更!自宅にメインフレーム構築 (MVS on Linux)

TSO
TSO

今日は自宅に余っているLinuxマシン上にメインフレームOS「MVS 3.8j」を構築して遊んでみます。

注記: 本記事で構築する「MVS 3.8j」は、IBMから無償で利用が許可されているパブリックドメインのシステムです。
非営利目的でのみご利用いただけます。

今回は、オープンソースのメインフレームエミュレータ「Hercules」と、有志によってすぐに使えるようにパッケージングされた「MVS Tur(n)key System (TK5)」を使い、メインフレームOSに触れられるようにします。
この記事が、基礎的なメインフレームについての勉強ができる環境を構築する際の参考になればと思います。

構築をしたPCの情報
OS情報

ディストリビューションUbuntu 24.04.2 LTS
アーキテクチャ64but

 

ハードウェア情報

CPUIntel(R) Celeron(R) CPU 3865U @ 1.80GHz
コア数2コア
メモリ (RAM)4GB

自宅にフリーアクセスフロア作ったり、床下にLANケーブルや光ケーブルを引いたり、CPU稼働中にとんでもない強さの空調を設定したりしなくても↑のかなり低いスペックのPCでメインフレーム環境がエミュレートできるとは...いや、そんなことをしなくてもすぐに触れる環境が用意できるオープン系エンジニアが羨ましいというべきか...

ステップ1: 準備編 - 必要なソフトウェアのインストール

MVSを動かすためのエミュレータ「Hercules」と、メインフレームに接続するための3270端末をエミュレートする、「c3270」をインストールします。

Linuxディストリビューション(Ubuntu/Debian系を想定)のターミナルで、以下のコマンドを実行します。

sudo apt update
sudo apt-get install -y git build-essential c3270 unzip

事前準備、ソフトウェアのインストール
 
  • `build-essential`: この後利用するHyperion Herculesをビルドするために使います。
  • `c3270`: 3270という種類の端末をエミュレートするクライアントです。これを使ってMVSにログオンします。
  • `unzip`: 後ほどダウンロードするファイルを展開するために使います。

ステップ2: 最新版Herculesのビルド

次に、最新版の「Hyperion Hercules」をソースコードからビルドします。
ビルド作業を自動化するヘルパースクリプトを使用します。

ホームディレクトリに移動

cd ~

ヘルパースクリプトをダウンロード

git clone https://github.com/wrljet/hercules-helper.git

ヘルパースクリプトのディレクトリに移動

cd hercules-helper

ヘルパースクリプトを実行(依存関係の解決やビルドが自動で始まります)

./hercules-buildall.sh --flavor=sdl-hyperion

herculesのビルド

`./hercules-helper`の実行は、必要なコンポーネントをダウンロードしながらビルドを行うため、完了までには数分〜数十分かかる場合があります。
エラーが出ずにプロンプトに戻ってくるまで、気長にお待ちください。
完了すると、`~/hercules-helper/`の中に`hyperion`というディレクトリが作成され、そこに最新版のHerculesが格納されます。

ビルドしたherculesの有効化を実行

source /hercules-helper/herc4x/hyperion-init-bash.sh

herculesのバージョンを確認

hercules -v

エラーメッセージが表示されますが、以下の表示が確認できれば問題ありません。
HHC01413I Hercules version 4.9.0.11539-SDL-DEV-ga916dc4e

herculesのバージョン確認

 

ステップ3: 環境構築編 - MVS Tur(n)key System (TK5)の導入

次にMVS 3.8jのシステム本体「TK5」をダウンロードし、セットアップします。

作業ディレクトリの作成と移動

ホームディレクトリに作業用のフォルダを作り、そこに移動します。

cd ~
 
TK5のダウンロード
`wget`コマンドで、TK5のアーカイブファイルをダウンロードします。(サイズが大きいので少し時間がかかります)

wget https://www.prince-webdesign.nl/images/downloads/mvs-tk5.zip
*もしリンク切れの場合は、"MVS Tur(n)key System TK5" で検索して最新のダウンロード元を探してください。
 
ファイルの展開
ダウンロードしたzipファイルを展開します。

unzip mvs-tk5.zip

展開すると、`tk5` というディレクトリが作成され、その中に設定ファイルやディスクイメージなど、必要なものがすべて入っています。

tk5の解凍

 

ステップ4: 起動編 - herculesの起動とIPL

いよいよMVSを起動していきます。
TK5ではこの手順が非常に簡単になっているようです。

起動ディレクトリへの移動
まず、展開してできたディレクトリに移動します。


cd mvs-tk5

実行権限の付与
ダウンロードしたファイルは、安全のために実行できない状態で提供されることがよくあるため、mvsファイルに実行権限を付与します。

chmod -R +x .


起動スクリプトの実行
移動したディレクトリの中で、起動スクリプト`mvs`を実行します。


hercules -f conf/tk5.cnf


このスクリプトを実行すると、Herculesの起動が行われます。
コンソールに大量のログが流れherculesコンソールが表示されます。

hercules起動
herculesコンソールログ

以下のコマンドを入力して、システムレジデンスボリューム(SYSRES)のアドレスが割り振られたDASDアドレスを応答します。

ipl 390

以下のメッセージが表示されます。

IEA101A SPECIFY SYSTEM PARAMETERS FOR RELEASE 03.8 .VS2 

このメッセージは、MVS初期化中に表示されるもので、この後どのようなパラメータを使用してシステムを起動していくかの応答を待っている状態になります。

https://www.ibm.com/docs/ja/zos/3.1.0?topic=messages-iea101a

起動メッセージの確認

コマンドラインに、以下を入力します。

/r 00

以下のメッセージが表示されたら、IPL完了です!

MVS038J MVS 3.8j TK5 system initialization complete CN=00 

 

ステップ5: TSOへのログオンとシャットダウン

では、最後にTSO(Time Sharing Option)でログインし、シャットダウンしてみましょう。

TSOとは…
メインフレームは、専用の3270という端末を利用して、ユーザーとしてログインし、CUIで操作を行います。
TSOが開発される前は、パンチカードや磁気テープなどの物理媒体にバッチという形で入出力が行われていたようです。

ログオン: 別のターミナルを開き、`c3270 localhost:3270`で接続し、`TSO`と入力後、ユーザーID:`HERC01`, パスワード:`CUL8TR`でログオンします。

3270接続コマンド
別のターミナルからローカルホスト接続
TSO接続画面
TSOと入力(実際の業務では、会社ごとにログイン方法は千差万別)
ユーザー入力
ユーザーIDを入力
ログイン時メッセージ
ここはEnterでOK
ISPF画面
ISPFオプションメニュー

シャットダウン: Herculesが動いているターミナルで、`/$p jes2`と入力すると、以下のメッセージが表示されます。

HHC01603I $p jes2                                                       
HHC01600E Unknown command $p, enter 'help' for a list of valid commands
HHC00013I '/' input entered for console 0:0009: "$p jes2"
$p jes2                   
/14.56.50           $HASP000 JES2 NOT DORMANT -- SYSTEM NOW DRAINING  
herc =====>

JES2が完全にアイドル状態ではないけれど、シャットダウン処理(ドレイン)を開始したことを示しています。

次に`/z eod`と入力します。

IEE334I HALT EOD SUCCESSFUL
のメッセージが、MVSが正常に停止したことを示しています。

mvs終了時のコンソール画面

最後に、以下のコマンドでherculesを停止しましょう。

quit

herculesを起動していたターミナルから、Linuxのユーザーに戻れば停止は完了です。

以上がメインフレームの環境構築の手順令和最新版です。

さいごに

久々にメインフレームOSに触れて懐かしさがこみ上げてきました。
深夜にフリーアクセスフロアの床を剥がしてLANケーブルを引っ張り上げて設計書通りにOSAカードに差したり、勉強のために異常に分厚いマニュアルを読み込んだり...

あまりいい思い出に聞こえないかもしれませんが、インフラエンジニアの基礎的かつ重要な技術を学ぶことができたという思いもあります。

現在はメインフレーム領域の仕事はしていませんが、復習の意味も込めて、これから構築した環境で遊んでいこうと思います。

Comments