-----AIX-FAQ V3.30j-----

これは1994/07/12付けのAIX-FAQ Ver3.30を有志が翻訳したのです。 RS6000ユーザーMLで松原@日本 IBM 東海 SEさんが 発起人となりました。 訳したメンバーを挙げておきます。 なお本文中の内容およびプログラムやシェルスクリプトについては、 作者/訳者共に一切の保証は致しません。 あらかじめ御了承下さい。
  • 1.000: AIXオペレーティング・システムっていったい何?
  • 1.001: Unix も AIX も知らないんだけど、どこで情報を探せばいいの?
  • 1.002: Object Database とは何?
  • 1.003: うるさいエラーメッセージが出ないようにするには?
  • 1.004: 私のAIXや他の製品のリリースは何?
  • 1.100: なんでSMIT を勉強しなくちゃいけないのか?
  • 1.101: smit で走っている男性を消すにはどうするか?
  • 1.102: 他のマシンから、/etc/passwd と /etc/group ファイルを持ってくるにはどうしたらいいの?
  • 1.103: utmpのおそうじ, who コマンド、それにアカウンティングの問題
  • 1.104: root ファイルシステムに fsck をかけるには?
  • 1.105: /usr をアンマウントして fsck をかけるには?
  • 1.106: /usr を小さくするには?
  • 1.107: ファイルシステムを 2GB より大きくするには?
  • 1.108: ユーザーあたりの最大プロセス数のようなシステムのパラメータを参照、変更するには?
  • 1.109: hd6上のデフォルトのページング・スペースを縮めるには?
  • 1.110: swapper が大量にページングスペースを使ってるみたいだけど、何故?
  • 1.111: ページングスペースはどれぐらい必要なの?
  • 1.112: フロッピー・ディスクをファイルシステムとしてマウントするには?
  • 1.113: コミットしてしまった lpp を削除するには?
  • 1.114: "install update" をしたのちに(訳注:ディスク)容量を回復するにはどうするか?
  • 1.115: AIXではログファイルはどこにある?
  • 1.116: ftpがファイルへアクセスする情報をどのようにしてログできるか。
  • 1.117: iノード番号からファイルを探すには?
  • 1.118: ポストスクリプト(訳注:プリンタ)のアカウンティングをセットアップするには?
  • 1.119: 3.2のブートディスケットはどのようにして作るのですか。
  • 1.120: パフォーマンス監視ツールはどこにある?
  • 1.121: どの仮想プリンタがプリント・キューが使っているかを知るには?
  • 1.122: srcmstr を二つ動かしても役に立たないか?
  • 1.123: 物理的ポートに関連した tty 名をセットするには?
  • 1.124: システムを複製するために mksysb をどのように使うのか?
  • 1.125: mksysb の timestamp はどのように保持するのでしょう。
  • 1.126: マシンタイプはどうしたらわかるのでしょう。
  • 1.127: 3.2.5 へのアップデート
  • 1.128: AIX の修正戦略
  • 1.129: パスワードは8文字までですか?
  • 1.130: pty の数を64より多くできますか。
  • 1.131: Sendmail と xterm についての CERT advisories について
  • 1.132: 存在しない物理ボリュームをどのように削除すればよいですか?
  • 1.200: テープへのバックアップについて
  • 1.201: リモートにバックアップするには?
  • 1.202: 複数のディスクにまたがるボリュームグループをバックアップするには?
  • 1.203: 一個の8mmテープに複数のバックアップをとるには?
  • 1.204: ネットワーク経由でテープをコピーするには?
  • 1.205: テープブロックが0とはどういうことですか。
  • 1.206: ハングしたテープ装置のリセットについて
  • 1.207: mksysb テープを tar でどのように読み取れるのですか。
  • 1.300: メモリーマネージメントシステムについての情報
  • 1.301: ps のメモリについての表示はどれぐらい信用できるの?
  • 1.400: シェルのプロンプトにいろいろな情報を入れたいんだけど?
  • 1.401: ksh のコマンド行編集機能を emacs モードにするには?
  • 1.403: ls するとコアダンプする。
  • 1.404: InfoExplorer の ASCII キーバインディング
  • 1.405: 新しいマニュアルページをシステムに加えるには?
  • 1.500: X11のリリース番号はどうすればわかるのか。
  • 1.501: ctrl-alt-backspace を押してもXセッションが止まらないよ
  • 1.502: HFTコンソール用の termcap/terminfo のソースはどこにある?
  • 1.503: どうやったら PostScriptのファイルを見ることができるのか?
  • 1.504: unix:0 と `hostname`:0
  • 1.505: aixterm をつなげる VT100キーについて
  • 1.506: 過度に CPU を使わないスクリーンセイバーはありますか。
  • 1.507: X セッションの上で利用可能な色がリストされた物はどこにありますか?
  • 1.600: named が良く死ぬんだけど?
  • 1.601: AIXシステムのイーサーネットパケットトレースするには?
  • 1.602: ブート時に automount を起動する正式な方法は?
  • 1.603: ttyポートを dial-in と dial-out の両方に使うには?
  • 1.604: ネットワークを通して、ディレクトリツリー全体を移動また
  • 1.605: ping できないホストに電子メールを送るには?
  • 1.606: diulup SLIP を設定するには?
  • 1.607: DCEはどこで論議されているのですか。
  • 1.608: どのようにして /var/spool/mail をマウントできますか。
  • 1.609: 速い getty の発生について
  • 1.610: AIXは圧縮されたSLIP(CSLIP)をサポートしていますか。
  • 1.611: AIXシステムで anonymous ftp はどのようにセットアップ
  • 1.900: SCSI-1 と SCSI-2 の相互可動性ってなに?
  • 1.901: キーボードを抜いた後、また元どおり付けるには?
  • 1.902: pcsim, DOS エミュレータをセットアップするには?
  • 1.903: AIX と DOS ディスケットの間でファイルを交換するには?
  • 2.00: C/C++
  • 2.01: alloca がうまく動かない
  • 2.02: BSD のプログラムをコンパイルするには?
  • 2.03: リンカーは、今まで使ってのとは大分違うの?
  • 2.04: /lib/libc.a の内容を共有しないプログラムの作り方は?
  • 2.05: 自分用の共有メモリ利用のライブラリはどうやって作るの?
  • 2.06: リンクが変なエラーメッセージで失敗するのですが, なぜ?
  • 2.07: malloc について
  • 2.08: xlc は 'extern char *strcpy()' を受け付けないのか?
  • 2.09: 'Parameter list cannot contain fewer ....' というエラーがでますが..
  • 2.10: '(sometype *) somepointer = something' を受け付けないのは?
  • 2.11: その他のエラーについて,
  • 2.13: Curses
  • 2.14: link の速度を向上させる方法
  • 2.15: deadbeef とは?
  • 2.16: AIX 3.2 での静的なリンクの正しい方法
  • 2.17: ライブラリの中の export されているもののリストを得る方法
  • 2.18: imake, makedepend がないのですが...
  • 2.19: binary が使っている共有メモリを見つける方法は?
  • 3.00: Fortran とその他のコンパイラ
  • 3.01: Fortran と C のコードを併用した時にうまくゆきませんでした。 どうしてですか?
  • 3.02: どうすれば Fortran のライブラリを静的にバインドし、 かつ C のライブラリを動的にバインドすることができますか?
  • 3.03: ある数が NaN かどうかは、どうやって調べれば良いでしょうか?
  • 3.04: IEEE 浮動小数点数演算規格についての文献
  • 4.00: GNUとパブリックドメインソフト
  • 4.01: ソースコードを探すにはどうすればいいか?
  • 4.02: FTPサイトは有りますか?
  • 4.03: 一般的なヒント
  • 4.04: GNU emacs
  • 4.05: GNU C
  • 4.06: Gostscript
  • 4.07: Tex
  • 4.08: perl
  • 4.09: X-windows
  • 4.10: bash
  • 4.11: Elm
  • 4.12: Oberon2.2
  • 4.13: kermit
  • 4.14: Gnu dbm
  • 4.15: tcsh
  • 4.16: Kyoto Common Lisp
  • 4.17: Tcl/Tk
  • 4.18: Expect
  • 4.19: CDから入手できるパブリックドメインソフトウェア
  • 4.20: Andrew Toolkit
  • 4.21: sudo
  • 4.22: Flexfax とその他のfaxソフトウェア
  • 4.23: lsof
  • 4.24: popper
  • 4.26: mpeg link errors version 2.0
  • 5.00: サードパーティ製品
  • 5.02: 固定ディスク/テープ/SCSI
  • 5.03: メモリー
  • 5.04: その他
  • 5.05: C++ コンパイラ
  • 5.06: メモリー・リーク・ディテクタ
  • 5.07: PPP
  • 5.08: グラフィック・アダプタ
  • 6.00: その他
  • 6.01: e-mail を使ったサポートについて
  • 6.02: AIX に関する情報を得るFAX番号
  • 6.03: IBM のgopher, WWW, anonymous FTP (6/10/94 での状況)
  • 6.04: RS232 接続に関するヒント
  • 6.05: RS/6000 関連の出版物
  • 6.06: 略語について
  • 6.07: この FAQ の入手方法 (メールもしくはftp)
  • 6.08: この FAQ のハイパーテキスト版
  • 6.09: ツールに関して御意見がある方の送り先.
  • 6.10: comp.unix.aix のWWWで検索可能なアーカイブのリスト
  • 7.00: 寄稿

  • 1.000: AIXオペレーティング・システムっていったい何?
    
    これに答えるには /usr/lpp/bos の下にあるテキストファイルを読む
    のが最も良いでしょう。README ファイルには一般的な情報が、
    bsdadm ファイルにはBSD そして/または SystemV を知っている人に
    は役に立つ情報が書かれています。
    
    RT PC用の最新リリースは 2.2.1 です。PS/2 と Intelアーキテクチャ
    マシン用の最新リリースは1.3で、PS/2用にだけ、1.2.1があります。
    RS/6000 用には、3.1 と 3.2 の二つのメジャーなレベルがあり、さ
    らに中間のレベルがたくさんあります。IBM は 3.1 のサポートをや
    めました。
    
    
    目次へ
    1.001: Unix も AIX も知らないんだけど、どこで情報を探せばいいの?
    
    comp.unix.aixに投稿された質問を見るとAIXがUnix初体験という人が
    たくさんいます。あなたがそうなら、comp.unix 下の他のニュースグ
    ループ、特にcomp.unix.questions(基礎的な質問)や
    comp.unix.wizards (高度な質問)を読むことをお勧めします。この二
    つのニュースグループには共通の FAQ が投稿されています。
    
    C言語プログラミングに関しての情報が欲しければ、comp.lang.c や
    comp.std.cを試してみましょう。後者は ANSI C 関連の話題が中心で
    ある。comp.lang.c にはFAQ が投稿されています。
    
    
    目次へ
    1.002: Object Database とは何?
    
    Object Database Manager, ODM は、/etc/objrepos,
    /usr/lib/objrepos, /usr/share/lib/objrepos に格納されていて、
    AIX での全てのシステム管理情報の貯蔵法です。多くの場合、SMIT
    または SMITが呼び出すコマンド(1.100参照)だけがODM を変更すべき
    です。
    
    ODM の中を覗く無害な方法は、odmget <クラス> を使うことです。
    ここで<クラス>は /etc/objrepos の下のファイルの一つです。
    
    もっと興味のあるユーザーは、ODM エディタ、odme を使って ODM を
    詳細に探検することも出来ます。ODMを変更するのは、自分が何をやっ
    ているのかを正確に理解しているときにだけにすべきでしょう。
    
    
    目次へ
    1.003: うるさいエラーメッセージが出ないようにするには?
    
    Unixコマンドから発せられるメッセージの多くは、様々な言語で利用
    可能です。これは、環境変数 LANG でコントロールされるますが、デ
    フォルトは、合衆国(US)での英語を意味する、En_US です。すべて
    のデフォルトメッセージには、以下の例のように番号がついてます。
    
    $ cat no-such-file
    cat: 0652-050 Cannot open no-such-file.
    
    Unix的な簡潔なエラーメッセージが良ければ、環境変数LANGをCにすると
    次のようになります。
    
    $ cat no-such-file
    cat: Cannot open no-such-file.
    
    
    目次へ
    1.004: 私のAIXや他の製品のリリースは何?
    
    'lslpp -h bos.obj'というコマンドで BOS, Basic Operating System
    を参照する全ての行が表示されます。たとえば、
    
    Option Name          State      Event      Date      Release         User Name
    
    -------------------- ---------- ---------- --------- --------------- ----------
    bos.obj              INACTIVE   COMMIT     02/03/90  03.01.0000.0000 root
                         INACTIVE   APPLY      06/25/90  03.01.0000.0001 root
                         INACTIVE   COMMIT     06/25/90  03.01.0000.0001 root
                         INACTIVE   APPLY      11/16/90  03.01.0002.0015 root
                         INACTIVE   COMMIT     11/16/90  03.01.0002.0015 root
    		     ACTIVE     COMMIT     05/07/91  03.01.0005.0012 root
    
    となり、BOS lpp のヒストリーが分かります。最後の行の、4カラム目を
    みるとこのリリースが 3.1.5 であることがわかります。
    
    インストールされたもの全てについてのリストをみるには lslpp -l '
    *' を使い、ある特定のlppのヒストリーを得るには上の例のように
    lslpp に -hオプションをつけて使います。
    
    現時点では、3.1.5 がベースのリリースと考えられます。少なくともこ
    のレベルを使うべきである。いろいろ中間的なのはあるが、正式なアッ
    プデートは2010です。ptfアップデートのリクエストを出せばこれ
    を貰うことになるはずである。3.1.5以前のレベルを使っているなら、
    最初に3.1.5にした後、2010を適用しなくてはならません。SNAを使って
    いるならSNA Quality Refresh アップデートを要求すべきです。
    
    AIX3.2の場合には、全くやり方が違います。3.2.0, 3.2.1, 3.2.2,
    3.2.3,それに3.2.3拡張サポートといったリリースについての問題に
    行き当たるでしょう。このうちどのリリースを使っているかを知る絶
    対的な方法はありません。なぜなら、3.2.1以降のリリースは、単に
    3.2.0 に PTF のセットをいくつか付加したものだからです。そして
    選択的に修正を適用することができるので、ちょっとずつ違ったたく
    さんの種類の 3.2 が使われているでしょう。この数字のゲームの助
    けになるような有益な FAX 情報を要求するためにセクション6も参照。
    
    AIX 3.2.4 以降では、この混乱の解決を試みています。OS はサブシス
    テム全体に対して update を適用できるように(訳注:幾つかの)サブ
    システムに分割されています。lslpp は新しいオプションをサポートし
    ている;
    	'lslpp -m bos.obj'
    を用いる事で、どのレベルにあるかを表示し、稼働しているシステム
    を update します。差し迫った必要が無いならば(たとえば 3.2.3 以上
    では、サポートされないアプリケーションなど)このレベルまでアッ
    プデートする事をお勧めします。1.128 も参照の事。
    
    
    目次へ
    1.100: なんでSMIT を勉強しなくちゃいけないのか?
    
    Unix のシステムプログラミングなら良く知っている、なんでSMIT を
    勉強しなくちゃいけないのか?
    
    SMIT を使うことは、おそらくあなたが普段やっているシステム管理
    の方法とは非常に異なっているでしょう。しかし、長い目で見れば大
    変便利であることが分かると思います。いくつかの点で、特に
    TCP/IP, NFS等に関しては、「普通」の方法で管理したいでしょうが、
    しかし不幸にもどういう時に「普通」の方法が有効なのか正確に知る
    ことは困難です。常に SMIT を使うのが、たとえ新しいツールを勉強
    しなくてはいけないとはいっても、たぶん最善の道です。
    
    SMITが実際にやっていることは、システム管理の各部分に対応してい
    るたくさんのツールを呼び出すことです。呼び出されたコマンドと
    その出力は各自のホーム・ディレクトリの smit.script と smit.log
    というファイルに書き込まれます。smit.script を眺めると、システム
    管理の勉強になるでしょう。
    
    
    目次へ
    1.101: smit で走っている男性を消すにはどうするか?
    
    smitty を使って、標準 curses バージョンで動かすか、あなたの
     ~/.kshrc ファイルに alias smit="smit -C" と加えてください。
    
    
    目次へ
    1.102: 他のマシンから、/etc/passwd と /etc/group ファイルを持ってくるにはどうしたらいいの?
    
    usrchk と pwdchk(/etc/passwd)とgrpchk(/etc/group)コマンドを実
    行してAIXの password/group 管理法に合わせること。
    
    
    目次へ
    1.103: utmpのおそうじ, who コマンド、それにアカウンティングの問題
    From: fritz@scipp.UCSC.EDU (Frederick Staats)
    
    これは3.2上で X11R5 の xterm を使うときに関係します。
    X11R5 の mit/clients/xterm/main.c の最初に以下の行を加えます。
    
    #ifdef AIXV3
    #define USE_SYSV_UTMP
    #define HAS_UTMP_UT_HOST
    #define WTMP_FILENAME "/var/adm/wtmp"
    #endif
    
    これで utmp の問題は解決されます。Xのセッションを wtmp ファイル
    に記録したければ、Imakefile で -DWTMP を定義し、WTMP_FILENAME
    が正しい場所をさしている事を確認すること。
    
    jfh@rpp386.cactus.org(John F. Haugh)による次のプログラムをroot
    の権限でバックグラウンドで走らせれば、utmp ファイルをきれいに
    してくれます。
    
    #include 
    #include 
    #include 
    
    main ()
    {
        int	fd;
        struct	utmp	utmp;
    
        while (1) {
    	if ((fd = open ("/etc/utmp", O_RDWR)) < 0)
    	    exit (1);
        	
    	while (read (fd, &utmp, sizeof utmp) == sizeof utmp) {
    	    if (utmp.ut_type == USER_PROCESS &&
    		kill (utmp.ut_pid, 0) != 0) {
    		    lseek (fd, - (long) sizeof utmp, 1);
    		    utmp.ut_type = DEAD_PROCESS;
    		    write (fd, &utmp, sizeof utmp);
    	    }
    	}
    	close (fd);
    	sleep (60);
        }
    }
    
    comp.sources.unix volume 25, issue 96 に、David
    W.Sanderson(dws@cs.wisc.edu)による、AIX3.1でも動作する、別の
    utmpお掃除プログラムが投稿されています。
    
    
    目次へ
    1.104: root ファイルシステムに fsck をかけるには?
    
    fsck はメンテナンス・モードまたはマウントされているファイルシ
    ステムにたいしてかけることもできます。
    
    メンテナンス・モードで root ファイルシステムに fsck をかける
    には以下のようにします。
    
      1. ディスケットから boot する。
      2. メンテナンスモードを選択する。
      3. /etc/continue hdisk0 exit を実行する(bootディスクが
         hdisk0でなかったらhdisk0に置き換える)。
      4. fsck /dev/hd4
    
    
    目次へ
    1.105: /usr をアンマウントして fsck をかけるには?
    From: accapadi@mathew.austin.ibm.com (Matt Accapadi)
    これは3.2 の場合の話である。
    
    /usr を fsck するためにはアンマウントする必要があります。しかし、
    /usrは、/bin が /usr/bin にシンボリックリンクされているために、
    アンマウントできません。また、/etc/fsck も /usr/sbin/fsck にシン
    ボリックリンクされています。
    
    これを回避するためには、ブート/メンテナンス・ディスケットから
    boot し、メンテナンスモードに入り、通常の"getrootfs hdisk0"の
    代わりに"getrootfs hdisk0 sh" を実行します。hdisk0 は boot ディ
    スクの名前です。それから、"fsck /dev/hd2" を実行します。
    
    
    
    目次へ
    1.106: /usr を小さくするには?
    From: mike@bria.UUCP (Michael Stefanik) and Richard Hasting
    
    AIX3.1の場合
    ------------
    1) /usr のバックアップを取ります。
    
    	find /usr -print | backup -ivf /dev/rmt0
    
       rmt0 のところには適当なテープデバイスをいれます。
    
    2) シャットダウンしてメンテナンスモードに入ります。
    
    	shutdown -Fm
    
    3) export LANG=C
    
    4) /usr のファイルシステムと論理ボリュームを消します。dspmsg コマ
       ンドが見つからない、というエラーメッセージは無視すします。
    
    	umount /usr
    	rmfs /usr
    
    5) hd2 という新しい論理ボリュームを作り、rootvg に希望の大きさ
       で入れます。
    
    	mklv -yhd2 -a'e' rootvg NNN
    
       NNN は 4MBのパーティションの数である。
    
    6) /dev/hd2 にファイルシステムを作ります。
    
    	crfs -vjfs -dhd2 -m'/usr' -Ayes -p'rw'
    
    7) 新しい /usr ファイルシステムをマウントし、チェックします。
    
    	/etc/mount /usr
    	df -v
    
    8) テープから restore します。そうしないと、rebootできません。
    
    	restore -xvf/dev/rmt0
    
    9) sync して reboot します。/usr ファイルシステムは小さくなって
       いるはずです。
    
    AIX3.2の場合
    ------------
    1) /usr に不要なファイルがあれば消しておきます。
    
    2) ルート・ボリューム・グループに属するファイルシステムが全部
       マウントされている事を確認します。もし、マウントされていない
       ファイルシステムがあればそれらは、再インストールしたシステ
       ムには含ません。
    
    3) mkszfileを実行します。そうすると、/.fs.size というファイルが
       できて、ルート・ボリューム・グループに属するアクティブなファ
       イルシステムの一覧が出来ます。
    
    4) エディタで、/.fs.size を修正します。/usr のサイズを希望の大き
       さに変更します。
    
       例: 以下の /.fs.size の例では、/usr は 40MB になります。
    
                       rootvg 4 hd2 /usr 10 40 jfs
    
       10という数は、そのファイルシステムの物理パーティションの数
       であり、40 は 40MB を意味します。殆どの場合、物理パーティショ
       ンのサイズは 4MBです。そのため、二番目の数字(40)はいつも前
       の数字(10)の4倍です。ただし、120MBのドライブがついているモ
       デル320は、物理パーティションの大きさが2MBしかなく、MB数は
       物理パーティションの数の2倍であることに注意。PP(物理パーティ
       ション)の大きさは、最初の数(4) で表されます。
    
       例えば、/usr の大きさを 40MBから32MBに減らしたいときは、次
       のように修正します。
    
            rootvg 4 hd2 /usr 8 32 jfs
    
       !注意! 現在 /usr にあるデータ量を保持するのに必要とするファ
       イルシステムの大きさより小さい値を指定しないこと! そうしな
       いと、再インストールの手順が失敗します。
    
    5) chdev -l rmt0 -a block=512 -T
       を実行。
    
    6) ルート・ボリューム・グループに属さない全てのファイルシステ
       ムをアンマウントします。
    
    7) ユーザー定義のボリューム・グループがあれば全て varyoff しま
       す。
    
        varyoffvg ボリュームグループ名
    
    8) ユーザー定義のボリュームグループがあれば export します。
    
        exportvg ボリュームグループ名
    
    9) テープをテープドライブに入れて、
    
    	mksysb /dev/rmt0
    
       を実行します。これで完全なシステムバックアップが出来ます。
       この中にはインストール・プロシージャに対して各ファイルシス
       テムをどのような大きさで作れば良いかをいう情報を(.fs.sizeファ
       イルの中に)含みます。
    
    10) インストレーションキットの "How to Install and perfrom
        maintenance from Diskettes" の操作手順に従って操作します。ディ
        スケットと9)で作ったテープを使用します。インストール・プロシー
        ジャで、"Reinstall AIX with Current System Settings"オプショ
        ン は*選ばない*こと。論理ボリュームのサイズ変更を反映さ
        せるには、"Install AIX with Current System Settings" オプ
        ションを使ってインストールする必要があります。
    
    11) OSのインストールが完了したら、ユーザー定義のボリュームグルー
        プ情報をimport します。
    
    	importvg -y VGname PVname
    
        ここで、"VGname" はボリュームグループ名、"PVname" はそのボ
        リュームグループに属する物理ボリュームのうちの一つの名前で
        す。
    
    12) ユーザー定義ボリュームグループを varyon します。
    
    	varyonvg VGname
    
    以上でファイルシステムの縮小は完了です。
    
    
    目次へ
    1.107: ファイルシステムを 2GB より大きくするには?
    
    AIX ではファイルシステムの大きさは最大 2GB です。最大の符号
    つき整数は 2*31 -1 なので。これは AIX 3.2.5 より以前のバージョ
    ンにおいてファイルシステムが 2GB までに制限されていた事の理由
    です。これは明確に「ファイルシステムでないもの」を含みません。
    
    AIX.3.2.5 以降のリリースでは 2GB 以上のファイルシステムを AIX
    がサポートすると記されていたが、現段階では 2GB 以上の
    ファイルシステムは AIX 3.x.x においてサポートされ
    ておらずまたされる予定もありません。それは IBM が決定されてい
    ない将来において、最後には 2GB 以上のファイルシステムをサポー
    トするだろうということが考えられます。
    
    
    目次へ
    1.108: ユーザーあたりの最大プロセス数のようなシステムのパラメータを参照、変更するには?
    
    後述のように SMIT を使うか、または、単に lsattr/chdev を使いま
    す。lsattr で現在の設定を表示できます。例えば、
    
      # lsattr -E -l sys0 -a maxuproc
      maxuproc 40 Maximum # of processes allowed per user True
    
    そして、maxuproc を大きくするには、
    
      # chdev -l sys0 -a maxuproc=200
      sys0 changed
    
    のようにします。
    
    'lsattr -E -l sys0' で全てのパラメータを見ることができます。そ
    の中には変更できるものもあれば、変更できないものもあります。
    
    smit を使う場合の手順は以下の通り。
    
    smit
      System Environments and Processes
        Change / Show Operating System Parameters
          - on this screen you can change by overtyping the following fields:
            - Maximum number of PROCESSES allowed per user
            - Maximum number of pages in block I/O BUFFER CACHE
            - Maximum Kbytes of real memory allowed for MBUFS
          - toggle fields exist for:
            - Automatically REBOOT system after a crash  (false/true)
            - Continuously maintain DISK I/O history (true/false)
    
    
    目次へ
    1.109: hd6上のデフォルトのページング・スペースを縮めるには?
    
    1) 一時的なページング・スペースを作ります。
       mkps -s 20 -a rootvg
    
    2) デフォルトのページング・スペース hd6 が次の reboot 時に使わ
       れないようします。
    
       chps -a n hd6
    
    3) AIX3.1 の場合、/etc/rc.boot4 を編集して、swapon /dev/hd6 を、
       AIX3.2 の場合、/sbin/rc.boot を編集して、swapon /dev/hd6 を
       次のように変更すします。
       swapon /dev/paging00
    
    4) boot 論理ボリュームの情報を更新します。
       bosboot -a      (3.1の場合)
       bosboot -a -d hdisk0 (3.2の場合)
    
    5) shutdown, reboot します。
    
    6) 現在のhd6を消して、小さいサイズに新しく作り直します。
       rmps hd6
       mklv -y hd6 -t paging rootvg <4MBブロック単位のサイズ>
    
    7) /etc/rc.boot4(3.1の場合), /sbin/rc.boot(3.2の場合) を編集して、
       swapon /dev/hd6 に戻します。
    
    8) boot論理ボリュームの情報を再び更新します。
       bosboot -a		(3.1)
       bosboot -a -d hdisk0	(3.2)
    
    9) 現在のページング・デバイス (paging00) を次のreboot時に使わ
       ないように変更します。
    
       chps -a n /dev/paging00
    
    10) shutdown, reboot して、paging00 を消します。
        rmps paging00
    
    
    目次へ
    1.110: swapper が大量にページングスペースを使ってるみたいだけど、何故?
    
    ps を実行すると、以下のように見えるはずです。
    
    USER   PID %CPU %MEM    SZ   RSS     TT STAT  TIME CMD
    root     0 0.0%  14% 386528  8688      -    S 17:06 swapper
    
    これで普通の状態です。swapper は、ps でみると、ページング・スペース
    全体に確保されている実メモリを足したサイズに見えます。
    
    
    目次へ
    1.111: ページングスペースはどれぐらい必要なの?
    
    Q.1.300 の回答 2 を参照。
    
    
    目次へ
    1.112: フロッピー・ディスクをファイルシステムとしてマウントするには?
    From: op@holmes.acc.Virginia.EDU (Olaf Pors)
    
    フロッピー上にファイルシステムを構築して、マウントすることは可
    能ですが、その場合、ファイルシステムは read only になってしま
    います。read only になってしまう理由は、AIXバージョン3.1.5では、
    ディスケット上にジャーナルのログを作れないからです。read only
    データへの一時的なアクセスには使えます。ディスケットファイルシ
    ステムは、使用後、それに システムバックアップの最中はアンマウ
    ントしなければなりません。そうしないと、エラーが発生する可能性
    があります。
    
    フロッピー上の read only ファイルシステムの作り方:
    
    1. ハードディスク上に存在するファイルシステムにサブディレクト
       リを作り、ディスケットに入れたいファイルを全部そこに置きま
       す。
    
    2. 次のコマンドを実行して、新しいファイルシステムについての情
       報を保持する、プロトタイプ・ファイルを作ります。下の例では、
       /dir_structは、ステップ1 で作ったサブディレクトリのパス名で
       あり、proto_filenameは、プロトタイプファイルの名前です。
    
             proto /dir_struct > proto_filename
    
    3. フロッピーディスクをドライブに入れて、フォーマットします。
    
    4. プロトタイプファイルを編集して、一行目を次のように置き換え
       ます。
    
              0 0
    
    5. 次のコマンドでフロッピー上にファイルシステムを作ります。
    
              mkfs -p proto_filename -V jfs /dev/fd0
    
    6. フロッピーベースのファイルシステムをマウントするディレクト
       リを作ります。
       次のコマンドでファイルシステムをマウントします。
    
              mount -r -V jfs /dev/fd0 /your_mount_point
    
    7. アンマウントは以下のようにします。
    
              umount /dev/fd0
    
    こうして作ったファイルシステムは、read-only なので、使い道は限
    られるが、ユーティリティ・プログラムや変更しないデータを納める
    のに使うなら、少しは役に立ちます。ファイルシステム中のデータを
    変更するには、フロッピー中のディレクトリをハードディスク中のディ
    レクトリにコピーし、必要な変更を行った後、もう一度ファイルシス
    テムを上記の手順で作り直せば良いでしょう。
    
    
    目次へ
    1.113: コミットしてしまった lpp を削除するには?
    From: drb@chmeds.ac.nz (Ross Boswell)
    
    これは良く出会う問題です。私は、IBM NZ AIX ソフトウェア・サポー
    トから次のようなスクリプトを貰った。私が知る限りではちゃんと動
    いています。私はこれで要らないフォントを消しています。これをポ
    ストする正式な許可は貰っていないので、責任は自分で持ってくださ
    い。このスクリプトはAIX3.2でしか動きません。
    
    #!/bin/ksh
    #
    # Permanently remove a product from disk and AIX databases
    #
    
    if [ `whoami` != "root" ] ; then
      echo You must be root to run this script.
      exit 1
    fi
    
    if [ `uname -a | awk '{print $1$4$3}'` != "AIX32" ] ; then
      echo This script only works on AIX 3.2.
      exit 1
    fi
    
    TMP_FREE=`df /tmp | awk '$3 ~ /[0-9]/{print $3}'`
    if [ "$TMP_FREE" -lt 1000 ] ; then
       echo There is not enough room in your /tmp directory.
       echo You need 1000 KB free, and you have only $TMP_FREE KB free.
       echo Either remove some stuff from /tmp, or use chfs to make it bigger.
       exit 1
    fi
    
    ODMDIRS="/etc/objrepos /usr/lib/objrepos /usr/share/lib/objrepos"
    ODMDIR=/usr/lib/objrepos
    export ODMDIR
    
    if [ $# -lt 1 ]
    then
      echo usage: $0 lppname [lppname ...]
      echo lppname is a string compatible with grep, ie "X11" or "PHIGS"
      echo typing   $0 PHIGS   will remove all LPPs with PHIGS in their name.
      exit 1
    fi
    
    NAMES=$1
    shift
    while [ $# -gt 0 ] ; do
      NAMES="$NAMES|$1"
      shift
    done
    echo "Searching for lpps with egrep \"$NAMES\"...\c"
    
    for ODMDIR in $ODMDIRS ; do
      if [ ! -d $ODMDIR -o ! -w $ODMDIR ] ; then
         echo $ODMDIR is not writeable or is not a directory.
         echo I hope this is because you are a /usr client or diskless.
         echo If you are not a diskless or a /usr client, you should stop.
         echo "Enter y to continue ->\c"
         read answer
         if [ "$answer" != "y" ] ; then
           exit 0
         fi 
      fi
      TMP=`odmget lpp | awk -F\" '/name/ {print $2}' | egrep "$NAMES"`
      LPPS=`echo $LPPS $TMP`
    done
    
    if [ "$LPPS" = "" ]
    then
      echo "failed.\nNo LPP with the name $NAMES detected."
      exit 1
    fi
    echo ok.
    
    for ODMDIR in $ODMDIRS ; do
      mkdir -p /tmp/rmlpp/$ODMDIR > /dev/null 2>&1
    done
    
    > /tmp/listOfFilesToRM$$    # truncate temporary file, just in case.
    echo
    echo This script is about to attempt to remove an LPP from your system.
    echo I say attempt, because it could fail.  If it fails, you may have
    echo to at least reload the LPP.  Use the \"lppchk\" command to make sure
    echo all is well with your system.
    echo
    # Loop through all the LPP names found.
    for LPP in $LPPS
    do
      DESCR=none
      answer=""
    
      # find the LPP ids.  They will be different in the three SWVPD databases.
      for ODMDIR in $ODMDIRS ; do
        # get the lpp id for this ODMDIR (yes, they are different)
        LPPID=`odmget -q name=$LPP lpp | grep lpp_id | sed 's/.* = //'`
    
        # did we find the LPP?
        if [ "$DESCR" = "none" -a "$LPPID" != ""  ] ; then
          # all the descriptions should be the same
          DESCR=`odmget -q name=$LPP lpp | grep description | sed 's/.* = //'`
          echo "Delete $LPP, $DESCR?"
          echo "y or (n) ->\c"
          read answer
          if [ "$answer" != "y" ] ; then # jump back up to the next LPP name
            continue 2
          fi
        fi
        # if there is no DESCR, then we didn't find the LPP.  Weird.
        if [ "$DESCR" = "none" -o "$LPPID" = "" ] ; then
          continue
        fi
    	SOMETHING_DONE_FLAG=true
        # Optionally, save the ODM stuff we are about to remove,
        # in case something goes wrong.  The problem is it is difficult
        # to determine if something really did fail, since these commands
        # don't return any decent error return codes.
        odmget -q lpp_id=$LPPID history   > /tmp/rmlpp/$ODMDIR/$LPP.history
        odmget -q name=$LPP lpp           > /tmp/rmlpp/$ODMDIR/$LPP.lpp
        odmget -q lpp_name=$LPP product   > /tmp/rmlpp/$ODMDIR/$LPP.product
        # Get the list of files and links to remove later....
        odmget -q lpp_id=$LPPID inventory > /tmp/rmlpp/$ODMDIR/$LPP.inventory
        awk -F\" '/loc/ {print $2}' /tmp/rmlpp/$ODMDIR/$LPP.inventory | \
          sed 's/,/ /g' >> /tmp/listOfFilesToRM$$
        odmdelete -o history -q lpp_id=$LPPID   > /dev/null 2>&1
        odmdelete -o lpp -q name=$LPP           > /dev/null 2>&1
        odmdelete -o product -q lpp_name=$LPP   > /dev/null 2>&1
        odmdelete -o inventory -q lpp_id=$LPPID > /dev/null 2>&1
      done
    done
    
    if [ "$SOMETHING_DONE_FLAG" = "true" ] ; then
    
      echo ODM work is done.  Now, time to delete files....
    
      # This could be catastrophic if there is a problem.  For example,
      # if the ODM database for an application had / as one of its files.
      # You be the judge.  Here's your rope....
      cat /tmp/listOfFilesToRM$$ | sort -r | uniq | xargs rm -rf
    
      rm -rf /tmp/listOfFilesToRM$$
      echo done.
    fi
    
    # take this line out if you want to save your ODM saved files.
    rm -rf /tmp/rmlpp
    
    exit 0
    
    
    目次へ
    1.114: "install update" をしたのちに(訳注:ディスク)容量を回復するにはどうするか?
    
    注意:もし、 /usr サーバなら、/usr クライアントに必要とされ消
    去不可のファイルなので、以下に示される方法を用いない事。
    
    installp は failed/rejected されたインストールの後や commit さ
    れていない LPP のデ・インストール ( 訳注: de-install ) の際に
    /usr に清掃すべき莫大な数のファイルを作成します。一度あなたが
    commit したパッケージをあなたは安全に消去できます。あなたのイ
    ンストールするやり方によってこのの数字は意味を持つだしょう:幾
    百幾千ものファイル、数メガバイトのデータ。
    
    除去されるに適格なファイルはあなたのインストールした各々の「プ
    ロダクト」に関連しており、もっtも大きな集まりは bosによるもの
    です。
    
    bos LPP の commit の後、あなたは以下のような形の全てのファ
    イルを安全に消去できます。
    
    /usr/lpp/bos/deinstl*
    /usr/lpp/bos/inst_U4*
    /usr/lpp/bosadt/deinstl*
    /usr/lpp/bosadt/inst_U4*
    
    あなたはこの手順をあなたのシステムの上に持つ全ての追加の
    comitt されたプロダクト(e.g. bosext1, bosnet, xlc) について繰
    り返す事ができます。
    
    このインストールされたファイルが居残る問題は、installp プログ
    ラムの良く知られた欠陥です。もしあなたが PTF U411711 (
    U412397, U413366, U413425 を置き換えるもの)をインストールしている
    ならば、 /usr の中に厄介物が流行するということはなくなるでしょ
    う。
    
    この問題を完全に修正する単一の PTFは現在のところ存在しません。
    
    私の 320 の上で、以下のようにして /usr から 12.4 M を解放しま
    した。
    
            # rm -R /usr/lpp/bos/deinstl*
            # rm -R /usr/lpp/bos/inst_U4*
    
    
    目次へ
    1.115: AIXではログファイルはどこにある?
    From: dirk@kimosabi.ucsc.edu (Dirk Coldewey)
    
    SunOSの /var/log/syslog や /var/adm/messages ファイルの等価な
    ものがある。普通の UNIX 的な syslog ファイルが必要であれば、
    /etc/syslog.conf ファイルでsyslogd を設定すれば良い。私は以下
    のようにしている。
    
    #
    # See the supplied /etc/syslog.conf file for copious comments.
    #
    *.err;kern.debug;auth.notice;user.none          /dev/console
    *.err;kern.debug;daemon,auth.notice;mail.crit;user.none /var/adm/messages
    lpr.debug                                       /var/adm/lpd-errs
    
    *.alert;kern.err;daemon.err;user.none           operator
    *.alert;user.none                               root
    
    *.emerg;user.none                               *
    
    # for loghost machines, to have authentication messages (su, login, etc.)
    # logged to a file, un-comment out the following line and adjust the
    # file name as appropriate.
    #
    # if a non-loghost machine chooses to have such messages
    # sent to the loghost machine, un-comment out the following line.
    #
    auth.notice                     /var/log/authlog
    
    mail.debug                      /var/log/syslog
    
    # following line for compatibility with old sendmails.  they will send
    # messages with no facility code, which will be turned into "user" messages
    # by the local syslog daemon.  only the "loghost" machine needs the following
    # line, to cause these old sendmail log messages to be logged in the
    # mail syslog file.
    #
    user.alert                                      /var/log/syslog
    #
    # non-loghost machines will use the following lines to cause "user"
    # log messages to be logged locally.
    #
    user.err                                        /dev/console
    user.err                                        /var/adm/messages
    user.alert                                      `root, operator'
    user.emerg                                      *
    
    
    目次へ
    1.116: ftpがファイルへアクセスする情報をどのようにしてログできるか。
    
    1.  /etc/syslog.confのなかへ次の行を加えます。
        deamon.debug     /temp/deamon.log
    2.  # touch /tmp/deamon.log
        # refresh -s syslog
    
    3.  自分の inetd.conf を ftpd が -l フラグを呼び出せるように変
        えます。また、-d フラグも必要となるかもしれません。 これは
        'smit inetdconf' でできます。 さまざまなシステムデーモンの
        システムログメッセージはすべて "/temp/deamon.log"にあらわ
        れるはずです。
    
    
    目次へ
    1.117: iノード番号からファイルを探すには?
    From: svpillay@berlioz.crs4.it (Kanthan Pillay)
    
    find /mntpoint -xdev -inum nnnn -print
    
    
    目次へ
    1.118: ポストスクリプト(訳注:プリンタ)のアカウンティングをセットアップするには?
    
    Ephreim Vider は始めホストスクリプトのページアカウンティングを
    設定するためにプログラムを書きました。それは /etc/qconfig のア
    カウンティング情報をログするバックエンドラッパとして動作し
    utpana.ph.utexas.edu:/pub/aix/psacct.tar.Z から ftp できます。
    
    以下のようにしてコンパイルしてください:
        cc pswrap.c -o pswrap -lqb
    
    そしてこのプログラムを root に suid します:
        chown root pswrap
        chmod u+s  pswrap
    もしこのステップをしなければプリンターがハングアップします。
    
    そしてSMITで次のメニューに行きます。
    
    Spooler
      Manage Local Printer Subsystem
        Local Printer Queue Devices
          Change / Show Characteristic of a Queue Devices
            
    
    そして"BACKEND PROGEAM pathname" を pswrap がキューとバックエ
    ンドインターフェースを扱えるようにpswrap のフルパス名に変更
    します。
    
    情報のながれは、/tmp内のログファイル(prog lp0.log)に書かれます。
    しかし、このファイルは主に状態情報や生のページ数といったことに
    用いられます。もしアカウンティング・データが qconfig で指定さ
    れたアカウントファイルに行くならば、それを見るためにはpacコマ
    ンドを使います。私はむしろその代わりにアスキーデータファイルが
    あるほうが良いので '#define WANT_PAC' の行をコメント行にして、
    pswrap.c で指定されたアカウントファイルへデータが行きます。
    
    
    目次へ
    1.119: 3.2のブートディスケットはどのようにして作るのですか。
    
    フォーマットされた4枚のディスケットが必要です。
    boot disk:                bosboot -d /dev/fd0 -a
    display disk:             mkdispsdkt
    display extension disk:   mkextdskt
    install/Maintenance disk: mkinstdskt
    
    
    目次へ
    1.120: パフォーマンス監視ツールはどこにある?
    
    3.2の場合は、/usr/lpp/bosperf にいくつかツールがあります。トレー
    ス、I/Oイベント、CPU, 仮想記憶、ディスクブロック使用状況、カー
    ネル拡張等が監視できます。rmss というシミュレータがあって、メ
    モリサイズの構成を変更して、どのくらいパフォーマンスに影響する
    かをみることができます。6.05 "AIX パフォーマンスとチューニング
    ガイド" も参照。
    
    tty ベースの優れたプログラム Monitor は以下のような機能を含む:
    
    - CPU 使用
    - ロードアベレージ (カーネルまたは loadavgd プログラムより)
    - 仮想記憶と実記憶の使用
    - ページング情報
    - プロセスイベント
    - ディスク I/O (summary and TOP disk 1.12)
    - TTY I/O
    - ネットワーク活動
    - top cpu ユーザ
    - NFSオペレーション (1.11 への新規能)
    - さらに詳細なディスク I/O 画面
      (-disk オプションを用いた1.11 への新規能)
    - さらに詳細なネットワーク I/O 画面
      (-netdisk オプションを用いた1.11 への新規能)
    - normal/top/net/disk 画面の間を t,n,d キーでトグルする
    
    Monitor は ftp.funet.fi:/pubunix/AIX/RS6000/monitor-1.11.tar.Z
    から ftp 可能です。
    
    
    目次へ
    1.121: どの仮想プリンタがプリント・キューが使っているかを知るには?
    From: yoder@austin.ibm.com (Stuart R. Yoder)
    
    lsvirprt コマンドを使います。引数無しで起動すると、対話モードにな
    り、システムにある全ての仮想プリンタをそれぞれキューとデバイ
    スとともにメニューで表示します。
    
    
    目次へ
    1.122: srcmstr を二つ動かしても役に立たないか?
    From: hubert@rs530.ncs.mainz.ibm.com (Bernhard Zeller)
    
    srcmstr が二つ動いてしまうのは、システムにコンソールがない場合
    や、コンソールとして非同期端末を使う設定になっているが接続され
    ていなかったり、電源が入っていない場合に起こり得ます。こういっ
    た場合の症状の一つが、第二の srcmstr が起動してしまうことです。
    しかし第二の srcmstr は役立ちません。何故なら、stop/startsrc
    コマンド、refresh inetd が使えず、qdaemon が起動されないなどの
    問題があるからです。
    
    これを解決するには、次のコマンドを実行し
    
        smit chgtty
    
    次の二行に 'cloal' というキーワードを追加します。
    
       STTY attributes for RUN TIME
       STTY attributes for LOGIN
    
    
    目次へ
    1.123: 物理的ポートに関連した tty 名をセットするには?
    From:accapadi@mathew.austin.ibm.com (Matt Accapadi)
    
    s1 ポートに rs0000 と s2 ポートに rs0001 と呼ぶ tty を作りたい
    としましょう。
    
    次のように実行します:
    
    mkdev -c tty -s rs232 -t tty -l rs0000 -p sa0 -w s1
    
    そして
    
    mkdev -c tty -s rs232 -t tty -l rs0001 -p sa1 -w s2
    
    
    目次へ
    1.124: システムを複製するために mksysb をどのように使うのか?
    From: jann@ariadne.SLAC.Stanford.EDU (Jo Ann Malina)
    
    AIXシステムを複製するためにマスターマシンで次のようにします。
    1) root のパスワードを除去します。
    2)  /etc/group ファイルの終りから NIS ラインを除去します。
        ( +: がある最後のライン)
    3)  新しいシステムがブートした時に、スタートするのを防ぐ
        ために、/etc/inittab のレベル2のほとんどをレベル3に
        変える。(最低でも rc.nfs と rc.tcpip)
    4)  サービスモードでブートして、アドレスの衝突をさけるた
        めに名前とipアドレスをスペアに変えておく。
    5)  /tmp, /usr/tmp, /usr/spool/lpd/stat を消す。
    6)  mkszfile を走らせ、/usr ができるだけ小さくなるように
        edit する。そして mksysb をコマンドラインから打つ。
    
    上の変更により、はじめはノーマルモードでブートでき、ルート
    として入る。そして、上のファイルをもとに戻し、新しいシステ
    ムを適合させるための他の必要なことをする。もちろん、戻して
    clean up して master マシンをリブートする。
    
    注意:1. と 2. はネットワークに接続されていなくてもログインで
    きるようにする。それはログインプロセスが NIS サーバーに達しよ
    うとするのを防ぎます。2. は NIS を使っているときだけ必要です。
    
    
    目次へ
    1.125: mksysb の timestamp はどのように保持するのでしょう。
    Originally From: grame@ccu1.aukuni.ac.nz ( Grameme Moffat )
    
    現在のAIX3.2.5では、timestamp や permittion は bosrest が pax
    することによって保持しています。AIX3.2.2の
    /usr/lpp/bosint/bosnet(ネットワークにインストール)とbosrest(テー
    プ)には、'pax'コマンドが' '-pmop'オプションを持っています。m
    は変更された時間を保持しないオプションですので、単に '-pmop'
    を '-pop' に変えて、 inst/maint のディスケットや mksysb のテー
    プを作成しなおします。
    
    
    目次へ
    1.126: マシンタイプはどうしたらわかるのでしょう。
    From: umar@compsci.cas.vanderbilt.edu (Sait Umar)
    
    #!/bin/sh
    #
    #  Author G. Vitillaro              (peppe@ipgaix.unipg.it)
    #  from an idea of Marc Pawliger    (marc@ibmpa.awdpa.ibm.com)
    #
    #  10/12/92  GVT  First (and last) implementation
    #
    # machine : will get machine type on RISC/6000
    #
    #
    awk '
            BEGIN {
                    m["10"]="7013/530 or 7016/730";
                    m["11"]="7013/540";
                    m["14"]="7013/540";
                    m["18"]="7013/530H";
                    m["1C"]="7013/550";
                    m["20"]="7015/930";
                    m["2E"]="7015/950";
                    m["2E"]="7015/950E";
                    m["30"]="7013/520";
                    m["31"]="7012/320";
                    m["34"]="7013/520H";
                    m["35"]="7012/320H or 320E";
                    m["37"]="7012/340";
                    m["38"]="7012/350";
                    m["41"]="7011/220";
                    m["43"]="7011/M20";
                    m["46"]="250/PowerPC";
                    m["47"]="230/RSC";
                    m["5C"]="7013/560";
                    m["63"]="7015/970";
                    m["64"]="7015/980";
                    m["66"]="7015/580";
                    m["67"]="7015/570";
    		m["70"]="590/POWER2";
        		m["71"]="580H";
                    m["75"]="7012/370, 375, or 37T";
                    m["76"]="7012/360, 365, or 36T";
                    m["77"]="7012/350, 355, or 7013/550L";
                    m["78"]="7012/315 or 7013/510 ";
        		m["80"]="990/POWER2";
    
       モデルN40を持っている人に、'uname -m | cut -c9-10' とやっ
       てもらいます。そうすると、そのエントリーを加えることができ
       ます。
    
       if ( mHcode5 != " ")
           print "This RISC/6000 is a " mHcode5;
       else
           print "Unknown Machine";
    }
    'code=`uname -m | cut -c9-10` < /dev/null
    
    
    目次へ
    1.127: 3.2.5 へのアップデート
    From: kraemerf@franvm3.VNET.IBM.COM (Frank Kraemer)
    
    (Ed. もしとても大きなシステムをアップデートする必要があるなら、
    以下のものは便利でしょう。)
    
    1) AIXサポートセンターからPTFナンバーがU493250であるPMP3250テー
    プを受け取ります。
    2) 240MB(60PP'S)のファイルシステムを作って、そこに
    /dev/pmp3250 - /pub/pmp3250としてマウントします。
    3) テープ(blocksize は 512)をいれて、PTF U422467 をインストー
    ルします。
    4) 新しいファイルシステムにテープを load するのに以下のスクリ
    プトを使用します。
    
       # cd /pub/pmp3250
       # mktape2disk.sh 0 447             <<-- read 447 files from rmt0
    
    =-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
    #!/bin/ksh
    # @(#) mktape2disk.sh  creates files from tape on disk.
    
    # change name prefix here
    NAME="f"
    
    # from file #i to file #j
    integer i=1
    integer j
    
    # test arguments
    if [ -z "${1}" ]
    then
      echo "\nusage: $(basename ${0})  <#files>\n"
      echo "\t: tape drive number (e.g. 0)"
      echo "\t<#files>  : number of files to copy from the tape\n"
      exit 1
    fi
    device=/dev/rmt${1}.1
    
    # test arguments
    if [ -z "${2}" ]
    then
      echo "\nusage: $(basename ${0})  <#files>\n"
      echo "\t: tape drive number (e.g. 0)"
      echo "\t<#files>  : number of files to copy from the tape\n"
      exit 1
    fi
    j=${2}
    
    tctl -f ${device} rewind
    if [ $? -ne 0 ]
    then
      exit 1
    fi
    
    # create tape
    while [ ${i} -le ${j} ]
    do
        echo "Copy file #${i} of #${j} from (${device}) to disk as (${NAME}${i})."
        dd if=${device} of="${NAME}${i}" bs=200k
        i=i+1
    done
    tctl -f ${device} rewind
    exit 0
    =-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
    
    5) 新しい .toc ファイルを作ります。
    6) 'runme.sh' という名前の以下のファイルをPMPディレクトリーに
    置きます。
    
    =-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
    #!/bin/ksh
    # @(#) runme.sh for PMP3250
    #
    INSTP="/usr/sbin/installp"
    LOG="/tmp/installp.log"
    TEE="/usr/bin/tee"
    PATCHDIR=$(pwd)
    #
    /usr/bin/cp /usr/lpp/info/data/ispaths /usr/lpp/info/data/ispaths.save
    #
    INFODIR="/usr/lpp/info/$LANG/aixmin"
    /usr/bin/mkdir ${INFODIR} 2>/dev/null >/dev/null
    if [ ! -w ${INFODIR} ]
    then
        print "\n\t*ERROR* Can not (write) access [${INFODIR}]."
        print "\tPlease unmount CD or NFS filesystems.\n"
        exit -1
    fi
    #
    # Commit all ptf's
    #
    ${INSTP} -Xc all 2>&1 | ${TEE} ${LOG}.0
    #
    # Install latest installp patch
    #
    ${INSTP} -BXacgq -d ${PATCHDIR} bos.obj 3.2.0.0.U422463 2>&1 | ${TEE} ${LOG}.1
    #
    # Install latest installp patch
    #
    ${INSTP} -BXacgq -d ${PATCHDIR} bos.obj 3.2.0.0.U422467 2>&1 | ${TEE} ${LOG}.6
    #
    # Run the ptfdir clean utility.
    #
    /usr/sbin/ptfdir_clean -y -f -v 2>&1 | ${TEE} ${LOG}.2
    #
    # Install the PMP.    Version 1
    #
    /usr/lib/instl/sm_inst installp_cmd   \
            -T m -q -a -g -B              \
            -d ${PATCHDIR}                \
            -S '3250 AIX Maintenance Level U493250' \
            -c  -N  -X                    \
            2>&1 | ${TEE} ${LOG}.3
    #
    # Install the PMP.    Version 2
    #
    # /usr/sbin/update_all
    #
    # Install latest installp patch
    #
    /usr/bin/lppchk -v | ${TEE} ${LOG}.4
    #
    # Show level of installp patch
    #
    /usr/bin/lslpp -m bos.obj | ${TEE} ${LOG}.5
    #
    # Guess you should reboot now.
    #
    sync;sync
    print - "\n\n\tDone......guess you should reboot now !!\n"
    exit 0
    =-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
    
    7) サーバーのアップデートをするために以下を実行します。
    
        ==> > Please read the Installation Instructions first <==
    
        # cd /pub/pmp3250
        # ./runme.sh
    
        ..... WAIT .....
        # /etc/shutdown -Fr
    
    8) NFSがPMPdirを read only として全てのクライアントに送る。
    9)クライアントをアップデートするために
    10) 受け取ったテープに1:1でコピーをするために、
        スクリプト 'mktape.sh' を使う。
    
       # cd /pub/pmp3250
       # mktape.sh 0
    
    =-=-=-=-=-=-=-= cut here =-=-=-=-=-=-=-=-=-=-=
    #!/bin/ksh
    # @(#) mktape.sh: creates a bootable tape from images on disk
    
    # change name prefix here
    NAME="f"
    
    # usage: mktape drive_no
    #        drive_no = tape drive number
    # test arguments
    if [ -z "${1}" ]
    then
      echo "\nusage: mktape "
      echo "         : tape drive number (e.g. 0)\n"
      exit 1
    fi
    device=/dev/rmt${1}.1
    
    tctl -f ${device} rewind
    if [ $? -ne 0 ]
    then
      exit 1
    fi
    
    # create tape
    i=1
    while test -r "${NAME}${i}"
    do
        echo "copy ${i}"
        if [ $i -le 3 ]
        then
          dd if="${NAME}${i}" of=${device} conv=sync bs=1k
        else
          dd if="${NAME}${i}" of=${device} bs=200k
        fi
        let i=${i}+1
    done
    tctl -f ${device} rewind
    exit 0
    
    
    目次へ
    1.128: AIX の修正戦略
    From: leedp@austin.ib.com (Dennis Lee, PMP Release Manager)
    
    1.128    AIX の修正についての戦略
    
    始めに、少し歴史を、、、、
    
    AIX 3.1 の保守戦略は累積によるアップデートでした。数ヵ月毎に1
    つの大きなパッケージにすべての役にたつ修正をして出荷していまし
    た。1つの修正をするための本当の戦略はありませんでした。時々緊
    急パッチを作るのですが、それらを追跡する方法はありません:もし
    二つ目のそれを手にいれたら始めのを上書きするでしょう。だから、
    それらのいくつかのパッチの後で、追跡するのは難しい。
    
    AIX 3.2 では "selective fix" という、個々の修正をサポートする
    ための戦略を導入しました。パッケージには、その修正が正しく動く
    ことを要求する他の修正についての情報も含んでいました。たとえば、
    Kシェルの修正が libc.a を修正して、次にカーネルの修正を要求す
    るといったことである。この戦略は、他の物を上書きをしないことを
    確実にしするためにインストールされた修正の追跡を可能としました。し
    かし、初期の選択修正計画にはまだ少し問題があります。
    
    o 修正がひとつも累積によるものではないこと。もし Korn シェルの
    修正を得ても、Kシェルのすべての修正を受け取ることはできなでしょ
    う。これは、既に残されている他の問題を再発見させる可能性を 残
    しています。
    
    o 報告されている問題の修正として可能な全ての修正を選ぶので、次
    のリリースへそれらを延ばす代わりとして、可能な修正の数はとても
    大きくなりました。
    
    o 与えられた修正により求められた補助の修正の数もまたきわめて
    大きくなりました。インストーレーションプログラムは、各々の修正
    に対して動くので、インストレーションパッケージの大きさと複雑さ
    は増し、インストールに要する時間も大変長くなりました。
    
    AIX 3.2.4へのアップデートの開発中に、選択修正の問題を解決する
    ために多大な努力を払い、劇的に AIX 3.2 の質 を向上させました。
    基本OS 選択プログラムプロダクトのほとんどははサブシステムに分
    割されました。一つのサブシステムは論理的に関連のファイルのグルー
    プです。この分割はあるサブシステムへの変更が、他の サブシステ
    ムへ影響を与えにくいものになるようになされています。全体として
    おおよそ500のサブシステムがあるのですが、実際にはそれらの半
    分のファイルだけが修正されました。新しいパッケージの戦略の利点
    は次の通りです:
    
    o サブシステムパッケージ各々が累積によるものであり、すべての
    修正やサブシステムに日付けを付けるための強化も含まれて いる。
    
    o 累積によるサブシステムパッケージは全体としてテストされた。
    
    o サブシステムの数は修正数と改良の数のそれに比べてはるかに少な
    いため、修正パッケージの数は大幅に減少しています。。
    
    o 修正パッケージの数の減少はインストレーションの時間をも大きく
    減少させた。
    
    何人かのお客様は、AIX 3.1 で使っていた maintenance level 戦略
    の方が良いとおしゃいます。
    
    彼らはすべての知られている修正をインストールすることを好み、ど
    のレベルのAIXを持っているのかを知りたがります。 このような要求
    に満たすために、PMP(Preventive Maintenance Package)を生み出し
    ました。
    
    PMP は単一の修正を選択する事でインストールされ得る方法で、互い
    に結び付けられた最新の累積サブシステムパッケージの集合体です。
    
    どの PMP がインストールされているのかを示す 'lslpp' コマンドの
    フラグと新しいコマンド 'oslevel' を加えました。今では両方、修
    正レベルの良い特質と選択修正の良い特質の両方を備えています。
    
    Q&A を幾つか。
    
    Q. なぜ、私が受け取った修正は 130MB なのか。!@#?
      もうすでにAIX 3.2.4 にアップデート済であるのに!
    
    A. その修正はAIX3.2.5の一部だったかも知れない。AIX3.2.5は、
    Power PC model 250 や新しい RS/2 のモデル 590, 990、また新しい
    RS/2 ディスクやテープドライブ、グラフィックアダプター等な
    どをサポートするための強化と同様にアップデートする修正すべてを
    含む別の PMP です。
    
    訳注) RS/2 -> RS/6000 あるいは Power2 の TYPO だと思われます
    
    Q. なぜ3.2.4では修正をしてくれないのでしょう。
    
    A. 3.2.1, 3.2.2, 3.2.4 では、そのような物はありません。それら
    は3.2のベースの上に作られた、修正や強化の集まりに過ぎません。
    問題の修正が3.2.5以前に作られたものであれば、それは古いバージョ
    ンでしょう。しかし、その修正が3.2.5のサブシステムのなかで初め
    て作られたものならば、ただ一つ存在する修正のバージョンです。
    
    
    目次へ
    1.129: パスワードは8文字までですか?
    
    AIX においてパスワードは8文字までしか認知しません。8文字以上
    セットできますが8文字目より後は無視されます。メッセージも警告
    もありません。
    
    NIS を実行しているときは気を付けなくては行けません。すべてのマ
    シン(6000やそれ以外)とコンパチブルにするためパスワードを8
    文字までに限りたくなるでしょう。
    
    DCE では8文字以上のパスワードをサポートする kerberos をサポー
    トしているそうです。
    
    
    目次へ
    1.130: pty の数を64より多くできますか。
    
    SMIT では64までしか許されません。次のようにしてください。
    
    odmget -q"attributes=num adn uniquetype=pty/pty/pty" PdAt |
    sed "s/0-64/0-512/" |
    odmchange -q"attributes=num adn uniquetype=pty/pty/pty" -o PdAt
    
    chdev -l pty0 -anum=256 -P
    reboot
    
    訳注) AIX3.2.5 で試しましたが、うまくいきませんでした。
    
    
    目次へ
    1.131: Sendmail と xterm についての CERT advisories について
    
    次の修正は、sendmail と xterm に問題があるとき CERT advisories
    に利用できます。
    
    sendmail	- fix available as U426396
    xterm for X11R4	- fix available as U422575
    xterm for X11R5 - fix available as U425811
    
    
    目次へ
    1.132: 存在しない物理ボリュームをどのように削除すればよいですか?
    
    ODM から見せかけのディスクを削除するには、ディスク名のかわりに
    pvid を使って reducevg をするとよい。lsvg や varyonvg のような
    コマンドを実行していると、正しくわからないディスクを把握するこ
    とができる。その警告の中で、pvid がわかるはずである。そうすれ
    ば単に次のようにすればいい。
    
    reducevg -f 
    
    
    目次へ
    1.200: テープへのバックアップについて
    From: Craig Anderson
    
    InfoExplorer の rmt デバイスについての記述の補足です。AIX3.1
    での IBMテープドライブの個人的な使用経験に基づいています。陽にも
    陰にも保証はありません。
    
    SMIT を通して以下のように設定します:
    
        BLOCK size (0=variable length)		(ALL)
    
    テープブロックサイズをセットします。読み込み時には、ブロックサ
    イズはテープが書き込まれた時のブロックサイズと同じにセットしな
    くてはなりません。使うコマンドによっては、ブロックサイズを 0
    (可変長)にすれば、任意のブロックサイズで書き込まれたテープを読
    むことができます。(以下の"BLOCK SIZES" を参照)
    
        Use DEVICE BUFFERS during writes		(ALL)
    
    yes にすると、デバイスは書き込み時に内部的にデータをバッファリ
    ングします。こうすると、パフォーマンスが非常に改善されるが、し
    かし、ある場合には望ましくありません。成功を示す値を返す前には
    データはテープに書き込まれないからです。
    
        Use EXTENDED file marks			(8mm only)
    
    拡張ファイルマークは短い(あるいは拡張されていない)ファイルマー
    クよりたくさんのスペースを取ります。しかし、拡張ファイルマークは上
    書きできるのでテープの開始位置にないデータでも上書き可能である
    ("FILE MARKS"参照)。
    
        RETENSION on tape change or reset		(1/4" only)
    
    "no"にすると、テープをドライブに挿入したときに自動的な巻き直し
    は行われません。デバイスを使った後に有効になることに注意してく
    ださい。
    
    
    FILE MARKS:
    
    テープデバイスは複数のテープファイルをサポートします。テープファ
    イルは、backup/cpio/tar/dd といったコマンドで作られ、その場合
    デバイスは、オープンされ、書き込みされ、クローズされます。テー
    プは多量のデータを一つのテープに書くことが可能なので、複数のバッ
    クアップ(すなわち、テープファイル)を物理的に一つのテープに入れ
    ることが可能です。各テープファイルの間には、テープファイルマー
    ク、または単にファイルマークがある。ファイルマークを使って、デ
    バイス・ドライバーは、一つのテープファイルの終りと次のテープファ
    イルの始まりを認識します。
    
                                  B       E
                       <-------   O       O   ------->
                                  T       T
                  __ ____________________________ _______________
    physical | \            |       |      \             |physical
    beginning|  \           | tape  |       \            | end
      of     |   \          | file  |        \           |  of
     tape    |    \         | mark  |         \          | tape
             |_____\________|_______|__________\_________|
    
    1/4インチテープドライブの場合には、書き込みはシーケンシャルに
    か、または、空白部分を検知した後にしか出来ません。テープ上のデー
    タに上書きはできないのです(BOT 部分を除く)。書き込みが行われ
    て巻き戻されたテープにデータを追加するには、エラーが起きるまで
    ファイルマークを進めなければなりません。
    
    8mm テープドライブの場合は、書き込みは、ブランクテープか、拡張
    ファイルマークか、BOT 部分でのみ可能です。つまり、複数のバック
    アップを一つのテープに取った場合、そのうちの一つを上書きしたけ
    れば、書き込みを開始したい位置にテープを置き、以下のコマンドを
    実行すれば良い。
    
    tctl bsf 1
    tctl eof 1
    
    最初のコマンドはファイルマークのBOT側に戻ります。二番目のコマ
    ンドはファイルマークを書き直します(拡張ファイルマークの前に書
    くことはできます)。消去ヘッドが書き込みヘッドの先のデータを消
    すので、ファイルマークを書いた後ヘッドはブランクテープの前に位
    置されます。こうしないとテープの途中にデータを上書きすることは
    できません。(現在書いているところより先のデータは全て失われま
    す)。短いファイルマークを上書きすることは出来ないことに注意し
    てください。そのためには、テープは拡張ファイルマークを使って書
    き込まれていなければなりません(smitで変更すれば良い)。
    
    9トラックのドライブでは、テープのどこにでも書き込みが可能であるが、
    データのひとかたまりを上書きすることはサポートされていません。
    
    8mmドライブで拡張ファイルマークを使うと、テープの2.2MBを消費し、
    書き込みに 8.5秒かかります。短いファイルマークでは184KB消費し、
    1.5秒かかります。
    
    BLOCK SIZE:
    
    データがテープに書き込まれるときは、ブロック単位で書き込まれま
    す。テープ上で各ブロックは、レコード間ギャップで分離されます。
    書き込まれたテープの構造を理解することは、ブロックサイズを変え
    たときに発生する問題を理解するのに重要です。
    
    固定ブロックサイズのモードでは、テープ上の全てのブロックは同じ
    サイズです。そのサイズは、デバイスのコンフィグレーションで設定
    されたブロックサイズになります。テープドライブに対するすべての
    read()とwrite()は、固定ブロックサイズの倍数でなければなりませ
    ん。
    
    固定ブロックモードでは、read() は、read()リクエストを満たすの
    に必要なだけのブロックを返します。テープを読んでいる途中にファ
    イルマークに行き当たったら、ファイルマークまでのデータが返され
    ます。
    
    テープドライブは、デバイスコンフィグレーションで指定されたブロッ
    クサイズと違うブロックサイズで書かれたテープを読むことはできま
    せん。(デバイスコンフィグレーションで可変長ブロックになってい
    ない限り。)
    
    可変ブロックサイズ(0)モードでは、テープに書き込まれるブロック
    はデバイスドライバーに対する read()とwrite()リクエストのサイズ
    です。この場合、テープ上の実際のブロックサイズは、バックアップ
    コマンドのオプションで変更できます(tar -C, cpio -C, backup -C)。
    
    可変長モードでは、テープ上のブロックサイズより大きいサイズの
    read() リクエストは、テープの次のブロックからのデータしか返し
    ません。この特徴によって、任意のブロックサイズ(固定長であれ可
    変長であれ)で書かれたテープを dd コマンドで読むことが可能にな
    ります(ddコマンドからの出力は、例えば restore, tar, cpio など
    にパイプで渡すことができる)。backup, tar,それに cpioコマンドは、
    大きなブロックサイズではテープを読めなくなることに注意してくだ
    さい。何故なら、これらのコマンドは、read()が指定したサイズより
    も小さいサイズを返すとエラーとして扱うからです。
    
     dd ibs=128k obs=16k if=/dev/rmt0 | ...
    
    テープのヘッドは、読みこみまたは書き込みの後は、必ず、レコード
    間ギャップか、ファイルマークか、ブランクテープの部分に位置され
    ます。
    
    8mmテープドライブの場合、1KBの倍数でない固定ブロックサイズを使
    うのは非効率的です。8mmテープドライブは内部的には常に1KBのブロッ
    クで書き込んでいるのである。可変長ブロックサイズをシミュレート
    するが、しかし、例えば、512バイトの固定ブロックサイズを使うと
    (または可変長ブロックサイズを使って write()を 512バイトで行う
    と)、テープ容量の半分を無駄にし、また、転送効率も最大の半分に
    なってしまいます。
    
    非UNIXマシンや他のベンダーのマシンとの間のデータ交換
    
    多くのテープドライブは、可変長と固定長の両方のブロックサイズを
    サポートしています。
    
    可変長ブロックモードでは、書き込みコマンドの発行したサイズのブ
    ロックサイズで書き込みます(tar と backup はこれを -bオプション
    で指定できる)。固定長モードでは、ブロックサイズは固定であり全
    ての書き込みは、固定ブロックサイズの倍数でなければなりません。
    
    Unix はしばしば、実際に read と write が行われる前に、大きなサ
    イズの read と write を扱いやすい断片(65535, 65534, 65532バイ
    トが良く使われる)に、 内部的に分割する。これは、64KBの read と
    write は、しばしば 65535バイトのレコードと1バイトのレコードに
    分割されることを意味します(固定長モードでは、書き込みが失敗す
    る)。このため、64KB以上のブロックサイズを使用するのは避けるべ
    きです。AIX は、read と writeリクエストを分割しないが、他のマ
    シンでは注意しなければなりません。
    
    テープが書かれたブロックサイズが分からないときは、smit でデバ
    イスコンフィグレーションを可変長ブロックを使うように設定し、dd
    コマンドで、入力ブロックサイズを大きく取り、リストアするコマン
    ドにパイプで渡せば良いでしょう。例えば次のようにします。
    
        chdev -l rmt0 -a block_size=0
        dd if=/dev/rmt0 ibs=128k obs=16k | tar -tvf-
    
    
    
    目次へ
    1.201: リモートにバックアップするには?
    From: oquinn@elder.austin.ibm.com
    
    以下のコマンドで可能です。
    
      tar -b1 -cf - . | rsh REMOTEHOST "dd ibs=512 obs=1024 |
                        of=/dev/TAPEDEVICE"
    
    From: kraemerf@franvm3.VNET.IBM.COM (Frank Kraemer)
    
    mksysbではリモートのテープデバイスにはバックアップできません。
    Frankによる次のスクリプトでリモートにバックアップができます。
    (編者注: このスクリプトがうまく動作する事を確かめた。しかし、/tmp
    の中に .a というテンポラリファイルを作成するので、大きなファイ
    ルシステムに対しては遅いかも知れません)。
    
    
    #!/bin/ksh
    # @(#) Create a backup tape of the private user data.
    #=================================================================#
    #   Script :  usave.sh                                            #
    #   Author :  F. Kraemer                                          #
    #   Date   :  92/02/19                                            #
    #   Update :  92/10/29                                            #
    #   Info   :  the ultimative backup script                        #
    #   Example:  usave.sh /dev/rmt0      -  save to local tape       #
    #             usave.sh /save/save.me  -  save to local file       #
    #             usave.sh /tmp/pipe      -  save to remote tape      #
    #-----------------------------------------------------------------#
    PS4="(+) "
    #set -x
    PROG=$(basename $0)
    HOST=$(hostname)
    TODAY=$(date +%H:%M:%S)
    #
    # cleanup
    #
    cleanup ()
    {
    ec=$1
    error=$2
    case "$ec"
    in
       "$USAGE_EC")    # usage error
         error="Usage:\t$PROG DeviceName\n" 1>&2
        ;;
       "$NOTAP_EC")    # Tape error
         error="error:\t$PROG: $DEVICE is not available on the system.\n" 1>&2
        ;;
       "$LISTE_EC")    # list error
         error="error:\t$PROG: could not create tar list for $LOGNAME.\n" 1>&2
        ;;
       "$NOTAR_EC")    # tar command error
         error="error:\t$PROG: tar command failed.\n" 1>&2
        ;;
       "$PIPEP_EC")    # pipe error
         error="error:\t$PROG: mknod command failed.\n" 1>&2
        ;;
       "$NORSH_EC")    # rsh error
         error="error:\t$PROG: rsh - Remote Shell command failed.\n" 1>&2
        ;;
       "$RHOST_EC")    # remote host error
         error="error:\t$PROG: Remote Host unknown.\n" 1>&2
        ;;
       *)
       ;;
    esac
    case "$DEVICE"
    in
        #
        # Fix the block size if $DEVICE is a tape device
        #
        /dev/rmt[0-9]*)
            echo "\n\t$PROG: Rewinding tape to begin.........(please wait)\n"
            tctl -f $DEVICE rewind 2>/dev/null
            ;;
        *) ;;
    esac
    rm -f ${LIST} ${PIPE} 2>/dev/null
    [ -n "$error" ] && echo "\n${error}\n"
    trap '' 0 1 2 15
    exit "$ec"
    }
    #
    # Variables
    #
    USAGE_EC=1                         # exit code for usage error
    NOMNT_EC=2                         # exit code wrong device name
    NOTAP_EC=3                         # exit code no tape available
    LISTE_EC=4                         # exit code backup list error
    NOTAR_EC=5                         # exit code for wrong tar
    TRAPP_EC=6                         # exit code for trap
    PIPEP_EC=7                         # exit code for pipe
    RHOST_EC=8                         # exit code for bad ping
    NORSH_EC=9                         # exit code for bad rsh
    DEVICE="$1"                        # device to tar into
    LIST="/tmp/.tar.$LOGNAME.$$"       #
    REMOTEH=""                         # Remote host for backup
    REMOTET=""                         # Remote tape for backup
    tapedev=                           #
    PIPE="/tmp/pipe"                   # Pipe for remote backup
    #
    # main()
    #
    tput clear
    echo "\n\t$PROG started from $LOGNAME@$HOST on $TERM at $TODAY.\n"
    rm -f $LIST 2>/dev/null
    #
    # Trap on exit/interrupt/break to clean up
    #
    trap "cleanup $TRAPP_EC \"Abnormal program termination. $PROG"\"  0 1 2 15
    #
    # Check command options
    #
    [ "$#" -ne 1 ]  &&  cleanup "$USAGE_EC" ""
    #
    # Check device name
    #
    [ `expr "$DEVICE" : "[/]"` -eq 0 ] && cleanup "$NOMNT_EC" \
            "$PROG: Backup device or file name must start with a '/'."
    #
    # Check tape device
    #
    case "$DEVICE"
    in
        #
        # Fix the block size if $DEVICE is a tape device
        #
        /dev/rmt[0-9]*)
            #
            echo "\n\t$PROG: Verify backup media ($DEVICE)............\n"
            #
            # see if a low or high density tape device was specified
            # (eg rmt0.1)
            density="`expr $DEVICE : \
                    "/dev/rmt[0-9]*\.\([0-9]*\)"`"
            #
            # strip /dev/ from device name and
            # get the base name (eg translate:
            # /dev/rmt0.2 to rmt0)
            #
            tapedev="`expr $DEVICE : \
                    "/dev/\(rmt[0-9]*\)[\.]*[0-9]*"`"
            #
            # Check if the tape is defined in the system.
            lsdev -C -c tape -S Available -F "name" | grep $tapedev >/dev/null 2>&1
            rc=$?
            [ "$rc" -ne 0 ] && cleanup "$NOTAP_EC" ""
            #
            # Restore old tape name.
            #
            [ "${density:-1}" -lt 4 ] && density=1 || density=5
            DEVICE="/dev/${tapedev}.${density}"
            echo "\n\t$PROG: Insert a tape in ($DEVICE)........(press enter)\n"
            read TEMP
            echo "\n\t$PROG: Rewinding tape to begin...........(please wait)\n"
            tctl -f $DEVICE rewind 2>/dev/null
            ;;
        #
        # Backup is done on remote host. The remote shell facility
        # must be set up and running.
        #
        ${PIPE}*)
            #
            echo "\n\t$PROG: Assuming remote backup via network.\n"
            echo "\t$PROG: Enter name of Remote Host   ===> \c"
            read REMOTEH
            echo "\n\t$PROG: Pinging Remote Host to test connection.\n"
            ping ${REMOTEH} 1 1 >/dev/null 2>&1
            rc=$?                                    # give up unknown host
            [ "$rc" -ne 0 ] && cleanup "$RHOST_EC" ""
            JUNK=$(rsh ${REMOTEH} "/usr/sbin/lsdev -C -c tape -S Available")
            rc=$?                                    # give up rsh failed
            [ "$rc" -ne 0 ] && cleanup "$NORSH_EC" ""
            echo "\t$PROG: Available Tapes on ${REMOTEH} are :\n\n\t\t${JUNK}\n"
            echo "\t$PROG: Enter name of Remote Tape (e.g. /dev/rmt0) ===> \c"
            read REMOTET
            echo "\n\t$PROG: Insert tape on ${REMOTEH} in ${REMOTET}..(press enter)"
            read TEMP
            echo "\t$PROG: Rewinding Remote Tape ${REMOTET} on ${REMOTEH}.\n"
            rsh ${REMOTEH} "tctl -f ${REMOTET} rewind"
            rc=$?                                    # give up rsh failed
            [ "$rc" -ne 0 ] && cleanup "$NOTAP_EC" ""
            rm -f ${PIPE} 2>/dev/null
            mknod ${PIPE} p
            rc=$?                                    # give up mknod failed
            [ "$rc" -ne 0 ] && cleanup "$PIPEP_EC" ""
            cat ${DEVICE} | rsh ${REMOTEH} "dd of=${REMOTET} obs=100b 2>/dev/null" &
            ;;
        *)  ;;
    esac
    #
    # Prepare the list
    #
    echo "\n\t$PROG: Create list of files to be saved...."
    find $HOME -print > $LIST
    rc=$?
    [ "$rc" -ne 0 ] &&  cleanup "$LISTE_EC" ""
    #
    # tar the files
    #
    echo "\n\t$PROG: Changing current directory to (/)...."
    cd / > /dev/null 2>&1
    echo "\n\t$PROG: Running tar format backup from user ($LOGNAME)...."
    tar -cvf "$DEVICE" -L "$LIST"
    rc="$?"
    [ "$rc" -ne 0 ]  && cleanup "$NOTAR_EC" ""
    #
    # Backup completed
    #
    TODAY=$(date +%H:%M:%S)
    echo "\n\t$PROG ended at $TODAY............................\n\n"
    cleanup 0
    
    
    目次へ
    1.202: 複数のディスクにまたがるボリュームグループをバックアップするには?
    From: pack@acd.ucar.edu (Daniel Packman)
    
    編者注: 編者はこの手順は確認していません。編者は、実際に大きな論
    理ボリュームを必要としない限り、ひとつのボリュームグループが複
    数のディスクにまたがることはお勧めしません。
    
    1. 一つのボリュームグループに3個以上のディスクがある場合。( 内
    蔵ディスクドライブが3個ある 5xx シリーズのマシンでは普通 3 個
    です。二個しかない場合は、個々で述べる手順は、ボリュームグルー
    プの定数(quorum)を満たさないいうことを無視するように修正する必
    要があります。)
    
    2. 一個のドライブが壊れた場合(普通は一度に一個しか壊れない:-))
    
    サービス・ブート
    訳注) キーをserviceの位置に回してのbootのことか?
    
    が終わったら(問題のボリュームグループが rootvg と言う名前で、
    残った二つのディスクのうち一つが hdisk0 という名前の場合)、つ
    ぎのコマンドを実行します。
    
      importvg -y rootvg hdisk0
      varyonvg -f -n -m1 rootvg
    
    これらのコマンドは成功しても、エラーメッセージが出ます。例えば、
    論理ボリューム /dev/lv00 に ファイルシステム /u をマウントした
    ければ以下のようにします。
    
      mount -f /dev/lv00 /v
    
    これは、jfslog、つまり ジャーナルド・ファイルシステムのログデ
    バイスが壊れたディスク上になかった場合にのみ成功します。壊れた
    ディスクにあった場合は、ファイルシステムを read-only でマウン
    トしなければなりません(read-onlyでマウントするのはいつでも可能で
    ある)。
    
      mount -f -r /dev/lv00 /v
    
    この決定的できわめて明白な点で、Austin のレベル3のサポート部隊
    の人たちも私自身も一週間ほど悩まされました。一旦ファイルシステ
    ムが利用可能になれば、テープにセーブして後でリストアできます。
    もちろん、ファイルシステムが3個の物理ディスク全体にまたがって
    いれば、そのうちの2/3しか回復できません。もう一つの注意すべき
    点は、フロッピーからの標準的なブート手順には、restoreコマンド
    は入っているが、backupコマンドは入っていないという点です。
    
    **************************************************************
    自分のサイトに他に RS6000 がない場合は、restoreか、tar か cpio
    を含むブートテープを作るか(ブートフロッピーでは容量が足りない)、
    最低でも、backup か cpio か tar コマンドをスペアのフロッピーに
    コピーしておくことが、絶対的に必要です。フロッピーは、
    backup - ivq で作って、中身がブート後メモリ常駐システムに読み
    込めるようにする必要があります。
    **************************************************************
    
    tar, cpio または backup コマンドがマウント可能な壊れてないディ
    スク上にあれば全てが失われたわけではありません。tar と cpio は
    /bin にあるので、両方とも利用できないということはないでしょう。
    
    標準以外の、必要になるコマンドを入れたブートテープを作っておく
    のが良いでしょう。つくりかたは IBM の操作手順に従うが、以下の
    三つのファイルに希望のコマンドを追加します。
    
        /usr/lpp/bosinst/tape2
        /usr/lpp/bosinst/diskette/boot2
        /usr/lpp/bosinst/diskette/inslist
    
    最小メモリ構成でなければ、たくさんのコマンドを追加できるはずである。
    
    
    目次へ
    1.203: 一個の8mmテープに複数のバックアップをとるには?
    From: kerm@mcnc.org (Cary E. Burnette)
    
    二通りのやりかたがある。どちらも巻き戻しをしないデバイス
    /dev/rmt0.1 を使います。
    
    方法 #1
    -----------
    
    一個のテープに複数のバックアップを取るには、/dev/rmt0.1を使い
    ます。これは、自動巻き戻しをしないデバイスです。rdump か
    backup を使う(名前による方法、inodeによる方法のどちらでも良い。)
    byinode の rdump や backup を使うと、テープを巻き戻していると
    いうメッセージが出るが、実際には巻き戻していません。私のところ
    では以下のようにしている。
    
    # rsh remote1 -l root /etc/rdump host:/dev/rmt0.1 -Level -u /u
    # rsh remote2 -l root /etc/rdump host:/dev/rmt0.1 -Level -u /u
    # tctl -f /dev/rmt0.1 rewind       # rewinds the tape
    
    ここでは、host というマシンからのコマンドを実行しています。
    最初のバックアップの内容一覧をリストアするには、以下のようにし
    ています。
    
    # restore -f /dev/rmt0.1 -s1 -tv
    
    ここで、-s1 フラグで テープ上の最初に出会ったレコードに行くこ
    とを restore に指示しています。二番目をリストアするには、全く同
    じコマンドをもう一度実行すれば良いです。基本的に、-s(Number) は、
    現在の点から Number目のレコードに行くことを意味してます。
    
    方法#2
    -----------
    
    Steve Knodle
    Educational Resources Center
    Clarkson University
    
    以下の方法を使っています。
    
    ------------------- Dump.sh --------------------
    CONTENTSFILE=`date |dd conv=lcase |sed -e 's/19//' |awk '{print $6 $2 $3}'`
    set -x
    LEVEL=$1
    shift
    
    backup -c -b 56 -$LEVEL -uf /dev/rmt0.1 /
    backup -c -b 56 -$LEVEL -uf /dev/rmt0.1 /usr
    backup -c -b 56 -$LEVEL -uf /dev/rmt0.1 /u
    tctl -f /dev/rmt0 rewind
    
    touch /usr/local/dumps/Contents.$CONTENTSFILE
    echo "Dumping /" >>/usr/local/dumps/Contents.$CONTENTSFILE
    restore -t -s 1 -f /dev/rmt0.1 >>/usr/local/dumps/Contents.$CONTENTSFILE
    echo "Dumping /usr" >>/usr/local/dumps/Contents.$CONTENTSFILE
    restore -t -q -s 1 -f /dev/rmt0.1 >>/usr/local/dumps/Contents.$CONTENTSFILE
    echo "Dumping /u" >>/usr/local/dumps/Contents.$CONTENTSFILE
    restore -t -q -s 1 -f /dev/rmt0.1 >>/usr/local/dumps/Contents.$CONTENTSFILE
    tctl -f /dev/rmt0 rewind
    
    内容一覧は、共通のprefix encodingをする小さなプログラムでまず
    処理してから、compress しています。
    この内容一覧ファイルは、テープを次に使うまでオンラインで参照で
    きます。
    
    
    目次へ
    1.204: ネットワーク経由でテープをコピーするには?
    
    ここでの挑戦は、一時ファイルを作らないこと(ディスク容量の制限)と
    異機種間ネットワークを経由して動作することである。
    
    This script might work:
    
    LOCAL=/dev/tape_dev
    REMOTE=/dev/tape_dev
    dd if=$LOCAL ibs=64k obs=512 | rsh remote_host dd ibs=512 obs=64k of=$REMOTE
    
    
    目次へ
    1.205: テープブロックが0とはどういうことですか。
    
    テープ装置は一般に2つの種類にわけられる。1つは固定長ブロック
    型で、もう1つは可変長ブロック型である。1/4インチテープは固
    定長ブロックで8mmは可変長である。固定長ブロックサイズ装置にお
    いて、カーネルはその装置に適切な大きさのブロックサイズでデータ
    を送り、記録するのに渡すサイズを変えるとカーネルにより多くのデー
    タを与えることになる。可変長ブロックサイズ装置では、カーネルは
    その装置に渡されるものが何でも書き出す。8mmにおいては、テープ
    を効率的に使うにはブロックサイズは1024の倍数が良い。AIXに
    は世界で唯一の可変長ブロックサイズの1/4インチテープ装置もあ
    る。もしブロックサイズを0でない値にしてSMITを使うなら、AIXは
    その装置がどのようなものでも固定長ブロックとして扱う。8mmテー
    プはデフォルトでは1/4インチと同じ512バイトにセットされる。
    これは不経済だがもしそうでなければmksysb と installp がうまく
    いかない。もしブロックサイズを0にすると、その装置は可変長サイ
    ズとして扱われ、記録するのに渡されるサイズが物理的ブロックサイ
    ズになります。適切なサイズを dd につかうならすべてうまくいくは
    ずです。
    
    
    目次へ
    1.206: ハングしたテープ装置のリセットについて
    
    プロセスはテープ装置をアクセスする。そしてプロセスが止まって終
    了したり、又どんなことでもよいがテープ装置へまだ継っている。こ
    のようなことが起きると、プロセスがシグナルで止められなくなり、
    マシーンがリブートされるまでテープ装置は他のプロセスに使われな
    くなる。
    
    つぎのようにすればよい。
    
    UNIX とほとんど同じような AIX はテープ装置のリセットがありませ
    ん。しかし結果として生じるコードを用いてテープ装置へ Bus
    Device Reset(標準SCSIメッセージ)を送ることができます。テープ装
    置が BDR に対し応答しないと SCSI Bus Reset が送られる。(これは
    SCSIBus のすべての装置をリセットする) SCSI Bus リセットは最後
    の手段なので不必要に用いることはおさえるべきである。しかしシャッ
    トダウンやリブートの他に装置をリセットする方法がないときがある。
    (例えば8mmドライブにjammed/old/badテープでいれた後)(明らかに
    リセットするのに外部装置の電源をOFF/ONでよい...これが最も良い
    方法かも知れない)このことは実際資料の中では文書で証明されてい
    るが、見つけにくく、次のプログラムも完全ではない。
    
    /* taperst: resets the tape drive by sending a BDR to the drive. */
    #include 
    #include 
    #include 
    #include 
    
    int main(int argc, char **argv)
    {
             /* This can be run only by root */
    
             if (argc != 2) {
                 fprintf(stderr, "Usage: %s /dev/rmt#\n", argv[0]);
                 return 1;
             }
    
             if (openx(argv[1], O_RDONLY, 0, SC_FORCED_OPEN) < 0) {
                 perror(argv[0]);
                 return 2;
             }
             return 0;
    }
    
    
    目次へ
    1.207: mksysb テープを tar でどのように読み取れるのですか。
    From: Marc Pawliger (marc@sti.com)
    mksysb で作られたバックアップから指定ファイルを元に戻す。
    
    $ tctl fsf 3
    $ tar xvf /dev/rmt0.1 ./your/file/name
    
    
    目次へ
    1.300: メモリーマネージメントシステムについての情報
    
    1.AIX は他のUNIX システムよりたくさんのページングスペー
        スを使えますか?
    
    たくさんのシナリオをもとに、AIX は他のUNIX システムよりたくさ
    んのページングスペースを要求しています。
    AIX の VMM は "earlyallocation of paging space"と呼ばれる技術
    を提供します。ページが RAM に割り当てられた時、それは "client"
    や "persistent"の 記憶ページ ではなく、"working" 記憶ページと
    考えられます。Working 記憶ページ は、一般にアプリケーションの
    スタックやデータ, シェアードメモリセグメントです。だから、プロ
    グラムスタックやデータエリアが増えた時、 RAM がアクセスされV
    MMは RAM にスペースを割り当てページングデバイスとします。こ
    のことは RAM が消費しつくされるまえでもページングスペースを使
    うということです。このことは VM が使っている全体のトラックを保
    持しているにも係わらず、他の UNIX システムでは起こりません。
    
    EXAMPLE.1
    
    64MBの RAM を持つワークステーションが、少しのファイルにし
    かアクセスしないようなただ1つの小さなアプリケーションを動かし
    ています。アクセスしたデータを含むすべてのものが RAM に入って
    います。AIX では、すでに幾つかのページングスペースが使えます。他の
    UNIX システムでは、ページングスペースは100%空いています。明
    らかに、他のマシンより多いページングスペ−スを使っているという
    ことが示される例です。
    
    EXAMPLE.2
    
    不十分な RAM でたくさんのアプリケーションが動いている、という
    環境以外上と同じ。また、システムとは、始まっていたり、動いてい
    たり、アイドルであったりするアプリケーションで、一定の使われか
    たではありません。たとえばウインドウで動いているフレームがそれ
    です。結果として(理論上)全てのアプリケーションは少なくとも1度
    はページアウトされるでしょう。AIXでも他のシステムでもすべての
    ページング要求は同じでしょう。( malloc algorithm により想定さ
    れます。)主な違いは、AIXは実際にページングスペースが必要となる
    前に割り当てており、他のシステムは必要となるまで割り当てないと
    いうことです。しかしながら、他のシステムは virtual memory page
    が使われたように内部変数をインクリメントしますが、AIXはそうで
    はありません。malloc はメモリーを返し続けてはいるが、AIXはペー
    ジングスペースの外で動くようになっています。この特徴は節約した
    メモリーセグメントで動かすことを許すが、malloc(sbrk) を普通に
    使う全てのユーザが、どれほどの仮想メモリを使えるか(実際は使え
    ない)を知っていることを要求し、低い条件でページングスペースを
    扱うことができます。大きな問題です。Virtual Memory をつかう両
    方の方法へのかなり明らかな pros と cons があります。
    
    2    どのくらいのページングスペースが必要でしょう。
    
    概算ではRAMの2倍のページングスペースが必要です。これは、多く
    の概算にあるように、単純なものですが。もし機械が、"persistent
    storage environment" の状態にあれば、つまり少しのプログラムで
    たくさんのデータがある状態にあれば、ページングスペースにはRAM
    の1倍も必要ないでしょう。例えば、1GB のデータベースが 256MB
    の RAM の 6000 で動いていて、ただ 50MB の実働記憶をいるならば
    512MB のページングスペースは必要無く、おそらく 256MB も必要は
    無いでしょう。これは、1GB のデータベースはたいてい "persistent
    storage " であり、ほとんどまたは全くページングスペースを必要と
    しないからです。過多なページングスペースは単にディスクスペース
    を浪費することを意味します。しかし、不十分なページングスペース
    は、避けましょう。
    
    Tip: 1つのディスクに1つ以上のページングスペースを持たず、シ
         ステムの中にたくさんのRAMを置きましょう。マシンはそれを使
         うでしょう。
    
    3    なぜ vmstat は空きRAMページを示さないのだろう。
    
    AIX は RAM をできるだけ大きなバッファーとして使います。もし朝
    ファイルを読んだら、そのファイルはRAMに読み込まれ、そこに残さ
    れれます。もし他のどんなプログラムもRAMを使わなければ、そのファ
    イルはマシンを止めるまでRAMに残っているます。これは、もしも
    う一度そのファイルを使うとき、アクセスが早いだろうということを
    意味します。もし RAM が必要ならばシステムは単にファイルの使ってい
    るページを使うでしょう。そのページは素早くディスクへ書き戻され
    ます。これは十分な RAM があればディスクへのアクセスの際、大変
    スピードアップすることを意味しています。例えば、256MBのシステム
    ならば、200MBのデータベースは楽に入れれるということです。
    
    4    vmstat は空きRAMページを示さないので、RAM の乗っていない
          のですか?
    
    
    多分違います。diskfile が RAM へ map されているので、もし
    vmstat がたくさんのRAMページを空きとして示したら、それは多分た
    くさんのRAMを持っていることになります。( RISC System/6000 では
    異常なことです。)
    
    
    5    vmstat の "avm" や "fre" のフィールドは何かを合計したも
          のですか
    
    
    いいえ。"avm" フィールドはどれくらい Active Virtual Memory が
    使えるかを示しています。これは使っているページングの量とかなり
    近い数字です。この数字は使っているRAMの量とは絶対に関係ありま
    せん。また、mapped file (disk file) も含んでいません。RAMの量
    は、/usr/sbin/bootinfo -r でわかります。
    
    
    6    なぜ vmstat の "fre" フィールドは時々たくさんの空きRAMペー
          ジを示しているのでしょう。
    
    
    これは working storage ( NFS storage でも diskfile でも
    persistent strage でもない ) を経由して、たくさんのRAMを使った
    アプリケーションをでた後におこります。working storage によって
    使われたRAMページがもはや必要でなくなったとき、そこに置いてお
    く必要はありません。AIXは完全に RAM ページを開放します。これら
    のページにアクセスする時間と、"sync'd" をもっているRAMページが
    ファイルをマップするのとはほとんど一致しています。それゆえに、
    定期的にRAMをflush する必要はありません。
    
    
    7    vmstat の "fre" フィールドは意味がありますか。
    
    vmstat の "fre" フィールドは 空きページのフレームを表している。
    もしその数が矛盾なく小さい(500ページ以下)であれば、正常です。
    もしその数が矛盾なく大きい(400ページ以上)であれば、マシンで
    必要なメモリー以上のめもりーがあることになります。
    
    
    目次へ
    1.301: ps のメモリについての表示はどれぐらい信用できるの?
    From: chukran@austin.VNET.IBM.COM
    
    "ps vg" で、実行中の各プロセス毎のプロセスあたりのメモリ使用状
    況の記録を見ることができます。色々なフィールドが色々な単位でメ
    モリ使用状況を示しているますが、これらの数字で、メモリがどこで
    使われているか全部分かるわけではありません。
    
    第一に、ps のマン・ページはメモリ関連のフィールドの記述が正確
    ではありません。以下にもっとましな説明を述べます。
    
    RSS - 一個のプロセスの textと data セグメントにたいして使われ
    ているRAM 上のメモリをキロバイトで表示します。(この値は、つねに4
    の倍数であす。なぜなら、メモリは 4KBのページ単位で確保されるか
    らです。)
    
    %MEM - 一個のプロセスのRSSをRAMの全量で割った比です。RSS は、
    一個のプロセスの全実メモリ使用量の一部なので、%MEM の値もまた
    実際に使用される割合よりは小さいです。
    
    TRS - プロセスの text セグメントに使われている RAM常駐メモリを
    キロバイトで表示します。この値は常に RSS 以下です。
    
    SIZE - プロセスのtextとdataセグメントにどれだけページングスペー
    スが割り当てられているかをキロバイト単位で表示します。実行形式
    のファイルがローカルのファイルシステムにある場合には、text に
    たいして使われるページングスペースは 0 です。この数字は RSS よ
    り大きくも小さくもなります。それは幾つのプロセスがページインし
    ているかに依存します。RSS の方が大きくなりうる理由は RSS は
    text をカウントしているが、SIZE はカウントしていないからです。
    
    TSIZ - このフィールドは、全くの偽りです。何故なら、4の倍数でな
    いし、他のどのフィールドとも相関がないからです。
    
    上記の各フィールドは、プロセスのtextとdataセグメントについての
    み表示です。この時点で知ることが不可能なセグメントのサイズに
    は以下のようなものがあります。
    
           共有ライブラリの text部分(セグメント 13)
    
           使用中のファイル。オープンされたファイルは個々のセグメ
           ントとしてメモリにキャッシュされます。伝統的なカーネルの
           キャッシュバッファのスキームは AIX 3 では使われていませ
           ん。
    
           shmat で作り出される共有データセグメント。
    
           カーネルセグメント0,カーネル拡張セグメント、そして仮想
           メモリ管理セグメントなどのカーネルセグメント。
    
    カーネルセグメントについて言えば、プロセス 0 に対する %MEMと
    RSSの表示はAIX3.1の場合は、全くの偽りです。RSSがかくも大きい理
    由はカーネルセグメント 0が二回カウントされているからです。
    AIX3.2の場合は、これは変更されているが、全体像はまだ明らかになっ
    ていません。プロセス 0 に対する RSS の値はswapperのプライベー
    トデータセグメントについての非常に小さな数字を報告しません。
    swapperのコードが存在する、カーネルセグメント 0 のサイズについ
    ては報告しません。
    
    まとめると、ps はシステムのメモリ使用量を知るにはあまり良いツー
    ルではないということです。メモリの一部がどこで使われているかに
    ついては教えてくれるますが、しかし全体の使用状況についての疑問がた
    くさん残ったままになります。
    
    
    目次へ
    1.400: シェルのプロンプトにいろいろな情報を入れたいんだけど?
    
    Kornシェル(ksh)の場合は、変数 PS1 が出力のたびに展開されるので、
    
    $ myhost=`hostname`
    $ PS1='$LOGNAME@$myhost $PWD \$ '
    
    とすれば
    
    bengsig@ieibm1 /u/bengsig $
    
    のようにすることが出来ます。
    
    Cシェルの場合は、
    
    % set myhost=`hostname`
    % alias cd 'chdir \!*' > /dev/null; set prompt="$LOGNAME@$myhost $cwd % "'
    % cd
    
    のようにすれば、
    
    bengsig@dkunix9 /u/bengsig/aixfaq %
    
    となります。
    
    Bourneシェルの場合には簡単にはいかないので、代わりにKorn シェ
    ルを使いましょう。
    
    
    目次へ
    1.401: ksh のコマンド行編集機能を emacs モードにするには?
    From: scotte@cdsac.uucp (L. Scott Emmons)
    
    ドキュメントには書かれていないが、ksh には、emacsモードの行編
    集コマンドに矢印キーをバインディングする方法がある。.kshrc で
    次のように書く。
    
    alias __A=^P
    alias __B=^N
    alias __C=^F
    alias __D=^B
    alias __H=^A
    
    Note that "^P" (et al) must be the actual control sequence.
    "^P" は、コントロールシーケンスそのものでなくてはなりません。
    
    "set -o emacs" と打ち込むか、.profile に入れておけばよいでしょ
    う。
    
    また、AIX3.2でこれが動作するためには PTF U406855 を手に入れる
    必要があります。この問題の APAR 番号は IX25982 であり、さらに
    新しい PTFが出ているかも知れません。
    
    
    目次へ
    1.403: ls するとコアダンプする。
    From: jfh@greenber.austin.ibm.com (John F Haugh II)
    
    背景: N人のユーザーに共有されているディレクトリがあるとします
    (N >= 200)。そのディレクトリで 'ls -l' を実行します。しばらく
    すると、セグメンテーションフォルトでコアダンプします。ユーザー
    名を表示するときにだけこの問題は起こります(各ファイルは殆ど全
    部別々のユーザーに所有されている場合である。) -g と -n オプショ
    ンはうまくいきます。 -l と -o (所有者は表示するがグループは表
    示しない)が問題です。
    
    この問題は U407548 で修正されたと思います。このコアダンプが問
    題になるほどたくさんのユーザーを抱えているなら(200人以上である)、
    IX31403 を修正する PTF を探したほうが良いでしょう。この APAR は、
    多数のアカウントとそれらをルックアップするさいのパフォーマンス
    の問題を扱っています。
    
    訳注)1993/3 end 時点での情報では、この APAR に対しては以下のPTFが出ている
        U412816 IX31403 bos : GETPWNAM/GETPWENT ARE SLOW, DBM FILES IGNORED
        U413596 IX31403 bosadt : GETPWNAM/GETPWENT ARE SLOW, DBM FILES IGNORED
        U414081 IX31403 bosext1 : GETPWNAM/GETPWENT ARE SLOW, DBM FILES IGNORED
        U414342 IX31403 bosext1 : GETPWNAM/GETPWENT ARE SLOW, DBM FILES IGNORED
        U413591 IX31403 dcebase : GETPWNAM/GETPWENT ARE SLOW, DBM FILES IGNORED
    
    
    目次へ
    1.404: InfoExplorer の ASCII キーバインディング
    From: mycroft@hal.gnu.ai.mit.edu (Charles Hannum)
    
    立ちあげたときに、'Return' を押すと、`Basic Screen Operations'
    がハイライトされて、ヘルプが表示されます。
    
    良く眺めると、`Using Keys and Key Sequences in the
    InfoExplorer ASCII Interface' というページが見つかるはずです。
    キーのシーケンスとアクションが解説されている。以下に最初に必要
    なものを2,3挙げておきます。
    
    キー       アクション
    
    Ctrl-W     Navigation 画面と Reading画面の間を移動します。
           Navigation 画面が出ているとき、Ctrl-Wを押すと、
               Reading画面に換わります。Reading画面が出ているとき、
               Ctrl-Wを押すと Navigation画面に換わります。
    Ctrl-O     メニューバーを出したり、しまったりします。
           カーソルが画面のテキスト領域にあるときに、Ctrl-O を
               押すと、メニューバーがアクティブになります。メニュ
               ーバーがアクティブのときに、Ctrl-O を押すと、カーソ
               ルをテキスト領域に移動します。
    Tab        メニューバーの次のメニュー項目に移動します。プルダウ
               ンメニューが表示されていないときは、右矢印キーを押
               すと、次のメニュー項目が反転表示されます。
    
    
    目次へ
    1.405: 新しいマニュアルページをシステムに加えるには?
    
    マニュアルページを /usr/man におきます。たとえば、
    /usr/man/man1/tcsh.1 が tcsh のマニュアルページだと言う具合で
    す。AIX 3.1.10 以降では、/usr/lib/makewhatis は makewhatis デー
    タベース /usr/man/whatis が apropos や whatis が加えられたマニュ
    アルページに付いて知るためにをアップデートするために用いられま
    す。/usr/lib/makewhatis は全ての 3.2 バージョンの上で可能です。
    
    
    目次へ
    1.500: X11のリリース番号はどうすればわかるのか。
    
        lslpp -h X11rte.obj を実行してください。
        もし
        01.02.0000.0000 COMPLETE COMMIT 03/04/93 02:05:11 root
        のような出力であれば X11R4 である。
        もし
        U491068 01.02.0003.0000 COMPLETE COMMIT 07/28/93
        12:50:42 root
        のような出力であれば X11R5 である。
        中にはこれらをそれぞれAIXwindows1.2.0 と 1.2.3 ということ
        もある。
    
    
    目次へ
    1.501: ctrl-alt-backspace を押してもXセッションが止まらないよ
    うにできますか。
    
     xinit -T ではじめると ctrl-alt-backspac でXが止まらないよ う
    にできます。
    
    
    目次へ
    1.502: HFTコンソール用の termcap/terminfo のソースはどこにある?
    
    RS/6000, PS/2 それに RT で使われているコンソールは、以下のよう
    な termcap で他のシステムの端末として使用可能である。terminfo
    のソースは/usr/lib/terminfo/*.ti にある。このtermcap は
    aixterm からも使える。
    
    hf|hft|hft-c|ibm8512|ibm8513|IBM_High_Function_Terminal:\
    	:co#80:li#25:am:ht:\
    	:cm=\E[%i%d;%dH:ti=\E[25;1H:te=\E[20h:\
    	:nd=\E[C:up=\E[A:do=^J:ho=\E[H:\
    	:bs:sf=\E[S:ec=\E[%dX:\
    	:cl=\E[H\E[J:cd=\E[J:ce=\E[K:\
    	:AL=\E[%dL:DL=\E[%dM:al=\E[L:dl=\E[M:\
    	:im=\E[4h:ei=\E[4l:mi:\
    	:dm=\E[4h:ed=\E[4l:\
    	:so=\E[7m:se=\E[m:ul=\E[4m:ue=\E[m:\
    	:md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\
    	:as=^N:ae=^O:sc=\E[s:rc=\E[u:\
    	:kl=\E[D:kb=^H:kr=\E[C:ku=\E[A:kd=\E[B:kh=\E[H:\
    	:kn#10:k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\
    	:k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:k0=\E[010q:\
    	:is=\Eb\E[m^O\E[?7h:rs=\Eb\E[m^O\E[?7h\E[H\E[J:
    
    
    
    目次へ
    1.503: どうやったら PostScriptのファイルを見ることができるのか?
          どうして、dpsexec はこんなにひどいのか?
    From: VRBASS@ATLVMIC1 (Vance R. Bass)
    
    xpreview(AIXのオプションのテキストフォーマッティングサービスに
    付いてくる)を使うか、comp.sources.x から GhostScript と
    GhostView を手に入れて、自分でインストールすれば、可能である。
    
    > xpreview のマンページより: xpreviewコマンドは、AIXwindows
    1.2 と Motif 1.1 上で動く、troff コマンドの出力を AIXwindowsの
    ディスプレイに表示するアプリケーションである。troffコマンドの
    出力は、devX100, devX100K か devpsc のうちのどれか一つのデバイ
    スタイプで作らなければならない。また、xpreview コマンドは、%!
    で始まる PostScriptファイルも表示可能である。
    
    訳注) xpreview は日本語 PostScript ファイルを表示する事は
          できません。
    
    dpsexec は、ドキュメント・ブラウザーとして作られたものではなく、
    単なる DPS コードのデバッガと思ったほうが良い。どうしても使い
    たいなら、PSコードを編集して "showpage"コマンド(これはdpsexec
    をリセットして、ウィンドウをクリアする)を取り除けば、一ページ
    のファイルを見ることはできる。複数ページのファイルを簡単に見る
    ことはできない。
    
    
    目次へ
    1.504: unix:0 と `hostname`:0
    
    1)resolv.confファイルの名前を変えることなく、そのマシーン
      からローカルホストテーブルをチェックする方法かありますか。
    
          知りません。SunOS や Ultrix では /etc/hosts で調べてくだ
          さい。NIS, ONS もそうです。AIXマシーンでは5分ごとの第1
          第2両方のネームサーバーの完全性をチェックする cron ジョ
          ブがあります。それらが働いているなら cron は resolv.conf
          の名前を変えます。そしてサーバーのチェックを続けます。そ
          れが元に戻ると resolv.conf を元に戻します。このようにし
          ても、第1サーバーが戻ったら第1と第2のサーバーの順序を
          入れ換えるように2つの resolv.conf を作る必要があります。
          第1サーバーが使えないときは、第2サーバーを問う前に第1
          サーバーで時間を合わせるために問い合わせはしばらく時間を
          置く。この方法はあまり洗練されたものではないが、仕事はし
          ている。cron が働いているときに関連したサーバーがさった
          ときによる移り変わりの間は物事は少し不安定となる。(クロッ
          クのわずかな違いのことではない。)
    
       2)コンソールディスプレイが unix:0 であるとき
    
         もしR5なら ":." という使い型であると思う。
         R4のクライアントは :0 認識できるので unix:0 は R4 のた
         めのものだと思う。unix やそのホストネームを指定せずに最も
         早いトランスポートメカニズムがわかる。最近はAIXwindowsのX
         サーバーには2つのトランスポート方法があるが(unixソケット
         とTCPソケット)多くのベンダーはトランスポート方法として分
         割されたメモリーの使い方を判断している。
         :0 (または :0.0, :1 など)を使うと、使えるトランスポート方
         法にかかわらずベストパフォーマンスが得られる。
    
         1.2.3 X11rte.obj(X11R5)の一部としてインストールされている
         X11 Shared Memory Transport がペナルティーをこうむるとき
         ":0" より "unix:0" や "hostname:0" を使う方が良い。
         /usr/lpp/X11/README.SMT を見てください。
    
       3)DISPLAY として`hostname`:0をつかって受ける重要なパフォー
          マンスがあるのですか
    
         はい。unix:0 を使うと、Unixソケットが使えます。それはよく
         似ているTCPソケットよりもずっと速いのです。
    
    
    目次へ
    1.505: aixterm をつなげる VT100キーについて
    
        .Xdefaultファイルに次の部分を加え、VAXセッションを、
        'aixterm -v -name vt100 -e telnet MYVAXHOST'で始
        めてください。
    
    -----
    vt100.foreground: Wheat
    vt100.background: MidnightBlue
    vt100.font: Rom14.500
    vt100.geometry: 80x25+0+0
    vt100.vt102: true
    vt100.fullcursor: false
    vt100.pointerColor: coral
    vt100.cursorColor: gray100
    vt100.translations:    F1: string(0x1b) string("OP") \n\
                           F2: string(0x1b) string("OQ") \n\
                           F3: string(0x1b) string("OR") \n\
                           F4: string(0x1b) string("OS") \n\
                           KP_0: string(0x1b) string("Op") \n\
                           KP_1: string(0x1b) string("Oq") \n\
                           KP_2: string(0x1b) string("Or") \n\
                           KP_3: string(0x1b) string("Os") \n\
                           KP_4: string(0x1b) string("Ot") \n\
                           KP_5: string(0x1b) string("Ou") \n\
                           KP_6: string(0x1b) string("Ov") \n\
                           KP_7: string(0x1b) string("Ow") \n\
                           KP_8: string(0x1b) string("Ox") \n\
                           KP_9: string(0x1b) string("Oy") \n\
                           KP_Divide: string(0x1b) string("OQ") \n\
                           KP_Multiply: string(0x1b) string("OR") \n\
                           KP_Subtract: string(0x1b) string("OS") \n\
                           KP_Add: string(0x1b) string("Om") \n\
                           KP_Enter: string(0x1b) string("OM") \n\
                           KP_Decimal: string(0x1b) string("On") \n\
                           Next: string(0x1b) string("Ol") \n\
                           Left: string(0x1b) string("OD") \n\
                           Up: string(0x1b) string("OA") \n\
                           Right: string(0x1b) string("OC") \n\
                           BackSpace : string(0x7f) \n\
                           Down: string(0x1b) string("OB")
    
        .profileファイルにも、次の部分を加えてください。
    
            XENVIRONMENT=$HOME/.Xdefaults
            export XENVIRONMENT
    
    
    目次へ
    1.506: 過度に CPU を使わないスクリーンセイバーはありますか。
    
        次のようなオプションを用いて xlock を使ってみてください。
    
            xlock -mode life -count 1500 -nice 20 -root
    
        バックグランドを隠すためには mlock -hide を使ってください。
        mlock(/usr/local/tools/mlock)コードを修正して標準Xスクリー
        ンセイバーが効果のあるようにできる。中断値ははじめはスクリー
        ンセイバーがオフであることを意味する0にセットする。これを
        120(2分)にしインターバルタイムを60(1分)にする。これ
        らの間隔で24時以上でもcpuを3分しか使わない。
    
    
    目次へ
    1.507: X セッションの上で利用可能な色がリストされた物はどこにありますか?
    
        /usr/lpp/x_st_mgr/bin/rgb.txt
    
    
    目次へ
    1.600: named が良く死ぬんだけど?
    
    AIX3.2では、プライマリ・ネーム・サーバーの named が良く落ちま
    す。
    From: jpe@ee.egr.duke.edu (John P. Eisenmenger)
    
    以下を試してください。
    
         stopsrc -s named   # named を止める
         setenv MALLOCTYPE 3.1   # AIX3.1のメモリ獲得アルゴリズムを使う
         /etc/named ...          # SMIT を使わないで named を起動する
    
    MALLOCTYPEを設定した後でも startsrc/smit が使えて同じ結果になるべきだと
    思うが、私は確認していません。
    
    John によれば、問題は named のコード中の malloc() にあるそうで、
    Berkeleyの bind を使うことを提案している。彼が移植したものが、
    ftp.egr.duke.edu の /archives/network/bind-4.8.3.tar.Z から
    ftp 可能である。-- 編注
    
    Christophophe Wolfhugel
     は bind 4.9 が
    AIX3.2 の上で MALLOCTYPE=3.1 なしでも正常に動作すると報告して
    います。
    
    
    目次へ
    1.601: AIXシステムのイーサーネットパケットトレースするには?
    
        次のようにしてください。
           iptrace -i en0 /tmp/ipt
        iptrace はバックグラウンドで行ってください。準備できた時に
        そのプロセスidを見つけ、プロセスを止めてください。それから
        次を実行してください。
           ipreport -rns /tmp/ipt > /tmp/ipr
        そうして出力を見てください。資料の実際のものは、r, n, s オ
        プションのことが書いてありませんが、それらのオプションは出
        力をレイアウトするのにとても役に立ちます。
    
    
    目次へ
    1.602: ブート時に automount を起動する正式な方法は?
    From: curt@ekhadafi.austin.ibm.com (Curt Finch)
    /etc/inittabに次の行を入れる。
    
    automount:2:once:/usr/etc/automount -T -T -T -v >/tmp/au.se 2>&1
    
    私はここでこの方法を正式なものと認定する。
    
    
    
    目次へ
    1.603: ttyポートを dial-in と dial-out の両方に使うには?
    
    tty のモードを shared か delayed にする。
    
    
    目次へ
    1.604: ネットワークを通して、ディレクトリツリー全体を移動また
    はコピーするには?
    
    以下のコマンドで、パーミッション、uid、gid を保ったまま、ネッ
    トワークを通してディレクトリツリーのコピーが出来ます。
    
          $rsh RemoteHost "cd TargetDir; tar -cBf - ." | tar -xvBf -
    
    解説:
    リモートシステムで tar でアーカイブを作り、それを stdout(この
    場合パイプ)に書き込みます。ローカルシステムで、stdin(パイプ)か
    ら読み込んで、tar で展開しています。
    
    
    目次へ
    1.605: ping できないホストに電子メールを送るには?
    From: jupiter.sun.csd.unb.ca!dedourek (John Dedourek)
    
        AIX 3.2 はホスト名を含むメールアドレスにのみメールを配送で
        きるように設定されて出荷されている。多くの組織はメールアド
        レスの「ホスト名」の部分がホスト名でない(技術的には MX 名)
        メールアドレスを用いている。AIX メイラーの設定を変更するに
        は、root としてログインする。それからファイル
        /etc/sendmail.cf を以下のように読める行の先頭のコメントマー
        カ ("#") を削除する。
    
            # OK MX
    
        そしてマシンリーダブルな形の設定を以下のようにして作り直す。
    
            sendmail -bz
    
        そして最後に新しい設定を読み込ませて sendmail 起動し直すた
        めに以下の内の一つを行う。
    
            reboot
        or.
            stopsrc -s sendmail
            startsrc -s sendmail
        or.
            kill -1 `cat /etc/sedmail.pid`
    
    
    目次へ
    1.606: diulup SLIP を設定するには?
    
        From: marvin@tarnado.oche.de (Christian Bode)
    
        もしあなたが slattach に問題を持たなかったらあなたは PTF
        bos.obj 3.2.0.0.U411505 をインストールすべきである。ここで
        は、あなたが正しく ifconfig コマンドを slip-device (例えば、
        sl0 )をセットアップするために用いたと仮定する。
    
        1. slip と呼ばれるグループを作成する。
    
        2. smit で slip ユーザを以下のように作成する。
                            			HEntry Fileds5
            *User NAME				Hslip5
             ADMINISTRATIVE User?			Htrue5
             User ID				H5
             LOGIN user?				Htrue5
    	 PRIMARY group?				Hslip5
    	 Group SET				Hslip5
    	 ADMINISTRATIVE groups			Hslip5
    	 SU groups				Hslip5
    	 HOME directory				H/home/slip5
    	 Initial PROGRAM			H/bin/sh5
    	 User INFORMATION			HSLIP-Dialup5
    	 Another user can SU to user?		Hfalse5
    	 User can RLOGIN?			Htrue5
    	 TRUSTED PATH?				Hnosak5
    	 Valid TTYs				H/dev/tty15
    	 PRIMARY authentication method		HSYSTEM5
    	 SECONDARY authentication method	HNONE5
    	 Max FILE size				H20971515
    	 Max CPU time				H-15
    	 Max DATA segment			H2621445
    	 Max STACK size				H655365
    	 Max CORE file size			H20485
    	 Max physical MEMORY			H655365
    	 File Creation UMASK			H0225
    	 EXPIRATION date ((MMDDhhmmyy)		H05
    3. getty を用いて tty を次のように作成する:
    
                                Add a TTY
    				  		HEntry Fileds5
             TTY type		  		tty
    	 TTY interface				rs232
    	 Descrition				Asynchronous Terminal
             Parent adapter				sa0
           * PORT number				Hs15
             BAUD rate				H384005
    	 PARITY					Hnone5
    	 BITS per character			H85
    	 Number of STOP BITS			H15
    	 TERMINAL type				Hdumb5
    	 STATE to be configured at boot time	Havailable5
    	 DMA					on
    	 Read Trigger				0,1,2,3
    	 Transmit buffer count			H165
    	 Name of initial program to run		H/etc/getty5
    
         注:以下の属性は /etc/getty がinitial program to run
                 に指定されているのみに選択可能である。
    
             Enable program?			respawn
    	 Run level				2
    	 Enable LOGIN				share
    	 TIME before advancing to next port setting
                                                    H05
             STTY attributes for RUN TIME           Hhupcl,cread,brkint>5
    	 STTY attributes for LOGIN		Hhupcl,cread,echoe,>5
    	 RUN shell activity manager		no
    	 Optional LOGGER name			H5
    4. XON/XOFF ハンドシェークを用いないようにハードウェアの属
           性を変更する。
    
        5. dialup を運営するユーザ slip の .profile をここに示す。
    
    PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:/usr/loca
    l/bin:.
    
    ENV=$HOME/.kshrc
    HISTSIZE=128
    
    export PATH ENV HISTSIZE
    #
    # Search for a LCK-File for our tty if there is one
    #
    
    if test -f /etc/locks/LCK..tty1
    then
      SHPID=`cat /etc/locks/LCK..tty1`
    else
     echo `date` " No LCK-File !!!" >>slip.log
     exit 64
    fi
    
    #
    # Search for our own Shell to get the PID for checking against LCK-File
    #
    
    SH2PID=`ps -aef |
            sed -n -e 's/^ *slip  *\([0-9 [0-9 *\) .*-sh *$/\1/p`
    
    #
    # Is it the the same PID as in the LCK File so that we can start working ??
    #
    
    if test $SHPID = $SH2PID
    then
    #  remove the LCK-File because slattach does not like it.
       rm -rf /etc/locks/LCK..tty1
    #  Add RTS/CTS Handshakeing to our own tty
       stty add rts
    #  Startup slattach. Slattach has to have mode 4755 to be started up !!!
       /usr/sbin/slattach tty1
    #  Just say that we are up.
       echo `date` " Starting up slip-daemon " >>slip.log
    #  leave slattach enough time to startup
       sleep 4
    else
    # Something must be wrong with the LCK-File
      SH3PID=`ps -aef | awk ' {print $2}' | grep $SHPID`
    
      if test ."$SH3PID" = .""
      then
        SH3PID="NO_SUCH_PROCESS"
      fi
    
      if test $SHPID = $SH3PID
        then
    #  There is a living process which owns the LCK-File !!
           echo `date` " Can't remove LCK-File, not owner !!!" >>slip.log
           exit 64
        else
    #   Who the hell didn't remove the LCK-File (should never happen)
           echo `date` " LCK-File with no owner found !!!" >>slip.log
           exit 64
        fi
    fi
    
    # Get the pid of slattch so that we can kill him later on.
    SLPID=`ps -aef |
     sed -n -e 's/^ *slip  *\([0-9 [0-9 *\) .*-.*\/usr\/sbin\/slattach tty1 *$/\1/p`
    
    # Kill slattach if we get a signal 1 (Carrier Lost ? / Otherside-slattach
      terminated )
    trap "kill $SLPID; exit 0" 1
    
    # We  will have a nice sleep and nice dreamings
    while sleep 256
    do
    :
    done
     ここに別のやり方がある:
        From oosten@angelo.ee.ualberta.ca (Brian Oostenbrink)
    
        Operating System: IBM AIX 3.2.1 and 3.2.3
    
        2つのRS6000の経路をつくり Serial Line Interface Protocol
    p    (SLIP) は2つの USRobotics Sportster 14,400 モデムとつなぎ
        ます。
        AIXでのSLIPは他のものと少し違います。ifconfig コマンドはシ
        リアルインターフェイスを持ち出すのに使われ、slattach コマ
        ンドはコネクションで使われるシリアルポートへのインターフェ
        イスをつなげるのに使われます。UUCPの文法を使って、slattach
        コマンドを呼び出すと、Dialer device コマンドも呼び出されま
        す。これは、2つのマシンのつなげ方です。
    
    
        1、インターフェイスの配置
    
        マシンそれぞれは、SLIPインターフェイスによる異なったIPアド
        レスでなければならない。remote.j.k.l においてSLIPインター
        フェイスは次のようにして始めます。
            ifconfig s10 129.11.22.1 129.128.127.1 up
        そして local.a.b.c においてはこのようにします。
            ifconfig s10 129.128.127.1 129.11.22.1 up
        AIX 3.2.3 の最新バージョンで同じSLIPインターフェイス、例え
        ば # as the ptty port # を使うことは重要である。もし、
        tty12 を使うなら、 s10 の代わりに ifconfig s112 を使います。
        この時点でインターフェイスがつながれる準備ができました。
    
        2、tty の配置
    
        両方のマシンの tty ポートは、smitを使って同じ方法で形成さ
        れます。
    
    
        AIXの古いバージョンでは役に立たない getty の問題がいくつか
        あって、直接 /etc/inittab ファイルを変えることに頼っていた。
        例えば、
            tty0:2:respawn:/etc/getty /dev/tty0
        を
            tty0:2:off:/etc/getty /dev/tty0
        これで実行から、getty を無効にする。SLIP tty デバイスを作っ
        たあと、Xon/Xoff フロー制御を無効にするために、ハードウエ
        アのコンフィグレーションを変える必要があります。ソフトウエ
        アフロー制御は、SLIPで使われません。'smit chtty' と打って、
        サブアイテム2 Hardware settings を選んでください。
        tty コンフィグレーションのほとんどのパラメータはデフォルト
        でよい。
    
        3、モデムの配置
    
        モデムは次のように構成してください。
        RTS/CTS フリー制御をできるようにする。
        Xon/Xoff ソフトウエアフロー制御を無効にする。普通 RTS/CTS
        をできるようにすれば、自動的になる。
    
        データ速度、終端モデム = 固定
          これは tty ポートからモデムへのボーレートである。固定モ
          デム転送速度を使い、tty ポートとモデムの両方に適応してい
          る中で最も速いものにセットしていた。最近のモデムは、モデ
          ム間速度より速いモデムとシリアルポート間の転送速度を使え
          る。これはデータ圧縮を効果的に使うのに必要である。セット
          アップでは 38.4 ボーのポート速度をもつ 14.4 ボーのモデム
          を使う。もしこれを満たしているなら、これを使い、そうでな
          いときは、モデム接続速度に等しいポート速度にセットします。
          USR Sportster において at&bl はこのシリアルポート速度を
          最後の AT コマンドのオート速度に固定します。その
          slattach コマンドの速度パラメータは、この速度が tty コン
          フィグでセットされたものか確かめるために使われる。
        エラー修正ができる
          これはしなければならないのではないが、良いアイデアである。
        データ圧縮
          これは必要ではないが、とくにテキストデータ転送には役に立
          つ。
        自動解答
          もし SLIP 接続がどちらかのマシンから認識できるなら、両方
          のモデムは自動的に送答するようにセットされるべきで、そう
          でなければまさいアンサリングモデムである。
    
        モデムを形成するには良い考えで、NVRAM へのセッティングを記
        録するので、正しいセッティングがいつも slattach コマンドに
        よって復活できる。
    
        4、uucp コンフィギュレーションファイル
    
        /usr/lib/uucp/Devices
        /usr/lib/uucp/Dialors
        デバイスファイルはインターフェイスで使われる tty とシリア
        ルポート速度の登録を含まなければならない。例えば、
            Direct tty0 38400 slipdialer
        slipdialer は単に Dialers ファイルのインデックスです。そし
        て、Dialers ファイルの slipdialer への登録は簡単です。
            slipdialer
        この登録は、uucp チャットコマンドを含めることができ、その
        コマンドは、slattach コマンドに含まれる。
    
        5、slattach の実行
    
        slattach は tty ポートのデバイスを ifconfig で作られるSLIP
        インターフェイスにつなげます。そして必要なら、tty デバイス
        へコマンドを送ります。例えば、remote.j.k.l は呼び出しはし
        なくて入ってくるコールに対して応答するだけです。だから次の
        ように実行します。
    
    
        これで tty を 38400 ボーでつながります。また単に次のように
        実行します。
    
    
        つまり、どんなモデムコマンドもなしでは、ポートへのモデム速
        度はこのように正しくセットされないかもしれません。付け加え
        てモデムで保障する AT コマンドは NVRAM のセッティングにセッ
        トされる。
    
    
        これは 38400 ボーでのリンクを確立し、shown のようなダイヤ
        ルストリングを実行します。ダイヤルストリング uucp チャッ
        トストリングで「要求」「送る」「要求」「送る」....の形式で
        形成されている。
    
        '"" ATZ OK \pATDT4925871 BIS ""' という文字列は次のように
        解釈されます。
          モデムから ""(ヌル文字)  を要求
          モデムへ   ATZ           を送る
          モデムから OK            を要求
          モデムへ   \pATDT4925871 を送る
          モデムから BIS           を要求
        BISはCONNECT STRINGの終りです。要求文字として接続されたモ
        デムによって返される文字の一部が使える。すべての接続は
        CONNECT文字を返すはずなので、単に CONNECT を要求することは
        うまい。
        uucp の第1パラメータはモデムから要求される文字列でモデム
        がコマンドを与えられるまでヌル文字であるのでヌル文字は必要
        である。
        slattach コマンドの最後のパラメータ(4)はデバッグレベルで
        す。4のデバッグレベルはモデムの状態をチェックするのに役に
        立つ uucp チャット文字列ですを表示できます。
    
        6、送付
    
        もし、したいことが2つのホスト間の会話なら ifconfig は十分
        です。もし他のホストと会話しようとSLIPを実行するならアドレ
        スを通知しなければなりません。
        1) arp -s 802.5 iago 10:00:5a:b1:49:d8 pub
          802.5 がトークンリングネットワークの場合、ハードウエアア
          ドレスは `netstat -v` で得られ、iago はSLIPクライアント
          ( My PC at home :)、pub は published の意味で重要な部分
          です。boot 時にこれを実行したいかもしれない。
        SLIP リンクを通す送付はゲートウェイでの送付と同じである。
        ifconfig コマンドの自動発行で2つのSLIPマシン間のルートが
        セットアップされる。/etc/hosts やデータベースへの登録が、
        それぞれのマシン尾イーサーネットアドレスと同じSLIPアドレス
        を用いた同じマシンネームをもってなされる。例えば、
        /etc/hosts の中の remote.a.b.c(と他のマシンのremote.a.b.c
        ethernet) において
    
    
        host ファイルのイーサーネットアドレスが、SLIPアドレスの前
        に位置するのは良い。だから、remote.a.b.c は、イーサーネッ
        トアドレスが解析される。上記の使い方のとき同じ名前のリバー
        スファイルに両方のアドレスを持つことは重要なことである。
        SLIP アドレスからくるように2つのSLIPマシンのうちの1つか
        らのNFS要求をマシンが解釈することによる slip リンク上のNFS
        マウントに難しさがあることはわかっている。この問題は、両方
        のアドレスが同じ名前に対して逆解析を持つことで取り除くこと
        ができた。
    
        7、パフォーマンス
    
        14.4 ボーのモデムと 38.4 ボーのポート速度で、テキストファイ
        ルでは 3.5KB/s、圧縮ファイルで 1.3KB/s の ftp を通した転送
        速度であることがわかっています。
    
    
    目次へ
    1.607: DCEはどこで論議されているのですか。
    
        DCE は Distributed Computing Environment の略で異種プラッ
        トホームのフレキシブルクライアントサーバーアーキテクチャー
        です。くわしくは comp.unix.osf.misc を見てください。
    
    
    目次へ
    1.608: どのようにして /var/spool/mail をマウントできますか。
    
        /usr/local disk を分割しています。/usr/local/spool/mail と
        /var/spool/mail というディレクトリーがあるのでそれをソフト
        リンクさせます。
        いくつかの問題がNFS経由のmailディレクトリーの分割に対して
        報告されています。それらの問題はメカニズムをロックしている
        NFSファイルのために2つ以上の sendmail がおこったときやメ
        イルリーダーが同時にユーザーのmailファイルにアクセスした時
        におこります。
        ここで別の方法を使います。ユーザーそれぞれの
        $HOME/.forward ファイルの中に
           xxx@mainserver.domain.name
        があります。xxx はユーザーノードで mainserver.domain.name
        はマシンの中のフルホスト名です。すべてのマシンに入って来る
        メールはmainserverがこの行を無視する限りmainserverへ転送さ
        れる。
    
    
    目次へ
    1.609: 速い getty の発生について
    
        問題はセッティングするモデムの数によっておきる。エコー(共
        鳴)でモデムにおいてコールを受けることができないということ
        がほとんどです。ヘイズ言語で、ATEO はエコーを無効にします。
        もしエコーを可能にすると、DTE 似よって送られるログインプロ
        ンプトがエコーバックされます。それからモデムがすぐに再度エ
        コーバックする"password:"プロンプトが出る。このサイクルが
        続きます。
    
        チェックする別のセッティングにモデムの DTE への応答を制御
        する Q レジスターがあります。ヘイズコマンドのATQ0は結果を
        コード化させます。Q レジスターは、X,V レジスターと共に DTE
        へ出入りするコールの状態と確立された接続タイプを伝えます。
        出て行くコールに対しては、結果をコード化させたいが、入って
        くるコールに対してはしない。もし、コード化が( ATQ0 を通し
        て)可能なら、コールが入ってきたとき、(もし、ATV1 と ATX4
        がセットされているなら)"RINGING"、"CONNECTED"などの文字列
        をモデムはローカルな DTE へ送ります。getty は誰かがログイ
        ンしようとしていることを察知し、パスワードプロンプトを送る。
        テレビットや他の高級モデムには、コールが出るときだけコード
        を渡す ATQ2 セッティングがある。その他には、それを無効にす
        る必要があり( ATQ1 )、コールが出るときに可能にする。
    
        DSR のセッティングは問題の原因でありうる。理論上、モデムは
        CD が見つけられたときだけ DSR を呼び出すだけで、そして、モ
        デムは CTS を呼び出す。VAX のようなコンピュータはモデムが
        DSR を呼び出しだ後 30 秒待つ。もし、CD がそのときまでにオ
        ンでなければ、コンピュータはモデムのリセットをする DTR を
        読み飛ばす。DSR はキャリアーが見つけられたときだけ、呼び出
        されるべきである。ヘイズ言語のセッティングでは AT&S1 です。
    
        DCD のセッティングは、キャリアーの真の状態を表すものである。
        CD はずっとオンの状態のままにさせておく( AT&C0 )。これは良
        くなくて、AT&C1 にセットしてください。
    
        ほとんどのモデムは、DTR の転送で不揮発性メモリーから保存さ
        れたセッティングを再ロードできます。これはコールが落ちたと
        きにモデムの再セットには役に立つ。AT&D3 を使うとこれができ
        ます。
    
        ダイヤルで呼び出すのに、AT E0 Q1 &C1 &D3 & S1 &W をセット
        してください。&W はメモリーにセッティングを保存します。&D3
        によって再ロードされます。
    
    
    
    目次へ
    1.610: AIXは圧縮されたSLIP(CSLIP)をサポートしていますか。
    
        いいえ。つまりVJ圧縮はないということでう。標準のSLIP以上の
        ものが欲しい方は section5.07 の ppp を見てください。
    
    
    目次へ
    1.611: AIXシステムで anonymous ftp はどのようにセットアップ
          するのでしょう。
    
        '/usr/lpp/tcpip/samples/anon.ftp' を見てください。シェルス
        クリプトで anonymous ftp をあなたの local な RS/6000 でせっ
        とあっぷします。
    
    
    目次へ
    1.900: SCSI-1 と SCSI-2 の相互可動性ってなに?
    From: drr
    
    A.  SCSI-1 devices are supported on a SCSI-2 adapter.  This
        config will provide SCSI-1 performance.
    A.  SCSCI2 アダプタで SCSI-1のデバイスを使うことが出来る。
        パフォーマンスは SCSI-1 のものになる。
    
    B.  SCSI-2 devices are supported on a SCSI-1 adapter.  This
        config will provide SCSI-1 performance.
    B.  SCSI-1のアダプタで SCSI-2のデバイスを使うことが出来る。
        パフォーマンスは SCSI-1 のものになる。
    
    C.  A mix of SCSI-2 and SCSI-1 devices are supported on a SCSI-1
        adapter.  All devices will have SCSI-1 performance.
    C.  SCSI-1のアダプタで SCSI-2とSCSI-1のデバイスを同時に使うことができる。
        全てのデバイスで、パフォーマンスは SCSI-1のものになる。
    
    D.  A mix of SCSI-2 and SCSI-1 devices are supported on a SCSI-2
        adapter.  SCSI-2 devices will have SCSI-2 performance (10 MB/sec)
        and SCSI-1 devices will have SCSI-1 performance (4-5 MB/sec).
    D.  SCSI-2アダプタで SCSI-2とSCSI-1のデバイスを同時に使うことが出来る。
        SCSI-2のデバイスのパフォーマンスは、SCSI-2(10MB/sec)のものになり、
        SCSI-1のデバイスのパフォーマンスは、SCSI-1(4-5MB/sec)になる。
    
    
    目次へ
    1.901: キーボードを抜いた後、また元どおり付けるには?
    From: Mickey Coggins and Anne Serre
    
    もし、走行中のシステムからキーボードを抜いて、また単に差し込ん
    だとすると、キーマップが正しくなくなっているだろう。例えば、
    Caps Lock や Ctrl キー等が正しく動作しないだろう。
    
    解決法: 次のコマンドを実行する
    
            /usr/lpp/diagnostics/da/dkbd
    
    画面が一旦暗くなった後、何度かビープ音がなり、キーボードがリセッ
    トされる。これは、Xwindows でも hft でも NLS でもどんな場合で
    も有効である。
    
    
    目次へ
    1.902: pcsim, DOS エミュレータをセットアップするには?
    
        pcsim をインストールするためには、ブート可能な DOS のディ
        スケットを持っていなければならない。DOS3.3, 4.x, 5.0 が動
        作するだろう。IBM は公式には pcsim で DOS 5.0 をサポートし
        ていないが、私はそれについて問題無く使用できている。ただ
        UMB やメモリマネージャの類で華麗にしようなどとは試みない事。
    
        ブート可能な DOS ディスケットをドライブの中にいれて、以下
        のようにする。
    
            $ touch /u/dosdrive (これは DOS エミュレーションのため
                                 の AIX のファイルである。)
            $ pcsim -Adiskette 3 -Cdrive /u/dosdrive
    
        すると A プロンプトを得るので、以下のようにタイプする:
    
            A> fdisk
    
        あなたの選ぶだけの如何なるサイズの仮想的な C ドライブを作
        成する。それを後で拡張する事はできないので、あなたの必要に
        十分な程大きくする事。
    
            A> format c: /s ( 仮想 C ドライブをフォーマットする。)
    
        pcsim より ESCpcsim(ESC キーの後につづけて pcsim.) で抜ける。
    
        simprof ファイルを作成する。以下のように始める事。
            Adiskette	: 3
    	Cdrive		: /u/dosdrive
    	lpt1		: name of printer queue
    	refresh		: 50
    	dmode		: V
    	mouse		: com1
    
        これでいついかなる時でも pcsim とタイプする事で pcsim を始
        動させる事ができる。フロッピーがドライブの中に無い事を確認
        する事。さらなる情報に付いては、出版物 SC23-2452 "Personal
        Computer Simulater/6000 Guide and Reference." をあたられた
        い。
    
    
    目次へ
    1.903: AIX と DOS ディスケットの間でファイルを交換するには?
    
        DOS ディスケットと AIX の間でファイルを交換するためのコマ
        ンドは bos extensions の中の一つにある。そのコマンドは
        dosread, doswrite, dosdir, dosdel, そして dosformat である。
        多くのユーザが AIX 本来のプログラムよりも prep.ai.mit.edu
        からの "mtools" パッケージ時の方が優れていると話している。
    
    
    目次へ
    2.00: C/C++
    
    多くの人が信じこんでいるのに反して、RS/6000 の C 言語環境はそんなに特別な
    ものではありません。C コンパイラーには非常にたくさんのオプションがあって、
    コンパイラーをどのように動作させるか、C のどの"方言"をコンパイルするのか、
    特定の言語構文をどのように解釈するか、などをコントロールできます。
    InfoExplorer には、ユーザーズ・ガイドとリファレンスマニュアルが含まれて
    います。(xlc 1.3.0.X の manual は /usr/man/man1 に存在します.)
    
    RS/6000 の C コンパイラは、xlc/c78 で起動すると ANSI モードになり、cc で
    起動すると RT (すなわち IBM 6150, AIX 2)互換モードになる。各モードのデフォ
    ルトオプションは、/etc/xlc.cfg ファイルで設定されている。別のスタンザを
    追加し、/bin/xlc へのリンクを作ることで、特別なモードで起動するコマンド
    を作ることもできる。
    
    /usr/lpp/xlc/bin/README.xlc に Cコンパイラーについての情報が収められてい
    る。/usr/lpp/bos/bsdport には、有益な情報が、特に BSD ユーザーに役立つ情
    報が含まれている。 (bsdcc という BSD 環境に沿った C コンパイラのモードも
    ここに書いてある.)
    
    /etc/xlc.cfg というファイルを見ると _IBMR2 というシンボルがプリデファイ
    ンされているのが分かり、RS/6000 特有のコードを #ifdef で切り分けるのに使
    える。また, AIX 固有のものは _AIX で切りわけ可能である. さらに xlc 1.3 
    では AIX 3.2 に固有のものは _AIX32 (3.1 にはこのシンボルは定義されていな
    い) で切り分けることも可能になっている.
    
    
    目次へ
    2.01: alloca がうまく動かない
    
    メモリ確保ルーチン alloca() は、特に GNU のソフトウェアで有名なルーチン
    である。alloca は、ブロックを抜け出たときに自動的にフリーされるような方
    法でメモリを獲得する。ほとんどの実装では、スタックポインタの調整で行われ
    ている。すべての C 言語環境でサポートされる関数ではないので、あまり使用
    はすすめられないが、xlc コンパイラには (一種のマクロとして) 含まれている。
    コンパイラに対して、alloca を使おうとしていることを知らせるには、
    
    #pragma alloca
    
    という行を、C のソースモジュール中のallocalが呼ばれる文の前に置かなけれ
    ばならない。そうしないと、xlc は alloca を特別なものと認識ぜず, 関数とし
    て扱うため、リンクの段階でエラーになる。
    
    AIX3.2 からは、xlc 起動時に -ma フラグを付ければ, ソースに変更を加えなく
    ても #pragma の処理を行ってくれるようになった.
    
    
    目次へ
    2.02: BSD のプログラムをコンパイルするには?
    
    /usr/lpp/bos/bsdport というファイルに、BSD用に書かれたプログラムをAIX3.1 
    へ移植するための情報が書かれている。このファイルの内容はBSD以外のシステ
    ムから移植する際にも同様に役に立つ。
    
    大部分の"標準的"な BSD プログラムの場合は、以下のようなコマンドラインを
    使う。
      
      $ cc -D_BSD  -o [loadfile] [sourcefile.c] -lbsd
    
    プロトタイプなしで宣言されているシステムコールを使っている場合は、-D_NO_PROTO 
    フラグを使えば良い。
    
    
    
    目次へ
    2.03: リンカーは、今まで使ってのとは大分違うの?
    
    その通り。あなたが使ったことのあるリンカーとはあまり似ていない。
    
    - (コマンドラインで指定する)オブジェクトファイルとライブラリの順番は重要
    ではない。リンカーはライブラリ中のファイルも含む全オブジェクトファイルを
    メモリ中に読み込み、一回で実際のリンクを行ってしまう。他のシステムでは、
    ld コマンドに二回ライブラリ名を指定しなければならないような場合でも、
    RS/6000 ではその必要はなく、そうするとかえってリンクが遅くなる.
    
    - RS/6000 のリンカーの特長の一つは、実行形式中のオブジェクトファイルを新
    しいバージョンのオブジェクトで置き換えることが出来る点である。
    
      $ cc -o prog prog1.o prog2.o prog3.o		# prog を作る
      $ cc -c prog2.c				# prog2.c を再コンパイル
      $ cc -o prog.new prog2.o prog			# prog.new を prog と prog2.o
    						# から作る
    
    - 標準Cライブラリー /lib/libc.a は共有でリンクされる。すなわち、実際のコー
    ドはプログラムとはリンクされず、プログラムのロード中に一回だけロードされ
    ダイナミックにリンクされる。
    
    
    - ld コマンドは実際には /usr/lib/bind にあるバインダーを呼び出す。ld に
    特別なオプションを与えて、バインダーの起動方法の詳細を知ることができる。
    ld のマンページかInfoExplorerを参照されたい.
    
    - プログラムがたくさんのライブラリ(.a ファイル)を使って普通にリンクされ
    ている場合、各ライブラリファイルを一つのオブジェクトに プリリンクするこ
    とで、最終的なリンクを速くすることができる。例えば、以下のようにする。
    
      $ cc -c prog1.c prog2.c prog3.c
      $ ar cv libprog.a prog1.o prog2.o prog3.o
      $ ld -r -o libprog.o libprog.a
      $ cc -o someprog someprog.c libprog.o
    
    これによって、prog1.o,prog2.o,prog3.o の間の全ての内部参照は解決されて、
    libprog.o にセーブされる。そして、プログラムをリンクするのに libprog.aの
    代わりに libprog.o を使えば、リンクの速度が速くなり、someprog.c が, 例え
    ば prog1.o と prog2.o しか使っていなければ,この二つのモジュールだけが最
    終的なプログラムに入ることになる.  これは, 上述したように, バインダーが
    一つのオブジェクトモジュールの中の個々のオブジェクトを取り扱うことができ
    るためである.
    
    -lprog (libprog.a をリンクする) オプションを使った場合に同様の効果をあげ
    たい場合は, prelink されたモジュールの名前 (上では libprog.o) を 
    libprogP.a (P で prelink されたモジュールを示す) に変更し -lprogP と指定
    すれば良い. この場合は libprogP.a はライブラリではないので, これに対しアー
    カイバ (ar) を利用することはできない.
    
    Fortran と C を混在させる場合の処理については 3.01 を参照されたい
    
    Dave Dennerline (dad@adonis.az05.bull.com) 氏によると, (一般に良く用いら
    れる) 相互関係のすくないライブラリを複数使う環境 (極めて良くあるパターン
    であろう) では, 内部参照の量は大したことがないので, AIX の prelink の機
    能はそれほど有効ではないらしい.
    
    
    目次へ
    2.04: /lib/libc.a の内容を共有しないプログラムの作り方は?
    
      cc -o prog -bnoso -bI:/lib/syscalls.exp obj1.o obj2.o obj3.o
    
    のように -bI option をつけてコンパイルするとスタチックリンクされた実行形
    式が得られる.
    
    Marc Pawliger (marc@sti.com) 氏によれば
    
    AIX 3.2.5 (AIX Windows 1.2.5) は Xserver の高速化のために SMT (Shared
    Memory Transport) といわれる手法を採用している. このため X のアプリケー
    ションを静的にリンクする際には -bI:/usr/lpp/X11/bin/smt.exp を 
    -bI:/lib/syscalls.exp に加えて指定する必要がある. このようなライブラリは 
    SMT を備えていない環境では動作しない. 詳細は /usr/lpp/X11/README.SMT を
    参照のこと. 
    
    (注) 3.2.4 と 3.2.5 の SMT は違うので 3.2.4 の SMT を静的にリンクしたバ
    イナリは 3.2.5 の上で動作するとは限らないので注意が必要である.
    
    
    目次へ
    2.05: 自分用の共有メモリ利用のライブラリはどうやって作るの?
    
    共有メモリを利用したライブラリを作る際には, 共有されるモジュールには未定
    義のシンボルがあってはならないことを認識しなければならない. すなわち, あ
    なたの書いたプログラムが /lib/libc.a の中のモジュールを利用している場合
    は /lib/libc.a をも共有ライブラリ中にリンクする必要がある.  Mike Heath
    (mike@pencom.com) 氏によれば, 相互の参照がある場合でも, 1つのコードを複
    数の共有ライブラリに分割するのは可能だそうである. この場合 import/export 
    の関係を熟知しておくことが必要である. おそらく彼か誰かがこのような例を示
    してくれるであろう.
    
    sub1.c の中には外を参照しているものはなく, sub2.c が /lib/libc.a の中身
    を呼んでいる場合を考える. この場合2つの export 記述ファイル sub1.exp,
    sub2.exp を書かなければならない. 下の例と ld のマニュアルを一緒に読めば
    理解できるであろう.
    
    ---- sub1.c ----
        int addint(int a, int b)
        {
          return a + b;
        }
    ---- sub2.c ----
        #include 
    
        void printint(int a)
        {
          printf("The integer is: %d\n", a);
        }
    ---- sub1.exp ----
        #!
        addint
    ---- sub2.exp ----
        #!
        printint
    ---- usesub.c ----
        main()
        {
          printint( addint(5,8) );
        }
    
    
    以下が共有ライブラリ libshr.a の作り方と, usesub のコンパイル・リンク方
    法である. (注: sub2shr.o を作る際に -lc が必要な理由は libc.a の printf 
    を使っているためである.
    
      $ cc  -c sub1.c
      $ ld -o sub1shr.o sub1.o -bE:sub1.exp -bM:SRE -T512 -H512 
      $ cc  -c sub2.c
      $ ld -o sub2shr.o sub2.o -bE:sub2.exp -bM:SRE -T512 -H512  -lc
      $ ar r libshr.a sub1shr.o sub2shr.o
      $ cc -o usesub usesub.c -L: libshr.a
      $ usesub
      The integer is: 13
      $
    
    
    目次へ
    2.06: リンクが変なエラーメッセージで失敗するのですが, なぜ?
    
    単純です, リンカ (実際にはバインダですが) が必要なメモリを得ることができ
    なかったのです. あなたの ulimit が小さ過ぎたか十分なページング領域がなかっ
    たためでしょう. AIX のリンカは一般の UNIX のリンカと比べて大きな仮想記憶
    領域を必要とします. 複雑なオブジェクトのリンクに 10,000 ページ (1 ページ
    は 4K) を使うこともザラです.
    
    ulimit の値が小さい場合は 'BUMP error' と表示され, 仮想記憶領域の不足の
    際には 'Binder killed by signal 9' が表示されます.
    
    まず ulimit を確認しましょう ksh では 'ulimit -a' ですべての制限が表示さ
    れます. 'ulimit -m 99999' と 'ulimit -d 99999' で使用可能メモリ域とデー
    タ域が十分に大きな値になるはずです. もしこの設定ができない時は, あなたの
    使っているシステムは十分なページング領域を持っていません.
    
    さて, ページング領域を増やせない場合, とりあえず以下のことを確認してみて
    は如何でしょう
    
    - 同じライブラリを2回呼んでいないか. (不要です)
    
    - 一人以上のユーザがリンカを起動していないか? 同時には1つにしましょう
    
    - 部分リンク, つまり -r オプションを付けて (未定義のシンボルがあっても許
    す) いくつかのオブジェクトとライブラリをリンクして一時的な出力を得る, を
    繰り返し試して下さい. これにより個々のリンクに必要な仮想記憶の量を減らす
    ことができます.
    
    このようにして, 一回に1つずつオブジェクトまたはライブラリを加えていくこ
    とで, 一般の UNIX のリンカの挙動を真似できます.
    
    ページング領域を増やす際は, 新たなページング領域を別のディスク上に付け加
    えることをお勧めします. 1つ目のディスク上に空き領域を残しておきましょう.
    将来ページング領域を減らす際に, 1つのスペースを減らすのは面倒ですが, な
    くすのは簡単なのでの作業が簡単になります.
    
    
    目次へ
    2.07: malloc について
    
    malloc() は BSD 4.3 の malloc() を元にしたレートアロケーション・アルゴリ
    ズムをスピード向上のため使っています. これは実際に確保された領域に触るま
    ではページを割り当てないことで大きなメモリ領域を割り振ります. しかし, 残
    念なことに必要なメモリが存在しない時にうまく死んでくれない欠点を有してい
    ます. InfoExplorer で Paging Space Overview の部分を見て下さい. またこの 
    FAQ のリンカの部分のうまく死なない例の注釈を参考にして下さい.
    
    メモリ不足の場合をプログラムが知るためには SIGDANGER (33) を取り扱えるよ
    うにしておく必要があります. デフォルトでは無視します. ページング領域が残
    り少なくなった時には SIGDANGER がすべての PROCESS にわたります. そしてそ
    れでもページング領域が減少すると SIGKILL (9) がもっともページを使ってい
    るプロセスに対して送られます.
    
    malloc() は AIX3.2 で変更を受け, メモリに関してもっと厳しい管理をするよ
    うになりました. もし, AIX 3.2 で malloc() を使ったものでトラブルがあった
    時は環境変数 MALLOCTYPE を 3.1 に (sh では MALLOCTYPE=3.1; export
    MALLOCTYPE, csh では setenv MALLOCTYPE 3.1) 設定しててみて下さい.
    
    AIX 3.2 は Early Page Space Allocation (EPSA, 事前に十分なページ領域を確
    保する) と呼ばれるアルゴリズムの選択も可能にしています. (詳細は 
    /usr/lpp/bos/README.PSALLOC, 問題番号 IX38211 に対するPTF U422496) これ
    は early allocation と late allocation を切替える環境変数 PSALLOC を用意
    し "early" とすることでデフォルトの "late" から切り替わります.
    
    
    目次へ
    2.08: xlc は 'extern char *strcpy()' を受け付けないのか?
    
     の中で以下のように strcpy() は __strcpy() に再定義されており,
    
    #   define strcpy(__s1,__s2) __strcpy(__s1,__s2)
    
    __strcpy() の方を xlc がインライン展開して使うためで, これと 'extern
    char *strcpy()' がぶつかるのです. 解決するためには 'extern ...' を消すか,
    -U__STR__ と xlc のオプションに加えるかのいずれかでしょう.
    
    
    目次へ
    2.09: 'Parameter list cannot contain fewer ....' というエラーがでますが..
    
    これも上と同じでしょう... (訳者疑問???? こっちは -D_NO_PROTO のような気
    がしますが...????)
    
    
    目次へ
    2.10: '(sometype *) somepointer = something' を受け付けないのは?
    
    gcc を使ったものに上記の表現を見かけます. しかし, 式の左側をキャストする
    ことは標準の C では許されていないので, cast は式の右側に持ってくるべきで
    しょう. cc では warning ですが, xlc ではエラーになります. 
    
    (???? dvi2ps 1.9j では cc でも, マクロと組合わされているため, エラーにな
    ります. ????)
    
    
    目次へ
    2.11: その他のエラーについて,
    
    305 |     switch((((np)->navigation_type) ? (*((np)->navigation_type)) :
          ((void *)0)))
          .a...........  
    a - 1506-226: (S) The second and third operands of the conditional
    operator must be of the same type.
    
    AIX では NULL は (void *)0 であり, xlc は ? : 表記では 第 2, 3項の方が一
    致していないとエラーになるためです. 上記の例では 2 項はポインタではなく 
    3 項の NULL をスカラとして扱っているためにエラーになります. (ANSI C では 
    NULL は nil のポインタです.) この場合は NULL の変わりに 0 を使いましょう.
    
    2.12 アセンブラのコードを出力できますか?
    
    xlc は ver. 1.3 から -S option でサフィックスが .s のアセンブラコードを
    出力するようになりました. -qlist option でサフィックス .lst の アセンブ
    ラのリスト出力を行います.
    
    逆アセンブラも xlc 1.3 では /usr/lpp/xlc/bin/dis に存在します. また xlC
    2.1 (C Set++) を使っているかたは /usr/lpp/XlC/bin/dis にあります. これら
    を使ってオブジェクト, 実行可能形式をアセンブラコードに変換することもでき
    ます.
    
    
    目次へ
    2.13: Curses
    
    Curses を用いたアプリケーション野場合は -ltermlib ではなく -lcurses を使っ
    て下さい. -DNLS つきでコンパイルした場合は curses に問題があると報告され
    ています.
    
    Peter Jeffe  氏によると
    
    PF key のエスケープシーケンスが1つの入力ではなく, 複数のキャラクタとし
    て扱われてしまうことがあるそうです. (getch() は PageUp key を 'ESC [ C' 
    と返します)
    
    これらを直す手段はあります. エスケープシーケンスが飛んでくるタイミングが
    問題なのです. ESCDELAY という環境変数があります. これは ESC がただの ESC 
    かあるいはエスケープシーケンスの最初なのかを判断するための遅れを表し, デ
    フォルトは 500 ですが, これを早くすることで解決できると思います.
    
    Christopher Carlyle O'Callaghan  氏の拡張された
    curses に対するコメントです.
    
    1) このサンプルは User Interface Programming Concepts の 7-13 ページに収
    録されたものですが, 間違っています.
    
    #include 
    #include 
    
    main()
    {
    PANE *A, *B, *C, *D, *E, *F, *G, *H;
    PANEL *P;
    
    initscr();
    
    A = ecbpns (24, 79, NULL, NULL, 0, 2500, Pdivszp, Pbordry, NULL, NULL);
    D = ecbpns (24, 79, NULL, NULL, 0, 0,    Pdivszf, Pbordry, NULL, NULL);
    E = ecbpns (24, 79, D,    NULL, 0, 0,    Pdivszf, Pbordry, NULL, NULL);
    B = ecbpns (24, 79, A, D, Pdivtyh, 3000, Pdivszp, Pbordry, NULL, NULL);
    F = ecbpns (24, 79, NULL, NULL, 0, 0,    Pdivszf, Pbordry, NULL, NULL);
    G = ecbpns (24, 79, F,    NULL, 0, 5000, Pdivszp, Pbordry, NULL, NULL);
    H = ecbpns (24, 79, G,    NULL, 0, 3000, Pdivszp, Pbordry, NULL, NULL);
    C = ecbpns (24, 79, B, F, Pdivtyh, 0, Pdivszf, Pbordry, NULL, NULL);
    P = ecbpls (24, 79, 0, 0, "MAIN PANEL", Pdivtyv, Pbordry, A);
    
    ecdvpl (P);
    ecdfpl (P, FALSE);
    ecshpl (P); 
    ecrfpl (P);
    endwin();
    }
    
    2)  (x は数字) を一緒にインクルードしてはいけませ
    ん. 再定義のワーニングまたはエラーになります.
    
    3) curses と拡張 curses は別の物です. どちらか一方を使って下さい. もしマ
    ニュアルに拡張 curses には過去 (curses) とコンパチビリティがあると書かれ
    ていても信じてはいけません. curses のみの場合は  だけで十分で
    す.
    
    4) -lcur と -lcurses を両方同時に指定すると, Memory fault を起こしコアダ
    ンプします. 拡張 curses には -lcur のみ, curses には -lcurses だけです.
    
    5) PANE を作る場合, 'ds' に 0 以外を用い 'du' に 'Pdivszf' を使う時には 
    'ds' の値は無視されます. (7-13 ページは間違っています). 理由はまだわかっ
    ていませんが, 'Pdivszc' はうまく動きません. (少なくともどう使ったらちゃ
    んと動くのかわかりません)
    
    6) bug を見つけ, 何がおきているかを見つけ出したい時には -g に加え 
    -qextchk というoption を c compiler につけてみて下さい.
    
    -qextchk は, 正しい数の引数を関数に渡しているかをチェックします.
    
    7) 80 カラムを使い切る場合でも 80 を指定しては駄目です. 79 を使って下さ
    い.
    
    8) パネルを作る際は,  少なくとも 1 つの PANE を作らなくてはなりません.
    そうでないと Memory fault を起こし, コアダンプします.
    
    9) パネルを作る際に枠をつけないとタイトルを表示させることはできません.
    
    10) スクリーンをスクロールさせるには, 以下のプログラムです
        wmove (win, 0, 0);
        winsertln (win)
    
    11) delwin(win) は EXTENDED WINDOWS では動きません.
    
    ウィンドウが消えたかのように見えますが, 実際は次の処理が必要です.
        touchwin(win)
        wrefresh(win)
    
    これらを, コールした順番で行って下さい. (A->C->B の順であったら リフレッ
    シュも Aー>Cー>Bの順です.) そうでないと, 表示が同じになりません.
    window を配列として last window index に注意を払っていることが最善でしょ
    う.
    
    12) mvwin(win, line, col) は現在の viewport もしくはそのsubwindow にしか
    使えません.
    
    13) wcolorout(win) を用いてwindow のアトリビュートを決めたら,
    chgat(numchars, mode) 等の関数は使えないか, かなり使いにくくなっています.
    
    
    
    目次へ
    2.14: link の速度を向上させる方法
    
    2.03 から 2.06 を参照して下さい.
    
    John LoSecco (losecco@undpdk.hep.nd.edu) 氏と Gary R. Hook
    (hook@chaco.aix.dfw.ibm.com) 氏によると
    
    oahu.cern.ch の pub/aix3 に (ftp.fujita3.iis.u-tokyo.ac.jp の pub/rs6000 
    にもあります) tld と呼ばれるツールがあり, これは既存のリンカ (バインダ) 
    のラッパで, 大きなライブラリのリンクの場合は 3 から 4 倍も速くなります.
    
    
    目次へ
    2.15: deadbeef とは?
    
    dbx を使っている際に, 時々レジスターの表示に 'deadbeef' を見かけることが
    あります. これは 0xdeadbeef という16進表記であり, ある単語です (RS6000 
    はテキサス州で作られているんで, 牛はいっぱいいます :). この16進数はプ
    ログラム起動時に, まだ使われていないレジスタを表しているようです.
    
    
    目次へ
    2.16: AIX 3.2 での静的なリンクの正しい方法
    
    xlc -bnso -bI:/lib/syscalls.exp -liconv -bnodelcsect 
    
    
    目次へ
    2.17: ライブラリの中の export されているもののリストを得る方法
    Dave Dannerline (dad@adonis.az05.bull.com) 氏による.
    
    以下の shell script は export 可能であるもののリストを取り出すもので, 共
    有ライブラリを作る際に有効でしょう. ユーザは, 何を import して, 何を
    export list に入れるのかを決めないといけません.
    
    #!/bin/ksh
    #
    # mkexps - make export list
    # This program creates an export list by combining all the "." and normal names
    # into one list. 
    #
    if [[ "$#" -ne 1 ]]
    then
        print "Usage: mkexps ArchiveFile"
        exit -2
    fi
    if [[ ! -f $1 ]] 
    then
        print "mkexps: Cannot open file \"$1\""
        exit -1
    fi
    dump -g $1 | awk '
    BEGIN {
            top = 1
    }    
    /^[ ]*[0-9][0-9]*/ {
        if ( (n = index( $2, "." )) > 0 ) {
            export_array[ top++ ] = substr( $2, n+1, length( $2 ))
        }
        else {
    	export_array[ top++ ] = $2
        }
    }
    
    END {
        for ( i = 1; i < top; i++ )
        {
    	print export_array[ i ]
        }
    
    }' | sort | uniq
    
    
    
    目次へ
    2.18: imake, makedepend がないのですが...
    David L. Crow (crow@austin.ibm.com ) 氏による
    
    AIXWindows 1.2.3 以降 (X11R5) の X11dev.src package が必要です. R5 でな
    い X には xmkmf はありません.
    
    X11dev.src を導入後, imake, makedepend, config file その他を作り,
    install する方法を以下に書きます.
    
          cd /usr/lpp/X11/Xamples
          make Makefile
          make SUBDIRS="config util" Makefiles
          make SUBDIRS="config util" linklibs
          make SUBDIRS="config util" depend
          make SUBDIRS="config util" 
          make SUBDIRS="config util" install
          
    
    目次へ
    2.19: binary が使っている共有メモリを見つける方法は?
    
    "dump -H " を使って下さい. 下の例の /unix 以外ののものが必
    要なライブラリです. 上は静的にリンクした bash の例で, 下は共有メモリを使っ
    た時の例です.
    
    
    INDEX  PATH                          BASE                MEMBER              
    0      /usr/lib:/lib                                                         
    1      /                             unix                                    
    
    INDEX  PATH                          BASE                MEMBER              
    0      ./lib/readline/:./lib/glob/:/usr/lib:/lib               
    1                                    libc.a              shr.o               
    2                                    libcurses.a         shr.o               
    
    
    目次へ
    3.00: Fortran とその他のコンパイラ
    
    この節では C/C++ 以外の全てのコンパイラを扱います。 Fortran では浮動小
    数の扱い、 とくに浮動小数例外の扱いに問題があるようです。
    
    
    目次へ
    3.01: Fortran と C のコードを併用した時にうまくゆきませんでした。 どうしてですか?
    
    いくつかの関数 (例えば getenv, signal, system など) は Fortran と C そ
    れぞれのライブラリに含まれていますが、 その引数は異なります。 最近まで
    C と Fortran それぞれから getenv を呼ぶようなプログラムを書いた時は、
     コマンドラインで正しいライブラリが最初になるように注意深くリンクしな
    ければなりませんでした。 これらの操作は Version 1.5 以降のコンパイラで
    は不要となりました。
    
    
    目次へ
    3.02: どうすれば Fortran のライブラリを静的にバインドし、 かつ C のライブラリを動的にバインドすることができますか?
    
    From: amaranth@vela.acs.oakland.edu (Paul Amaranth)
    
    [編者注: ここで述べられている事の一部は C コンパイラの節ですでに述べら
    れていますが、 わたしは非常に価値があると考えたので、 ここにも全て掲載
    しました。]
    
    リンカとバインダはいろいろなことができるプログラムですが、 やりたい事
    をする方法はいつもはっきりしていません。 例えば共有ライブラリを使いた
    くなく、 必要な関数をオブジェクトに静的にバインドしたい時があります。
    もしくは (例えば Fortran と C で書かれた) 2種類の同じ関数を使う必要が
    ある時もあります。 ここでは私の最近の経験の結果を述べます。 私にヒント
    を与えてくれた Daniel Premer と私の SE である Brad Hollowbush に感謝し
    ます。 誤りと不注意は私によるものです。 私はよくリンカという言葉とバイ
    ンダという言葉をよく混同してしまいます。 これらの経験は AIX 3.1.2 上で
    のものですが、 これらのほとんどは 3.1 以降でも適応できるでしょう。
    
    1) いくつかの C プログラムをランタイム・ルーチンにバインドしたいのです
    が、どうすれば良いのですか? [2.04 節においても同様な事が述べられてい
    ます。]
    
    link をする時に -bnso という引数を指定してください。 さらに
    -bI:/lib/syscallsexp という引数を指定するとよいでしょう。
    
          $ cc *.o -bnso -bI:/lib/syscalls.exp -o foo
    
    これでまるで手品のように必要な事を全てしてくれます。 これが全ての必要
    な関数をバインドする事に気を付けてください。 引数 -bI はリンカにこれら
    のエントリ・ポイント (この例ではシステム・コール) が実行時に動的に解決
    されるようリンカに指示します。 これを除くと多くの未解決の参照と言うメッ
    セージが出るでしょう。
    
    2) a) 顧客が Fortran のランタイム ルーチンを購入しなくても良い様にする
    ためと、 b) ランタイム ルーチンの新しいリリースによって動作が変わる事
    で苦労するのを避けるため、 Fortran のランタイム ルーチンを静的にバイン
    ドしたいと思います。 こうするために 1) で述べられたバインダの引数を二
    つ指定する事は可能ですか? 
    
    可能であるはずなのですが、 少なくともバージョン 3002 では、 getenv の
    参照でリンカ・エラーとなります。 さらに Fortran と C の関数間では多く
    の潜在的な (関数名などの) 衝突があります.  簡単な方法ではうまくゆきま
    せん.  この為の C と Fortran のための2段階のリンクについて述べられた節
    を参照してください.  この getenv の問題は厄介な問題です.  解説と注意と
    いう節も参照してください.
    
    C と Fortran の混合 program を作成しているのですが, どのようにすれば C
    の関数は C の getenv を参照し, Fortran の関数は (C のものとは引数が異
    なり、 もし C の関数から誤って呼ばれるとセグメンテーション・フォールト
    を起こす) Fortran の getenv を参照するようにできるのでしょうか。
    
        From Mike Heath (mike@pencom.com):
    
    いずれかの言語を用いてプレ・リンクする時に -brename:symbol1,symbol2 と
    いう指定をしてください。 どちらの言語からを先にしても構いません。
    
    4) C と Fortran の関数があります。 xlf ライブラリとはリンクし、 その他
    のライブラリは共有ライブラリを使用するようにしたいのですが、 どうすれ
    ば良いですか?
    
    2段階のリンクが必要です。 第一段階では、 xlf ライブラリの関数とバイン
    ドし中間オブジェクト・ファイルを生成します。 第二段階で残りの共有ライ
    ブラリへの参照を解決します。
    
    特に Fortran オブジェクトに xlf ライブラリをバインドするには次のコマン
    ドを使用してください。
    
           $ ld -bh:4 -T512 -H512  -o intermediat.o \
             -bnso -bI:/lib/syscalls.exp -berok -lxlf -bexport:/usr/lib/libg.exp \
             -lg -bexport:
    
    -bexport: という引数は中間モジュールの外部から参照で
    きる全てのエントリ・ポイントの名前を記述したファイルを指定します。 一
    行に一エントリ・ポイント名を記述します。 -bI:/lib/libg.exp はプログラ
    ムが適切に動作する為に必要です。 -berok 引数はバインダに未解決の参照が
    あっても、 すくなくともこの時点では問題ない事を示します。 (ここで -r 
    オプションでもうまくゆくと思われるかも知れませんが、 うまくゆかないよ
    うです。
    
    -bnso 引数によって必要なモジュールがオブジェクトに組み込まれます。 
    -lxlf 引数はもちろん xlf ライブラリを指定しています。
    
    次に、 中間オブジェクトモジュールを他の共有ライブラリと通常の方法でバ
    インドします。
    
           $ ld -bh:4 -T512 -H512  intermediate.o \
             /lib/crt0.o -lm -lc
    
    -berok 引数がない事に気を付けてください。 このリンクの後には、 (多段階
    リンクを行い、 別の中間オブジェクトを生成しているのでない限り) 全ての
    参照が解決されていなければなりません。
    
    モジュールの順序に気を付けてください。 例えば Fortran のプログラムで
    load という名前のサブルーチンを作っている場合などには、 これは非常に重
    要です。 中間モジュールの前に C ライブラリを置くと、 たとい Fortran の
    モジュールが既にリンクされていて、 シンボルへの全ての参照が Fortran モ
    ジュールに含まれていたとしても、 Fortran の "load" ではなく C の"load"
     の方が有効になってしまいます。 これは非常に発見が困難です。(この件に
    関しては私を信じてください :-) これはバグでしょうか、 仕様でしょうか、
     それとも...
    
    なお、 この文章の 2.03 で述べたように、 リンクされたファイルの個々のオ
    ブジェクトを置き換える事ができるのは仕様です。
    
    結果としてできるオブジェクトは通常よりやや大きくなります。(私のものは 
    5% 大きくなりましたが、 2MB のオブジェクトになったので、 "やや" と書き
    ました  :-)
    
    解説と注意
    
    ドキュメントからはリンカへの -r 引数は -berok と同じ事をするように読め
    ます。 しかしそうなりません。 -r 引数を使うと非常に奇妙な結果になりま
    す。 私は -r を (-r がその為に用意された中間モジュールのリンクに対して
    も) まともに動くようにする事はできませんでした。
    
           Mike Heath (mike@pencom.com)によると:
    
    	'ld -r' はつまりは 'ld -berok -bnogc -bnoglink' の省略形です。
    	確かに -berok を export ファイルと用いる事は (ガーベージ・コレ
    	クションを行う事ができるので) ld -r よりも良い方法であるが、 
    	後者の方がより簡単です。
    
    中間モジュールをバインドする時に、 後のリンクで参照できるようにしたい
    エントリ・ポイントを定義する export ファイルを用いると良いでしょう。 
    もしこれをしないと、 恐ろしい "未解決の参照" のエラーに出会うでしょう。
    Export ファイル (訳注 原文では import file とあるが export file の誤り
    と思われる) はのちに動的に解決されるエントリ・ポイントを示します。 (
    訳注: この一文自信がありません)
    
    もしどのパラメータもしくはライブラリがリンク時に使用されるか疑問になっ
    たら、 リンク時に -v 引数を使用し、 ld 命令の例を変更して実行して見て
    ください。 (訳注: ここも自信がありません。) ライブラリに関して考える
    と常にいつ何を使うかということに行きつきます。(訳注: ここも自信があり
    ません。) もしある引数が何の為にあるのか分からない時はそのままにしてお
    いてください。 (あなたには分からなくとも) ある目的があってあるのです。
    
    たとえば "load" のように同じ名前で 2種類以上の関数があるときには、 (ラ
    イブラリのような) 外部定義の順序に気を付けてください。 ld 命令で最初に
    定義されたものが使用されます。
    
    getenv (system と signal も同様) 問題は、 最初はあまり問題ではありませ
    んでしたが、 3003 ではより悪化しました。 しかしある日突然修正されるで
    しょう。 基本的には、 xlf.a を更新し保存する前に, 3002 バージョンで生
    成したこれらの関数を抜きだしておくべきです。 そしてこれらの Fortran の
    システム・サービスを使用するのであれば、 これらの関数をリンクしてくだ
    さい。
    
    
    目次へ
    3.03: ある数が NaN かどうかは、どうやって調べれば良いでしょうか?
    sdl@glasnost.austin.ibm.com (Stephen Linam) 氏より。
    
    Nan(Not a Number) は数ではありません。RISC システム/6000 が
    IEEE 規格の浮動小数点演算を使っているために生じます。
    
    ある変数値が、NaN であるかどうかを調べるには、NaN はどんなものとも等しくない、
    すなわち自分自身とも等しくないという性質が使えます。
    
    	IF (X .NE. X) THEN	! X が NaN であれば、これは真になります。
    
    例外(例えば、オーバーフロー)を起こすような浮動小数点演算は、
    FPSCR(Floating Point Status and Control Register) と呼ばれるレジスタの
    ステータスビットをセットします。FPSCR の状態を問い合わせる Fortran の
    インターフェースがあり、XLF Fortran のマニュアルに説明されています。
    今手元にマニュアルがないのですが、FPGETS と FPSETS を検索してみてください。
    
    「Risc System/6000 Hardware Technical Reference - General Information」
    (SA23-2643) という IBM が出しているマニュアルには、どういう浮動小数点
    例外が起こり得るか、そしてそういう例外の結果として FPSCR のどのビットが
    セットされるかが解説されています。
    
    編注)N:SA23-2643-00 RISC/6000 ハードウェア技術解説書 概説書
    
    
    目次へ
    3.04: IEEE 浮動小数点数演算規格についての文献
    
    1. ANSI/IEEE STD 754-1985 (IEEE Standard for Binary Floating-Point
       Arithmetic)、
       および
       ANSI/IEEE STD 854-1987 (IEEE Standard for Radix-Independent
       Floating-Point Arithmetic)、
       の二つが IEEE から入手できます。
    
    2. David Goldberg, "What Every Computer Scientist Should Know About
       Floating-Point Arithmetic", ACM Computing Surveys, Vol. 23, No. 1,
       March 1991, pp. 5-48.
    
    
    目次へ
    4.00: GNUとパブリックドメインソフト
    
    GNUのソフトウエアは、Free Software Foundationやその他たくさんの所から
    出ています。これらは、数多くののftpサイトに保管されています。これらの
    ソフトウエアの配布規定に関しては、GNUのライセンスを読んでください。
    
    たくさんの便利なパブリックドメインソフトウエアが、RS/6000に移植されて
    います。ftpやダウンロードするには、以下の情報を見てください。
    
    
    
    目次へ
    4.01: ソースコードを探すにはどうすればいいか?
    From: jik@GZA.COM (Jonathan Kamens)
    
    ある特定のソースコードを探す記事をポストするためには、専用のニュース
    グループがあります。このニュースグループへ記事をポストするときには、
    下記に示してあるrtfm.mit.eduサイトのanonymous ftpから得られる
    How_to_find_sources(READ_THIS_BEFORE_POSTING)に書いてあるガイドライン
    を守るようにして下さい。
    
    /pub/usenet/comp.sources.wanted/H_t_f_s_(R_T_B_P)
    
    注: IPアドレスよりは、変更される可能性の低いホスト名を使用するように
    しましょう。
    
    また、次のようなメッセージのメールをmail-server@rtfm.mit.eduに送ること
    によっても得ることができます。
    
    send usenet/comp.sources.wanted/H_t_f_s_(R_T_B_P)
    
    メールサーバについての一般的な情報を得るには、"help"と書いたメールを
    送ってください。
    
    もし、ここに示してある方法でも探しているソースが見つからない場合
    には、comp.sources.wantedに投稿すると良いでしょう。
    
    
    
    目次へ
    4.02: FTPサイトは有りますか?
    
    以下は、全てを確認しているわけではありませんが、特にRS/6000用のソフト
    を持っていると思われるFTPサイトです。
    
    [US sites:]
    アメリカのサイト:
    aixpdslib.seas.ucla.edu     128.97.2.211        pub
    acd.ucar.edu                128.117.32.1        pub/AIX         
    acsc.acsc.com               143.127.0.2         pub
    byron.u.washington.edu      128.95.48.32        pub/aix/RS6000 (older stuff)
    lightning.gatech.edu        128.61.10.8         pub/aix
    tesla.ee.cornell.edu        128.84.253.11       pub
    
    [European sites:]
    ヨーロッパのサイト:
    nic.funet.fi                128.214.6.100       pub/unix/AIX/RS6000
    iacrs1.unibe.ch             130.92.11.3         pub
    files1zrz.zrz.TU-Berlin.DE  130.149.4.50        pub/aix
    ftp-aix.polytechnique.fr    129.104.3.60        pub/binaries/rios
    ftp.uni-stuttgart.de        129.69.8.13         sw/rs_aix32/
    
    最初のサイト(aixpdslib.seas.ucla.edu)は、AIXで動くソフト専用です。ソフトの
    バージョンはいつも最新版とは限りませんが、AIX(通常はAIX Version 3のみ)に
    移植されているものです。接続後は、READMEとpub/ls-lRの2つのファイルを読み
    ましょう。
    
    ヨーロッパのサイトは、基本的にヨーロッパの人々のために運用されており、
    またほとんどのソフトはアメリカで見つかるので、使用は控えめにして下さい。
    
    Host cac.toronto.ibm.com
        Location: marketing-info
    
    >From David Edelsohn (c1dje@watson.ibm.com):
    Host aixpdslib.seas.ucla.edu
        Location: ?                   #AIX archive (sources and binaries)
    Host ftp.egr.duke.edu
        Location: ?                   #AIX archive
    Host straylight.acs.ncsu.edu
        Location: ?                   #AIX archive
    Host alpha.gnu.ai.mit.edu
        Location: /rs6000             #AIX archive
    
    >From Frank E. Doss (csfed@ux1.cts.eiu.edu):
    Host iacrs2.unibe.ch
        Location: /pub/aix            #bunch of goodies)
    Host ftp.u.washington.edu
        Location: /pub/RS6000         #minimal -- ted)
    Host aixive.unb.ca
        Location: ?                   #just announced -- new archive)
    Host ftp.ans.net
        Location: /pub/misc           #wais goodies)
    Host uvaarpa.virginia.edu
        Location: /pub/misc           #minimal -- whois)
    Host ux1.cts.eiu.edu
        Location: /pub/rs6000         #minimal -- pop3, FAQ, whois)
    
    >From Robert MacKinnon (robmack@bsc.no):
    Host ftp.bsc.no
        Location: pub/Src.
    
    
    [Sites with directories named 'aix':]
    'aix'という名前のディレクトリがあるサイト:
    
    Host aix1.segi.ulg.ac.be   (139.165.32.13)
        Location: /pub/aix
    
    Host byron.u.washington.edu   (128.95.48.32)
       Location: /pub/aix
    
    Host cunixf.cc.columbia.edu   (128.59.40.130)
        Location: /aix
    
    Host files1zrz.zrz.tu-berlin.de   (130.149.4.50)
        Location: /pub/aix
    
    Host ftp.rz.uni-augsburg.de   (137.250.113.20)
        Location: /pub/aix
    
    Host fyvie.cs.wisc.edu   (128.105.8.18)
        Location: /pub/aix
    
    Host solaria.cc.gatech.edu   (130.207.7.245)
        Location: /pub/incoming/aix
        Location: /pub/aix
    
    Host spot.colorado.edu   (128.138.129.2)
        Location: /aix
        Location: /pub/patches/aix
    
    Host swdsrv.edvz.univie.ac.at   (131.130.1.4)
        Location: /unix/systems/aix
    
    Host switek.uni-muenster.de   (128.176.120.210)
        Location: /pub/aix
    
    Host wuarchive.wustl.edu   (128.252.135.4)
        Location: /systems/aix
    
    
    [Sites with directories named 'AIX':]
    'AIX'という名前のディレクトリがあるサイト:
    
    Host cs.nyu.edu   (128.122.140.24)
        Location: /pub/AIX
    
    Host karazm.math.uh.edu   (129.7.128.1)
        Location: /pub/AIX
    
    Host minnie.zdv.uni-mainz.de   (134.93.178.128)
        Location: /pub0/pub/AIX
    
    Host oersted.ltf.dth.dk   (129.142.66.16)
        Location: /pub/AIX
    
    Host rs3.hrz.th-darmstadt.de   (130.83.55.75)
        Location: /pub/incoming/AIX
    
    
    [Sites with directories named 'rs6000':]
    'rs6000'という名前のディレクトリがあるサイト:
    
    Host aeneas.mit.edu   (18.71.0.38)
        Location: /pub/rs6000
    
    Host cameron.egr.duke.edu   (128.109.156.10)
        Location: /rs6000
    
    Host ifi.informatik.uni-stuttgart.de   (129.69.211.1)
        Location: /pub/rs6000
    
    Host metropolis.super.org   (192.31.192.4)
        Location: /pub/rs6000
    
    Host ramses.cs.cornell.edu   (128.84.218.75)
        Location: /pub/rs6000
    
    Host server.uga.edu   (128.192.1.9)
        Location: /pub/rs6000
    
    Host unidata.ucar.edu   (128.117.140.3)
        Location: /pub/bin/rs6000
    
    Host uvaarpa.virginia.edu   (128.143.2.7)
        Location: /pub/rs6000
    
    Host wayback.cs.cornell.edu   (128.84.254.7)
        Location: /pub/rs6000
    
    
    [Sites with directories named 'RS6000':]
    'RS6000'という名前のディレクトリがあるサイト:
    
    Host alice.fmi.uni-passau.de   (132.231.1.180)
        Location: /pub/RS6000
    
    Host byron.u.washington.edu   (128.95.48.32)
        Location: /pub/aix/RS6000
    
    Host milton.u.washington.edu   (128.95.136.1)
        Location: /pub/RS6000
    
    Host pascal.math.yale.edu   (128.36.23.1)
        Location: /pub/RS6000
    
    Host uxc.cso.uiuc.edu   (128.174.5.50)
        Location: /pub/RS6000
    
    
    目次へ
    4.03: 一般的なヒント
    
    一般的に、cursesを使用しているアプリケーションは、-ltermlibではなくて、
    -lcursesフラグを用いてリンクします。また、-DNLSフラグも有効であるとの
    報告もあります。
    
    RS/6000には、標準のPATHに入っているSystem V準拠のもの(/usr/binと/usr/usg
    からリンクされている/etc/install)とBSD準拠の/usr/ucb/installのものの、
    2種類のinstallプログラムがありますので、気をつけて下さい。
    
    新規にシェルをシステムに登録する場合には、ユーザがftpやrloginのデフォルト
    シェルとして使えるように、/etc/security/login.cfgの"shells="行にそのシェル
    を記述します。
    
    
    目次へ
    4.04: GNU emacs
    GNU emacsはversion 18.57よりRS/6000でサポートされました。
    AIX3.2のemacsは、s-aix3-2.hを使う様に最近変わりました。
    最新のリリースは19.XXです
    emacsインストール中にcore-dumpを吐く場合Makefileの’install -s'を
    '/usr/ucb/install'に修正して下さい。
    
    
    目次へ
    4.05: GNU C
    GNU CはVersion 2.0かそれ以降のversionよりRS/6000でサポートされました。
    コンパイル時には多量のページング領域が必要なのを経験的に知っていると思います
    gccとgdbは'as'アセンブラのパッチを必要とします
    IBMsoftwareサポートでIX26107(U409205)のパッチを取り寄せて下さい
    最新のgcc version2.5.Xとgdb4.1Xでは多くの変更があります。
    もしマシンクラッシュがある場合、IBMsoftwareサポートでU412815のパッチをあてて
    gdb4.7を走らせて下さい
    
    訳注) AIX3.2.5ではasのパッチは必要ありません。
    
    
    目次へ
    4.06: Gostscript
    ポストスクリプト・インタープリターGNU Gostscript はVersion 2.4かそれ以降から
    RS/6000でサポートされました。そして様々なFTPサイトで見つける事が出来ます。
    最新はversion2.6.1です
    コンパイルは、Makefileにオプティマイズなしでidict.c,zstack.cを加えます
    
    idict.o: idict.c
            $(CC) -c idict.c
    
    zstack.o: zstack.c
            $(CC) -c zstack.c
    
    訳注)xlc 1.3.0.4以降ではidict.cは-O付きでコンパイル可能です。
    
    
    目次へ
    4.07: Tex
    texは ftp.uni-stuttgart.de.から ftpで持ってこれます
    最新のコンパイラ(01.02.0000.0013)でオプティマイズ指定して必ずコンパイル
    して下さい
    
    訳注)最新のコンパイラーは(1.2.0.32, 1.2.1.28 or 1.3.0.18)以降になります/
    
    
    目次へ
    4.08: perl
    最近のVersionは4.035でCCで全く問題なくコンパイルできます。
    bsdccを使うとperlのmalloc()を使う事が出来ません
    その場合、perlを'config.SH'の'#define HAS_SYMLINK'とあなたの環境に合わせて
    作成して下さい。Bill Wohlerは私にperlは’config.sh'の修正なしにCCだけで作成
    できるといっています。ただし、malloc()が使えないならば
    
    Doug Sewell が
    付け加えてperlのmalloc()を使う事が出来ないconfig.shを修正したいと思っても
    /lib/cpp/のwapper-programのcppStdinを変えなければ駄目である
    
    perlのwapper名はソースディレクトリのあるファイル中にあり
    そのファイルを消したとしてもperlの中でコンパイルされる。
    /lib/cpp/のそれ自身が仕事としてそれを使っている
    malloc()の事は perl4,0pl11のConfigureのスクリプトで解決されていると
    思います。
    
    また、gdbmのインストール用のFAQについては用心が必要です
    Gdbmはbsdccでコンパイルしますが、perl(私はbsdccでコンパイルした物を
    インストールした)はCCで作成しました。それで私はIBMのndbmのルーチンを
    使っています
    
    
    目次へ
    4.09: X-windows
    IBMは3.2.3で2つリリースしてます。X11R4versionのMotif1.1とX11R5の
    AIXWindows1.2.3です
    
    AIXwindows Version1.2.0(X11rte 1.2.0)はX11R4のMotif1.1です
    AIXwindows Version1.2.3(X11rte 1.2.3)はX11R5のMotif1.1です
    X11rte.motif1.2 1.2.3はMotif1.2でAIXwindows 1.2.3と呼ばれています
    
    
    目次へ
    4.10: bash
    bashはポーテングされていて、幾つかのパッチがprep.ai.mit.eduにあります
    最新Versionは1.13.Xで素晴らしい仕事と思います。
    
    
    目次へ
    4.11: Elm
    素晴らしい返事のメイルだ!!
    Elmは可愛いぐらい正直だ!!思い出す事は、只一つ -lcursesをリンクするだけ
    そうそう cursesのライブラリーも忘れずに
    2.13より上位のは問題があるかも知れませんので
    
    
    目次へ
    4.12: Oberon2.2
    afx@muc.ibm.de (Andreas Siegert)より
    OberonはWirth'sのModula-2でフォローされてます。しかし、2.2とは
    互換性がありません。フリーのModula-3のVBersionは DEC/Olivettiの
    gatekeeper.dec.com.から入手できます。新しい言語のためModula-2の
    変わりでは使えません。
    これら2つのRS/6000の最新のM2コンパイラ で
      	Edinburgh Portable Compilers, +44 31 225 6262 (UK)
    	Gardens Point compiler +41 65 520311 (Switzerland)
    です
    
    Oberonはanonymous ftp でneptune.inf.ethz.ch(129.132.101.33)のOberon/RS6000か
     gatekeeper.dec.com(16.1.0.2)から入手できます。
    
    
    目次へ
    4.13: kermit
    kermitの入手はwatsun.cc.columbia.edu (128.59.39.2)の
    kermit/bin/cku189.tar.Zです
    Uncompressしてtarで開いて”make rs6000"でコンパイル
    
    
    目次へ
    4.14: Gnu dbm
    doug@cc.ysu.edu (Doug Sewell)から
    解決策
    testgdbm.c:
    158c158
    <   char opt;
    ---
    >   int opt;
    166c166
    <   while ((opt = getopt (argc, argv, "rn")) != -1)
    ---
    >   while ((opt = getopt (argc, argv, "rn")) != EOF)
    
    systems.h:
    111a112,114
    > #ifdef RS6000
    > #pragma alloca
    > #else
    112a116
    > #endif
    
    でMakefileの修正は
    CCにbsdccをセット。(もしbsdccがあなたのシステムに無い時は
    /usr/lpp/bos/bsdportを見て下さい)
    CFLAGSには -DRS6000 -g,-Oを付けて。SYSVは定義しない事
    
    
    目次へ
    4.15: tcsh
     cordes@athos.cs.ua.edu (David Cordes)
    tcshは tesla.ee.cornell.edu (pub/tcsh-6.00 directory)で入手できます
    コンパイルは問題なくできます。tcshの許可ユーザの為に/etc/security/login.cfg
    のファイルにtcshをインストールした場所のPATHを付け加える修正をします
    
    "A. Bryan Curnutt" 
    AIX3.2.5ではconfig.hの以下を修正して下さい
        #define BSDSIGS
    to
        #undef BSDSIGS
    
    
    目次へ
    4.16: Kyoto Common Lisp
    ソースは  cli.com.より入手できます。KCLのパッケージは必要です
    最近のakclの配布を手に入れて下さい。akclはフロントーエンドを供給してます
    オリジナルのKCLのプラットフォームのport数とakclのport数が違ってますが
    RS/6000でのportは全く問題がありません。
    rootで幾つかのメモリのプロテクトルーチンに関して作成してください
    
    
    目次へ
    4.17: Tcl/Tk
    最新versionはTcl 7.3, Tk 3.6 です
    sprite.berkeley.edu かharbor.ecn.purdue.edu.で入手できます
    
    
    目次へ
    4.18: Expect
     Doug Sewell 
    作成するインタープリターVersionは 作成に成功したTclのライブラリーを
    必要とします。 Expect ライブラリはtclを必要としません
    Note:Expectとそのライブラリはbsdccで作成します。そのため
    	アプリとか関係するものをbsdccで作成します
    expectはftp.cme.nist.gov.から入手できます
    makefileの修正点を以下に書きます
    まずカスタムソースとターゲットディレクトリのファイル
    
    TCLHDIR = /usr/include
    TCLLIB = -ltcl
    MANDIR = /usr/man/manl               (local man-pages)
    MANEXT = l
    BINDIR = /u/local/bin
    LIBDIR = /usr/lib
    HDIR = /usr/include
    ...
    
    次にコンパル関係
    #
    CC = bsdcc
    CFLAGS = -O
    ...
    PTY_TYPE = bsd
    ...
    INTERACT_TYPE = select
    ...
    Then you need to make these changes about line 90 or so:
    90行ぐらいの所にある
    
    # CFLAGS = $(CLFLAGS) <ーコメントアウト
    
    CFLAGS = $(CLFLAGS) $(CPPFLAGS) <ー コメントを外す
    LFLAGS = ($CLFLAGS)		<ー コメントを外す
    
    その後に make
    
    host名など例を参照して変更してください
    チョット分からないのですが、全て変更してませんがなんら問題なく動いてます。
    
    
    目次へ
    4.19: CDから入手できるパブリックドメインソフトウェア
    From: mbeckman@mbeckman.mbeckman.com (Mel Beckman)
    
    プライムタイムフリーウェアCDコレクション(The Prime Time Freeware CD collection) 
    という2枚組のCDには、展開すると3GB以上にもなるUNIXソフトウェアが収録されていま 
    す。価格は69US$です。
    >from Prime Time Freeware, 
    
    プライムタイムの発売元の連絡先は、415-112 N. Mary Ave., Suite 50, Sunnyvale, CA  
    94086. Phone 408-738-4832 voice, 408-738-2050 fax.
    インターネットによるオーダのサーヴィスは行われていないようです。
    
    このCDにあるパッケージから随分たくさんのものを取り出して試してみましたが、220上 
    では全て問題なく動作しました。プログラミング言語から3Dモデリングソフトウェアま 
    でこの宝の山には何でも入っています!
    
    またO'Reillyから出版されている本、『Unix Power Tools』にCD-ROMが付属してきます 
    がこれにもRS/6000用も含めた多くの環境用にコンパイルされた便利なプログラムが収録 
    されています。
    
    
    目次へ
    4.20: Andrew Toolkit
    
    From: Gary Keim 
    
    カーネギーメロン大学コンピュータ科学学科のAndrew Toolkit ConsortiumはAndrew  
    User Environment, Andrew Toolkit, およびAndrew Message Systemの新しいヴァージョ 
    ンをリリースしました。
    
    Andrew User Environment (AUE)は幾つかのユーザアプリケーションからなるもので、一 
    つ一つのアプリケーションは以下の通りです。'ジェネリックオブジェクト'エディタ、 
    ez、ヘルプシステム、システム監視ツール(コンソール)、エディタの機能を持ったシェ 
    ルインターフェイズ(typescript)、そしてマルチメディアドキュメントの印刷機能。
    
    Andrew Toolkit (ATK)は、X11用のユーザインターフェイス構築のためのポータブルな 
    ツールキットです。ATKはオブジェクト指向の環境で、オブジェクトはダイナミックに 
    ロードすることができて、またオブジェクト同士を相互に埋め込むことができます。で 
    すから、例えば複数のフォントを持つばかりでなく、画像やスプレッドシート、ドロー 
    ツール、方程式、簡単なアニメーション等々を含むようなテキストを編集すると言った 
    ようなことが可能です。これらのオブジェクトを入れ子構造上に組み合わせることも可 
    能です。
    
    Andrew Message System (AMS)は電子メールやBBSをマルチメディア化するインターフェ 
    イスです。AMSでは複数のメール管理方法が提供されています。また幾つかの先端的な機 
    能が実装されていて、認証、受け取り送付、メールの自動整理、メールによる投票と投 
    票結果の集計、ファイルの同封、メール内容の検索による関連メッセージの追跡、
    AMSはターミナル、パーソナルコンピュータ、ワークステーションの3つのインターフェ 
    イスをサポートしています。
    
    これらシステムのリリース5.1では多くのバグフィックスと改良がなされています。また 
    インターネットのマルチメディアメールの標準規格であるMIME(Multipurpose Internet  
    Mail Extensions)がサポートされました。MIMEに関してはemsworth.andrew.cmu.eduから 
    ftpできるCHANGESというファイル名のドキュメントをお読みください。
    
    R5.1のソースはexport.lcs.mit.edu (18.30.0.238) の./contrib/andrew以下からftpす 
    ることができます。詳しくは同じftpにある./contrib/andrew/READMEをお読みくださ 
    い。
    
    AIX3.2用のパッチはemsworth.andrew.cmu.edu (128.2.45.40)の./aixpatchからftpする 
    ことができます。またインターネットに直接アクセスできない場合には、電子メールか 
    ファクシミリでコンソーシアムにオーダすれば3.5inchフロッピーにパッチをコピーして 
    お送りします。手数料として10$ほどいただきます。コンソーシアムの住所は最後にある 
    とおりです。
    
    このAndrewをはじめCMUの開発した様々なソフトウェアはemsworth.andrew.cmu.edu  
    (128.2.30.62)からftpすることもできます。AFSでアクセスできる場合には 
    /afs/andrew.cmu.edu/itc/sm/releases/X.V11R5/ftpを覗いてみてください。
    
    Remote Andrew Demo Service
    
    このネットワークサーヴィスを利用すればAndrew Toolkitのアプリケーションを簡単に 
    試すことができます。ファイルを入手してコンパイルする必要はありません。必要なも 
    のはX11が走っているワークステーションとインターネットへのアクセスだけです。あと 
    は"finger"コマンドを使ってATKアプリケーションを直接体験できます。例えばマルチメ 
    ディアドキュメントを作ったり、インタラクティヴなAndrew Tourをして遊んだり、また 
    AMSをつかって何千もあるCMUのBBSやニュースグループを見て回ったりすることができま 
    す。
    
    Remote Andrew Demo Serviceを起動するには、
    
    finger help@atk.itc.cmu.edu
    
    と言うコマンドを起動します。そうすればさらに詳しい使用法が表示されます。
    
    Information Sources
    
    ATKのバグを見つけられた場合にはどうぞinfo-andrew-bugs@andrew.cmu.eduにお知らせ 
    ください。バグに関する情報は定期的にinfo-andrew@andrew.cmu.eduというアドレスの 
    メーリングリストに報告されています。このメーリングリストに参加のご希望、あるい 
    はその他のリクエストはnfo-andrew-request@andrew.cmu.eduご連絡ください。
    
    また他に以下のソフトウェア、情報も配布しています。
    
    CDROMによるATKおよびAMSソースコードとバイナリ。バイナリが用意されているシステム 
    は、
    		IBM RiscSystem/6000 
    
    		Sun SparcStation 
    
    		HP 700 Series 
    
    		DECstation 
    
    です。
    
    QICおよびIotamatテープによるATKとAMSのソースコード、およびドキュメントのハード 
    コピー。
    Andrewシステムを解説したビデオ「Welcome to Andrew: An Overview of the Andrew  
    System」、技術解説ビデオ「The Andrew Project: A Session at the Winter 1988  
    Usenix Conference」
    
    さらに詳しい情報については下記にご連絡ください。
        Information Requests
        Andrew Toolkit Consortium
        Carnegie Mellon University
        4910 Forbes Avenue, UCC 214
        Pittsburgh, PA 15213-3890
        USA
        phone: +1-412-268-6710
        fax: +1-412-621-8081
        info-andrew-request@andrew.cmu.edu
    
    
    
    目次へ
    4.21: sudo
    
    これは全てのプロセスが任意のuidを持つかのように振る舞うことを可能にするソフトで 
    す。ヴァージョン1.1(最新)はcsn.org:/pub/sudoより入手できます。AIXがサポートさ 
    れています。
    
    
    
    目次へ
    4.22: Flexfax とその他のfaxソフトウェア
    From: robmack@bsc.no (Rob MacKinnon)
    
    FlexFax v2.2.1はsgi.com:/sgi/faxより入手できます。このファックスソフトは多くの 
    class1およびclass2のファックスモデムをサポートし、またAIX3.2.3以上を含む幾つか 
    のUNIXをサポートしています。ファックスモデムの機種に関する情報も同じサイトの 
    sgi.com:/pub/fax/bakeoffより入手できます。FlexFaxに関するファイルはsgi.comの他 
    にもftp.bsc.noにコピーが置かれています。
    
    注: FlexFax2.4.3というものがftp.ee.lbl.govより入手できますが、これがSGIで作られ 
    たものの新しいヴァージョンのものであるかどうか確認していません。
    
    From: michael@hal6000.thp.Uni-Duisburg.DE (Michael Staats)
    
    私たちは mgetty+sendfaxという組み合わせでモデムを使っています。これはこのモデム 
    用に私がプリンタバックエンドを作ったもので、Postscriptファイルを印刷するのと同 
    じ位い簡単にファックスとして送信することができます。またX上にファックスの送信を 
    とても簡単にするようなファックスの定型を作製するインターフェイスも作製しまし 
    た。以下のソフトウェアは、hal6000.thp.Uni-Duisburg.DEの/pub/sourceにあります。
    
    ソースファイル名				内容: 
    
    
    mgetty+sendfax-0.14.tar.gz		モデムのI/Oを制御する基本ソフト。AIX用
    					には修正が必要
    X11/xform-1.1.tar.gz			ファックス定型作製ソフト。(定型のサン
    					プルがあります)
    					libxviewが必要。
    faxiobe.tar.gz				ファックス送信のバックエンド。各サイト
    					ごとの設定必要
    
    AIX用のlibxview.aとヘッダファイルが必要でしたら 
    /pub/binaries/AIX-3-2/lxview.tar.gzにおいてありますので利用してください。
    
    
    
    目次へ
    4.23: lsof
    From: abe@vic.cc.purdue.edu (Vic Abell)
    
    「プロセスがopenしているファイルを知りたい」、「あるネットワークアドレスを使っ 
    ているプロセスがどれであるか特定したい」、「あるファイルシステム上のファイルを 
    openしているプロセスを全部特定したい」といったことをやりたいとします。どうすれ 
    ばよいでしょう? 答えは「lsof (LiSt Open Files)を使う」です。
    
    Lsofはvic.cc.purdue.eduからanonymous ftpすることができます。ファイルは 
    pub/lsofVVVtar.Zです。ここでVVVはlsofのヴァージョンを示します。現在最新は299で 
    す。
    
    
    目次へ
    4.24: popper
    
    POPサーヴァはftpサイトftp.CC.Berkeley.EDU (128.32.136.9, 128.32.206.12)にありま 
    す。ファイルはpubに二種類のファイルでおいてあります。一つはcompressで圧縮した 
    popper-version.tar.Zで、もう一つはMacintoshのStuffItアーカイヴをBinHexフォー 
    マットに変換したものでMacPOP.sit.hqxです。
    
    
    目次へ
    4.26: mpeg link errors version 2.0
    posted by (Nathan Lane) nathan@seldon.foundation.tricon.com 
    
    .XShmCreateImage
    .XShmDetach
    .XShmAttach
    .XShmGetEventBase
    .XShmPutImage
    .XShmQueryExtension
    
    これが X サーヴァのシェアードメモリを使うための拡張ライブラリです。シェアードメ 
    モリを使うか否かは適当に選択することができます。私自身はいつも使わないようにコ 
    ンパイルします。2x0などのローカルバスグラフィックアダプタをもったモデル以外で 
    は、シェアードメモリを使うことによる速度の向上はさほど大したものではありませ 
    ん。Mpeg_playのmakefileにある"DSH_MEM"をCFLAGSから外すだけでシェアードメモリ 
    不使用にできます。もしDSH_MEMをつけるならば、Xサーヴァ自体もシェアードメモリを使 
    用するようコンパイルすることが必要です。(その方法については 
    /usr/lpp/X11/samples/READMEを読んでください。)
    
    それからmpeg_playのvideo.cというファイルをコンパイルしているとコンパイラが最適 
    化のために必要なメモリが不足だという意味のワーニングを出します。メモリを「大き 
    く」するためには"qmaxmem=8000"といったオプションをcflagに追加すればよいでしょ 
    う。ただ私の経験ではこうして最適化をしてもほとんど速くはなりませんでした。
    
    
    目次へ
    5.00: サードパーティ製品
    
    [編者注:この節の記載事項は広告っぽくならないよう編集されています。
     記載されている価格は最新とは限りません。会社名は参考までに挙げたもの
     で、いかなる形でも保証するものではありません。]
    
    
    
    目次へ
    5.02: 固定ディスク/テープ/SCSI
    From: anonymous
    
    - - ほとんどの SCSI ディスクドライブが作動します。
      (Maxtor製品はIBMが再販しているし、Wren 6 と 7 は私自信でも
       テストしてみました)
      構成時には osdisk (other SCSI disk) を選択して下さい。
    
    - - Exabyte: 残念ながら IBM が販売するもののみ作動します。
      IBM製以外のテープドライブでも作動するものがあるでしょう。
      構成時には ostape (other SCSI tape) を選択して下さい。
    
    - - STK 3480 "Summit": マイクロコード Version 5.2b で作動します。
    
    
    From: bell@hops.larc.nasa.gov (John Bell)
                   
    概して、サードパーティのテープドライブは、そのテープドライブからブート
    しない限り RS/6000 できちんと作動します。それは、IBMのドライブには 
    '拡張テープマーク' というものがあるためで、ファイル間に置かれる
    標準のテープマークが8mmテープでは信頼性がないから、と IBM はその必要性
    を主張しています。この拡張テープマークはブート用テープを作る時に用いられ、
    RS/6000 がブートする時には IBMテープドライブを探し、拡張テープマークがないと
    ブートを拒否されます。
    
    
    From: jrogers@wang.com (John Rogers)
    
    非IBM SCSIテープドライブからのブートについて:
      (私自身では試していませんが、ある方からの情報提供)
    
    キーを Secure にして電源投入。
    LED が 200 になって 8mm テープが止まるのを待つ。
    キーを Service にする。
    
    
    From: amelcuk@gibbs.clarku.edu (Andrew Mel'cuk)
    
    IBM製DATは安く、作動します。
    もし、すべてのパッチ(U407435, U410140)を早々に入手していて、専用の
    "Media Recognition System" テープ (Maxell製, APS 800.443.4461 もしくは
    IBM #21F8758 で入手可能)も購入してあるならば、そのDATドライブを快適に使えます。
    ドライブの DIPスイッチを操作して、あらゆるグレードのDAT テープを使えるように
    することもできます(hardware service manualを読んで下さい)。
    
    他の DAT ドライブも作動します。Archive Python を試してみて(作動します)、
    Archive TurboDAT の拡張も実験しました。TurboDAT は高速な圧縮ユニットで、
    どのテープとも相性がよく、IBM 7206 のように多くのパッチを必要としません。
    AIX 3.2 の 'ost' ドライバでちゃんと動きます。
    
    
    From: pack@acd.ucar.edu (Daniel Packman)
    
    >>いくつかの非IBMブランドの Exabyte からブートできます。
    >>少なくとも TTI と Contemporary Cybernetics は
    >>IBM 純正品のエミュレーション化が済んでいます。
    
    モデル TTI CTS 8210 は早期の AIX 3.1 から 3.2 まで作動します。この 8210 は
    古く低密度ドライブです。新しい 8510 は2つの密度(2.2GB と 5GB)をサポートします。
    背面にある 12個の DIPスイッチで SCSI アドレスとエミュレーションモードを
    コントロールできます。これらのドライブには状態(eg, soft error rate, tape
    remaining,tape motion, etc.)を読み取れるランプがついてて便利です。
    
    
    
    目次へ
    5.03: メモリー
    
    Nordisk Computer Services (Portland 503-598-0111, Seattle 206-242-7777)から
    フライヤーを入手しました。サンプル価格は以下のとおりです:
    
          16 MB Upgrade Kit   $  990
          32 MB Upgrade Kit   $1,700
          64 MB Upgrade Kit   $3,300
    
    5xx モデルには 8つのメモリースロットがあり、3x0 には 2つ、3x5 には 1つしか
    ありません。5xx モデルではペアでメモリーを追加する必要があります。
    
    モデル 220, 230 および 250 では "PS/2" 用 SIMM メモリーが使えます。
    どれも 8つの SIMM ソケットを持っています。
    250 には 60ns かそれ以上のが必要ですが、220 と 230 には 70ns で
    だいじょうぶです。
    220 と 230 のメモリーは 64MB までに制限されますが、250 では 256MB まで可能です。
    
    
    
    目次へ
    5.04: その他
    From: anonymous
           
    IBM RISC System/6000 インターフェース製品
    
    National Instruments Corporation は IBM RISC System/6000 ワークステーション用
    のインターフェース製品を販売しています。これは 3つの製品からなり、それぞれ
    標準の VMEバス, VXバス および GPIB と RS/6000 との接続手段を提供します。
    詳細は National Instruments Corporation, 512-794-0100 or 1-800-433-3488 まで
    問い合わせて下さい。
    
    
    
    目次へ
    5.05: C++ コンパイラ
    
    C++コンパイラもいくつか使えます。
    Glockenspiel, Greenhills, IBM xlC (別個に売っている :), および GNU g++ の
    中から選べます。Glockenspiel は今は Computer Associates の一部かもしれません。
    Comeau Computing(718-945-0009) は Comeau C++ 3.0 をテンプレート付きで
    提供しています。 開発用のフル環境なら ObjectCenter C++ (以前の Saber C++)が
    あります。
    
    
    
    目次へ
    5.06: メモリー・リーク・ディテクタ
    
    IBM xlC には HeapView debugger と呼ばれる、C および C++ のコードの
    メモリー関連の障害をトレースできる製品がついて来ます。
    
    SENTINEL はメモリー・リークの検知はもちろん、メモリーアクセスのデバッグのための
    フル機能を備えています。
    info@vti.com (800) 296-3000 (703) 430-9247 に問い合わせて下さい。
    
    Insight from ParaSoft (818) 792-9941.
    comp.sources.* にポストされた debug_malloc もここにはあります。
    
    From: dad@adonis.az05.bull.com (Dave Dennerline)
      Purify from Pure software (408) 720-1600.
      TestCenter from Centerline (800) 669-2687.
    Purify と TestCenter は RS/6000 では使えません :(
    
    
    
    目次へ
    5.07: PPP
    
    PPP は AIX 3.2.x には含まれておらず(SLIPのみ)、anonymous ftp から入手可能な
    バージョンもありません。有償の AIX用PPP なら Morningstar (sales@morningstar.com
    or marketing@morningstar.com) (800)558-7872 から入手可能です。
    
    
    
    目次へ
    5.08: グラフィック・アダプタ
    
    Abstract Technologies Inc. (Austin TX, 512-441-4040, info@abstract.com)
    がハイパフォーマンスな RS/6000 用のグラフィック・アダプタを揃えています。
    1600x1200, 24-bit true-color, および 低価格の 1024x768 アダプタがあります。
    小売価格は US$1000-2000 です。
    
    
    目次へ
    6.00: その他
    
    
    目次へ
    6.01: e-mail を使ったサポートについて
    
    US におけるサポート: 
    
    INTERNETおよびUSENET上のユーザがAIXの問題を報告できる mail の窓口として
    AIXServ があります. AIXServ は無料です. AIXServ の使い方は mail の 
    Subject の行に package と書いて (mail -s package) 以下のアドレスまで送っ
    て下さい.
    
    	Internet:   aixbugs%aixserv@uunet.UU.NET
    	Usenet:     uunet.UU.NET!aixserv!aixbugs
                        aixbugs@austin.ibm.com     (transactions request)
                        services@austin.ibm.com    (administrivia)
                        aasc@austin.ibm.com        (test cases under 100KB)
    
    AIXServ を使ったサービスには次の3種類があります. 
    1. 新しい問題をレポートする.
    2. 既存の問題に関する情報を更新する
    3. 既存の問題に関するステータスを要求する.
    
    カナダ: BBS でのサポートがあるようです (from Gary Tomic). コンタクト先は
    cac.toronto.ibm.com (142.77.253.16) です.
    
    ドイツ:
    
    ESS (Extended Sofware Service) の契約をした方は e-mail によるサポートを
    受けることができます. Subject の行に help を書いて (mail -s help)
    aixcall@aixserv.mainz.ibm.de 宛に送って下さい. サービスの詳細については
    IBMの営業にきいて下さい.
    
    
    目次へ
    6.02: AIX に関する情報を得るFAX番号
    
    IBM のFAXサーバ (1-800-IBM-4FAX) にFAXを送ることでAIXに関する情
    報を得ることもできます. この番号に初めてFAXを送る方は上記の番号の後で
    3, 2 と順に押すことで RS6000 関係の情報をFAXで要求できます.
    
    以下が現状でのリストです.
    
    document number                       Title
    ---------------  -----------------------------------------------------
         1453        Recovering from LED 518 in AIX 3.2
         1457        Recovering from LED 552 in AIX 3.1 and 3.2
         1461        Alternative Problem Reporting Methods
         1470        Recovering from LED 223/229, 225/229, 233/235, 221/229, or 221
         1537        How to Get AIX Support
         1719        Performance Analyzer/6000
         1721        Recovering from LED 553 in AIX 3.1 and 3.2
         1746        Recovering from LED 551 in AIX 3.1 and 3.2
         1755        Recovering Volume Groups
         1802        Repairing File Systems with fsck in AIX 3.1 and 3.2
         1803        How to Take a System Dump
         1804        Setting Up a Modem With the RS/6000
         1845        Using iptrace to Track Remote Print Jobs
         1867        Clearing the Queuing System
         1895        Removing/Replacing a Fixed Disk
         1896        Tape Drive Densities and Special Files
         1897        Tips on mksysb for AIX 3.2
         1909        UUCP (BNU) Helpful Information
         1910        Synchronizing Disk Names
         1988        Recovering from LED 201 in AIX 3.1 and 3.2
         1989        Recovering from LED 727 in AIX 3.2
         1991        Recovering from LED c31 in AIX 3.1 and 3.2
         2079        AIX 3.2.4
         2121        AIX 3.2.4 Installation Tips
         2267        How to reduce /usr in AIX 3.2
         2443        Man pages for AIX 3.2
         2446        How to set up sar
         2447        How to reduce /tmp
         2448        Installing a 5 GB tape drive
         2462        Bosboot diskettes
         2465        How to remove ptfs from the ODM
    
    
    目次へ
    6.03: IBM のgopher, WWW, anonymous FTP (6/10/94 での状況)
    
    Ronald S. Woan  氏の情報です.
    
    aix.boulder.ibm.com		AIX のPTF に何する FIXDIST SERVER
    software.watson.ibm.com		rlogin に関するセキュリティFIX その他
    gopher.ibmlink.ibm.com		アナウンスおよび新聞発表
    www.austin.ibm.com		S/W, H/W, サービス, サポートに関する情報
    
    IBM 一般に関する情報 (製品発表, 新聞発表等) は WWW のhttp://www.ibm.com/
    から得られます.
    
    RS/6000, AIX に関する情報 (マーケット情報, 技術動向, POWER2 に関するオン
    ライン情報, APAR のデータベース検索, FAXサーバで得られる情報) はすべ
    て http://www.austin.ibm.com/ から得られます.
    
    
    目次へ
    6.04: RS232 接続に関するヒント
    
    graeme@ccu1.aukuni.ac.nz, sactoh0.SAC.CA.US!jak 氏の情報です.
    
    Q. RS232 を使ってターミナルをつなぎたいのですが, どう繋げばよいのですか?
    
    A. 1. Dsub 25 のコネクタの 2->3, 3->2 7->7 を繋ぎます. (クロス接続)
       2. コンピュータ側の 6, 20 (DSR, DTR) を繋ぎます. 
          6, 8, 20 (DSR, DCD, DTR) を繋ぐことが必要な場合もあります.
    
    1 (FG) はシールドされていることが望ましいです. (多くの場合 1, 7 は外され
    ていることが多いのですが...)
    
    diskette からブートした場合 (KEY は Services position) は 9600 BPS でつ
    ながります. SMIT での設定により, ボーレートその他を変更かのうです.
    (38400BPS も大丈夫)
    
    Q. RS232 を使ってプリンタをつなぎたいのですが, どう繋げばよいのですか?
    
    A. 1. Dsub 25 のコネクタの 2->3, 3->2 7->7 を繋ぎます. (クロス接続)
       2. コンピュータ側の 4, 5 (CTS, RTS) を繋ぎます. 
    
    
    目次へ
    6.05: RS/6000 関連の出版物
    
    現在以下の3つがあります.
    
    1. RS/Magazine
       P.O. Box 3272
       Lowell, MA 01853-9876
       e-mail: aknowles@expert.com (Anne Knowles, editor)
    
    2. AIXpert
       IBM Corporation
       Mail Stop 36
       472 Wheelers Farms Road
       Milford, CT 06460
       FAX: (203) 783-7669
    
    3. RiSc World
       P.O. Box 399
       Cedar Park, TX 78613
       FAX: (512) 331-3900
       Usenet: {cs.utexas.edu,execu,texbell}!pcinews!rsworld
    
    マニュアルはIBMから手に入れることができます.
    
    例
    SC23-2204-02  Problem Solving Guide
    SC23-2365-01  Performance Monitoring and Tuning Guide for AIX 3.2
    SA23-2629-07  Service Request Number Cross Reference, Ver 2.2
    SA23-2631-05  Diagnostic Programs: Operator Guide
    SA23-2632-05  Diagnostic Programs: Service Guide
    SA23-2643-01  Hardware Technical Reference: General Information
    SA23-2646-01  Hardware Technical Reference: Options and Devices
    
    
    
    目次へ
    6.06: 略語について
    
    APAR - authorized program analysis report
    BOS  - Basic Operating System
    DCR  - design change request
    LPP  - Licensed Program Product
    ODM  - Object Database Manager
    PRPQ - programming request for price quotation
    PTF  - Program Temporary Fix
    SMIT - System Management Interface Tool
    
    
    
    目次へ
    6.07: この FAQ の入手方法 (メールもしくはftp)
    
    このFAQ は news.answers にクロスポストされているので, このNGをアーカイブ
    しているサイトから手に入れることが可能です. 例えば rtfm.mit.edu の 
    pub/usenet/news.answers の下に "aix-faq/faq/part[1-3]" としてあります.
    
    
    
    目次へ
    6.08: この FAQ のハイパーテキスト版
    
    Michael D. Fischer  氏の情報です.
    
    彼が AIX FAQ を HTML に変換してしてくれていて, この URL は
    
    http://insti.physics.sunysb.edu/faq/index.html
    
    です.
    
    
    目次へ
    6.09: ツールに関して御意見がある方の送り先.
    
    AIX に附属あるいは必要と思われるツールに関する御意見, 御助言は 
    aix_tool_ideas@austin.ibm.com 宛にお送り下さい.
    
    
    目次へ
    6.10: comp.unix.aix のWWWで検索可能なアーカイブのリスト
    
    Michael Staats & Fred Hucht 氏の情報
    
    http://www.thp.Uni-Duisburg.DE:/cuaix/cuaix.html.
    
    
    目次へ
    7.00: 寄稿
    
        次にあげる方々にこのリストに寄稿して頂きました。匿名で寄稿
        したい方はお知らせください。しかしあなたが誰であるか私には
        教えてください。
        もしどなたか抜けているようでしたらお詫びします。
        みなさまありがとうございました。みなさまがたの情報無しでは
        決してこのようなものはできなかったでしょう。
    
    目次へ