2010年4月9日金曜日

メインフレームLinuxでDB2(3) - DBADM権限の付与

前々回では、x86 linuxにDB2クライアントをインストールしました。zfedora(feodra11/s390x)上のDB2インスタンス(db2inst1)に接続する際には、インスタンスオーナーのユーザーIDとパスワードを使用したわけですが、今回はインスタンスオーナーではないユーザに"SAMPLE"データベースへDBADM権限を与えて、そのユーザーのIDとパスワードでデータベースに接続してみます。DBADM権限は、インスタンス内のあるデータベースに対するアクセス権で、インスタンスオーナーのSYSADM権限よりは限定された権限です。 DB2における特権・権限については、ここにまとめられています。

1. DBADM権限を与えるユーザーをzfedora上に作成する。
必要に応じてユーザーを作成します。今回はzfedora上にtestdbユーザーを作成しました。適宜パスワードも設定しておきます。
-bash-4.0# adduser testdb
-bash-4.0# passwd testdb
Changing password for user testdb.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
2. testdbユーザーにDBADM権限を与える。
インスタンスオーナー(db2inst1)でzfedoraにログインし、SQLのGRANT文でtestdbユーザーにDBADM権限を与えます。
[db2inst1@zfedora ~]$ db2 connect to sample

   Database Connection Information

 Database server        = DB2/LINUXZ64 9.7.1
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

[db2inst1@zfedora ~]$ db2 "GRANT DBADM ON DATABASE TO USER testdb"
DB20000I  The SQL command completed successfully.
3. x86 Linuxからzfedora上の"sample"データベースに接続する。
"testdb"ユーザーで"SAMPLE"データベースに接続します。
[hercules@ce01 ~]$ db2 connect to sample user testdb using YYYYYYYY

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUXZ64 9.7.1
 SQL 許可 ID                                              = TESTDB
 ローカル・データベース別名                               = SAMPLE
4. "SAMPLE"データベース内のdepartmentテーブルにSELECTを発行してみる。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM department"
SQL0204N  "TESTDB.DEPARTMENT" は未定義の名前です。  SQLSTATE=42704
「"TESTDB.department"は未定義です」というエラーが表示されました。"TESTDB"が暗黙のスキーマ名として指定されているようです。"department"の代わりに、"DB2INST1.department"としてみると、SELECTの結果が戻されるようになりました。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM DB2INST1.department" 

1
-----------
         14

  1 レコードが選択されました。
カレントスキーマを"DB2INST1"に変更します。
[hercules@ce01 ~]$ db2 "SET CURRENT SCHEMA='DB2INST1'"
DB20000I  SQL コマンドが正常に完了しました。
今度は、スキーマ名を指定しなくても"DB2INST1"スキーマのdepartmentテーブルに対するSELECTの結果が戻されました。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM department"

1
-----------
         14

  1 レコードが選択されました。
今回は、インスタンスオーナー以外のユーザーにDBADM権限を与え、そのユーザーで"SAMPLE"データベースへの接続とSQLの発行を行ってみました。

2010年4月6日火曜日

メインフレームLinuxでDB2(2) - クライアントのインストール (Windows GUI)





前回は32bit/x86 LinuxのコマンドラインでDB2クライアントのインストール手順をメモ書きしました。今回は、Windows上のGUIで使用可能なDB2クライアントのインストール手順をメモっておくことにします。例によって、DB2クライアントをインストールするWindowsマシンは、母艦Linuxと同じLAN上にあり、fedora11/s390xに対してルーティング設定が行われているものとします。

1. 事前準備
前回同様IBMのサイトから、"IBM Data Server Client (Windows 32-bit AMD and Intel x86)"をダウンロードして、Windowsマシン上に展開しておきます。

2. セットアップウィザードの起動
展開後にできているCLIENTディレクトリから、image\setup.exeを実行します。"DB2 セットアップ・ランチパッド"の"ようこそ"画面が表示されたら、左側のペインから"製品のインストール"を選択し、表示された画面で"新規インストール"ボタンをクリックします。 "IBM Data Server Client バージョン 9.7のDB2セットアップ・ウィザードへようこそ"の画面(下図)が表示されたら、"次へ"をクリックします。

3. ウィザードに従ってインストール
ライセンス規約に同意し、以降デフォルト設定でインストールを完了します。
  • 「インストール・タイプ」:標準(デフォルト)
  • 「インストール、応答ファイルの作成、またはその両方の選択」:このコンピューターにData Server Clientをインストールし、設定を応答ファイルに保管する(デフォルト)
  • 「インストール・フォルダーの選択」:"C:\Program Files\IBM\SQLLIB" (デフォルト)
  • 「DB2オブジェクトのためにオペレーティング・システム・セキュリティーを使用可能にする」:デフォルト設定のまま変更なし
  • 「ファイルのコピーの開始およぶ応答ファイルの作成」:デフォルト設定のまま変更なし
  • 「追加の製品のインストール」:しない(デフォルト)
4.「DB2ファースト・ステップ」
クライアントのインストールが完了すると以下のように「プロファイルの作成」を促されます。

「プロファイルを作成する」をクリックすると、Webブラウザで「DB2ファースト・ステップ」が表示されますが、クライアント製品のセットアップの仕方がわからなかった(^^;)ので、今回はそのままブラウザの画面を閉じて、Windowsの「スタートメニュー」から「構成アシスタント」を起動することにします。

5. 構成アシスタントの起動
スタートメニューから、「IBM DB2」 -> 「DB2COPY1(デフォルト) 」 -> 「セットアップ・ツール」とメニューをたどり、「構成アシスタント」を起動します。 「ここでデータベースを追加しますか?」のメッセージが表示されますので、「はい」をクリックすると、「データベースの追加ウィザード」が起動します。

6. ウィザードのメニューに従ってデータベースを構成する
今回は以下のように構成しました。
  • 「接続のセットアップ方法を選択する」では、「データベースへの接続を手動で構成する」を選択。
  • 「通信プロトコルを選択する」では、「TCP/IP」を選択。 
  • 「TCP/IP通信パラメータを指定する」では、以下の図のように設定。

  • 「接続するデータベース名を指定する」では、データベース名に"sample"を指定。別名には、データベース名と同じものが自動的に入力されます。
  • 「このデータベースをデータ・ソースとして登録する」は、デフォルト設定のまま変更なし。
  • 「ノード・オプションを指定する」では、以下の図のように設定。

7. "SAMPLE"データベースへテスト接続する
「データベース'SAMPLE'の構成が正常に追加されました。」のメッセージが表示されたら、「テスト接続」をクリックすると、い科のようにユーザーIDとパスワードを要求されます。 正しく指定して、「テスト接続」をクリックし、「CLI接続は正常にテストされました。」と表示されれば、正しく構成されています。


8. コントロール・センターの起動
スタートメニューから、「IBM DB2」 -> 「DB2COPY1(デフォルト)」 ->「汎用管理ツール」とたどり、コントロール・センターを起動します。「コントロール・センターの表示方法」をたずねられたら、とりあえず「詳細」にしておくとよいと思います。

9. コントロール・センターをちょっとだけ触ってみる
コントロールセンターが表示されたら、左側のペインから「すべてのデータベース」->"SAMPLE"をクリックします。 データベースに接続する際のユーザーIDとパスワードを要求されます。「表」をクリックして、少し待つとテーブルの一覧を右側上段のペインで確認することができました。 

コントロール・センターからは他にもSQLを発行したりするなど、様々なことができるようです。

2010年4月2日金曜日

メインフレームLinuxでDB2(1) - クライアントのインストール (Linuxコマンドライン)

しばらくDB2の勉強もかねてメモ書きしていこうと思うので、タイトルを変えてみました。

前回までで、fedora11/s390x上でDB2が動作するようになりました。今回はDB2サーバーが動作するfedora11/s390xとは別のマシンからDB2データベースに接続してSQLを発行できるような環境を作りたいと思います。
fedora11/s390xを動作させている環境では、母艦Linuxと同じLAN上にx86のCentOS (v5.4, 32bit)がいますので、そこにDB2クライアントをインストールすることにします。

1. クライアントパッケージのダウンロード
まず、"IBM DataServer Client"パッケージをIBMのサイトの"Additional Functionality and Powerful Tools"の"DB2 Client"からダウンロード(要登録)して、クライアントマシン上に置き、tarで展開します。
[root@ce01 ~]# tar zxf ibm_data_server_client_linuxia32_v97.tar.gz 
展開すると"client"ディレクトリができています。その中にある、"db2_install"をrootユーザーで以下のように実行します。
[root@ce01 client]# ./db2_install -p client -c /root/client/nlpack -L JP

製品のインストール用のデフォルト・ディレクトリー - /opt/ibm/db2/V9.7

***********************************************************
別のディレクトリーを選択してインストールしますか [yes/no] ?
no
DB2 インストールを初期化しています。

実行されるタスクの合計数: 32
実行される全タスクの合計見積もり時間: 729

タスク #1 を開始します。
説明: ご使用条件受諾のチェック
見積もり時間 1 秒
タスク #1 が終了しました。

タスク #2 を開始します。
説明: root 特権を使用したインストールのための基本クライアント・サポート
見積もり時間 3 秒
タスク #2 が終了しました。

...

タスク #32 を開始します。
説明: グローバル・プロファイル・レジストリーの更新
見積もり時間 3 秒
タスク #32 が終了しました。

正常に実行が完了しました。

