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

今日は自宅に余っている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 |
ハードウェア情報
CPU | Intel(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-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

ステップ3: 環境構築編 - MVS Tur(n)key System (TK5)の導入
次にMVS 3.8jのシステム本体「TK5」をダウンロードし、セットアップします。
作業ディレクトリの作成と移動
ホームディレクトリに作業用のフォルダを作り、そこに移動します。cd ~
`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` というディレクトリが作成され、その中に設定ファイルやディスクイメージなど、必要なものがすべて入っています。

ステップ4: 起動編 - herculesの起動とIPL
いよいよMVSを起動していきます。
TK5ではこの手順が非常に簡単になっているようです。
起動ディレクトリへの移動
まず、展開してできたディレクトリに移動します。
cd mvs-tk5
実行権限の付与
ダウンロードしたファイルは、安全のために実行できない状態で提供されることがよくあるため、mvsファイルに実行権限を付与します。
chmod -R +x .
起動スクリプトの実行
移動したディレクトリの中で、起動スクリプト`mvs`を実行します。hercules -f conf/tk5.cnf
このスクリプトを実行すると、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`でログオンします。





シャットダウン: 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が正常に停止したことを示しています。

最後に、以下のコマンドでherculesを停止しましょう。
quit
herculesを起動していたターミナルから、Linuxのユーザーに戻れば停止は完了です。
以上がメインフレームの環境構築の手順令和最新版です。
さいごに
久々にメインフレームOSに触れて懐かしさがこみ上げてきました。
深夜にフリーアクセスフロアの床を剥がしてLANケーブルを引っ張り上げて設計書通りにOSAカードに差したり、勉強のために異常に分厚いマニュアルを読み込んだり...
あまりいい思い出に聞こえないかもしれませんが、インフラエンジニアの基礎的かつ重要な技術を学ぶことができたという思いもあります。
現在はメインフレーム領域の仕事はしていませんが、復習の意味も込めて、これから構築した環境で遊んでいこうと思います。
Comments