Webを見ていたら「更新:マイクロソフトの機械学習AI「Tay」、ネットで差別と陰謀論に染まって一日で公開停止(MSのコメント追記)」という話題をみつけました。利用者とのやりとりから反応を学習していく実験をおこなっていたところ不適切な発言をするようになってしまったそうです。さらに別に「人類終了のお知らせ AIロボットがついに「人類を滅亡させる」と発言」という話題も流れていて、将来的には人間と機械の関係がSF映画のような展開になるのか、それともならないのか、意外と身近な状況になってきているようです。
マイクロソフトが応用した機械学習がどのような仕組みなのか専門的なことはわかりません。しかし機械学習の傾向として学習過程で与えられた情報というものがベースとなるはずです。そうでなければ機械学習の意味がないでしょう。たとえそれが意図的に悪意のバイアスがかけて与え続けられたとしても、それを排除して「道徳的な」思考(何が道徳的なのかを、誰が決め、どのように学習させるのかが難しい問題ですが)を学習するのは別の仕組みが必要になるでしょう。
機械学習の理論の原点は、現実の人間が学習する仕組みを基礎としているわけです。諺にも「門前の小僧習わぬ経を読む」とか「朱に交われば赤くなる」があります。学習にあたっては周囲の影響を受けていくものです。話題となった事例では悪い方向に極めてストレートに表れてしまいましたが、現実の人間社会でも起きる可能性のあることでしょう。仮にある人物が周囲の社会から得る情報が反社会的なものばかりであれば、その影響を受けずに成長(学習)するよりも、その影響を強く学習する可能性の方が高くなると思います。
現代社会に流れる情報は多すぎて個々人は極めて一部を得るのが精一杯です。どの情報を選択するのかは個人の能動的な選択の結果のようにも思えますが、自分が志向する情報を受動的に消費していることが実は多いのではないでしょうか。あえて異なる考え方を意識的に取りにいくようにしないと、世界には多様な考え方が存在することは見えないと思います。ただし得られた考え方を受け入れるか拒否するかは、当然ながら個人が選べば良いことです。
日本語だけではなく、英語でも情報を得られるようにしたいと考えています。そうすれば多様な世界にアクセスすることができるでしょう。英語では得られない情報もあるでしょうし、さらに別な言語も学びたいと思います。しかし言語学習が目標なのではなく、日本語だけでは触れられない世界を掴み取りたいと思っています。それにはまずは英語が手っ取り早いようです。
2016-03-30
2016-03-19
configureが生成するCプログラムの抽出
gzip-1.4をOpenVMS alphaでコンパイルしてみるためにはlib/config.hが必要です。このファイルはconfigureによって作成されますが、OpenVMSではconfigureが動かないので手作業で作らなければなりません。configureは自動化されているとはいえ、内部ではCプログラムを生成し、コンパイルをおこない、実行させた結果をみて設定値を決めています。configureがどのようなCプログラムを生成しようとしているのかが分かれば、OpenVMS alphaの設定値を決める参考になるでしょう。
configureを変更して、生成しようとしているCプログラムと、そのコンパイル方法を表示させるようにしてみました。
この変更を加えたconfigureを実行すると、次のように#+++#から#---#の間に生成しようとしているソースが表示されます。
configureの結果を処理してみたところ、108個のCプログラムが生成されました。そのうちac_fn_c_try_compileによるものは105個、ac_fn_c_try_cppによるものは5個でした。
configureを変更して、生成しようとしているCプログラムと、そのコンパイル方法を表示させるようにしてみました。
--- configure.org 2016-03-16 16:07:02.148767000 +0900
+++ configure 2016-03-16 16:13:11.852319000 +0900
@@ -1992,6 +1992,9 @@
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
rm -f conftest.$ac_objext
+ echo "#+++#ac_fn_c_try_compile#$as_lineno#$(eval $(echo $ac_compile | sed -e 's/>&5//' -e 's/.*/echo &/'))"
+ cat conftest.c
+ echo "#---#"
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
@@ -2029,6 +2032,9 @@
ac_fn_c_try_cpp ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ echo "#+++#ac_fn_c_try_cpp#$as_lineno#$(eval $(echo $ac_compile | sed -e 's/>&5//' -e 's/.*/echo &/'))"
+ cat conftest.c
+ echo "#---#"
if { { ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
この変更を加えたconfigureを実行すると、次のように#+++#から#---#の間に生成しようとしているソースが表示されます。
checking for suffix of object files... oここからCプログラムを抜き出してOpenVMS alpha上でコンパイルしてみれば良いのですが、手作業で切り出すのは大変なので簡単なツールを作りました。今まではsh、sed、awkなどを組み合わせて作っていましたが、今回はpythonを使う事にしました。pythonは気にいっている言語で、今後も多用したいと思っています。提供されているライブラリが便利なことに驚き、とても気持ちよく作成できました。
checking whether we are using the GNU C compiler... #+++#ac_fn_c_try_compile#4267#gcc -c conftest.c
/* confdefs.h */
#define PACKAGE_NAME "gzip"
#define PACKAGE_TARNAME "gzip"
#define PACKAGE_VERSION "1.4"
#define PACKAGE_STRING "gzip 1.4"
#define PACKAGE_BUGREPORT "bug-gzip@gnu.org"
#define PACKAGE_URL ""
#define PACKAGE "gzip"
#define VERSION "1.4"
/* end confdefs.h. */
int
main ()
{
#ifndef __GNUC__
choke me
#endif
;
return 0;
}
#---#
yes
checking whether gcc accepts -g... #+++#ac_fn_c_try_compile#4305#gcc -c -g conftest.c
- OptionParseライブラリを使えば、コマンドラインのオプションを解析するだけでなく、ヘルプ・メッセージや、バージョン表示オプションなども出せるようになるので、便利でした。
- fileinputライブラリを使うと、処理対象となる入力ファイルがコマンドラインで指定されても、標準入力から与えられても、気にせずに処理できるので、楽でした。
1 #! /usr/local/bin/python
2 # -*- coding: utf-8 -*-
3 # genconftest.py -- configureの実行ログファイルからconftest.cを抽出
4 def main():
5 import fileinput
6 import os.path
7 import sys
8 from optparse import OptionParser
9
10 parser = OptionParser(
11 usage="usage: %prog [options] [logfile]",
12 version="$Id: genconftest.py,v 1.5 2016-03-18 11:54:12 furusawa Exp $")
13 parser.set_defaults(verbose=0)
14 parser.add_option('-v', '--verbose',
15 action='count', dest='verbose',
16 help='make lots of noise')
17 parser.add_option('-q', '--quiet',
18 action='store_const', dest='verbose', const=0,
19 help="be vewwy quiet (I'm hunting wabbits)")
20 parser.add_option('-d', '--directory',
21 dest='dirname',
22 default="conftest",
23 help="Output files into the directory")
24 (opts, args) = parser.parse_args()
25
26 if len(args) >= 2:
27 sys.exit("Too many logfiles")
28
29 if os.path.isdir(opts.dirname) == False:
30 sys.exit("%s:Directory not found" % opts.dirname)
31
32 if opts.verbose >= 2:
33 sys.stderr.write("opts.verbose:%d\n" % opts.verbose)
34 sys.stderr.write("opts.dirname:%s\n" % opts.dirname)
35
36 writing = False
37 for line in fileinput.input(args):
38 if fileinput.isfirstline() and opts.verbose >= 2:
39 sys.stderr.write("read from:%s\n" % fileinput.filename())
40
41 if '#+++#' in line:
42 writing = True
43 l = ['/*\n', line, '*/\n']
44 x = line.split("#")
45 filename = "%s/conftest_%s_%d.c" % (opts.dirname,
46 x[3],
47 fileinput.lineno())
48 continue
49 if '#---#' in line:
50 if opts.verbose >= 1:
51 sys.stderr.write("write to:%s\n" % filename)
52 f = open(filename, 'w')
53 f.writelines(l)
54 f.close()
55 writing = False
56 if writing:
57 l += line
58
59 if __name__ == '__main__':
60 main()
61 # $Id: genconftest.py,v 1.5 2016-03-18 11:54:12 furusawa Exp $
configureの結果を処理してみたところ、108個のCプログラムが生成されました。そのうちac_fn_c_try_compileによるものは105個、ac_fn_c_try_cppによるものは5個でした。
2016-03-14
「順調な運転をしています」?
朝テレビでNHKを視ていると鉄道の運行状況を伝えているのを目にします。それを聞くと「鉄道は順調な運転をしています」と言っている場合がありますが、若干違和感を感じるのです。「順調に運転しています」ではいけないのでしょうか。担当者が変わっても、表現が変わらないところを見ると、担当者の個性の問題ではなく、何か基準があって選ばれた表現を用いているように見受けられます。
「運転」というのは名詞ですが、「する」をつければサ変動詞になります。「順調」というのは形容動詞ですから、連用形なら「順調に」、連体形なら「順調な」と活用します。だから「運転をする」には連体形が接続して「順調な運転をする」となりますし、「運転する」には連用形が結びついて「順調に運転する」となるのが文法的な説明です。
ここは考え方の問題になるかもしれませんが、テレビで耳にする表現は「(順調な運転)をする」のように「順調な運転」という部分を一塊として捉えて「何々をする」という構文にあてはめていると考えられると思います。一方で「順調に(運転する)」という表現は「何々する」という動作を「順調」が形容していると考えられるでしょう。
テレビの鉄道運行情報の意義というのは、朝の通勤に備えて事前に情報を得ておくところにあるでしょう。鉄道が「運転している」のは当然の前提のはずで、その上で「遅れている」のか「順調」なのかという点に視聴者の意識は向いていると思います。表現として「順調に運転しています」の方が、知りたいことに意識を集中させるのではないでしょうか。
現行のテレビで用いられているように「何々をする」に「順調な運転」を入れた表現では、意識する対象が「順調な運転」か「遅れている運転」なのかということになり、フォーカスがぼけると思います。
ここで問題にした表現以外でも「何々をする」をベースとする事例が多い気がしています。もしかすると何か内規のようなものがあって、表現をコントロールしているのではないかと想像しています。
「運転」というのは名詞ですが、「する」をつければサ変動詞になります。「順調」というのは形容動詞ですから、連用形なら「順調に」、連体形なら「順調な」と活用します。だから「運転をする」には連体形が接続して「順調な運転をする」となりますし、「運転する」には連用形が結びついて「順調に運転する」となるのが文法的な説明です。
ここは考え方の問題になるかもしれませんが、テレビで耳にする表現は「(順調な運転)をする」のように「順調な運転」という部分を一塊として捉えて「何々をする」という構文にあてはめていると考えられると思います。一方で「順調に(運転する)」という表現は「何々する」という動作を「順調」が形容していると考えられるでしょう。
テレビの鉄道運行情報の意義というのは、朝の通勤に備えて事前に情報を得ておくところにあるでしょう。鉄道が「運転している」のは当然の前提のはずで、その上で「遅れている」のか「順調」なのかという点に視聴者の意識は向いていると思います。表現として「順調に運転しています」の方が、知りたいことに意識を集中させるのではないでしょうか。
現行のテレビで用いられているように「何々をする」に「順調な運転」を入れた表現では、意識する対象が「順調な運転」か「遅れている運転」なのかということになり、フォーカスがぼけると思います。
ここで問題にした表現以外でも「何々をする」をベースとする事例が多い気がしています。もしかすると何か内規のようなものがあって、表現をコントロールしているのではないかと想像しています。
2016-03-12
configureで生成されたconfig.hの修正
gzip 1.4のlib/config.hを確認してみたところ、configureで自動的に調整された項目が300弱ほどありました。もっと少なければOpenVMS用に手作業で闇雲に変更してもなんとかなるかもしれませんが、流石に多すぎます。何か統一的な方法に基づいて変更をおこなわないと、後々大事になりそうな気がします。
このファイルはconfigureが生成したものですから、OpenVMS上でconfigureが動けば言うこともありませんが、それは無いものねだりと言うべきでしょう。Microsoft Windows上でCygwin環境を動かすように、OpenVMS上でposix環境を構築すれば、見かけ上ではconfigureが動作するかもしれませんが、できればネイティブのDCL上で「configure的な動作」をして貰いたいところです。
configureがconfig.hを生成するにあたり、個々の設定値を決定するために内部でおこなっている処理がわかれば、同じようなことを手作業で確認することで、対処できるのではないかと素朴に考えています。configure自体はシェルスクリプトですから、簡単ではないかもしれませんが、可能性はあると考えています。
このファイルはconfigureが生成したものですから、OpenVMS上でconfigureが動けば言うこともありませんが、それは無いものねだりと言うべきでしょう。Microsoft Windows上でCygwin環境を動かすように、OpenVMS上でposix環境を構築すれば、見かけ上ではconfigureが動作するかもしれませんが、できればネイティブのDCL上で「configure的な動作」をして貰いたいところです。
configureがconfig.hを生成するにあたり、個々の設定値を決定するために内部でおこなっている処理がわかれば、同じようなことを手作業で確認することで、対処できるのではないかと素朴に考えています。configure自体はシェルスクリプトですから、簡単ではないかもしれませんが、可能性はあると考えています。
2016-03-10
gzip 1.4のファイルを展開してコンパイルしようとして躓く
OpenVMS alphaのディスクをFreeBSD/i386からNFSでマウントすることができるようになったので、gzip-1.4.tar.gzをFreeBSD/i386側にあるtar+gzipを使いOpenVMS alpha上のディスクに展開してみました。ただしNFSでエクスポートする設定に「/options=(name_conversion)」を指定しないと、OpenVMSにおけるファイル名規約のため展開できませんでした。展開すると以下に示しようなファイルが現れました。「name_conversion」をつけているのでOpenVMS側から見ると余分な記号などがついています。
「Gzip 1.5 for VMS (1.5b)」 で提供されるtarballではgzip-1_5b_vms/vms/config.h_vmsが用意されています。その先頭には次のようなコメントが入っています。
gzip-1.4.tar.gzを展開するとVMSディレクトリの下にファイルが用意されているので、直ちにコンパイルできるものと考えていましたが、そういう訳ではなかったようです。まずはconfig.hを生成してみようと思います。OpenVMSではconfigureが動かないので、今回はFreeBSD/i386を使おうと思います。将来的にはconfigureがOpenVMSでも動くと良いと思いますが、既に実現されているのでしょうか。
Directory DISK$USER:[FURUSAWA.GZIP-1$5N4]まず[.GZIP-1$5N4.VMS]$R$EADME.VMSにある「a) MAKEZIP.COM」の記述に従ってコンパイルしようとしたらエラーになりました。
$AUTHORS.;1 $C$HANGE$L$OG-2007.;1 $C$HANGE$L$OG.;1
$COPYING.;1 $GNU$MAKEFILE.;1 $INSTALL.;1 $M$AKEFILE.AM;1
(以下略)
$ @[.vms]makegzipconfig.hが見つからないというエラーですが、gzipに限らず普通ならconfigureを走らせることで作られるファイルです。
#include <config.h>
.^
%CC-F-NOINCLFILE, Cannot find file <config.h> specified in #include directive.
at line number 57 in file DISK$USER:[FURUSAWA.GZIP-1$5N4]GZIP.C;1
「Gzip 1.5 for VMS (1.5b)」 で提供されるtarballではgzip-1_5b_vms/vms/config.h_vmsが用意されています。その先頭には次のようなコメントが入っています。
/* config.h_vms 1.5. Generated manually (from Tru64). 2012-08-28 SMS. */つまりOpenVMS以外(この場合はTru64)でconfigureを走らせてconfig.hを生成し、その後に手作業で修正したということなのでしょう。
/* lib/config.h. Generated from config.hin by configure. */
/* lib/config.hin. Generated from configure.ac by autoheader. */
gzip-1.4.tar.gzを展開するとVMSディレクトリの下にファイルが用意されているので、直ちにコンパイルできるものと考えていましたが、そういう訳ではなかったようです。まずはconfig.hを生成してみようと思います。OpenVMSではconfigureが動かないので、今回はFreeBSD/i386を使おうと思います。将来的にはconfigureがOpenVMSでも動くと良いと思いますが、既に実現されているのでしょうか。
2016-03-08
OpenVMS alphaのNFSサーバに接続してファイルを転送
OpenVMS alphaのNFSサーバに接続してファイルを転送するためには、TCP/IP Services for OpenVMSのNFSサーバ機能を有効にして、設定を幾つか済ませておかなければなりません。
NFSで公開するディレクトリをadd exportで定義します。ここで「add export PWS500$DKA100:[USER]」のような指定が出来ないので、予めmapで定義しておかなければなりません。ただしmapで定義した内容は再起動すると消えてしまうので、永続的に指定するためにはset configuration mapも指定しておく必要があります。
NFSマウントを解除する時に「Program/version mismatch」というメッセージが出ますが、マウントは外れています。
NFSで公開するディレクトリをadd exportで定義します。ここで「add export PWS500$DKA100:[USER]」のような指定が出来ないので、予めmapで定義しておかなければなりません。ただしmapで定義した内容は再起動すると消えてしまうので、永続的に指定するためにはset configuration mapも指定しておく必要があります。
TCPIP> map "/dka100" pws500$dka100:さらにFreeBSD/i386側からNFS接続してくるユーザをOpenVMS alpha上のユーザと対応づけておく必要があります。ここで注意が必要だったのは、uid=0すなわちrootアカウントについても対応させておく必要があったことでした。FreeBSD/i386でmountコマンドを用いるときにはrootでおこないますが、その時に対応付けがないとマウントできません。オペレーションコンソールに「%TCPIP-W-NFS_NOCMAP, cannot find client record in proxy database (TCPIP$PROXY)」と「-TCPIP-S-NFS_CLIENT, uid=0 gid=0 host_name = 以下略」のような出力が出てきてしまいます。FreeBSDにおけるrootはOpenVMSのSYSTEMに相当するわけですが、proxyでSYSTEMに対応付けるのはセキュリティの問題になりそうな気がして抵抗を感じます。そこでNFSサーバを有効にした時に自動作成されるアカウントTCPIP$NFSを使うことにしました。
TCPIP> sh map
Dynamic Filesystem Map
Pathname Logical File System
/dka100 PWS500$DKA100:
TCPIP> add export "/dka100/user" /host=*
TCPIP> sh export
File System Host name
/dka100/user *
TCPIP> sh proxyNFSサーバの状態はshow nfsやshow portmapperで確認できます。NFSサーバに接続が無い状況では以下のようになっています。
VMS User_name Type User_ID Group_ID Host_name
FURUSAWA ON 1001 1001 *
TCPIP$NFS ON 0 0 *
TCPIP> sh nfsFreeBSD/i386側からNFSマウントする時に注意が必要なのはmntudpオプションをつけることです。
%TCPIP-E-NONFS, NFS server is not active
-SYSTEM-W-NONEXPR, nonexistent process
TCPIP> sh portm
Program Number Version Protocol Port-number Process Service-name
---------------------- ------- ---------- ----------- -------- ------------
000186A0 ( 100000) 2 TCP 111 00000215 PORTMAPPER
000186A0 ( 100000) 2 UDP 111 00000215 PORTMAPPER
root@kazumi:~ # mount -t nfs 192.168.1.161:/dka100/user /mntFreeBSD/i386側からNFSマウントしたOpenVMS alphaのディスクを見ると、OSの違いが顕著に表れます。マウント時のオプションで変更できることもありますが、注意は必要です。
[tcp] 192.168.1.161:/dka100/user: RPCPROG_NFS: RPC: Program not registered
^C
root@kazumi:~ # mount -o mntudp -t nfs 192.168.1.161:/dka100/user /mnt
furusawa% cp a.c /mnt/furusawa/a.c.5NFSを経由するとRecord formatが「Variable length」から「Stream_LF」に変わるようです。
furusawa% ls -l /mnt/furusawa/a.c*
-rwxr-x--- 1 furusawa furusawa 94 Oct 15 10:02 /mnt/furusawa/a.c.1
-rwxr-x--- 1 furusawa furusawa 94 Mar 8 09:49 /mnt/furusawa/a.c.2
-rwxr-x--- 1 furusawa furusawa 94 Mar 8 10:12 /mnt/furusawa/a.c.3
-rwxr-x--- 1 furusawa furusawa 84 Mar 8 11:13 /mnt/furusawa/a.c.4
-rw-r--r-- 1 furusawa furusawa 84 Mar 8 11:15 /mnt/furusawa/a.c.5
$ dir/full a.c;1,;5
Directory DISK$USER:[FURUSAWA]
A.C;1 File ID: (3050,6,0)
Size: 1/4 Owner: [FURUSAWA]
Created: 15-OCT-2015 10:02:50.88
Revised: 15-OCT-2015 10:02:50.95 (1)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 4, Extend: 0, Global buffer count: 0
No version limit
Record format: Variable length, maximum 0 bytes, longest 31 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Client attributes: None
A.C;5 File ID: (3762,1,0)
Size: 1/8 Owner: [FURUSAWA]
Created: 8-MAR-2016 11:15:09.92
Revised: 8-MAR-2016 11:15:39.73 (0)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 8, Extend: 0, Global buffer count: 0
No version limit
Record format: Stream_LF, maximum 0 bytes, longest 32767 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWD, Owner:RWD, Group:R, World:R
Access Cntrl List: None
Client attributes: None
Total of 2 files, 2/12 blocks.
NFSマウントを解除する時に「Program/version mismatch」というメッセージが出ますが、マウントは外れています。
root@kazumi:~ # umount /mnt
umount: 192.168.1.161: RPCMNT_UMOUNT: RPC: Program/version mismatch; low version = 1, high version = 1
FreeBSD/i386のNFSサーバに接続してファイルを転送
FreeBSD/i386のNFSサーバに接続してファイルを転送するためには、TCP/IP Services for OpenVMSのNFSクライアント機能が有効になっている必要があります。
$ tcpip mount dnfs1: /host=192.168.1.221 /path="/usr/local"NFSでFreeBSD/i386上のファイルをマウントしたとしても、OpenVMS上のファイルシステムのように見えている訳なのでOpenVMSの流儀でファイルを転送しなければなりません。
%TCPIP$DNFSMOUNT-S-MOUNTED, /usr/local mounted on _DNFS1:[000000]
$ tcpip show mount
_DNFS1:[000000] mounted
192.168.1.221:/usr/local
$ dir dnfs1:[home.furusawa.tmp]a.cNFSマウントしたディスクから転送されたファイルは、ローカルディスク上のファイルとは多少異なるファイル属性を持ちます。Record formatが「Variable length」から「Stream_LF」に変わっています。これがどのような意味を持つのか不詳なので、マニュアルで確認しておきたいと思います。
Directory DNFS1:[HOME.FURUSAWA.TMP]
A.C;1
Total of 1 file.
$ copy dnfs1:[home.furusawa.tmp]a.c []/log
%COPY-S-COPIED, DNFS1:[HOME.FURUSAWA.TMP]A.C;1 copied to DISK$USER:[FURUSAWA]A.C
;4 (1 block)
$ dir/full a.c;1,;4
Directory DISK$USER:[FURUSAWA]
A.C;1 File ID: (3050,6,0)
Size: 1/4 Owner: [FURUSAWA]
Created: 15-OCT-2015 10:02:50.88
Revised: 15-OCT-2015 10:02:50.95 (1)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 4, Extend: 0, Global buffer count: 0
No version limit
Record format: Variable length, maximum 0 bytes, longest 31 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Client attributes: None
A.C;4 File ID: (3758,11056,0)
Size: 1/4 Owner: [FURUSAWA]
Created: 8-MAR-2016 09:54:53.73
Revised: 8-MAR-2016 10:28:20.84 (1)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 4, Extend: 0, Global buffer count: 0
No version limit
Record format: Stream_LF, maximum 0 bytes, longest 0 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Client attributes: None
Total of 2 files, 2/8 blocks.
FreeBSD/i386のFTPクライアントでファイルを転送
FreeBSD/i386上のFTPクライアントを用いてOpenVMS alphaにファイルを転送しようとする場合には、TCP/IP Services for OpenVMSでFTPサーバ機能を有効にする必要があります。
furusawa% ftp -N /dev/null 192.168.1.161FTPで転送したファイルはOpenVMSのFTPサーバがディスク上にファイルとして書き込むので、OpenVMS上のエディタでファイルを作成したものと同じファイル属性を持つことになります。
Connected to 192.168.1.161.
220 192.168.1.161 FTP Server (Version 5.0) Ready.
Name (pws500ov:furusawa):
331 Username furusawa requires a Password
Password:
230 User logged in.
Remote system type is VMS.
ftp> asc
200 TYPE set to ASCII.
ftp> put a.c
local: a.c remote: a.c
227 Entering Passive Mode (192,168,1,161,4,4)
150 Opening data connection for DISK$USER:[FURUSAWA]a.c; (192.168.1.221,28115)
100% |***********************************| 90 201.12 KiB/s --:-- ETA
226 Transfer complete.
90 bytes sent in 00:00 (0.88 KiB/s)
ftp> bye
221 Goodbye.
$ dir/ful a.c;1,;3
Directory DISK$USER:[FURUSAWA]
A.C;1 File ID: (3050,6,0)
Size: 1/4 Owner: [FURUSAWA]
Created: 15-OCT-2015 10:02:50.88
Revised: 15-OCT-2015 10:02:50.95 (1)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 4, Extend: 0, Global buffer count: 0
No version limit
Record format: Variable length, maximum 0 bytes, longest 31 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Client attributes: None
A.C;3 File ID: (3757,11057,0)
Size: 1/4 Owner: [FURUSAWA]
Created: 8-MAR-2016 10:12:49.89
Revised: 8-MAR-2016 10:12:49.96 (1)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 4, Extend: 0, Global buffer count: 0
No version limit
Record format: Variable length, maximum 0 bytes, longest 31 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Client attributes: None
Total of 2 files, 2/8 blocks.
OpenVMS alphaのFTPクライアントでファイルを取得
OpenVMS alpha上のFTPクライアントを用いてFreeBSD/i386上にあるファイルを取得しようとする場合には、TCP/IP Services for OpenVMSのFTPクライアント機能が有効になっていれば良いだけなので、設定が簡単です。
FTPを使ってファイルを転送する場合OSがOpenVMSであることをあまり意識しません。
$ tcpip show version
DIGITAL TCP/IP Services for OpenVMS Alpha Version V5.0
on a Digital Personal WorkStation running OpenVMS V7.2
FTPを使ってファイルを転送する場合OSがOpenVMSであることをあまり意識しません。
$ ftp 192.168.1.221FTPで受け取ったファイルはOpenVMSのFTPクライアントがディスク上にファイルとして書き込むので、OpenVMS上のエディタでファイルを作成したものと同じファイル属性を持つことになります。
220 192.168.1.221 FTP server (Version 6.00LS) ready.
Connected to 192.168.1.221.
Name (192.168.1.221:furusawa):
331 Password required for furusawa.
Password:
230 User furusawa logged in.
FTP> cd tmp
250 CWD command successful.
FTP> asc
200 Type set to A.
FTP> get a.c
200 PORT command successful.
150 Opening ASCII mode data connection for 'a.c' (84 bytes).
226 Transfer complete.
local: DISK$USER:[FURUSAWA]A.C;2 remote: a.c
84 bytes received in 00:00:00.01 seconds (5.46 Kbytes/s)
FTP> bye
221 Goodbye.
$ dir/ful a.c;*
Directory DISK$USER:[FURUSAWA]
A.C;2 File ID: (3627,6,0)
Size: 1/4 Owner: [FURUSAWA]
Created: 8-MAR-2016 09:49:27.24
Revised: 8-MAR-2016 09:49:27.30 (1)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 4, Extend: 0, Global buffer count: 0
No version limit
Record format: Variable length, maximum 0 bytes, longest 31 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Client attributes: None
A.C;1 File ID: (3050,6,0)
Size: 1/4 Owner: [FURUSAWA]
Created: 15-OCT-2015 10:02:50.88
Revised: 15-OCT-2015 10:02:50.95 (1)
Expires: <None specified>
Backup: <No backup recorded>
Effective: <None specified>
Recording: <None specified>
File organization: Sequential
Shelved state: Online
Caching attribute: Writethrough
File attributes: Allocation: 4, Extend: 0, Global buffer count: 0
No version limit
Record format: Variable length, maximum 0 bytes, longest 31 bytes
Record attributes: Carriage return carriage control
RMS attributes: None
Journaling enabled: None
File protection: System:RWED, Owner:RWED, Group:RE, World:
Access Cntrl List: None
Client attributes: None
Total of 2 files, 2/8 blocks.
OpenVMS alphaとFreeBSD/i386との間のファイル交換
OpenVMSにgzipを移植するにあたり、gzip-1.4.tar.gzを展開して出てくるファイルを如何にしてOpenVMS上に持ってくれば良いのかが課題になります。一般論としてはOpenVMS上のgzipやtarを使って展開すれば良いわけですが、そのgzipやtarを移植しようとしている訳ですから、過渡期としてのブートストラップ対応が必要になります。いろいろな方法が考えられるかと思いますが、ここではFreeBSD/i386で展開させて、出てきたファイルをOpenVMS alphaにコピーすることにします。
このファイル転送をおこなうために、FTPを使うか、NFSを使うか考える必要があります。さらにOpenVMS alphaとFreeBSD/i386のいずれをサーバとするかを考える必要もあります。これらの組み合わせは4通りになります。
上述した4通りを試してみて違いを比較しようと思います。
このファイル転送をおこなうために、FTPを使うか、NFSを使うか考える必要があります。さらにOpenVMS alphaとFreeBSD/i386のいずれをサーバとするかを考える必要もあります。これらの組み合わせは4通りになります。
- OpenVMS alphaをFTPサーバとし、FreeBSD/i386のFTPクライアントからファイルを送りこむ。
- FreeBSD/i386をFTPサーバとし、OpenVMS alphaのFTPクライアントでファイルを受け取る。
- OpenVMS alphaをNFSサーバとし、FreeBSD/i386をNFSクライアントとして接続しファイルを送りこむ。
- FreeBSD/i386をNFSサーバとし、OpenVMS alphaをNFSクライアントとして接続しファイルを受け取る。
上述した4通りを試してみて違いを比較しようと思います。
2016-03-07
メモリを差し替えて問題解決か
Personal Workstation 500auの調子が良くないので、メモリを差し替えてみました。この本体は随分前にオークションで入手したものですし、これ以外にもジャンクで入手したAlphaシリーズ用のメモリを持っています。Alphaマシンなんだから使えればなんでも良いじゃないかと思っていたのですが、念のために状況整理兼ねて調査してみました。
Alpha用の次のようなメモリを保有しています。
ちょっと不思議だったのは、5024343-01 B01と5024328-02 A01がメモリスロットに入らなかったことです。もう少し力を加えれば入りそうなのですが、基盤を壊しそうなので止めておきました。
Alpha用の次のようなメモリを保有しています。
- E133-256M (I-O DATA 256M DIMM PC133)
- MH16S72AMD-10 (三菱 128M DIMM PC66) PC168AXAの刻印あり
- 5025091-01 B01 (DEC 128M DIMM)
- 5024343-01 B01 (DEC 64M DIMM)
- 5025091-01 C01 (DEC 64M DIMM)
- 5024828-01 A01 (DEC 64M DIMM)
- 5024328-02 A01 (DEC 32M DIMM)
Digital Personal WorkStation 500au Console V6.9-7この状態でOpenVMSを起動して一晩放置してみましたがハングアップしませんでした。調査前は10分もしないうちにハングしていたので、ひとまず解決したようです。
built on Oct 30 1998 at 14:10:45
>>>sh mem
Memory Size = 1024Mb
Bank Size/Sets Base Addr
------ ---------- ---------
0 512Mb 00000000
1 256Mb 20000000
2 256Mb 30000000
BCache Size = 2Mb
Tested Memory = 1024Mbytes
ちょっと不思議だったのは、5024343-01 B01と5024328-02 A01がメモリスロットに入らなかったことです。もう少し力を加えれば入りそうなのですが、基盤を壊しそうなので止めておきました。
2016-03-04
電解コンデンサに問題はなさそうに見える
PWS500auのマザーボードに実装されている電解コンデンサの状態を確認するため、筐体を開けて調べてみました。
マザーボード上には電解コンデンサが2個ありましたが、どちらも綺麗で異常があるような気配が感じられません。
少しでも異常が感じられるようであれば交換することを考えていたのですが、その必要性はなさそうです。
しかし状況は良くないので、次にメモリ不良の可能性を考えてみます。PWS500auはDIMM2枚で構成され、3組まで増設できます。上に示した写真のように、2組を使っています。これ以外の手持ちも含めて、不良メモリと正常メモリが見極められるか、調べてみようと思います。
マザーボード上には電解コンデンサが2個ありましたが、どちらも綺麗で異常があるような気配が感じられません。
しかし状況は良くないので、次にメモリ不良の可能性を考えてみます。PWS500auはDIMM2枚で構成され、3組まで増設できます。上に示した写真のように、2組を使っています。これ以外の手持ちも含めて、不良メモリと正常メモリが見極められるか、調べてみようと思います。
2016-03-03
トラブルの原因は電解コンデンサの劣化なのだろうか
Personal Worlstation 500auの動作が思わしくない状態が続いています。何処が悪いのか絞り込めていません。把握している現象は次のとおりです。
旧いマシンでは電解コンデンサの劣化に起因する障害があるようで、Webから多くの情報が得られます。検索して見つかった情報の幾つかを置いておきます。
電解コンデンサが劣化すると、液漏れを起こしたり、膨張したりするようなので、目視で確認できるみたいです。しかし疑問なのは、目視しても異常が無くても、電解コンデンサというものは経年劣化による「容量抜け」が起こる物なのだろうかという事です。
近いうちに筐体を開けて状況を確認してみようと思います。もし電解コンデンサの劣化が見受けられるようなら、交換した方が良いのかもしれません。もし劣化が目視で確認できなかったら、それでも交換しておいた方が良いのか迷うところです。
劣化が確認できなくても、駄目元で、ひとまず交換してみるのが良いのかもしれません。万が一それで問題が解決してくれれば幸いというところでしょう。
- 電源投入後の 自己診断に引っかかることはありません。
- インストールしてあるOpenVMS alphaが起動し、ログインすることができます。
- 何かのアカウントでログインして操作していると、10分もしないうちに、突然入出力がきかなくなります。この時は他のマシンからpingの応答も無くなっています。シリアルコンソールでも反応がないので、ネットワーク上の問題ではないだろうと考えています。
- 電源を落として、直後に電源を入れても、自己診断すら始まりません。しかし、しばらく間をおいてから電源を入れれば、CCLプロンプトまで辿りつきますし、OSもブートします。
旧いマシンでは電解コンデンサの劣化に起因する障害があるようで、Webから多くの情報が得られます。検索して見つかった情報の幾つかを置いておきます。
電解コンデンサが劣化すると、液漏れを起こしたり、膨張したりするようなので、目視で確認できるみたいです。しかし疑問なのは、目視しても異常が無くても、電解コンデンサというものは経年劣化による「容量抜け」が起こる物なのだろうかという事です。
近いうちに筐体を開けて状況を確認してみようと思います。もし電解コンデンサの劣化が見受けられるようなら、交換した方が良いのかもしれません。もし劣化が目視で確認できなかったら、それでも交換しておいた方が良いのか迷うところです。
劣化が確認できなくても、駄目元で、ひとまず交換してみるのが良いのかもしれません。万が一それで問題が解決してくれれば幸いというところでしょう。
登録:
投稿 (Atom)