詳しくは、「/tmp/db2_install.log.14083」にある DB2
インストール・ログを参照してください。
2. クライアント・インスタンスの作成
インストールが完了したら、クライアント・インスタンスを作成します(データベースサーバーを動作させない場合でもインスタンスの作成が必要)。 クライアント・インスタンスのインスタンス・オーナー・ユーザーは、heruclesユーザーとしています。ユーザー名は8文字以下にする必要があるようです。
[root@ce01 ~]# /opt/ibm/db2/V9.7/instance/db2icrt -s client hercules
3. /etc/hostsの編集とルーティングの設定
次に、クライアントマシンの/etc/hostsにzfedora(192.168.200.3)を登録して、ルーティング設定も行っておきます(10.1.2.3は母艦LinuxのIPアドレス)。
[root@ce01 ~]# grep zfedora /etc/hosts
192.168.200.3 zfedora
[root@ce01 ~]# route add -host 192.168.200.3 gw 10.1.2.3
pingなどして、クライアントマシンとfedora11/s390xとが通信できることを確認したら、herculesユーザーでクライアントマシンにログインします。ホームディレクトリに、"sqllib"ディレクトリができています。
[hercules@ce01 ~]$ ls -ltr
合計 4
drwxrwsr-t 14 hercules hercules 4096  3月 31 21:15 sqllib
4. データベースノードのカタログ
DB2サーバー(データベースノード)をカタログします。"node"の後ろのノード名("db2serv1")は適当につけました。 "50000"は、DB2サーバー上で動作しているdb2inst1インスタンスが接続を待つポート番号です。ポート番号は、DB2サーバー上で"db2 get dbm cfg"を実行し、"TCP/IP Service name"で表示されるサービス名をキーにして、/etc/servicesを調べるとわかると思います。
[hercules@ce01 ~]$ db2 catalog tcpip node db2serv1 remote zfedora server 50000
DB20000I  CATALOG TCPIP NODE コマンドが正常に完了しました。
DB21056W  ディレクトリーの変更は、ディレクトリー・キャッシュがリフレッシュされるまで反映されません。
"db2 list node directory"コマンドでカタログされているノードを確認できます。
[hercules@ce01 ~]$ db2 list node directory

 ノード・ディレクトリー

 ディレクトリー中の項目数 = 1

ノード 1 項目:

 ノード名                                                 = DB2SERV1
 コメント                                                 =
 ディレクトリー項目タイプ                                 = LOCAL
 プロトコル                                               = TCPIP
 ホスト名                                                 = zfedora
 サービス名                                               = 50000
4. "SAMPLE"データベースのカタログ
ノードの次は、データベースをカタログします。 今回は、以前に作成した"SAMPLE"データベースをカタログすることにします。 "at node"の後ろには、ノードのカタログ時に指定したノード名(今回の例では"db2serv1")を指定します。
[hercules@ce01 ~]$ db2 catalog database sample at node db2serv1
DB20000I  CATALOG DATABASE コマンドが正常に完了しました。
DB21056W  ディレクトリーの変更は、ディレクトリー・キャッシュがリフレッシュされるまで反映されません。
"db2 list db directory"コマンドでカタログされているデータベースを確認できます。
[hercules@ce01 ~]$ db2 list db directory

 システム・データベース・ディレクトリー

 ディレクトリー中の項目数 = 1

データベース 1 項目:

 データベース別名                                         = SAMPLE
 データベース名                                     = SAMPLE
 ノード名                                                 = DB2SERV1
 データベース・リリース・レベル                           = d.00
 コメント                                                 =
 ディレクトリー項目タイプ                                 = リモート
 カタログ・データベース・パーティション番号               = -1
 代替サーバー・ホスト名                                   =
 代替サーバーのポート番号                                 = 
5. "SAMPLE"データベースに接続する
データベースに接続してみます。 "user"は"db2inst1"ユーザー(インスタンスオーナー), "using"にはDB2サーバーのインストール時に指定した、"db2inst1"ユーザーのパスワードを指定します。
[hercules@ce01 ~]$ db2 connect to sample user db2inst1 using XXXXXXXX

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUXZ64 9.7.1
 SQL 許可 ID                                              = DB2INST1
 ローカル・データベース別名                               = SAMPLE
6. SQLの発行
SQLも発行してみます。
[hercules@ce01 ~]$ db2 "select id,name,dept from staff"

ID     NAME      DEPT
------ --------- ------
    10 Sanders       20
    20 Pernal        20
    30 Marenghi      38
    40 O'Brien       38
    50 Hanes         15
    60 Quigley       38
    70 Rothman       15
    80 James         20
    90 Koonitz       42
   100 Plotz         42
   110 Ngan          15
   120 Naughton      38
   130 Yamaguchi     42
   140 Fraye         51
   150 Williams      51
   160 Molinare      10
   170 Kermisch      15
   180 Abrahams      38
   190 Sneider       20
   200 Scoutten      42
   210 Lu            10
   220 Smith         51
   230 Lundquist     51
   240 Daniels       10
   250 Wheeler       51
   260 Jones         10
   270 Lea           66
   280 Wilson        66
   290 Quill         84
   300 Davis         84
   310 Graham        66
   320 Gonzales      66
   330 Burke         66
   340 Edwards       84
   350 Gafney        84

  35 レコードが選択されました。
接続を解除するには、"db2 terminate"を発行します。
[hercules@ce01 ~]$ db2 terminate
DB20000I  TERMINATE コマンドが正常に完了しました。

今回は、fedora11/s390x上で動作するDB2サーバーに別のマシンから接続するための設定を行いました。

2010年3月31日水曜日

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

 fedora11/s390xのホスト名は"localhost"なのですが、これを変更しようと思います。 ホスト名の変更に伴い、前回までに構成したDB2サーバーの設定も変更する必要があります。

ホスト名の変更自体は簡単で、/etc/sysconfig/networkファイルに"HOSTNAME=..."の行を追加して、再起動するだけです。 今回はホスト名を"zfedora"としました。
-bash-4.0# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zfedora
再起動後は、ここの情報を参考に、以下の操作を行いました。
1. dasusr1ユーザーでDAS (Database Administration Server)を停止
[dasusr1@zfedora ~]$ db2admin stop 
2. db2inst1ユーザーでDB2インスタンスを停止
[db2inst1@zfedora ~]$ db2stop 
3. rootユーザーでDB2レジストリ変数の変更
-bash-4.0# /opt/ibm/db2/V9.7/adm/db2set -g DB2SYSTEM=zfedora
4. db2node.cfgファイルの書き換え(db2nodes.cfg.localhostが変更前のファイル)
[katzkichi@zfedora ~]$ su - db2inst1
Password:
[db2inst1@zfedora ~]$ cd sqllib
[db2inst1@zfedora sqllib]$ diff db2nodes.cfg db2nodes.cfg.localhost
1c1
< 0 zfedora 0
---
> 0 localhost 0
5. データベース構成の更新
[db2inst1@zfedora ~]$ db2 update admin cfg using DB2SYSTEM zfedora
DB20000I  The UPDATE ADMIN CONFIGURATION command completed successfully.
[db2inst1@zfedora ~]$ db2 update admin cfg using SMTP_SERVER zfedora
DB20000I  The UPDATE ADMIN CONFIGURATION command completed successfully.
6. dasusr1でDASの起動
[dasusr1@zfedora ~]$ db2admin start
SQL4406W  The DB2 Administration Server was started successfully.
7. db2inst1ユーザーでDB2インスタンスの起動
[db2inst1@zfedora ~]$ db2start
03/28/2010 10:13:21     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.

以上でホスト名の変更とDB2の構成変更は終わりです。

2010年3月22日月曜日

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

今回は、fedora11/s390xにインストールしたDB2 v9.7の動作確認を行いたいと思います。

まず、インストール中に作成したDB2インスタンス"db2inst1"のインスタンスオーナーユーザーである"db2inst1"ユーザーでfedora11/s390xにログインします。パスワードはDB2のインストール中に設定したものを使用します。
[hercules@ap01 ~]$ ssh -l db2inst1 192.168.200.3
db2inst1@192.168.200.3's password:

"db2start"コマンドでdb2inst1インスタンスを起動します。"SQL1063N  DB2START processing was successful" メッセージが表示されれば、インスタンスの起動に成功しています。
db2inst1@localhost ~]$ db2start
03/19/2010 11:42:36     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.

DB2にはサンプルデータベース作成用のコマンド"db2sampl"が付属しています("db2sample"ではないので注意)ので、これを実行します。"'db2sampl' processing complete."のメッセージが表示されれば完了です。
[db2inst1@localhost ~]$ db2sampl

  Creating database "SAMPLE"...
  Connecting to database "SAMPLE"...
  Creating tables and data in schema "DB2INST1"...
  Creating tables with XML columns and XML data in schema "DB2INST1"...

  'db2sampl' processing complete.

作成した"SAMPLE"データベースに接続してみます。 "db2 connect to sample"を実行します。Database server名が"DB2/LINUXZ64"になっていますね。
[db2inst1@localhost ~]$ db2 connect to sample

   Database Connection Information

 Database server        = DB2/LINUXZ64 9.7.1
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

"SAMPLE"データベース内のテーブル一覧を表示してみます。 "db2 list tables"を実行します。
[db2inst1@localhost ~]$ db2 list tables

Table/View                      Schema          Type  Creation time
------------------------------- --------------- ----- --------------------------
ACT                             DB2INST1        T     2010-03-19-11.53.14.863451
ADEFUSR                         DB2INST1        S     2010-03-19-11.53.51.886267
CATALOG                         DB2INST1        T     2010-03-19-11.54.38.632393
CL_SCHED                        DB2INST1        T     2010-03-19-11.53.12.168361
CUSTOMER                        DB2INST1        T     2010-03-19-11.54.37.661858
DEPARTMENT                      DB2INST1        T     2010-03-19-11.53.12.344265
DEPT                            DB2INST1        A     2010-03-19-11.53.12.769500
EMP                             DB2INST1        A     2010-03-19-11.53.13.125422
EMPACT                          DB2INST1        A     2010-03-19-11.53.14.835833
EMPLOYEE                        DB2INST1        T     2010-03-19-11.53.12.784090
EMPMDC                          DB2INST1        T     2010-03-19-11.54.12.189308
EMPPROJACT                      DB2INST1        T     2010-03-19-11.53.14.673046
EMP_ACT                         DB2INST1        A     2010-03-19-11.53.14.851410
EMP_PHOTO                       DB2INST1        T     2010-03-19-11.53.13.139212
EMP_RESUME                      DB2INST1        T     2010-03-19-11.53.13.589414
INVENTORY                       DB2INST1        T     2010-03-19-11.54.37.422684
IN_TRAY                         DB2INST1        T     2010-03-19-11.53.15.151188
ORG                             DB2INST1        T     2010-03-19-11.53.15.263343
PRODUCT                         DB2INST1        T     2010-03-19-11.54.36.979472
PRODUCTSUPPLIER                 DB2INST1        T     2010-03-19-11.54.39.421663
PROJ                            DB2INST1        A     2010-03-19-11.53.14.385700
PROJACT                         DB2INST1        T     2010-03-19-11.53.14.398559
PROJECT                         DB2INST1        T     2010-03-19-11.53.14.011351
PURCHASEORDER                   DB2INST1        T     2010-03-19-11.54.38.075299
SALES                           DB2INST1        T     2010-03-19-11.53.15.464041
STAFF                           DB2INST1        T     2010-03-19-11.53.15.359394
STAFFG                          DB2INST1        T     2010-03-19-11.53.48.101443
SUPPLIERS                       DB2INST1        T     2010-03-19-11.54.39.021910
VACT                            DB2INST1        V     2010-03-19-11.53.15.712022
VASTRDE1                        DB2INST1        V     2010-03-19-11.53.15.904366
VASTRDE2                        DB2INST1        V     2010-03-19-11.53.15.955794
VDEPMG1                         DB2INST1        V     2010-03-19-11.53.15.806789
VDEPT                           DB2INST1        V     2010-03-19-11.53.15.560107
VEMP                            DB2INST1        V     2010-03-19-11.53.15.640160
VEMPDPT1                        DB2INST1        V     2010-03-19-11.53.15.851954
VEMPLP                          DB2INST1        V     2010-03-19-11.53.16.344550
VEMPPROJACT                     DB2INST1        V     2010-03-19-11.53.15.773254
VFORPLA                         DB2INST1        V     2010-03-19-11.53.16.159036
VHDEPT                          DB2INST1        V     2010-03-19-11.53.15.607765
VPHONE                          DB2INST1        V     2010-03-19-11.53.16.301730
VPROJ                           DB2INST1        V     2010-03-19-11.53.15.674485
VPROJACT                        DB2INST1        V     2010-03-19-11.53.15.739944
VPROJRE1                        DB2INST1        V     2010-03-19-11.53.16.009754
VPSTRDE1                        DB2INST1        V     2010-03-19-11.53.16.058355
VPSTRDE2                        DB2INST1        V     2010-03-19-11.53.16.108992
VSTAFAC1                        DB2INST1        V     2010-03-19-11.53.16.201096
VSTAFAC2                        DB2INST1        V     2010-03-19-11.53.16.248972

  47 record(s) selected.

