2010年1月9日土曜日

メインフレームエミュレータでLinuxを動かす(4)

(ネットワークインストールできんのかという話はありますが)なんとか見通しも立ってきたので、本格的な準備を行っていきたいと思います。

1. Herculesのインストールとユーザー作成
まずはメインフレームエミュレータであるHerculesを母艦となるLinuxにインストールします(Windowsを母艦にすることもできます)。今回は母艦のLinuxにはCentOS v5.4(i386)を使っています。
本家から、ソースをダウンロードして適当なディレクトリに展開したのち、
$./configure
$ make
$ su 
# make install
でインストール完了です。デフォルトでは/usr/local/binディレクトリ以下にバイナリがインストールされます。
インストールが完了したら、herculesエミュレータを動作させるユーザーを作成します。
# useradd -d /home/hercules hercules
な感じでいいと思いますが、今回は/home/herculesディレクトリ以下に2GB以上の巨大なファイル(DASDファイル)を少なくとも一つ置くつもりですので、/homeがあふれそうな場合は、別途適当なディレクトリをherculesユーザーのホームディレクトリにするのがよいと思います。

2.トンネリングの設定
基本的に本家の"TCP/IP networking with Hercules"に記述されていることを上から順に実行するだけです。
Hercules上で動作するLinuxと母艦Linuxの間でTCP/IPによる通信を行うために、トンネリングという機構を使用します。このためにheculesユーザー下で動作するherculesエミュレータ(ややこしい)が/dev/net/tunデバイスに対して読み書きができるように、このデバイスのパーミッションを変更します(以下ではherculesユーザーはherculesグループに所属するものとします)。
# chown root.hercules /dev/net/tun
# chmod 0660 /dev/net/tun
# ls -l /dev/net/tun
crw-rw---- 1 root hercules 10, 200  1月  7  2019 /dev/net/tun

次は、"hercifc"プログラムに対する設定です。
上記リンク先の文書によると、/usr/local/bin/hercifcに対してsetuid root パーミッションを与える必要があるとのことです。(本家の文書にもありますが)setuid root パーミッションが与えられたプログラムに対する制限なしのアクセスはセキュリティ上の問題を引き起こす可能性があるので、今回は、rootおよびherculesグループに所属するユーザー(含herculesユーザー)のみにアクセスを許すことにします。
# chgrp hercules /usr/local/bin/hercifc
# chmod 4750 /usr/local/bin/hercifc

最後にIPフォワーディングの設定です。すでに有効になっていない場合は、以下のコマンドで有効にします(この設定は電源OFFで消えてしまうので注意)
# echo "1" > /proc/sys/net/ipv4/ip_forward

3. メインフレーム(エミュレーション)デバイスの設定
Herculesでは、メインフレームに接続されるディスク(DASD - Direct Access Storage Device)をファイルでエミュレートします。とりあえず、今回は3390-3型と呼ばれる形式のDASDを1つ作ることにします。
$mkdir centos_v47_s390  
$ cd centos_v47_s390 
$ dasdinit -lfs DASD01 3390-3 DASD01
HHCDU044I Creating 3390 volume DASD01: 3339 cyls, 15 trks/cyl, 56832 bytes/track
HHCDU041I 3339 cylinders successfully written to file DASD01
HHCDI001I DASD initialization successfully completed.
$ ls -l DASD01
-rw-r----- 1 hercules hercules 2846431232 Jan 10 01:29 DASD01
これでおよそ 2.7GiB程度のファイルができます(圧縮されたイメージを作成することもできるようです。詳細は本家を参照してください)。"DASD01"というのは"VOLume SERial"、略して"VOLSER"とも呼ばれるもので、ディスクにつけた名前のようなものだと思っていただければよいと思います。コマンドで最初の"DASD01"がファイル名、次の"DASD01"がVOLSERですが、ファイル名からVOLSERを類推できたほうがよいと思うので、一致させておくか、ファイル名にVOLSERを含めるのがよいと思います。

長くなってきました。残りは次回。

0 件のコメント:

コメントを投稿