2014/03/08 (Sat) 21:55
simhで動かしているUNIX V7にホストOSのLinuxからファイルを持っていきたいときに、いちいちテープイメージを作るのは面倒くさいので、今回はUUCPでファイルを転送できるようにしてみたいと思います。
UNIX V7の時代はまだTCP/IP自体が存在していなかったそうです。UUCPはTCP/IPによるインターネット接続が一般化する前に使われていた通信方法だそうで、UNIX V7にはデフォルトでUUCPを動かすために必要なプログラムが含まれています。私はUUCPの現役時代は雑誌記事で読んだ程度でほとんど知りません。今回はそれを試してみようと思います。
UUCPの時代は、電話回線経由でダイヤルアップによりコンピュータどうしを接続していたようです。
ただ、simhのPDP-11エミュレータではダイヤラーなどの自分から外部に接続しに行くためのデバイスがサポートされていません。そのため、今回はsimhのUNIX V7は着信専用とし、ホストOSのLinux側からUUCP Over TCP/IPで無理やりUNIX V7につなぎに行くようにしてみます。相手がエミューレーターだからできる技ですね。はっきり言って邪道ですが、まあ良しとします。
残念ながらUNIX V7どうしでのUUCP接続は発信用デバイスがないので断念しました。
着信専用といってもUNIX V7からLinuxにファイルを送ることができないわけではなく、Linuxから接続があった時にキューにたまっているファイルをUNIX V7からLinuxに送信することもできるようになっています。
まず、前提条件として、こちらの記事で書いた手順で外部からtelnetで接続できるようにしておく必要があります。
(DC11を使った場合はうまく通信できませんでした。DZ11を使う方法でのみ確認しています)
telnet接続できるようになったら以下の手順でUNIX V7側の着信設定を行います。
UUCP接続では、Linux側のuucicoというプログラムがUNIX V7に自動でtelnetで接続し、ユーザuucpでログインしてきます。このuucpユーザのシェルをやはりuucicoにすることでuucicoどうしで会話しながらファイルを送受信する、という形態になります。
UNIX V7にはデフォルトでユーザuucpが存在していますが少し手直しします。まず、ユーザuucpのパスワード設定を行います。
また、/etc/passwdにはデフォルトでシェルのパスとしてuucicoが設定されていますが、パスが実際と食い違っているので直します。
UUCPでは、送受信するファイルを一時的にためておくためのスプールディレクトリが必要になります。このスプールディレクトリのパスはハードコーディングされているため、その場所に作ります。アクセスするのはuucpユーザなのでオーナーの変更も行います。
なお、スプールディレクトリのパスを変更するためには/usr/src/cmd/uucp/uucp.hを修正してUUCP関連のプログラムをリビルドする必要があります。今回は面倒なのでやりません。
uucp関連の設定ファイルは/usr/lib/uucpにあります。ここのL.sysに以下の行を追加して、接続してくるLinuxホストの定義を行います。
一番左の"centos6"がリモートサイトの名前になります。
次のAnyはいつでも呼び出し可であることをあらわします。当時のUUCPはダイヤルアップ接続がメインであったため、電話代節約の観点で接続時間を限定する、ということがあったようです。今回は関係ないのでAnyにしています。
あとはtty00を使って9600ボーでやり取りする、という意味になるようです。さらに後ろのlogin~は、UNIX V7から別マシンに接続しに行くときに必要になる設定です。具体的には、loginという文字列を受け取ったらuucp送信し、assword:という文字列を受け取ったらuucpを送信する、という意味のようです。要するに相手に接続する際のログインシーケンスです。今回UNIX V7側は着信専用なので、L.sysにもとからある設定をそのままパクっています。
続いて/usr/lib/uucp/USERFILEを編集して、Linux側のユーザのアクセス権を設定します。このファイルに定義されているLinuxユーザだけがUNIX V7にファイルを送信できるようになります。ここにいう「Linuxユーザ」はuucpコマンドでUNIX V7にファイルを送信しようとするユーザを指します。とりあえずは以下の行を追加します。
とすると、リモートサイトcentos6のユーザuserが/配下のどこにでもアクセスできるということになります。userは実在のユーザで適宜読み替えてください。実際の運用ではこんな危ない設定はしないと思いますが、まあ、今回は試すだけなので良しとします。
ただし、処理するのはUNIX V7のuucpユーザなので、uucpユーザがアクセスできないところには読み書きできないはずです。
ここまで設定したら動作確認します。
UNIX V7にtelnetで接続し、ユーザuucpでログインします。このとき、LinuxのGNOMEやKDEの端末プログラムではなく、WindowsのTeratermなど、外部から接続するようにするのがベストです。(理由は後述します)。
この"Shere"が表示されたら、以下のようにタイプします。
(Ctrl+P)Scentos6(Ctrl+Space)
これは接続元のサイト名がcentos6であることを表します。これを入力して
ROKPg
と表示されれば通信ができています。これは接続が許可され、gプロトコルで通信を行います、という意味です。
ここで、LinuxのGNOMEやKDEだと、Ctrl+Spaceが日本語入力に割り当てられていることがあり、それだとうまく動作確認ができません。いちいち設定を変えるのも面倒ですので、外部から試すのがお手軽です。
最後に
(Ctrl+P)(Ctrl+H)(Ctrl+Space)
とタイプすると通信が切断されます。
いったんUNIX V7を終わらせて、起動ファイルを修正します。
7bを8bに変えることで通信中にトップビットがクリアされるのを抑止します。ただし、telnetで外部から接続しようとすると文字化けが起きるようになります。
長くなったのでここでいったん切ります。次はLinux側の設定について書きます。
[関連記事]
UNIX V7の時代はまだTCP/IP自体が存在していなかったそうです。UUCPはTCP/IPによるインターネット接続が一般化する前に使われていた通信方法だそうで、UNIX V7にはデフォルトでUUCPを動かすために必要なプログラムが含まれています。私はUUCPの現役時代は雑誌記事で読んだ程度でほとんど知りません。今回はそれを試してみようと思います。
UUCPの時代は、電話回線経由でダイヤルアップによりコンピュータどうしを接続していたようです。
ただ、simhのPDP-11エミュレータではダイヤラーなどの自分から外部に接続しに行くためのデバイスがサポートされていません。そのため、今回はsimhのUNIX V7は着信専用とし、ホストOSのLinux側からUUCP Over TCP/IPで無理やりUNIX V7につなぎに行くようにしてみます。相手がエミューレーターだからできる技ですね。はっきり言って邪道ですが、まあ良しとします。
残念ながらUNIX V7どうしでのUUCP接続は発信用デバイスがないので断念しました。
着信専用といってもUNIX V7からLinuxにファイルを送ることができないわけではなく、Linuxから接続があった時にキューにたまっているファイルをUNIX V7からLinuxに送信することもできるようになっています。
<UNIX V7側の設定>
まず、前提条件として、こちらの記事で書いた手順で外部からtelnetで接続できるようにしておく必要があります。
(DC11を使った場合はうまく通信できませんでした。DZ11を使う方法でのみ確認しています)
telnet接続できるようになったら以下の手順でUNIX V7側の着信設定を行います。
ユーザuucpの設定
UUCP接続では、Linux側のuucicoというプログラムがUNIX V7に自動でtelnetで接続し、ユーザuucpでログインしてきます。このuucpユーザのシェルをやはりuucicoにすることでuucicoどうしで会話しながらファイルを送受信する、という形態になります。
UNIX V7にはデフォルトでユーザuucpが存在していますが少し手直しします。まず、ユーザuucpのパスワード設定を行います。
# passwd uucp New password: ← 今回は!uucpとした Retype new password: #
また、/etc/passwdにはデフォルトでシェルのパスとしてuucicoが設定されていますが、パスが実際と食い違っているので直します。
# ed /etc/passwd 154 5 uucp:y/Rxa0fP2UtmA:4:4::/usr/lib/uucp:/usr/lib/uucico ← lib/の後にuucp/が必要 5s/uucico/uucp\/uucico/ 5 uucp:y/Rxa0fP2UtmA:4:4::/usr/lib/uucp:/usr/lib/uucp/uucico w 159 q #
スプールディレクトリの作成
UUCPでは、送受信するファイルを一時的にためておくためのスプールディレクトリが必要になります。このスプールディレクトリのパスはハードコーディングされているため、その場所に作ります。アクセスするのはuucpユーザなのでオーナーの変更も行います。
# mkdir /usr/spool/uucp # chown uucp /usr/spool/uucp
なお、スプールディレクトリのパスを変更するためには/usr/src/cmd/uucp/uucp.hを修正してUUCP関連のプログラムをリビルドする必要があります。今回は面倒なのでやりません。
リモートサイトの定義
uucp関連の設定ファイルは/usr/lib/uucpにあります。ここのL.sysに以下の行を追加して、接続してくるLinuxホストの定義を行います。
centos6 Any tty00 9600 tty00 login uucp assword: uucp
一番左の"centos6"がリモートサイトの名前になります。
次のAnyはいつでも呼び出し可であることをあらわします。当時のUUCPはダイヤルアップ接続がメインであったため、電話代節約の観点で接続時間を限定する、ということがあったようです。今回は関係ないのでAnyにしています。
あとはtty00を使って9600ボーでやり取りする、という意味になるようです。さらに後ろのlogin~は、UNIX V7から別マシンに接続しに行くときに必要になる設定です。具体的には、loginという文字列を受け取ったらuucp送信し、assword:という文字列を受け取ったらuucpを送信する、という意味のようです。要するに相手に接続する際のログインシーケンスです。今回UNIX V7側は着信専用なので、L.sysにもとからある設定をそのままパクっています。
リモートユーザのアクセス権定義
続いて/usr/lib/uucp/USERFILEを編集して、Linux側のユーザのアクセス権を設定します。このファイルに定義されているLinuxユーザだけがUNIX V7にファイルを送信できるようになります。ここにいう「Linuxユーザ」はuucpコマンドでUNIX V7にファイルを送信しようとするユーザを指します。とりあえずは以下の行を追加します。
user,centos6 /
とすると、リモートサイトcentos6のユーザuserが/配下のどこにでもアクセスできるということになります。userは実在のユーザで適宜読み替えてください。実際の運用ではこんな危ない設定はしないと思いますが、まあ、今回は試すだけなので良しとします。
ただし、処理するのはUNIX V7のuucpユーザなので、uucpユーザがアクセスできないところには読み書きできないはずです。
動作確認
ここまで設定したら動作確認します。
UNIX V7にtelnetで接続し、ユーザuucpでログインします。このとき、LinuxのGNOMEやKDEの端末プログラムではなく、WindowsのTeratermなど、外部から接続するようにするのがベストです。(理由は後述します)。
Connected to the PDP-11 simulator DZ device, line 0 login: uucp Password: ← uucpのパスワード。今回は!uucp Shere ←これが表示されるか確認する
この"Shere"が表示されたら、以下のようにタイプします。
(Ctrl+P)Scentos6(Ctrl+Space)
これは接続元のサイト名がcentos6であることを表します。これを入力して
ROKPg
と表示されれば通信ができています。これは接続が許可され、gプロトコルで通信を行います、という意味です。
ここで、LinuxのGNOMEやKDEだと、Ctrl+Spaceが日本語入力に割り当てられていることがあり、それだとうまく動作確認ができません。いちいち設定を変えるのも面倒ですので、外部から試すのがお手軽です。
最後に
(Ctrl+P)(Ctrl+H)(Ctrl+Space)
とタイプすると通信が切断されます。
simh起動ファイルの設定
いったんUNIX V7を終わらせて、起動ファイルを修正します。
set dz 8b lines=32 ← 7bを8bに変更
7bを8bに変えることで通信中にトップビットがクリアされるのを抑止します。ただし、telnetで外部から接続しようとすると文字化けが起きるようになります。
長くなったのでここでいったん切ります。次はLinux側の設定について書きます。
[関連記事]
- [simh-pdp11]UNIX V7からLinuxにメールを送ってみる
- [simh-pdp11]UNIX V7とLinuxでUUCP(2)
- [simh-pdp11]UNIX V7の日付まわりを修正する
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする part2
- [simh-pdp11]UNIX V7に外部からTELNETできるようにする
- [simh-pdp11] UNIX V7をテープイメージからインストールする
- [simh-pdp11] Version 7 Unixをインストールする
- simhをインストールしてみる
ランキングに参加してみました。クリックしていただければ嬉しいです。
にほんブログ村 |
パソコン ブログランキングへ |
PR
Comment
プロフィール
HN:
zui
性別:
非公開
カテゴリー
最新記事
(09/28)
(09/03)
(08/26)
(07/23)
(05/24)
PR
忍者カウンター