テーブルの定義を表示させる場合は"db2 describe table <テーブル名>"コマンドを使います。 "STAFF"テーブルに対してこのコマンドを実行してみます。
[db2inst1@localhost ~]$ db2 describe table staff

                                Data type                     Column
Column name                     schema    Data type name      Length     Scale Nulls
------------------------------- --------- ------------------- ---------- ----- ------
ID                              SYSIBM    SMALLINT                     2     0 No
NAME                            SYSIBM    VARCHAR                      9     0 Yes
DEPT                            SYSIBM    SMALLINT                     2     0 Yes
JOB                             SYSIBM    CHARACTER                    5     0 Yes
YEARS                           SYSIBM    SMALLINT                     2     0 Yes
SALARY                          SYSIBM    DECIMAL                      7     2 Yes
COMM                            SYSIBM    DECIMAL                      7     2 Yes

  7 record(s) selected.

STAFFテーブルに対してSQLを発行してみます。
[db2inst1@localhost ~]$ db2 "select id,name,dept from staff"

ID     NAME      DEPT
------ --------- ------
    10 Sanders       20
    20 Pernal        20
    30 Marenghi      38
    40 O'Brien       38
    50 Hanes         15
    60 Quigley       38
    70 Rothman       15
    80 James         20
    90 Koonitz       42
   100 Plotz         42
   110 Ngan          15
   120 Naughton      38
   130 Yamaguchi     42
   140 Fraye         51
   150 Williams      51
   160 Molinare      10
   170 Kermisch      15
   180 Abrahams      38
   190 Sneider       20
   200 Scoutten      42
   210 Lu            10
   220 Smith         51
   230 Lundquist     51
   240 Daniels       10
   250 Wheeler       51
   260 Jones         10
   270 Lea           66
   280 Wilson        66
   290 Quill         84
   300 Davis         84
   310 Graham        66
   320 Gonzales      66
   330 Burke         66
   340 Edwards       84
   350 Gafney        84

  35 record(s) selected.

"db2 terminate"コマンドで、接続を解除できます(db2inst1インスタンスは停止しません)。
[db2inst1@localhost ~]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.

"db2stop"コマンドを実行すると、"db2inst1"インスタンスが停止します。
[db2inst1@localhost ~]$ db2stop
2010-03-19 12:01:07     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.

非常に簡単ですが、DB2インストール後の動作確認を行ってみました。

2010年3月21日日曜日

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

今回は、"DB2 v9.7 Linux on zseries"をfedora11 on s390x (fedora11/s390x)にインストールしたいと思います。

DB2のインストールに当たっては、母艦Linuxの性能がそれなりでないとツライです。CentOS (s390)を動作させていた環境(Windows上のVirtualPC2007)でDB2のインストールを試したところ、インストーラの起動に30分ぐらいかかってしまいました。 さすがにこれでは先が思いやられるので、今回からは母艦のLinux(CentOS 5.4)をネイティブで(仮想環境でなく)動作させています。

1. 事前準備
DB2のインストーラーにはコマンドラインのものとXを使用するものがあるようですが、(自分も含めて)初心者にはXを使用するものが便利だと思います。インストールには長時間を要すると思われるので、今回はfedora11/s390x上でVNCを起動し、VNC下で動作するtwm/xterm上でDB2インストーラーを起動することにしました。yumでVNC関連のパッケージをインストールするために、以下のコマンドを実行します。
# yum -y install xterm twm vnc-server xauth
  DB2インスタンスの作成には"libstdc++.so.5"も必要です。 このライブラリは"compat-libstdc++-33"パッケージで提供されるのですが、yumではインストールできない(パッケージが見つからない)ので、ここで"compat-gcc-32"を検索し、関連パッケージとして表示される"compat- libstdc++-33-3.2.3-68.s390x.rpm"パッケージをダウンロードし、fedora11/s390x上に持っていってrpmコマンドでインストールしました。
# rpm -ivh compat-libstdc++-33-3.2.3-68.s390x.rpm
  IBMのサイトからダウンロードしておいた"DB2 v9.7 Linux on zseries"を母艦Linuxからfedora11/s390x上にscpでコピーします。 コピー完了後、tarコマンドで展開しておきます。
[hercules@ap01 fedora11_s390x]$ scp v9.7_linux390x64_server.tar.gz katzkichi@192.168.200.3:/home/katzkichi

2. VNCサーバの起動
fedora11/s390x上でVNCサーバを起動します。 起動自体は"vncserver"コマンドで可能(初回はパスワード設定が必要)です。が、しかし今回の環境ではvncserverを"ja_JP.UTF-8"ロケールで起動すると、DB2のインストーラが文字化けするという問題に遭遇しました。
fedora11のsshdの設定はロケール情報をクライアントから引き継ぐ設定になっているようですので、母艦Linuxのロケールが"ja_JP.UTF-8"になっていると、sshで母艦側からfedora11にログインした時点でシェルのロケールが"ja_JP.UTF-8"になってしまいます。 今回は以下のように、heculesエミュレータのコンソールからログインしてVNCサーバを起動してこの問題を回避することにしました(ロケールは"POSIX"となるようです)。他の回避策としてはfedora11/s390x側でクライアントのロケールを引き継がないようにする(/etc/ssh/sshd_configをいじる)という手もあります。

3.fedora11/s390x にVNCviewerで接続する
母艦Linux上でvncviewerを起動する場合は問題ないですが、母艦Linuxとは別のマシンでvncviewerを動作させる場合、vncviewerを動作させるマシン上でルーティング設定が必要になります(sshポートフォワーディングを使う手もありますが)。以前におこなった設定が参考になると思います。 接続できると以下のような感じになります。

4. DB2インストーラーの起動
DB2のインストールイメージを展開して作成される"server"ディレクトリにcdし、"./db2setup"をタイプします。 しばらく待つと(母艦Linuxの性能にもよりますが、20分ぐらい)、以下のような"welcome"画面が表示されます。 

画面左側の"Install a product"をクリックしてしばらく待つと、以下のようにインストールする製品を選択する画面に遷移します。 今回は、"DB2 Enterprise Server Edition Version 9.7"を選択しました。

再びしばらく待つと、以下のような"Enterprise Server Edition"インストール用のウィザード画面が立ち上がります。 "Next"をクリックします。 


5. DB2インストール各種設定
以降ウィザードの質問に答える形でDB2インストールのパラメータを設定していきます。今回は以下のような設定としました(なお、各パラメータ設定の先頭の番号は、ウィザードの左側に表示されているものです)。
  • 2. "Software License Agreement" - 同意
  • 3. "Installation type" - デフォルト (変更なし)
  • 4. "Installation action" - デフォルト(変更なし)
  • 5. "Installation directory" - デフォルト(変更なし)
  • 6. "SA MP" - インストールしない ("Do not install SA MP"を選択)
  • 7. "DAS user" - デフォルト (dasusr1ユーザーのパスワードのみ設定)
  • 8. "Instance setup" - デフォルト(変更なし)
  • 9. "Partitioning options" - デフォルト(変更なし)
  • 10. "Instance owning user" - デフォルト (db2inst1ユーザーのパスワードのみ設定)
  • 11. "Fenced user" -  デフォルト (dbfenc1ユーザーのパスワードのみ設定)
  • 12. "Tools catalog" - デフォルト(変更なし)
  • 13. "Notification setup" - 後で設定する ("Do not ... "を選択)
  • 14. "Summary" - 最終確認画面 ("Finish"を押すだけ)
"Summary"画面で"Finish"を押したら、ファイルのコピーが始まります。 コピーが終わるとインストールは終了です。 今回は、以下のように「インストール中にminorな問題が発生した」というメッセージが表示されてしまいました。 

"Log File"タブも確認してみたのですが、何が問題なのかよくわかりませんでした・・・。 ま、今回はあまり気にせず(^^;)先に進むことにします。

ということで、とりあえずDB2のインストール自体は完了しました。 次回は、DB2の起動確認、"SAMPLE"データベースの作成とクエリの発行などを試してみたいと思います。

2010年3月10日水曜日

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

yumの実行中に遭遇した二つ目のエラーはこんな感じでした。
-bash-4.0# yum -y install vsftpd
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.s390x 0:2.2.0-0.1.pre4.fc12 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package          Arch            Version                          Repository        Size
==========================================================================================
Installing:
 vsftpd           s390x           2.2.0-0.1.pre4.fc12              fedora           135 k

