[付録] Apollo DOMAIN_OS の使い方2 1.入門 1-1. 基本コマンド 1-2. エディタの使い方 1-3. 個人環境の設定 2.基本操作 2-1. 基本ファイル操作 2-2. 特殊ファイル操作 2-3. DOMAIN Shell 3.ネットワ−クの操作 3-1. 基本コマンド 3-2. telnet 相当のコマンド 4.いろいろな操作 4-1. Apollo での tar の使い方 4-2. カ−トリッジテ−プの使い方 4-3. RS-232C の設定 5.プログラム開発 5-1. プログラム開発環境 5-2. ライブラリ 5-3. Cプログラム 6.いろいろ追加 ====================================================================== 1.入門 1-1. 基本コマンド * 日常使うコマンド $ ld << ただの dir と同じ。 $ ld do?* << dir do* と同じ。 $ ld do?*.txt << do??? 何とかの拡張子が txt のファイルをリスト。 $ cpf a b << ファイル a を b にコピ−する。 $ cpf a b -r << 強制的にコピ−する。 $ dlf a << ファイル a を消去する。del a と同じ。 $ dlf do?* << $ cpt A B << ディレクトリ A を B ディレクトリという名でコピ−する。 $ cpt A /usr/katou/B $ wd << 今いるカレントディレクトリを表示する。 $ wd .. << 1つ上のディレクトリに移る。 $ wd /usr/katou/B $ chn A?* BBB << ファイル名が文字化したのを変える A123文字化。 * 専用コマンドの作成 /usr/local/bin/dlb -------------------------------- |args "delete back file ( .bak )" |dlf ?*.bak |ld 1-2. エディタの使い方 * 基本操作 $ ld 出画面に出たファイル名をマウスの右ボタンをおすと、そのファイル が開く。通常 READ モ−ドで開くので、Shift+SaveEdit をおすと WRITE モ−ドになり、書込ができるようになる。Shift+SaveEdit は READ と WRITE を変更するキ−である。編集しているファイルが vpn.doc とすると、 このキ−を2回おすと、READ モ−ドになる時点で vpn.doc.bak とバック ファイルができる。もう1回のキ−でまた WRITE に戻る。 ファイルを閉じるには AbortExit をおす。編集を中止する場合は Shift+AbortExit をおす。 ファイルを開くには、ファイル名のところにカ−ソルをもってきて Shift+Read をしてもよい。 Ctrl+T でファイルの先頭へ。 Ctrl+B でファイルの末尾へ。 カ−ソルの移動はキ−ボ−ド左手にある矢印キ−を適当に押して 覚えること。1行削除は lineDel である。 * カット&ペ−スト InsMark してカ−ソルで範囲を決め CutCopy で、赤くなった範囲が 記憶される。UndoPaste を押すとカ−ソルのある位置にコピ−される。 範囲で消去するには InsMark し、カ−ソルを移動させ Shift+CutCopy で 赤くなった範囲が消去される。 * 日本語入力 Shift+F1 ロ−マ字、半角ASCII Shift+F2 半角ASCII、全角ASCII ロ−マ字で入力し、変換したい文字の最初にカ−ソルを移動し、 InsMark キ−をおし、矢印キ−で範囲を指定する。 赤くなった範囲が変換対象になる。Shift+F8 で最初変換する。 他の候補にしたいなら、それから Shift+F7 をおすと候補が順 に変わっていく。よければ Return を押して確定する。 Shift+F8 のあと、F6 を押すとカタカナに、F5 を押すとひらがなにかわる。 1-3. 個人環境の設定 * ノ−ドのスタ−トアップ /sys/dm/startup_login.1280color ----------------------------------------------- |fl kf16 << 漢字フォントを指定する。 |(0,500)dr;(799,955)cp /sys/dm/login_sh |cmdf /usr/apollo/japan/knj2/cmdf/kdm_kdf3.cmd << 日本語変換する機能。 |cmdf user_data/startup_dm.1280color /usr/apollo/japan/knj2/cmdf/kdm_kdf3.cmd ----------------------------------------------- |#beep -on << デフォルト。Shift+F1 を押すとピッピとなる。 |beep -off |cmdf /nihon_apollo/knj2/cmdf/f1s_state0 | | |kd f1c xc knj2_aw; | tdm;tl;xd junk;im -roman;es '@&@'読みがな: @'';im -ascii;es ' ';tl; | es 'aw ';tr;xp knj2_aw;tr;en | ke |kd f2c xc knj2_aw; | | ビ−プ音をなくすには、Command: beep -off でも一時的にできる。 * 辞書の作成 [ 共通辞書 ] OSインスト−ル時に作成済 /usr/apollo/japan/knj2/dict/knj2_rev2.0.dic ロッグインディレクトリ−に user_data というディレクトリ−を作成する。 旧バ−ジョンの辞書は、一度消して新しく作成すること。 [ ユ−ザ辞書の作成 ] 熟語(自立語)を登録する機能 $ eddict と入れて、~/user_data/kdmu_rev2.0.dic というユ−ザ辞書を作成する。 [ 学習辞書の作成 ] 最後に変換した漢字を記憶する機能 $ eddict と入れて、user_data/kdml.dic という学習辞書を作成する。 * ユ−ザ辞書の登録 1. 方法その1 CTRL+F1 キ−を押す。読みがな : こたえ 答 2. 方法その2 登録したい漢字をマ−クしたまま、CTRL+F1 キ−を押し、読みがなを入れる。 * ユ−ザのスタ−トアップ $ ld ~/user_data alarm_server.msg_mbx kdml.dic key_defs3 key_defs_8bit3 key_defs_8bit3f kkey_defs_8bit3 kkey_defs_8bit3f mns_keydef sh/ start startup_dm.1280color ~/user_data/startup_dm.1280color ------------------------------------------------------------- |cps /com/scrto 15 << 15分たったらディスプレイの表示を一時消す。 |fl kf16b << 個人環境の漢字フォントを指定する。 | |( 0,740)dr;( 620,990)cp /com/sh/ -f 'wd /usr/people/doc;ld' << 画面を出すよう |(630,740)dr;(1280,990)cp /com/sh/ -f 'wd /usr/people/dir;ld' にしている。 |(0,0)dr;(600,700)cp /com/sh/ -f -c 'progm' << プログラム名 progm を実行する。 ~/user_data/sh/startup ---------------------------------------- |eon |csr -a /usr/X11/bin /usr/bin << コマンドサ−チル−ルの追加。 |MANPATH := "/bsd4.3/usr/man" << マニュアル検索の追加。 |export MANPATH | |XENVIRONMENT := "./.Xdefaults" |export XENVIRONMENT | |PATH := ".:/bin" << カレントディレクトリを含める。 |export PATH | ↓Xのフォントを追加する場合。 |#/usr/X11/bin/xset +fp /usr/X11/lib/fonts/iso_8859.1/75dpi/ * トラブルシュ−ティング マウスの右ボタンでファイルをひらくのができなくなった場合。次のファイルをともかく 表示して、/usr/apollo/japan/knj2/cmdf/kdm_kdf3.cmd を実行すること。 /sys/dm/startup_login.1280color ----------------------------------------------- |cmdf /usr/apollo/japan/knj2/cmdf/kdm_kdf3.cmd --------------------------------------------------------- |Command: cmdf /usr/apollo/japan/knj2/cmdf/kdm_kdf3.cmd --------------------------------------------------------- 2.基本操作 2-1. 基本ファイル操作 * ファイル名の検索 $ fpat ?* -p doma?* -lm $ fpat ?*.txt -p [0-9]-[0-9]. -lm ファイルで 2-2. なんてのを探す * 漢字変換 $ sj2euc シフトJISをEUCに変換する $ khelp sj2euc $ sj2euc < otyaya.txt > otyaya.txt.euc * ファイルの中の文字列を一気に変更する $ chpat ?*.ppp -out =.new -p "./FIG" "fig" $ chpat tb1.C -out =.temp -p "Object" "OBJECT" $ ld tb1.C tb1.C.temp * カット&ペ−ストによる文字列の変換 Command: s/Q/A / ブランクを A の後に入れていることに注意。 * ファイル内の文字列の検索 Command: s/katou/ Ctrl+r で次の katou を検索する。 * ファイルの中の全ての大文字を小文字にかえる $ tlc A-Z a-z < oomoji.file > komoji.file 小文字を大文字にかえる場合は $ tlc A-Z a-z とする * ld の賢い使い方 $ ld -af 1990/05/31 1990/05/31 以降に使ったファイルをリストする * 英語のスペルチェック $ fserr file_name * ファイルの行数を数える $ flen file_name -l 122 program * ファイル内のテキストのサ−チ $ fpat ?* -p katou -lm -l カレント・ディレクトリの全てのファイルに対し、 katou というテキストがあるファイル名を表示する。 $ fpat .../?* -p FONT_VENDOR -lm カレントディレクトリ以下 * 入力の省略 $ cpf file.c /temp/= same cpf file.c /temp/file.c $ cpf file =.lst same cpf file file.lst * cpt コマンドその1 ディレクトリ mg と dir はあるものとする。92/06/19 の10時より後に作成または変更 されたファイルをコピ−する。 $ cpt mg dir -ms -af 92/06/19.10:00 $ cpt /nix/test/d1 /nix/test/d2 -ms -af 92/06/19.11:11 コピ−先のファイルの時刻はもとのファイルの時刻と変わってしまう。 時刻を一致させるには。これでもコピ−先の created 時刻は、コピ−された時刻になる。 $ cpt /nix/test/d1 /nix/test/d2 -ms -af 92/06/19.11:11 -pdt 注.cpt では -pdt オプションをつけても、modified と used の時刻しか一致しない。 * cpt コマンドその2 ディレクトリそのものと、中のファイルをパ−ミッションを維持してコピ−するやり方。 $ cpt test1 /usr/local/test1 -sacl。cpt はコピ−・トリ−でそのまんまの名前。 ネットワ−ク越しのコピ−でも簡単。 $ cpt test1 //node_abcd/usr/local/ttt //node_abcd は他の Apollo の名前。 UNIX のOSだとこうなる # ls -F test1/ # tar cBf - test1 | (cd /usr/local; tar xBpfv - ) # ls -F /usr/local カレントの test1 を、/usr/local ディレクトリにコ test1/ ピ−する例である。 xBpfvオプションの意味は。x はファイルの取り出し、p はパ−ミッションを元に戻す。f は引き数で "-" により標準入力を指定。v は実行の表示。B は tar のブロックの何たら。 * ld コマンド詳細 $ ld -d date/time date/time date/time created modified used name 92/06/19.10:33 92/06/19.10:34 92/06/19.10:56 p1 92/06/19.10:59 92/06/19.11:00 92/06/19.11:00 p2 created : ファイルが最初に作成された時刻、コピ−されて作成された時刻。 modified: ファイルが最後に変更された時刻。 used : ファイルを見る、コピ−するなどした最後の時刻 。 ファイル変更されると created の時刻が modified へ移り、変更時刻が created になる。 19:00 7 PM today today midnight today 82/1/1 midnight, January 1, 1982 82/03/23.10:00:01 10:00:01 AM on March 23, 1982 $ date -d -t 1992/07/03.15:52:42 $ cpt a1 a2 -ms -af 92/07/03.15:52:42 * fpat の使い方を追加 `2d/12/10 $ help patterns で正規表現の検索オプションの説明がでてくる。patterns --- regular expression syntax and usage の説明。% は Beginning of line, when at beginning of expression. Otherwise, matches %.。 $ fpat file1 -p %k?* -lm 行の先頭からの k のみ一致。 keiko file1 ------- |aiko |keiko |saiko |rumiko $ fpat file1 -p k?* -lm だと全部に一致してしまう。 2-2. 特殊ファイル操作 * オブジェクトタイプの設定 $ obty disk_data "disk_data" object type is unstruct $ obty disk_data uasc $ obty disk_data "disk_data" object type is uasc $ obty disk_data bitmap << これも使える。 * タイムスタンプを調べる $ wd /usr/apollo/bin $ ts /lib/gprlib Ver Name Time Stamp File Name -------------------------------------------------------------- c 1 gprlib 1990/06/18 21:24:23 JST (Mon) /lib/gprlib $ help dm keys 2-3. DOMAIN Shell * キ−セットによるコマンドの起動 /nee/com/lbp_start -------------------------------------------------------------------------------- |cps /sys/hardcopy/prsvr /usr/apollo/japan/knj2/hardcopy/configs/dplbp8_config | Command: kd f2 cmdf '/nee/com/lbp_start' ke これで、F2 キ−を押すとプリントサ−バが起動する。 [ 参考 ] Command: cpo /com/dlf kaba Command: cpo /com/dlf kaba >?/dev/null Command: cpo /com/dlf ?* -nq * キ−セット $ crp -on //node_99999 -cps xdmc cmdf std_keys.unix $ crp -on //node_99999 -cps xdmc cmdf std_keys.basic * スクリ−ンタイムアウトを設定する Command: cps /com/scrto 15 << デフォルトは15分。 * ハ−ドコピ−をとる $ cpscrx file_name $ prf file_name -plot * sleep_test -------------------- |#!/bin/sh |while true |do | /usr/bin/sleep 5 | echo "hellow" |done $ sleep_test hellow 5秒毎にでてくる。 hellow $ /bin/ps -ax PID TTY STAT TIME COMMAND 1 ? S < 0:13 [ init ] 2 ? R 128443:52 null | 2722 pad0007 S 0:00 /bin/sh sleep_test 2740 pad0007 S 0:00 /usr/bin/sleep 5 $ /bin/kill 2722 $ sleep_test & &はつけるとディスプレイに表示されない。 * cron $ ld /sys/node_data/cron Directory "/sys/node_data/cron": .proto README at at.deny atjobs cron.deny crontab crontabs queuedefs 分 時 日 月 週(1−7、1は月曜) /sys/node_data/cron/crontabs/root ------------------------------------- |#0 * * * * /bin/date > /dev/console 3.ネットワ−クの操作 どうも NFS というのは分からん。仕組みが頭に入っていかないのである。 Apollo の空気 みたいなネットワ−クにずっと浸ってきたので、拒絶反応なのかも知れない。 Apollo は 基本的に全部解放されていることになる。それがデフォルト。何にも設定なんかしない。た だネットワ−クの専用コネクタをト−クン・リングの口にぷっと差すだけという。 3-1. 基本コマンド $ lcnode -me << # who am i に相当。 The node ID of this node is ABCD. $ lcnode << Apollo ネットワ−クで稼働しているノ−ド。 The node ID of this node is ABCD. 3 other nodes responded. Node ID Boot time Current time Entry Directory 9FA01 1999/05/16 21:41:14 1999/05/18 14:46:10 //node_9fa01 5550a 1997/05/18 7:47:13 1997/05/18 14:41:34 //node_5550a ABCD 1999/05/16 21:33:09 1999/05/18 14:36:08 *** DISKLESS *** partner node: 9FA01 $ ld // << // は Apollo 特有のル−ト・ノ−ドという。 node_9FA01 node_5550a node_ABCD この状態でノ−ド 12345 を Apollo ネットワ−クに接続してみる。node_12345 と他のノ −ドからすぐ認識できるはずである。もし他のノ−ドから、 例えば $ ld //node_12345/ このようにやってアクセスできなければ、$ ctnode -update をやってみる。 これでもア クセスできなければ $ ld // で見て、 存在しないノ−ドがカタログされている可能性が ある。下記の uctnode をやるか dlf か dlt で消去する。 $ ctnode -update << ノ−ドを Apollo ネットワ−クに追加接続した時やること。 $ ld // ↓追加されている。 node_9FA01 node_5550a node_ABCD node_12345 $ uctnode node_12345 << ノ−ドを Apollo ネットワ−クから外す場合。カタログ情 報が変に残っているとおかしくなる場合がある。 3-2. telnet 相当のコマンド * 他のノ−ドにリモ−ト・ロッグインする $ crp -on //node_9999 -me または $ crp -on 9999 -me これで出来ない場合は -me を外してやってみる。 $ crp -on //node_9999 Connected to node 9999 "//node_9999" login: root Password: Welcome to Apollo Domain/OS SR10.4.0 $ これでも出来ない場合は、相手のノ−ドで次のようにやってみる。これは root でリモ− ト・ロッグインを許すようにするコマンドである。 $ /etc/lprotect -rmtroot all と 4.操作編 4-1. Apollo での tar の使い方 * フォ−マット Apollo のカ−トリッジは QIC-24 で、他のEWSにテ−プをロ−ドする時には、 このファ−マットを指定しなければならない。QIC-24 は多くのEWSに採用 されているフォ−マットである。使用できるカ−トリッジ・テ−プは、45 または 60 Mbytes のテ−プです。3M製品では次のタイプです。 DC300XL/P 450 feet 45 Mb DC600A 600 feet 60 Mb * アポロのカ−トリッジ・テ−プのセ−ブとロ−ド [test]---[test1]--- file1,file2 (例) |-[test2]--- file3,file4 |- doc ファイル $ /bin/csh % ls << ディレクトリを test に移動する doc test1 test2 % tar cvf /dev/rct8 doc test1 test2 << CT にセ−ブ。 a doc a test1/file1 a test1/file2 a test2/file3 a test2/file4 % tar tvf /dev/rct8 << CT のファイルをリストする。 rwxrwxrwx101/12 71 Sep 10 09:11 1990 doc rwxrwxrwx101/12 0 Sep 10 09:09 1990 test1/ rwxrwxrwx101/12 35461 Sep 10 09:09 1990 test1/file1 rwxrwxrwx101/12 15019 Sep 10 09:09 1990 test1/file2 rwxrwxrwx101/12 0 Sep 10 09:09 1990 test2/ rwxrwxrwx101/12 35461 Sep 10 09:09 1990 test2/file3 rwxrwxrwx101/12 15019 Sep 10 09:09 1990 test2/file4 % mkdir temp << CT から Apollo へロ−ド。 % cd temp % tar xvf /dev/rct8 x doc, 71 bytes, 1 tape blocks x test1/file1 x test1/file2 x test2/file3 x test2/file4 [temp]---[test1]--- file1,file2 << 同じファイル構造ができる。 |-[test2]--- file3,file4 |- doc ファイル % tar xvf /dev/rct8 test1 << test1 のファイルだけを差し換える。 * 解凍と tar をほぐした例 Directory "/domain_examples/CC_examples": TMLib.tar.Z apollo-examples att-examples codelibs-examples iv.tar.Z nihcl nihcl.tar.Z $ wd nihcl % uncompress < ../nihcl.tar.Z | tar xf - Tar: blocksize = 20 % ls nihcl-3.0/ 4-2. カ−トリッジテ−プの使い方 * 基本的な使い方 wbak ディスクからテ−プへ rbak テ−プからディスクへ。テ−プの内容をみる。 $ rbak -dev ct -reten << 最初に使う時。テ−プのしわを伸ばす。 $ rbak -dev ct -rewind << 巻き戻す時。ドライブの所にある小窓に緑色の ライトがついていたら巻戻すこと。 rbak でテ−プがエラ−で読めなかったりしたら、rbak -dev ct -reten を 何回かやってみること。読めるようになる場合がある。 * wbak $ wbak dir -dev ct -f 2 -l << ディレクトリ−単位でバックアップを取る。 -f 2 の2は、バックアップ・ファイルの番号と言う。 $ rbak -dev ct -f 2 -all -index << テ−プの内容を確認する。 $ wbak file -dev ct -f 2 << テ−プの2番に指定ファイルのみを入れる。 $ wbak dir1 dir2 -dev ct -f 1 -l << 複数のディレクトリをバックアップする。 $ wbak dir1 -dev ct -f 1 -l << wbak の他の機能。 $ wbak dir2 -dev ct -f end -l << dir1 は1番に、dir2 は2番に入る。 $ ld /nee data $ wbak data -dev ct -f 2 -l Label: Volume ID: Owner ID: (no owner specified) File number: 2 File section: 1 File ID: (no id specified) File written: 1990/04/03 10:59:10 JST Starting write: (file) "data/katou.c" written. (file) "data/kinosita.c" written. (file) "data/seguchi.c" written. : (dir) "data" written. * wbak の注意 $ wbak dir1 -dev ct -f 1 -l << 1番に入れる $ wbak dir2 -dev ct -f 2 -l << 2番に入れる $ wbak dir1 -dev ct -f 1 -l << dir1 のファイルを変更した。1番を入れ直す。 $ rbak -dev ct -f 2 -all -index << 2番はおかしくなっている。 ?(rbak) File #2, section #1 not found. $ rbak -dev ct -f 1 -all -index << 1番の方はだいじょうぶ。 特定のディレクトリ、ファイルをのぞいてバックアップする [dir1]----[baka]---file |-- file1 |-- file2 $ wbak -dev ct -f 1 dir1/[~b]?* -l << 頭が b 以外のファイルのみをバックアップする。 * rbak $ rbak -dev ct -f 2 data/katou.c << テ−プの中のファイルを一個ディスクに戻す。 $ rbak -dev ct -f 2 -all << 指定番号のファイルを全てディスクに戻す 命令を data の下のディレクトリで実行すると、ディスクには data/data/katou.c という様に入る。このため data より上の ディレクトリで実行しなければならない。 $ rbak -dev ct -f 1 -all -sacl << 元のアクルも維持する。 $ rbak -dev ct -f 1 -all -sacl -r -force -pdt 元のアクル、日付けも維持しディスクに戻す。関係ないディレクトリが ディスクにあれば消してしまう。 * Apollo の 1/4" カ−トリッジテ−プ Apollo のカ−トリッジテ−プのフォ−マットは QIC-24 である。 45 と 60 Mbytes のテ −プが使える。他のEWSにこのテ−プをロ−ドする時は、このファ−マットを指定する こと。QIC-24 は多くのEWSに採用されているフォ−マットである。 $ tar cvf /dev/rct8 dir1 dir2 デバイスの指定が異なることに注意。 $ tar tvf /dev/rct8 dir1 dir1 ディレクトリだけ見る。 $ rbak -dev ct -rewind Apollo 特有のコマンド。たるみを取る。 $ rbak -dev ct -reten Apollo 特有のコマンド。巻き直す。 * Sun の場合 Apollo でとったテ−プを Sun で読む。 # tar xvf /dev/rst24 SPARCstation の場合。 # tar xvf /dev/rst8 従来の Sun のマシンの場合。 # tar xvf 126 /dev/rst8 これでダメならブロック数を指定する。 4-3. RS-232C の設定 * 端末制御 /etc/ttys ------------------------------------------------------------- |# ttys - terminal initialization data |#device getty/program term on/off other flags comment |console "/etc/dm_or_spm" apollo on secure # use mkcon to redirect console output |display none apollo off secure # DM pad devices |tty01 none dumb off secure |tty02 none dumb off secure |tty03 none dumb off secure $ /bin/start_csh << tty ファイルを変更した場合は、このようにやるとすぐ有 $ /bin/kill -HUP 1 効になる。 $ /bin/kill -HUP 1 << root でないユ−ザがやると、受け付けない。その場でroot 1: Not owner でロッグインする。 $ login login: root Password: Welcome to Apollo Domain/OS SR10.4 $ /bin/kill -HUP 1 * いろいろな設定 $ tctl -line 2 -default -insync -sync -bpc 8 -stop 2 -parity even > 2番の回線を XON/XOFF プロトコルにする $ tctl -line 2 -default -rts_enable -cts_enable -dcd_enable > 2番の回線を RTS/CTS 制御のプロトコルにする $ tctl -default -speed 1200 > 1番の回線をデフォルト値に戻した後、スピ−ドを1200ボ−にする 注.XON/XOFF 制御よりも RTS/CTS 制御の方が信頼性が高い。 * プロッタ−を使うような場合の設定 $ tctl -tty 2 -rts_enable -cts_enable -bpc 7 -parity even $ tctl -tty 2 Status of TTY Line 02: Erase (character delete) character: 08 (hex) Kill (line delete) character: 15 (hex) End of file character: 04 (hex) Quit character: 03 (hex) Fault character: 1C (hex) Suspend character: 1A (hex) New line delay: 0 Speed: 9600 Raw: FALSE, Echo: TRUE, Cvt_NL: TRUE CvtRaw_NL: TRUE, Host_Sync: FALSE, Input_Sync: TRUE RTS: TRUE, DTR: TRUE, DCD: TRUE CTS: TRUE, Quit_Enable: TRUE, Fault_Enable: TRUE Susp_Enable: TRUE, DCD_Enable: FALSE, CTS_enable: TRUE BP_Enable: FALSE, RTS_Enable: TRUE Seven bits per character, Parity: Even, One stop bit Errors enabled: NONE Polite: FALSE, Wait for DCD: TRUE, * emt を使う $ tctl -default -speed 1200 $ emt emt > line 1 << function 1 キ−を押して、リモ−トモ−ドにする。 at~&t << 電話のテスト。 atn? << モデムの設定状態の表示。 atdp0177 << 天気予報を聞く。0 は外線。 $ emt << Trail Blazer での設定. emt> EMT remote mode... F1 to exit. atn? << レジスタの状態を表示している。 E1 F1 M1 Q0 P V1 W0 X1 Y0 &P0 &T4 Version GD2.00 S00=001 S01=000 S02=043 S03=013 S04=010 S05=008 S06=003 OK at &f s51=254 s52=2 << レジスタの値を変更する。 OK at &w << 不揮発性 RAM に登録する。 4-4. NFS設定のため edrgy の操作 * person_id( user_id ) と group_id を -2 にする方法 $ wd /sys/node_data/tmp $ crd etc $ wd etc;ld group passwd << これらのダミ−・ファイルを先ず作る。 group -------------- |nobody::-2: passwd ---------------------------------------------- |nobody::-2:-2:nobody for NFS dummy account:/ $ /etc/import_passwd -f -v -s /tmp/etc Preparing registry... Preparing foreign files... Creating Group entries from foreign group file... nobody::4294967294: >> Adding pgo entry for: nobody 4294967294 Creating Person entries and Accounts from foreign passwd file... nobody::4294967294:4294967294:nobody for NFS dummy account:/ >> Adding pgo entry for: nobody 4294967294 >> Adding account for nobody.nobody.none . Adding memberships from foreign group file... nobody::4294967294: 0 name conflicts, 0 UNIX id conflicts, 0 unnamed groups, 0 errors, 0 warnings. Import operation successful. Update registry [y/n]? y Closing registry... Closing foreign files... Done. 5.プログラム開発編 5-1. プログラム開発環境 * OSと Motif とC++のバ−ジョンに注意 SR10.4(X Window 11.4) と Motif1.1 と UEDK1.1.3 と C++2.1 の組合わせが有効。 SR10.4(X Window 11.5) と Motif1.2 と UEDK2.0 と C++2.1 の組合わせが有効。 * Xのフォントの扱い $ xset +fp /usr/X11/lib/fonts/misc/ << フォントパスを登録する。 $ xset -fp /usr/X11/lib/fonts/misc/ << フォントパスを削除する。 $ xset fp default << フォントパスをデフォルトに戻す。 $ xset fp rehash << フォントパスを登録、削除した場合はこの コマンドをやるように推奨されている。 * Motif ウィンドウ・マネ−ジャの起動 $ /bin/start_csh % /usr/X11/bin/xterm & << 左上に白黒のウィンドウが出来る。 % /usr/X11/bin/mwm & << 白黒のウィンドウから mwm を起動する。 * Xウィンドウの起動 $ wd /sys/node_data/etc/daemons $ crf Xapollo $ ld Xapollo llbd tcpd << tcpd も必要。 * アポロの Aegis 環境下の設定 ~/user_data/sh/startup ------------------------- |eon |csr -a /usr/X11/bin /usr/bin |MANPATH := "/usr/X11/man" |export MANPATH | |XENVIRONMENT := "./.Xdefaults" << カレントディレクトリの .Xdefaults を見る |export XENVIRONMENT ようにする。 $ man XtCreateApplicationContext << マニュアルを見る。 たとえば m4 は /sys5.3/usr/bin/m4 と /bsd4.3/usr/bin/m4 がある。 % setenv SYSTYPE bsd4.3 とやると setenv の PATH の中の /usr/bin のリンク先が /bsd4.3/usr/bin となる。これで /bsd4.3/usr/bin/m4 が使われることになる。同様インクル−ドファイルで bsd4.3 の場合 たとえば /sys5.3/usr/include/dirent.h これはコンパイル時に 認識されない。これまで dirent.h が見つかりませんとコンパイルエラ− がおきたようなのは、% setenv SYSTYPE sys5.3 でOKだったかも知れない。 5-2. ライブラリ las コマンド inlib コマンド /etc/sys.conf ファイル $ las VA Range Obj Start Pathname 40000 - 7FFFF 0 /usr/apollo/bin/las 80000 - BFFFF 0 75200000 - 7523FFFF 0 -- temporary file -- 75240000 - 7527FFFF 0 /sys/node_data/systmp/dm_mbx 75280000 - 752BFFFF FFFC0000 752C0000 - 752FFFFF FFFC0000 75300000 - 7537FFFF FFF80000 75380000 - 753BFFFF 0 /sys/node_data/systmp/stack_guard_file 753C0000 - 753FFFFF 0 76000000 - 7607FFFF 0 /sys/node_data/systmp/global_readonly 76080000 - 760BFFFF 0 /lib/pmlib 以下 /lib/streams, trait_type_lib, swtlib, kslib, ftnlib, syslib.881, clib 762C0000 - 7633FFFF 80000 /sys/node_data/systmp/global_readonly 76340000 - 7637FFFF 0 /lib/libc 以下 /lib/ddslib, rgylib, dds2lib, awslib, gprlib shlib, dblib, pbulib, tfp, rpclib 76680000 - 766BFFFF 0 /sys/mgrs/global/tcp 766C0000 - 766FFFFF 0 /sys/vstreams/vstreams 76700000 - 7673FFFF 0 /sys/vstreams/modules/log 76740000 - 7677FFFF 0 /sys/vstreams/modules/ti 76780000 - 767BFFFF 0 /sys/vstreams/modules/tracem 767C0000 - 767FFFFF 100000 /sys/node_data/systmp/global_readonly 76840000 - 7687FFFF 0 /sys/node_data/systmp/global_rws 76880000 - 768BFFFF 0 /sys/node_data/ipc_data 77FC0000 - 77FFFFFF 0 -- temporary file -- 11520 KB mapped. 5-3. Cプログラム * Cプログラムのチェック UNIXの LINT コマンドを使って、Cプログラムのバグを探す。 通常のCコンパイラでは、見つけれないバグが LINT で検出できる。 [ 正しいプログラムの場合 ] ------------------------------- |1 main() |2 { int i ; |3 baka( &i ) ; |4 printf( "baka = %d\n",i ) ; |5 } |6 |7 baka(i) |8 int *i; |9 { *i = 10; } $ /usr/bin/lint p.c p.c: $ cc p No errors, no warnings, 3 info msgs, C compiler 68K Rev 6.8(168) $ p.bin baka = 10 [ おかしいプログラムの場合 ] |7 baka(i) |8 int i; |9 { i = 10; } $ /usr/bin/lint p.c p.c: p.c(9): warning: i set but not used in function baka baka, arg. 1 used inconsistently p.c(9) :: p.c(3) $ cc p 一応ワ−ニングが出るが、オブジェクトはできてしまう。 Line 9: [Warning #202] Value assigned to i is never used; assignment eliminated by optimizer. No errors, 1 warning, 3 info msgs, C compiler 68K Rev 6.8(168) $ p.bin baka = 1979719088 6.いろいろ追加 * vt100 の使い方 $ vt100 $ login で root ロッグイン $ wd /etc $ /usr/ucb/vi inetd.conf $ /bin/ps -ax $ /etc/inetd & CTRL+Z で vt100 モ−ドから抜ける /etc/inetd.conf ------------------------- | | |#tftp dgram udp wait tftp /etc/tftpd tftpd /usr/lib/X11 | | * rsync も rsync-2.4.8 なら何とかコンパイルできるかも $ /bin/start_csh $# setenv SYSTYPE bsd4.3 $# cd rsync-2.4.8 $# ./configure creating cache ./config.cache checking host system type... m68k-apollo-bsd4.3 checking target system type... m68k-apollo-bsd4.3 checking build system type... m68k-apollo-bsd4.3 checking config.cache system type... same checking for getconf... 0 checking for gcc... no checking for cc... cc | Makefile ---------------------------------------------- | | |#$(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@ |$(CC) -I. -I$(srcdir) $(CFLAGS) -c $< $@ | | できた Makefile を一箇所修正する。これで $#make をやれば、概ねコンパイルは通るが、 util.c の中の flock が見つからないということでエラ−で終わってしまう。ひょっとす るとC++のコンパイラを使えば通るかも知れない。 $# cc -I. -I. -O -c util.c util.o (0497) struct flock lock; * Apollo コンピュ−タの2000年問題は? OS本体としては問題ないということだが、本当かや。一度日付けを設定して試してみよ う。98年中に対応パッチを出すということだったが、結局何もヒュ−レットパッカ−ド からは出てこなかった。HPのWWWサイトにも Apollo については、何も書かれてない に等しい。多分 SR10.4.0 ならまあ大丈夫。できれば SR10.4.1 にした方がいいという感 じである。SR10.4.0 だと TCP パケットと経路制御がちょっとおかしいような気がするが。 いや 10.4.1 でもおかしかったです。OS最終バ−ジョン 10.4.2 はどうかな−。 99年9月に日本ヒュ−レット・パッカ−ドから2000年対応パッチの CD-ROM が4牧 送られてきました。しかし HP-UX のものだけ。 もう Apollo なんてのはHPにとっては ゴミみたいな存在でしかない。送られてきたパンフに数行、Domain/OS への対応が書いて ありました。それによると SR10.3.5.15 or SR10.4.1.2 にパッチを当てること。 パッチ は http://us-support.external.hp.com/ にあるとのこと。ただしパッチをとるにはユ− ザ登録をすること。なんや一杯記入せないかん。電話番号は国番号から書くのだと。さて 何番?。他参考サイト、www.hp.com/go/vitagesw, www.jph.hp.com/go.y2000 など。 ================================================= * いろいろ 425t の電池は BR2325 がはいっていた。別に5Vならなんでもいい。はまるかどうか。 $ prf p.doc -left 1 -headers off * 4GB ディスク SCSI ID=3 で SR10.4 と SR10.4.1 を入れた。 SCSI ID=4 にして、 サ−ビスモ−ドで >EX CALENDAR やったらエラ−になった。 Unable to read disk parameters from pv lable - error status = 80024 ノ−マルモ−ドにして起動したら 何かディスクがおかしい Domain/OS kernel(11), revision 10.4, February 26, 1992 2:49:28 pm Crash_Status 00080024 PC 7A462AB6 pid 001 FAULT: TRAP #F PC 7A462AB6 SR 2700 (MAPPED) 7A462AB6: TRAP #F ># SCSI ID=3 で2番目ディスクとしては1番目からマウントはできる。 >EX INVOL で 7 -f とやったら、このエラ−はでなくなった。 * ディスクは完全にだめになっている SCSI ID=4 にOS。 SCSI ID=3 に4GBのディスクをつけてマシン起動。 起動してくる黒の画面の時に NODE 4910B SELF TEST FAILED -- Failer List -- SCSI Device ID 3 SYSTEM HARDWARE FAILUERS LISTED ABOVE WERE DETECTED BY SELF TEST Do you wish to continue with the system BOOT process (y,n)?#n MD11 REV 3.0 1991/03/25.17:03:08 n をいれて終わりにする。 BOOTROM Rev. 3.0 11 APR 91 ># ----------------------------------------------------------------------- いやいやこういう場合でも >EX INVOL で 7 -f をやってみること。これで ディスクの内容が真っ白になるということはない。 ----------------------------------------------------------------------- * /sys/node_data/tmp ディレクトリ $ ld /tmp -ll Directory "/sys/node_data/tmp": $ ld /tmp Directory "/sys/node_data/tmp": .X11-unix lips_filter.config nfsGlobalData nfs_data print.u rpcdep.dat rpcdllb.dat * レジストリのこと /etc/daemons/llbd, glbd, rgyd がないときに root でロッグインできる。 ロ−カルレジストリを使うとはでない。 $ /etc/edrgy -l root だけでるだけ edrgy=> v root[.staff.none]:w0UuY0sQV7sAI:0:10::/:: edrgy=> $ /etc/edrgy ?(edrgy) Unable to open registry. -Registry server unavailable (RGYC/Server) * 425T は /sau11 を使う $ kbs_patch /sau11/domain_os ともかく今、動いているマシンのディスク、4GB以下のだが。 これに $ kbs_patch /sau11/domain_os とやって、パッチをあてる。 これで /sau11 内の invol コマンドなどが、対応する。 /sau11 を一応、他のディレクトリにコピ−して退避しておいた 方がいいだろう。 /sau11/invol と /com/invol との違いはどうなる。 ファイルのサイズが全然違う。/com/invol は /sau11/invol など を呼び出す役割をしているだけでないのか。 /com/invol は /etc/invol にリンクされている。 * kbs_patch $ /bin/make /com/cc kbs_patch -ndb -opt 4 -info No errors, no warnings, no info msgs, C compiler 68K Rev 6.8(168) /com/bind kbs_patch.bin -b kbs_patch All Globals are resolved. $ ld -a sys type blocks current type uid used length attr rights name file coff 8 5522 P prwx- kbs_patch file coff 8 5513 P prwx- kbs_patch.bin file unstruct 12 9799 P prwx- kbs_patch.c file unstruct 4 130 P prwx- makefile file unstruct 12 11328 P prwx- notes $ kbs_patch kbs_patch, version 1.4, built May 9 2008 at 10:31:48. kbs_patch - Patch kernel to support big SCSI drives Usage: kbs_patch [1024 | 4096] Examples: kbs_patch /sau14/domain_os kbs_patch 1024 /sau7/domain_os Description: The Domain/OS kernel selected by will be patched to support big SCSI drives. This changes the code that calculates the number of blocks that the drive contains. The pagesize argument is optional, and will default to the pagesize of the machine running the command. The argument must be the last one on the command line. Only one file may be patched at a time. Note that the patch that this program uses will not work on devices that have a block size that is not a multiple of 256 bytes. See source code for technical details. Disclaimer: No warranty for this program or its result are expressed or implied. The author assumes no liability for data loss or any other damage caused by the use of this program. * 425t の PROM マザ−ボ−ドにある。モニタのボ−ドを抜き取るとみえる。 専用の抜く道具があるといいが。なくてもヘア−ピンの先をまげて、 くいと角のところからぬけばいい。PROM には足がないので、折れたり する心配はない。PROM をさす位置は自動的に決まっている。 * 外付けディスクを別なマシンようのディスクを作成する。 10.4.0 をインスト−ルして、chuvol をする。 そのディスクを別なマシンにつけて起動する。 KDM をいれようとすると /install/tools/install++ ... でオ−ソライズエリアがないとでてしまう。 同じマシンのディスクとしてなら、ちゃんとインスト−ルできる。 この作り方はだめなのか。 wd コマンドもちょっとへんだし。 $ wd / とやって $ wd とやっても //node_aaa とでてこない。 ちゃんとネットワ−クインスト−ルをしないとだめか。 chuvol はやめたほうがいいのか。そんなことはない。 理由が分かった。 chuvol して node_bbb に ------------- --------- -------------- | | | B |--- | | | | --------- | | | | | --------- | | | -------- | node_aaa |---| A |--- | node_bbb |---| B | ------------- --------- -------------- -------- マシン1 マシン2 マシン node_bbb で $ ld // とやると node_aaa が出る。node_bbb をマシン2 は認識していないのが問題である。 マシン2で $ ctnode node_bbb bbbb とやると $ ld // ででてくる。 $ uctnode node_aaa もやって node_aaa の登録を抹消する。 ハ−ドディスクBもつないで電源をいれてマシンを起動すること。 電源をいれておかないと、scsi_info で SCSI ID=3 として認識は するが /com/invol で w3:0 とやったさいに認識しない。 * 10.4 いれて、10.4.1 いれて 3ばんのまま起動した。user.none.none だめ root で入った。 /com/chuvol やった、1時間ぐらいかかった。 * AAAAA に外付け3番ディスクをつけて volume 1 と 2 で all にした。 $ lvolfs # free # total % free node id entry directory 1420712 2086016 68 AAAAA / 3182528 4190112 76 AAAAA /disk2 ------------------------------- 4603240 6276128 73.35% 2 volumes. $ /com/invol Note that the maximum allowable logical volume size is roughly 4194304 kB 4194304 がこのディスクの全体の容量 $ mtvol w3:0 2 /disk3 << /disk3 というディレクトリはあらかじめ つくらなくてもいい。 $ lvolfs # free # total % free node id entry directory 1420712 2086016 68 AAAAA / 3182528 4190112 76 AAAAA /disk2 239376 240076 100 AAAAA /disk3 ------------------------------- 4842616 6516204 74.32% 3 volumes. $ dmtvol w3:0 2 /disk3 $ dmtvol w3:0 1 /disk2 おわったあともディレクトリはあるまま。 $ lvolfs # free # total % free node id entry directory 1420712 2086016 68 AAAAA / $ mtvol w3:0 2 /disk3 $ ld /disk3 ここにファイルは普通にコピ−できる。 lost+found.list sys $ dmtvol w3:0 /disk2 これらは同じこと 1 がデフォルトでとられる。 $ dmtvol w3:0 1 /disk2 ● Apollo のディスクレス機 '2c/11/e 最初から root ログインしないと Apollo のエディタではファイルの編集の権利がなくて できない。katou でログインしていて、途中で root ログインしてもだめ。 途中で root ログインして、vi でなら編集できる。 10年以上、倉庫においていた Apollo 425t。電源ボタンを押して、しばらくフロントの ランプがアクセスの点滅をしていたが1分ぐらいで全部きえた。メモリを抜き差ししたら、 起動してきた。モニタとキ−ボ−ドをつけてログインできたし、シャットダウンもできた。 何ちゅうタフなマシンだ。 /sys/net/diskless_list -------------------------------------------------------------------------- |# This is the diskless list for the network server on node ____ . |# |# The first token in each line of this file is examined by NETMAN |# when it receives a network bootstrap volunteer request. If the |# token is a valid node ID, then NETMAN will volunteer to help |# that node when it calls. Lines that do not begin with a valid |# node ID will be ignored. The use of the comment line |# character "#" is recommended. |# |# The nodes that this file authorizes NETMAN to volunteer help for are: |# |4910a |53f80 $ $ login login: root Password: Using local registry. Can't use network registry: - Registry server unavailable (from RGYC / Server) $ /bin/csh # pwd //node_50e06 << ディスクのある親機。 # cd /sys/net # /usr/ucb/vi PPP << vi エディタの練習を適当なファイルを作って操作してみた。 # ls PPP netmain_srvr netman.rc diskless_list netman sample_diskless_list diskless_list.bak netman.bin_sh netboot netman.com_sh # *** EOF *** << C-Shell を抜けた。 $ /usr/ucb/vi PPP << C-Shell に入らなくても、これでも構わない。 $ lusr root.staff.none.4910A //node_50e06