Transaction Summary
==========================================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 135 k
Downloading Packages:
vsftpd-2.2.0-0.1.pre4.fc12.s390x.rpm                               | 135 kB     00:02
Running rpm_check_debug
ERROR with rpm_check_debug vs depsolve:
rpmlib(PayloadIsXz) は vsftpd-2.2.0-0.1.pre4.fc12.s390x に必要とされています
Complete!
(1, [u'Please report this error in http://yum.baseurl.org/report'])
"rpm_check_debug"や"rpmlib"をキーワードにして検索してみると、どうやらrpm関連のパッケージを更新する必要があるらしいことがわかりました。パッケージの入手先はここです。以下のrpm関連のパッケージをいったん母艦のLinuxにダウンロードし、scpでFedora11にコピーします(scpを使用したのはFedora11でftpdが動いていないため)。なお、scpを実行する前に作業用としてkatzkichiユーザーをFedora11上でadduserしています。
[hercules@ap01 fedora11_s390x]$ ls *.rpm
-rw-r--r-- 1 hercules hercules 1070571  3月  3 11:47 rpm-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 hercules hercules  374716  3月  3 11:47 rpm-libs-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 hercules hercules   54661  3月  3 11:47 rpm-python-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 hercules hercules  105772  3月  3 11:57 xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm
[hercules@ap01 fedora11_s390x]$ scp *.rpm katzkichi@192.168.200.3:/home/katzkichi
katzkichi@192.168.200.3's password:
rpm-4.7.1-2.fc11.s390x.rpm                              100% 1045KB   1.0MB/s   00:00
rpm-libs-4.7.1-2.fc11.s390x.rpm                         100%  366KB 365.9KB/s   00:00
rpm-python-4.7.1-2.fc11.s390x.rpm                       100%   53KB  53.4KB/s   00:00
xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm                 100%  103KB 103.3KB/s   00:00
コピーが終わったら、rpmコマンドでパッケージのインストール/アップデートを行います。
-bash-4.0# ls -l
合計 1592
-rw-r--r-- 1 katzkichi katzkichi 1070571 2010-03-03 02:55 rpm-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 katzkichi katzkichi  374716 2010-03-03 02:55 rpm-libs-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 katzkichi katzkichi   54661 2010-03-03 02:55 rpm-python-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 katzkichi katzkichi  105772 2010-03-03 02:57 xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm
-bash-4.0# rpm -ivh xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm
準備中...                ########################################### [100%]
   1:xz-libs                ########################################### [100%]
-bash-4.0# rpm -Uvh rpm-*
準備中...                ########################################### [100%]
   1:rpm-libs               ########################################### [ 33%]
   2:rpm                    ########################################### [ 67%]
   3:rpm-python             ########################################### [100%]
これで無事にyumが使えるようになります。

次回はいよいよFedora11にDB2をインストールしたいと思います。

2010年3月9日火曜日

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

今回はFedora11/s390xを起動してyumを動作させる(ただしエラーで更新が失敗する^^;)ところまで書いてみたいと思います。今回はFedora11インストール済みのDASDイメージがすでに準備されているわけなので「すぐに動くだろう」と高をくくっていたら思ったより大変でした。
まずは、上のリンク先からDASDイメージ(f11-s390x.img), README, hercules.cnf, hercules.initをとってきて、母艦のLinuxの適当なディレクトリ(今回は、/home/hercules/fedora11_s390x)に置きます。
[hercules@ap01 fedora11_s390x]$ pwd
/home/hercules/fedora11_s390x
[hercules@ap01 fedora11_s390x]$ ls -l
合計 550516
-rw-rw-r-- 1 hercules hercules      1386  7月 16  2009 README
-rw-rw-r-- 1 hercules hercules 558951862  3月  3 13:00 f11-s390x.img
-rw-rw-r-- 1 hercules hercules      1707  3月  3 01:41 hercules.cnf
-rw-rw-r-- 1 hercules hercules       966 11月 20  2008 hercules.init
READMEを読むと、hercules.initスクリプトを実行すると、トンネリングデバイスなどの各種設定を行ってからherculesを起動してくれるようですが、今回はこのスクリプトを使わずにCentOSのときと同様に手動で各種設定を行ってみます。
まずトンネリングデバイスとIPフォワーディング、IPマスカレードの設定を行います。
[root@ap01 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@ap01 ~]# chown root.hercules /dev/net/tun
[root@ap01 ~]# chmod 660 /dev/net/tun
[root@ap01 ~]# iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.0/24 -j MASQUERADE
次に、hercules.cnfを編集して、DASDイメージへのパスを正しく設定します。今回は、/home/hercules/fedora11_s390x/f11-s390x.imgとなります。 MAINSIZEとNUMCPUはそれぞれ、1024と4となっていますので、母艦の性能に合わせて適当に変えます。今回は控えめ(?)に512と1にしてみました。
hercules -f hercules.cnfでエミュレータを起動します。以下のようにz/Architectureモードで起動していることがわかります。

エミュレータが起動したら、"IPL 122"と入力してenterしてしばらく待つと、Fedora11が起動します(下図)。
 
この時点で母艦Linux上の別の端末からsshでログインできます。 rootユーザーのパスワードは、"fedora"です。 ログインして"uname -m"コマンドを実行してみると、アーキテクチャ名が"s390x"と表示されますね。
-bash-4.0# uname -m
s390x
bogomips値も見てみます。(どの程度参考になるかわかりませんが)CentOSの時よりはだいぶ大きな値が出てるっぽいです。
-bash-4.0# dmesg | grep -i bogo
Calibrating delay loop (skipped)... 1487.00 BogoMIPS preset
無事Fedora11も起動したので、早速"yum -y update"を実行してみたところ、以下のようなエラーが出てしまいパッケージの更新ができません。
(39/39): glibc-common-2.10.90-20.s390x.rpm                         | 6.0 MB     01:11
------------------------------------------------------------------------------------------
Total                                                      80 kB/s |  28 MB     05:57
Running rpm_check_debug
ERROR with rpm_check_debug vs depsolve:
Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in 
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 305, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 257, in main
    return_code = base.doTransaction()
  File "/usr/share/yum-cli/cli.py", line 422, in doTransaction
    print to_utf8(msg)
  File "/usr/lib64/python2.6/codecs.py", line 351, in write
    data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 20: ordinal not in range(128)
Googleで同様の事例がないか調べてみると、どうもpythonのデフォルトの文字コードがUTF-8でなくASCIIとして認識されていることが問題だそうな。ということで先達に習って、"/usr/lib/python2.6/site-packages/"に以下の内容で、名前が"sitecustomize.py"というファイルを作って、再度実行してみました。
import sys
sys.setdefaultencoding("utf-8")
再度yumを実行してみると、"UnicodeDecodeError:..."のエラーは出なくなりましたが、今度は別のエラーが・・・(続きます)

2010/03/09 追記: UnicodeDecodeErrorのメッセージを追記しました。

2010年3月3日水曜日

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

 さて、前回までCentOS v4.7 for S/390をHerculesエミュレータ上で動作させるためにいろいろと書いてきたわけですが、ネタにも尽きてきた(^^;)今日この頃、ふと思い立って検索してみると、IBMの商用RDBMSであるDB2 v9.7のメインフレームLinux向けのトライアル版がIBMの開発者向けwebサイトからダウンロードできる(要登録)ことに気がつきました。 
「これはなんとしても試さねば!」と早速ダウンロードを開始したわけなのですが、よく見れば"Linux for System z (64 bit)"の文字が・・・ えー、今まで使ってきたCent OSにはインストールできないじゃん・・・ (前回まで試していたCentOS v4.7 for S/390は31bit S/390アーキテクチャ用)。

さて、どうしたものでしょうか。CentOS v4.7のs390x(64bit)アーキテクチャ用を再度インストールするという手もありますが、CentOS v4.7では、いかんせん導入されているパッケージが古く、やや時代遅れな感もあります。

というわけで(少々強引な展開ですが)、s390xアーキテクチャ用の別Distributionに乗り換え、その上でDB2のトライアル版を試してみることにします。 選択した(といってもあまり選べない^^;)Distroは以前紹介したFedora11(s390xアーキテクチャ)です。 さて、どうなることやら・・・。

2010年2月20日土曜日

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

前回に続いて、MovableType v4のインストールを行います。MovableType v4にはウィザード形式の設定ツールが添付されており、webブラウザからウィザードを実行すれば設定できてしまいます。うーん、便利。
1.設定ウィザードの起動
Webブラウザからhttp://192.168.200.1/cgi-bin/mt/mt.cgiにアクセスすると、「Movable Typeへようこそ」の画面が表示されますので、"Static web path"と"Static file path" を以下のように設定して「開始」ボタンを押下しました。ところが、「現在のサーバーの構成上その場所にはWebブラウザからアクセスできません」と表示されてしまいました。
とりあえず 今回は、/var/www/cgi-bin/mt/mt-staticディレクトリを/var/www/html以下に移動することにしました。 mt-staticディレクトリの移動後、再びインストールウィザードを起動すると、今度はメッセージが微妙(下図)に変化しています。 変更後の"Static web path", "Static file path"を入力し、「開始」ボタンを押下すると・・・。
 今度は、以下のような画面が表示されました。インストールが継続できるようになりましたので、「次へ」ボタンを押下します。
2. データベース関連の設定
データベース関連の設定値を入力する画面が表示されます。 前回設定したデータベースの設定値をそのまま入力して、「接続テスト」ボタンを押下します。

正しく構成されていれば、「データベースの設定が完了しました。」と表示されますので、「次へ」を押下します。
3. メールアドレスの設定
Blogにコメントなど追加されたときに通知が来るメールアドレスの設定を行います(下図)。通知にはsendmailを使うんですか・・・。 そういえば、sendmail を停止していたことがあったような気がしますが、おもむろに(^^;)立ち上げなおして("# serivice sendmail strat")から、以下のように入力して、「テストメール送信」ボタンを押下します。
正しく送信できれば、「メール設定を完了しました。」と表示されます。「次へ」を押下すると、以下のように「構成を以下のファイルに書き込んだ」旨の画面が表示されますので、再び「次へ」を押下します。

4. システム管理者アカウントの設定
なんだか、s390用のLinuxの話題とはまったく関係のない話になってきてしまいましたが(^^;)、もう少しMovableType v4の設定画面が続きます。 システム管理者アカウントを作成せい、といわれますので設定します。

電子メールアドレスは、hogehoge@localhostではメールアドレスとしては不適切なようなので、今回はとりあえずそれっぽいものを入力して、お茶を濁しました(^^;)。 入力を終えたら「次へ」を押下します。

5. 最初のblogの作成
システム管理者アカウントを作成後、最初のBlogを作成する旨が表示されます。今回の設定では、MovableType v4は/var/www/html以下にBlogを作成しますので、apacheユーザーでそのディレクトリに読み書きできるようパーミッションを設定しました。
[root@localhost mt]# chown apache.apache /var/www/html
[root@localhost mt]# ls -dl /var/www/html
drwxr-xr-x  3 apache apache 4096 Feb  7 23:25 /var/www/html
以下のように入力した後、「インストール」を押下します。

データベースの初期化が完了すると、以下のような画面が表示され、MovableTypeにサインインできるようになります。
「Movable Typeにサインイン」ボタンを押下してサインインすると、"Blog on s390"のダッシュボードが表示されました。
 

以上で、MovableTypeのインストール・設定は完了です。CentOS for s390といってもやはり「普通の」linuxなんだなー、ということが分かりました。

2010年2月14日日曜日

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

今回と次回の2回でCentOS/390にBlogツールとして有名なMovableTypeのインストール手順を紹介したいと思います。メインフレーム用Linuxといってもアプリケーションをインストールする上では普通のLinuxなので、(s390特有の理由で)特にはまる点はないと思います。
今回はMovableType v4を動作させるための下準備を、次回はMovableType付属のツールを使用した環境設定作業を紹介したいと思います。なお、MovableTypeの最新版は、2010/2月時点でv5なのですが、CentOS/390がサポートしているMySQLのバージョンがv4.1である都合上、今回はMovableType v4のインストールを行うことにしました。
1. MySQLとApacheのインストール
yumのgroupinstallコマンドで"MySQL Database"と"Web Server"をインストールします。これで十分かと思いきや、どうやらデータベース本体を動作させるためのパッケージはgroupinstallではインストールされない模様なので、"mysql-server"は別途インストールしました。
[root@localhost ~]# yum -y groupinstall "MySQL Database"
[root@localhost ~]# yum -y groupinstall "Web Server"
[root@localhost ~]# yum -y install mysql-server
ここで試しにapacheが起動できるか試してみました。以下のコマンドでapacheを起動します。
[root@localhost ~]# service httpd start
Starting httpd: [  OK  ]
WebブラウザでCentOS/390(http://192.168.200.1)にアクセスすると、以下のようにapacheのテストページが表示され、apacheが動作していることが確認できます。

2. MovableTypeのインストール
MovableType v4(個人ライセンス版)のzipファイルをここからダウンロードし、CentOS/390の/home/katzkichiにコピーした後(前回設定したSamba経由だと便利)、unzipで展開し、/var/www/cgi-bin/mtにおきます。
[katzkichi@localhost ~]$ unzip -q MT-4_27-ja.zip
[katzkichi@localhost ~]$ su -
Password:
[root@localhost ~]# cd /home/katzkichi
[root@localhost katzkichi]# ls -ltr
total 6940
drwxr-xr-x  14 katzkichi katzkichi    4096 Dec 24 11:58 MT-4.27-ja
drwxr-xr-x   2 katzkichi katzkichi    4096 Jan 30 12:03 Desktop
-rwxr--r--   1 katzkichi katzkichi 7082231 Feb  3 23:49 MT-4_27-ja.zip
[root@localhost katzkichi]# mkdir /var/www/cgi-bin/mt
[root@localhost katzkichi]# mv MT-4.27-ja/* /var/www/cgi-bin/mt
[root@localhost katzkichi]# ls -l /var/www/cgi-bin/mt
total 136
drwxr-xr-x   4 katzkichi katzkichi  4096 Dec 24 11:58 addons
drwxr-xr-x   2 katzkichi katzkichi  4096 Dec 24 11:58 alt-tmpl
drwxr-xr-x   2 katzkichi katzkichi  4096 Dec 24 11:58 default_templates
drwxr-xr-x  39 katzkichi katzkichi  4096 Dec 24 11:58 extlib
drwxr-xr-x   2 katzkichi katzkichi  4096 Dec 24 11:58 import
-rw-r--r--   1 katzkichi katzkichi  3248 Dec 24 11:58 index.html
drwxr-xr-x   3 katzkichi katzkichi  4096 Dec 24 11:58 lib
-rwxr-xr-x   1 katzkichi katzkichi   401 Dec 24 11:58 mt-add-notify.cgi
-rwxr-xr-x   1 katzkichi katzkichi   390 Dec 24 11:58 mt-atom.cgi
-rwxr-xr-x   1 katzkichi katzkichi   383 Dec 24 11:58 mt.cgi
-rwxr-xr-x   1 katzkichi katzkichi 20000 Dec 24 11:58 mt-check.cgi
-rwxr-xr-x   1 katzkichi katzkichi   399 Dec 24 11:58 mt-comments.cgi
-rw-r--r--   1 katzkichi katzkichi  1647 Dec 24 11:58 mt-config.cgi-original
-rwxr-xr-x   1 katzkichi katzkichi   469 Dec 16 15:00 mt-cp.cgi
-rwxr-xr-x   1 katzkichi katzkichi   400 Dec 24 11:58 mt-feed.cgi
-rwxr-xr-x   1 katzkichi katzkichi   405 Dec 24 11:58 mt-ftsearch.cgi
-rwxr-xr-x   1 katzkichi katzkichi   393 Dec 24 11:58 mt-search.cgi
drwxr-xr-x  16 katzkichi katzkichi  4096 Dec 24 11:58 mt-static
-rwxr-xr-x   1 katzkichi katzkichi   392 Dec 24 11:58 mt-tb.cgi
-rwxr-xr-x   1 katzkichi katzkichi   883 Dec 24 11:58 mt-testbg.cgi
-rwxr-xr-x   1 katzkichi katzkichi   396 Dec 24 11:58 mt-upgrade.cgi
-rwxr-xr-x   1 katzkichi katzkichi   346 Dec 24 11:58 mt-wizard.cgi
-rwxr-xr-x   1 katzkichi katzkichi  1084 Dec 24 11:58 mt-xmlrpc.cgi
drwxr-xr-x   5 katzkichi katzkichi  4096 Dec 24 11:58 php
drwxr-xr-x  17 katzkichi katzkichi  4096 Dec 24 11:58 plugins
-rw-r--r--   1 katzkichi katzkichi  4771 Dec 24 11:58 readme.html
drwxr-xr-x   2 katzkichi katzkichi  4096 Dec 24 11:58 search_templates
drwxr-xr-x   7 katzkichi katzkichi  4096 Dec 24 11:58 tmpl
drwxr-xr-x   2 katzkichi katzkichi  4096 Dec 24 11:58 tools
apacheがMovableTypeのCGIを実行可能なように、パーミッションを変えておきます。
[root@localhost katzkichi]# chown -R apache.apache /var/www/cgi-bin/mt
3. mysqldの起動とrootパスワードの設定
まず、mysqldを起動します。
[root@localhost ~]# /etc/init.d/mysqld start
Initializing MySQL database:  [  OK  ]
Starting MySQL:  [  OK  ]
次に、管理ユーザーである"root"のパスワードを設定します。
[root@localhost ~]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SET PASSWORD FOR root@localhost=PASSWORD('XXXXXXXXXX');
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
念のため、パスワードが設定されていないユーザーをすべて削除しておきます。
[root@localhost ~]# mysql -uroot -pXXXXXXXXXX
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.1.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>  DELETE FROM user WHERE password='';
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
4. データベースの作成とMovableType用のユーザー定義
Blogデータを格納するデータベースと、CGI経由でそのデータベースを参照・更新するためのユーザーを作成します。今回はデータベース名は"mtdb", ユーザー名は"katzkichi"とします。
まず、"mtdb"データベースを作成します。mysqlshowコマンドで"mtdb"データベースが作成されたことを確認できます。
[root@localhost ~]# mysqladmin -u root -pXXXXXXXXXX CREATE mtdb
[root@localhost ~]# mysqlshow -pXXXXXXXXXX
+-----------+
| Databases |
+-----------+
| mtdb      |
| mysql     |
| test      |
+-----------+
次に、katzkichiユーザーにmtdbへのアクセス権を与えます。"IDENTIFIED BY"句でパスワードを指定します。
[root@localhost ~]# mysql -u root -pXXXXXXXXXX mtdb
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7 to server version: 4.1.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> GRANT all privileges ON mtdb.* TO katzkichi@localhost IDENTIFIED BY 'YYYYYYYYYY';
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye
katzkichiユーザーでmtdbにアクセスできるか確認します。
[root@localhost ~]# mysql -ukatzkichi -pYYYYYYYYYY mtdb
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 32 to server version: 4.1.22

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show tables;
Empty set (0.00 sec)

mysql> exit
Bye

次回はMovableType v4の付属ツールを使用して、CentOS/390でBlog環境を設定したいと思います。

2010年2月8日月曜日

CentOS/390でJava6使えます

前回、「次回はMovableTypeをインストールします」と書いていたのですが、CentOS/390で(gcjでない)Javaが使えると分かったので、備忘録として書いておこうと思います。
ここから、"IBM 31-bit SDK for Linux on zSeries architecture, Java Technology Edition 2009-12-18" (Java6)がダウンロードできます(要ユーザー登録)。
RPM形式をダウンロードして、CentOS/390にインストールしてみました。なお、依存関係でcompat-libstdc++-33パッケージが必要なので、yumで先にインストールしています。
[root@localhost katzkichi]# yum -y install compat-libstdc++-33
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for compat-libstdc++-33 to pack into transaction set.
compat-libstdc%2B%2B-33-3 100% |=========================| 3.5 kB    00:00
---> Package compat-libstdc++-33.s390 0:3.2.3-47.3 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 compat-libstdc++-33     s390       3.2.3-47.3       base              233 k

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 233 k
Downloading Packages:
(1/1): compat-libstdc++-3 100% |=========================| 233 kB    00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: compat-libstdc++-33          ######################### [1/1]

Installed: compat-libstdc++-33.s390 0:3.2.3-47.3
Complete!
[root@localhost katzkichi]# rpm -ivh ibm-java-s390-sdk-6.0-7.0.s390.rpm
Preparing...                ########################################### [100%]
   1:ibm-java-s390-sdk      ########################################### [100%]
"java -version"を実行してみました。
[root@localhost katzkichi]# /opt/ibm/java-s390-60/bin/java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pxz3160sr7-20091215_02(SR7))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux s390-31 jvmxz3160sr7-20091214_49398 (JIT enabled, AOT enabled)
J9VM - 20091214_049398
JIT  - r9_20091123_13891
GC   - 20091111_AA)
JCL  - 20091202_01

最新のJavaが使えることが分かったので(パフォーマンスはともかくとして)、さらに色々と楽しめそうです。

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

s390用といってもCentOSなので、普通のLinuxサーバとして動作させるためには(s390用だからといって)特別な設定は必要ありません。
今回はCentOS for s390(以下CentOS/390)上でSambaを動作させ、CentOS/390上に定義されている一般ユーザーのホームディレクトリを母艦Linuxと同じLAN上にあるWindowsマシンからネットワークドライブとして使用可能とするように設定したいと思います。

1. CentOS/390でsambaをインストールし、sambaサービスを起動する。
yumでsambaをインストールします。 groupinstallで"Windows File Server"を指定するのがよさそうです。
[root@localhost ~]# yum -y groupinstall "Windows File Server"
Setting up Group Process
Setting up repositories
update                    100% |=========================|  951 B    00:00
base                      100% |=========================| 1.1 kB    00:00
addons                    100% |=========================|  951 B    00:00
extras                    100% |=========================|  951 B    00:00
Setting up repositories
Reading repository metadata in from local files
Passing package list to Install Process
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for samba to pack into transaction set.
samba-3.0.28-0.c4.9.s390. 100% |=========================| 114 kB    00:05
---> Package samba.s390 0:3.0.28-0.c4.9 set to be updated
---> Downloading header for system-config-samba to pack into transaction set.
system-config-samba-1.2.2 100% |=========================|  22 kB    00:00
---> Package system-config-samba.noarch 0:1.2.21-1.el4.1 set to be updated
---> Downloading header for sysreport to pack into transaction set.
sysreport-1.3.15-8.noarch 100% |=========================| 9.5 kB    00:00
---> Package sysreport.noarch 0:1.3.15-8 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 samba                   s390       3.0.28-0.c4.9    base               16 M
 sysreport               noarch     1.3.15-8         base               19 k
 system-config-samba     noarch     1.2.21-1.el4.1   base              191 k

Transaction Summary
=============================================================================
Install      3 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 16 M
Downloading Packages:
(1/3): samba-3.0.28-0.c4. 100% |=========================|  16 MB    10:12
(2/3): system-config-samb 100% |=========================| 191 kB    00:11
(3/3): sysreport-1.3.15-8 100% |=========================|  19 kB    00:01
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: samba                        ######################### [1/4]
  Installing: system-config-samba          ######################### [2/4]
  Installing: sysreport                    ######################### [3/4]
  Removing  : sos                          ######################### [4/4]

Installed: samba.s390 0:3.0.28-0.c4.9 sysreport.noarch 0:1.3.15-8 system-config-samba.noarch 0:1.2.21-1.el4.1
Complete!
インストールが完了したら、sambaのサービスを起動します。
[root@localhost ~]# service smb start
Starting SMB services: [  OK  ]
Starting NMB services: [  OK  ]
2. Sambaユーザーを設定する。
Sambaユーザーを設定します。 CentOS/390上の一般ユーザー(今回はkatzkichiユーザー)のホームディレクトリを共有可能としたいと思います。"smbpassword"コマンドでkatzkichiユーザーのパスワードを設定します。
[root@localhost ~]# smbpasswd -a katzkichi
New SMB password:
Retype new SMB password:
Added user katzkichi.
3. Windows上でCentOS/390へのstatic routeを設定する。
Windows上のコマンドプロンプトから以下のコマンドを実行して、CentOS/390へのstatic routeを設定します。10.1.243.222はCentOS/390を動作させている母艦LinuxのIPアドレスです
C:\Documents and Settings\katzkichi>route ADD 192.168.200.1 MASK 255.255.255.255 10.1.243.222
routeを設定したら、pingが通るか確認するとよいです。
C:\Documents and Settings\katzkichi>ping -n 1 192.168.200.1

Pinging 192.168.200.1 with 32 bytes of data:

Reply from 192.168.200.1: bytes=32 time=8ms TTL=63

Ping statistics for 192.168.200.1:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 8ms, Maximum = 8ms, Average = 8ms
ちなみに、(当たり前ですが)この段階でWindows上から直接CentOS/390にsshログインできるようになります。結構便利です。
4. ネットワークドライブの割り当て
ネットワークドライブの割り当てを行います。Windowsのデスクトップにある"マイネットワーク"アイコンを右クリックして、「ネットワークドライブの割り当て」を選択すると以下のような画面が表示されます。 ドライブは"Z:"、フォルダには"\\192.168.200.1\katzkichi"を指定して、「完了」を押下します。

以下のような画面が表示されたら、ユーザー名に"katzkichi"、パスワードには2.で設定したものを指定し、「OK」を押下します。

うまく接続できれば、/home/userのホームディレクトリがwindows上で表示されます。

ホームディレクトリに読み書きできるか確認してみるとよいです。 Windows上からホームディレクトリを直接読み書きできるようになるとなかなか便利です。

次回は、(無謀なことに)BlogツールであるMovableTypeのインストールに挑戦します!

2010年1月30日土曜日

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

今回は新しくDASDを追加し、ルートファイルシステム("/")の拡張を行いたいと思います。インストール時点でauto partitionを選択した結果、ルートファイルシステムはLogical Volume Manager (LVM)管理下のVolume Group(VG)に含まれる論理ボリューム(LV)であるLogVol00上にマウントされています。ここの情報を参考にルートファイルシステムを拡張したいと思いますが、このマニュアルではLVM管理下のファイルシステムの拡張については扱っていないので、若干追加の作業が必要です。

1. DASDファイルの追加
母艦Linux上で新たにDASDファイルを作ります。 今回は3390-1型のDASDを作ることにしました。VOLSERは"DASD02"です。
[hercules@ap01 centos_v47_s390]$ dasdinit -lfs DASD02 3390-1 DASD02
HHCDU044I Creating 3390 volume DASD02: 1113 cyls, 15 trks/cyl, 56832 bytes/track
HHCDU041I 1113 cylinders successfully written to file DASD02
HHCDI001I DASD initialization successfully completed.
2. hercules.cnfの編集
hercules.cnfにdevice 0121としてDASD02を足します。
[hercules@ap01 centos_v47_s390]$ vi hercules.cnf
# 0580    3420    ickdsf.ipl
  0120    3390    DASD01
  0121    3390    DASD02 
3. herculesの起動
herculesを起動します。herculesがDASD02を正しく認識していれば、下図のようにherculesコンソールで確認できます。

4. DASDをオンラインにする。
CentOS for s390にrootでログインし、以下のようにしてdevice番号0121のDASDをオンラインにします。今回の環境では、DASD02は/dev/dasdbとして認識されました。
[root@localhost]# cd /sys/bus/ccw/drivers/dasd-eckd/
[root@localhost dasd-eckd]# ls
0.0.0120  0.0.0121
[root@localhost dasd-eckd]# cd 0.0.0121
[root@localhost 0.0.0121]# ls
alias         cmb_enable  detach_state  discipline  online    uid       vendor
availability  cutype      devtype       erplog      readonly  use_diag
[root@localhost 0.0.0121]# cat online
0
[root@localhost 0.0.0121]# echo 1 > online
[root@localhost 0.0.0121]# ls -ltr
total 0
-r--r--r--  1 root root 4096 Jan 16 13:24 vendor
-rw-r--r--  1 root root 4096 Jan 16 13:24 use_diag
-r--r--r--  1 root root 4096 Jan 16 13:24 uid
-rw-r--r--  1 root root 4096 Jan 16 13:24 readonly
-rw-r--r--  1 root root 4096 Jan 16 13:24 erplog
-r--r--r--  1 root root 4096 Jan 16 13:24 discipline
-r--r--r--  1 root root 4096 Jan 16 13:24 devtype
-r--r--r--  1 root root 4096 Jan 16 13:24 cutype
-rw-r--r--  1 root root 4096 Jan 16 13:24 cmb_enable
-r--r--r--  1 root root 4096 Jan 16 13:24 availability
-r--r--r--  1 root root 4096 Jan 16 13:24 alias
-rw-r--r--  1 root root 4096 Jan 16 13:24 detach_state
-rw-r--r--  1 root root    0 Jan 16 13:24 online
lrwxrwxrwx  1 root root    0 Jan 16 13:24 block -> ../../../../block/dasdb
/dev/dasd以下に dasdbが追加されています。
[root@localhost ~]# ls -l /dev/dasd*
brw-rw----  1 root disk 94, 0 Jan 17 05:16 /dev/dasda
brw-rw----  1 root disk 94, 1 Jan 17 05:16 /dev/dasda1
brw-rw----  1 root disk 94, 2 Jan 17 05:16 /dev/dasda2
brw-rw----  1 root disk 94, 4 Jan 17 05:54 /dev/dasdb
/dev/dasd:
total 0
drwxr-xr-x  2 root root 100 Jan 17 05:16 0.0.0120
drwxr-xr-x  2 root root  60 Jan 17 05:54 0.0.0121
5. DASDをフォーマットし、パーティションを作成する。
DASD02を"dasdfmt"コマンドでフォーマットした後、"fdasd"コマンドでパーティションを作成します。今回は/dev/dasdb1の1パーティションのみ作成しました。
[root@localhost 0.0.0121]# dasdfmt -b 4096 -d cdl -f /dev/dasdb -l DASD02 -p -y

cyl  1113 of  1113 |##################################################| 100%

Finished formatting the device.
Rereading the partition table... ok
[root@localhost 0.0.0121]# fdasd /dev/dasdb
reading volume label: VOL1
reading vtoc        : ok

Command action
   m   print this menu
   p   print the partition table
   n   add a new partition
   d   delete a partition
   v   change volume serial
   t   change partition type
   r   re-create VTOC and delete all partitions
   u   re-create VTOC re-using existing partition sizes
   s   show mapping (partition number - data set name)
   q   quit without saving changes
   w   write table to disk and exit

Command (m for help): p

Disk /dev/dasdb:
    1113 cylinders,
      15 tracks per cylinder,
      12 blocks per track
    4096 bytes  per block
volume label: VOL1, volume identifier: DASD02
maximum partition number: 3

 ------------------------------- tracks -------------------------------
               Device      start      end   length   Id  System
                               2    16694    16693       unused

Command (m for help): n
First track (1 track = 48 KByte) ([2]-16694):
Using default value 2
Last track or +size[c|k|M] (2-[16694]):
Using default value 16694

Command (m for help): p

Disk /dev/dasdb:
    1113 cylinders,
      15 tracks per cylinder,
      12 blocks per track
    4096 bytes  per block
volume label: VOL1, volume identifier: DASD02
maximum partition number: 3

 ------------------------------- tracks -------------------------------
               Device      start      end   length   Id  System
          /dev/dasdb1          2    16694    16693    1  Linux native

Command (m for help): w
writing VTOC...
rereading partition table...
[root@localhost 0.0.0121]# 

6. PV (Physical Volume)の作成とVGの拡張
DASD上のパーティションをVGに所属させるためにPV化し、次に"VolGroup01" VGに所属させてVGを拡張します。
[root@localhost 0.0.0121]# pvcreate /dev/dasdb1 
  Physical volume "/dev/dasdb1" successfully created
[root@localhost 0.0.0121]# vgextend VolGroup01 /dev/dasdb1
  Volume group "VolGroup01" successfully extended
pvscanコマンドで/dev/dasdb1がVG VolGroup01の一部になったことが確認できます。
[root@localhost 0.0.0121]# pvscan 
  PV /dev/dasda2   VG VolGroup01   lvm2 [2.19 GB / 32.00 MB free]
  PV /dev/dasdb1   VG VolGroup01   lvm2 [768.00 MB / 768.00 MB free]
  Total: 2 [2.94 GB] / in use: 2 [2.94 GB] / in no VG: 0 [0   ]
7. LV の拡張とファイルシステムの拡張
ルートファイルシステムが載っているLV("LogVol00")を拡張し、その後ルートファイルシステムを新しいLVのサイズに合わせて拡張します。今回はdasda2の残り32MB+dasdb1の768MBあわせて800MB拡張することにします。
[root@localhost 0.0.0121]# lvextend -L +800MB /dev/VolGroup01/LogVol00
  Extending logical volume LogVol00 to 2.53 GB
  Logical volume LogVol00 successfully resized
pvscanを実行すると、すべてのPE (Physical Extent)を使い切ったことが分かります。
[root@localhost 0.0.0121]# pvscan 
  PV /dev/dasda2   VG VolGroup01   lvm2 [2.19 GB / 0    free]
  PV /dev/dasdb1   VG VolGroup01   lvm2 [768.00 MB / 0    free]
  Total: 2 [2.94 GB] / in use: 2 [2.94 GB] / in no VG: 0 [0   ]
ext2onlineで ルートファイルシステムを拡張します(注:最近のlinuxではresize2fsコマンドでext3ファイルシステムのオンライン拡張を行うようですが、CentOS v4.7 for s390に付属のresize2fsはマウントされているファイルシステムを拡張できないようです。)
[root@localhost 0.0.0121]# ext2online /dev/VolGroup01/LogVol00
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b
dfコマンドでルートファイルシステムの使用状況を確認します。 拡張前は使用率86%だったので、無事ファイルシステムが拡張されたことが分かります。
[root@localhost 0.0.0121]# df -m
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup01-LogVol00
                          2550      1456       966  61% /
/dev/dasda1                 97        16        77  17% /boot
none                       125         0       125   0% /dev/shm

8.次回の起動時のための準備
今回追加したDASDが次回の起動時も自動的に利用可能になるように準備します。まず、/etc/modprobe.confの"options dasd_mod dasd="の行に、",121"を追加します。
[root@localhost 0.0.0121]# cat /etc/modprobe.conf

alias ctc0 ctc
options dasd_mod dasd=120,121
alias scsi_hostadapter zfcp
次に/bootにあるinitrd.imgを再作成します。
[root@localhost 0.0.0121]# cd /boot
[root@localhost boot]# mv initrd-2.6.9-78.0.8.EL.img initrd-2.6.9-78.0.8.EL.img.org
[root@localhost boot]# mkinitrd -v initrd-2.6.9-78.0.8.EL.img 2.6.9-78.0.8.EL
Creating initramfs
Looking for deps of module scsi_mod
Looking for deps of module sd_mod        scsi_mod
Looking for deps of module scsi_mod
Looking for deps of module unknown
Looking for deps of module zfcp  qdio scsi_transport_fc scsi_mod
Looking for deps of module qdio
Looking for deps of module scsi_transport_fc     scsi_mod
Looking for deps of module scsi_mod
Looking for deps of module scsi_mod
...
...
Loading module zfcp
Loading module dm-mod
Loading module dasd_mod with options dasd=120,121
Loading module dasd_eckd_mod
Loading module dasd_fba_mod
Loading module jbd
Loading module ext3
Loading module dm-mirror
Loading module dm-zero
Loading module dm-snapshot
最後に"zipl -V"コマンドを実行します。
[root@localhost boot]# zipl -V
Using config file '/etc/zipl.conf'
Target device information
  Device..........................: 5e:00
  Partition.......................: 5e:01
  Device name.....................: dasda
  Device driver name..............: dasd
  DASD device number..............: 0120
  Type............................: disk partition
  Disk layout.....................: ECKD/compatible disk layout
  Geometry - heads................: 15
  Geometry - sectors..............: 12
  Geometry - cylinders............: 3339
  Geometry - start................: 24
  File system block size..........: 4096
  Physical block size.............: 4096
  Device size in physical blocks..: 25596
Building bootmap '/boot//bootmap'
Building menu 'rh-automatic-menu'
Adding #1: IPL section '2.6.9-78.0.8.EL' (default)
  kernel image......: /boot/vmlinuz-2.6.9-78.0.8.EL at 0x10000
  kernel parmline...: 'root=/dev/VolGroup01/LogVol00' at 0x1000
  initial ramdisk...: /boot/initrd-2.6.9-78.0.8.EL.img at 0x800000
Adding #2: IPL section 'linux'
  kernel image......: /boot/vmlinuz-2.6.9-78.EL at 0x10000
  kernel parmline...: 'root=/dev/VolGroup01/LogVol00' at 0x1000
  initial ramdisk...: /boot/initrd-2.6.9-78.EL.img at 0x800000
Preparing boot device: dasda (0120).
Preparing boot menu
  Interactive prompt......: enabled
  Menu timeout............: 15 seconds
  Default configuration...: '2.6.9-78.0.8.EL'
Syncing disks...
Done.

以上でルートファイルシステムの拡張は終了です。 問題なく起動できるか再起動してみるのがよいと思います。
次回は各種サーバを動かしてみたいと思います。

2010年1月26日火曜日

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

さて引き続きCentOS for s390をいじって行きたいと思います。インストールも無事終わりましたので、なにはともあれアップデートを行います。 アップデートを行う前に、DASDファイルのバックアップを取っておくのもよいです(万が一の時にすぐにインストールの直後の状態に戻せる)。
アップデート自体は、"yum -y update"を実行するのみです(以下は少し端折っています)。
 
[root@localhost ~]# yum -y update
Setting up Update Process
Setting up repositories
update                    100% |=========================|  951 B    00:00
base                      100% |=========================| 1.1 kB    00:00
addons                    100% |=========================|  951 B    00:00
extras                    100% |=========================|  951 B    00:00
Reading repository metadata in from local files
primary.xml.gz            100% |=========================|  93 kB    00:00
update    : ################################################## 256/256
primary.xml.gz            100% |=========================| 543 kB    00:35
base      : ################################################## 1437/1437
primary.xml.gz            100% |=========================|  194 B    00:00
primary.xml.gz            100% |=========================| 1.8 kB    00:00
extras    : ################################################## 4/4
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for util-linux to pack into transaction set.
...
...
---> Downloading header for bash to pack into transaction set.
bash-3.0-19.7.c4.1.s390.r 100% |=========================|  48 kB    00:00
---> Package bash.s390 0:3.0-19.7.c4.1 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 kernel                  s390       2.6.9-78.0.8.EL  update             17 M
 sos                     noarch     1.7-6.6.c4       base              102 k
     replacing  sysreport.noarch 1.3.15-8

Updating:
 Canna                   s390       3.7p3-9.c4       update            7.2 M
 Canna-libs              s390       3.7p3-9.c4       update            449 k
 ...
 vsftpd                  s390       2.0.1-7.c4       update            142 k

Transaction Summary
=============================================================================
Install      2 Package(s)
Update      54 Package(s)
Remove       0 Package(s)
Total download size: 85 M
Downloading Packages:
(1/56): util-linux-2.12a- 100% |=========================| 1.5 MB    00:03
...
(56/56): bash-3.0-19.7.c4 100% |=========================| 1.8 MB    00:10
warning: rpmts_HdrFromFdno: V3 DSA signature: NOKEY, key ID 443e1821
Public key for util-linux-2.12a-24.c4.s390.rpm is not installed
Retrieving GPG key from http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
Importing GPG key 0x443E1821 "CentOS-4 key "
Key imported successfully
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating  : setup                        ##################### [  1/111]
  ...
  ...
Complete!
アップデートが完了したら、再起動します。
# shutdown -h now
Herculesのコンソールで、HHCCP010Iメッセージが出たら、再度IPLします。
...
Shutting down interface ctc0:
   OK  !
Shutting down loopback interface:
   OK  !
Starting killall:
   OK  !
Sending all processes the TERM signal...

Sending all processes the KILL signal...
Saving random seed:
Turning off swap:

Turning off quotas:
Unmounting pipe file systems:

Unmounting file systems:

Halting system...
md: stopping all md devices.
md: md0 switched to read-only mode.
HHCCP042I SYSCONS interface inactive
Power down.
CPU0000: SIGP Stop and store status (09) CPU0000, PARM 00000000: CC 0
HHCCP010I CPU0000 store status completed.
Command ==> IPL 120
CentOS for s390が起動したらrootユーザーで再度loginします。
# ssh 192.168.200.1
[root@ap01 ~]# ssh 192.168.200.1
root@192.168.200.1's password:
Last login: Sat Jan 16 12:38:27 2010 from 192.168.200.2
今後の作業のために一般ユーザーを追加し、一旦ログアウトします。
[root@localhost ~]# useradd -d /home/hoge hoge
[root@localhost ~]# passwd hoge
Changing password for user hoge.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# exit
logout
先ほど追加した一般ユーザーで再度ログインします。
[hercules@ap01 ~]$ ssh -l hoge 192.168.200.1
hoge@192.168.200.1's password:
[hoge@localhost ~]$
次は、デフォルトで起動しているサービスのうち使わないものを停止したいと思います(エミュレータ上でCentOSを動作させているので、無駄なものは極力動かしたくないのです)
[hoge@localhost ~]$ su - 
Password: 
[root@localhost ~]# chkconfig --list
httpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off 
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off
messagebus      0:off   1:off   2:off   3:on    4:on    5:on    6:off
iiim            0:off   1:off   2:on    3:on    4:on    5:on    6:off
psacct          0:off   1:off   2:off   3:off   4:off   5:off   6:off
netdump         0:off   1:off   2:off   3:off   4:off   5:off   6:off
rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
tux             0:off   1:off   2:off   3:off   4:off   5:off   6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
readahead       0:off   1:off   2:off   3:off   4:off   5:on    6:off
auditd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
dc_server       0:off   1:off   2:off   3:off   4:off   5:off   6:off
netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
ipmi            0:off   1:off   2:off   3:off   4:off   5:off   6:off
lvm2-monitor    0:off   1:on    2:on    3:on    4:on    5:on    6:off
kudzu           0:off   1:off   2:off   3:off   4:off   5:off   6:off
mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
xfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
rhnsd           0:off   1:off   2:off   3:on    4:on    5:on    6:off
mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
rpcidmapd       0:off   1:off   2:off   3:on    4:on    5:on    6:off
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
yum             0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
ypbind          0:off   1:off   2:off   3:off   4:off   5:off   6:off
dc_client       0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
portmap         0:off   1:off   2:off   3:on    4:on    5:on    6:off
winbind         0:off   1:off   2:off   3:off   4:off   5:off   6:off
smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
FreeWnn         0:off   1:off   2:off   3:off   4:off   5:off   6:off
canna           0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off
squid           0:off   1:off   2:off   3:off   4:off   5:off   6:off
nscd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off
readahead_early 0:off   1:off   2:off   3:off   4:off   5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
vsftpd          0:off   1:off   2:off   3:off   4:off   5:off   6:off
xinetd based services:
        rsync:  off
        klogin: off
        echo-udp:       off
        eklogin:        off
        gssftp: off
        echo:   off
        chargen-udp:    off
        kshell: off
        time-udp:       off
        chargen:        off
        daytime:        off
        cups-lpd:       off
        daytime-udp:    off
        krb5-telnet:    off
        time:   off

cups/sendmailはこのマシン上では動かしていてもしょうがない気がする(^^;)ので停止し、もう立ち上がらないようにします(ちなみにランレベルはrunlevelコマンドで確認できます)。
[root@localhost ~]# service cups stop
Stopping cups: [  OK  ]
[root@localhost ~]# service sendmail stop
Shutting down sm-client: [  OK  ]
Shutting down sendmail: [  OK  ]
[root@localhost ~]# chkconfig cups off
[root@localhost ~]# chkconfig sendmail 

次回は、(前回も書きましたが)DASDの追加について書きたいと思います。

2010年1月20日水曜日

Fedora11 on s390x

Fedora Projectでもs390xアーキテクチャの検討をしているようです。 Preview版のようですがFedora11インストール済みのHercules用DASDイメージもあるみたいです。 

2010年1月17日日曜日

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

前回の続きです。


9. AnacondaでのCentOS v4.7 インストール
Hercules上で動作しているCentOSインストーラーにsshでログインします(rootユーザーでパスワードはありません)。
[root@ap01 ~]# ssh 192.168.200.1
The authenticity of host '192.168.200.1 (192.168.200.1)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.200.1' (RSA) to the list of known hosts.
Welcome to the Red Hat Linux install environment 1.1 for S/390
"Welcome to the Red Hat Linux install environment 1.1 for S/390"のメッセージの後しばらく待つと、インストールの間に使用したい言語を選択する画面(下図)表示されます。
"Japanese"も選択肢にありますが、選んでも「インストーラーは日本語をサポートしていません」的なメッセージが出てしまうので、大方の人は"English"を選択することになると思います。

インストール時に使用する言語を選択すると、"Install method"を選択する画面に移ります。今回は"HTTP"を選択します。
 

HTTPインストールに使用するリポジトリのサーバー名とパス名を入力します。今回は、理研のサーバー(サーバー名に"riken.ftp.jp", パス名に"/Linux/centos/4.7/os/s390")を使用させていただくことにしました(下図)。
 

"OK"を押すと、以下のような画面が表示され、リポジトリから"stage2.img"を取得しているのが分かります。 もし、「サーバーにアクセスできない」というようなメッセージが表示される場合は、前回までに設定した、IPフォワーディング/マスカレード、DNS関係の設定が正しいか確認します。


その後「Xを起動できなかった」というメッセージが表示されます(下図)。今回は "Use text mode"を選択します。

この後、"Welcome To CentOS 4.7!"と表示されるので"OK"を押下して先に進むと、"Installation Type"を選択する画面に移ります。今回は"Server"を選択します。

 次は、(s390/s390x独特の設定だと思うのですが)DASD関連の設定です。 まず、"FCP Devices"と表示された画面で"Add"を押下すると、以下のようにDASDの設定値を入力する画面がポップアップします。
正直どんな値を入力すればよく分からない(^^;)設定なのですが 、とりあえず"Device number"さえ合っていれば動きそうな感じ(実際動きました)なので、上の図のような感じで入力して"OK"を押下します。 
ポップアップ画面が消えた後、"OK"を押下すると、「パーティションテーブルが読めないからDASDを初期化するがいいか」とたずねてくる(下図)ので、"YES"を選択して、DASDを初期化します(初期化には数分かかると思います)。

 

初期化が終了すると、"Disk Partitioning Setup"という画面が表示されます(下図)。 x86のCentOS等と同様、パーティション/マウントポイント等を設定することができますが、今回は"Auto partition"を選択して、インストーラーに「おまかせ」することにします。

"Auto partition"で設定したパーティションレイアウトは以下のようになりました。LVMが使用されていますね。

DASD関係の設定の後は、ネットワーク関係の設定です。 まず、CTCの設定を行います。 入力すべきは "Point to Point (IP)"の欄だけです(その他の部分は入力済みのはずです)。 今回は"192.168.200.2"を入力します。

次はデフォルトゲートウェイおよびDNSサーバーの設定です。設定が正しければ、"OK"を押下して次に進みます。
 

この後しばらく、x86用のCentOSインストールでも行う設定が続きます。以下のような設定を行いました。
  • ホスト名(前回CentOSインストーラーに設定したものと同じ、"localhost")
  • ファイアウォールの設定(今回は"No firewall"としました)
  • SELinuxの設定(こちらも"Disabled"としました)
  • 各国語サポートの追加("日本語"を追加しました)
  • デフォルト言語の設定("English"としました)
  • タイムゾーンの設定("Asia/Tokyo"としました)
  • rootパスワードの設定
これらを設定し終えると、"Reading package information"というメッセージが表示され、数分(母艦Linuxのインターネット回線の速度や、母艦Linuxの性能にもよります)待たされます。Herculesのコンソール画面で"ESC"キーを押下すると、HerculesがエミュレーションしているCPUの各種レジスタやデバイス等の動作状況(下図)が表示されますので、Herculesが止まっていないか心配な(^^;)方は、この画面を見てみるのもよいかも知れません。

しばらくすると、以下のようなインストールパッケージの選択画面が表示されます。 今回は"Server"を選択していますので、X-window関係のパッケージはデフォルトでは選択されていません。基本的にデフォルトで選択されているものをそのままインストールすることにしましたが、"Printing Support"は外しました(パッケージサイズが結構大きいので)。

 

"OK"を押下すると、パッケージのインストールが始まります。これはかなり時間がかかる(例によって、回線スピードと母艦の性能による)と思いますので、気長に待ちます。

インストールが完了すると、以下のような画面が表示されます。

"Reboot"を押すと、CentOSインストーラーがシャットダウンされ、インストーラーを動作させていたSSH端末も切断されます。Herculesコンソールは以下のようなメッセージを表示してコマンド入力待ち状態となります。


ここでHerculesのコマンドラインから、"IPL 120"と入力してEnterするとインストールが完了したばかりのCentOS v4.7 for s390が起動します。

10. CentOS v4.7 for s390の起動
CentOS v4.7 for s390が起動完了すると、Herculesコンソールは以下のようにログインプロンプトを表示します。

コンソールのコマンドラインを使用してログインすることも可能なのですが(CentOSに渡したい文字列の先頭にピリオドをつける)、非常に使いにくいので、インストール時に行ったように、母艦Linux上でもう一つ端末を立ち上げてSSHでHercules上のCentOSにログインするのがよいと思います。

早速ログインして、"uname -m"を実行してみると・・・。

# [root@localhost ~]# uname -m
s390
おー、ハードウェア名が"s390"になっている!(当たり前ですが、ちょっとうれしいですね)
続いて、Bogomips値を確認してみます。

[root@localhost ~]# dmesg | grep -i bogomips
Calibrating delay loop... 392.39 BogoMIPS (lpj=1961984)
むう、こんなものか・・・ 比較のため母艦の方も確認してみましょう。

[hercules@ap01 ~]$ dmesg | grep -i bogomips
Calibrating delay loop (skipped), value calculated using timer frequency.. 2281.82 BogoMIPS (lpj=1140913)
母艦Linuxのbogomips値に比べて、おおよそ1/5弱の値になっているようですね。ま、こんなものでしょうか。ちなみに、我が家には玄箱HGというNASボックスもあるのですが、そいつのBogomips値は173ぐらいですので、とりあえず玄箱HGよりは速い(!?)という事になりました。 さらにもう一つ付け加えると、実は母艦LinuxもWindows上のVirtual PCで動作しています。つまり、"CentOS(s390) on Hercules on CentOS(x86) on Virtual PC on Windows"という感じで動いています。

とりあえずインストール編は今回で終了です。 次回以降は、各種サーバーアプリケーションの立ち上げや、DASDの追加などについて書きたいと思います。