前のページ 次のページ 目次

5. マルチユーザと非インタラクティブなセッション

5.1 マルチユーザ環境で dosemu は使えるか? 

Corey Sweeney 氏(corey@amiganet.xnet.com)の報告です (93/12/8)。

複数のユーザが dosemu を走らせるようなシステムで dosemu を使う場合には ハードディスクイメージのディレクトリを変更したほうがいいかもしれません。 最初の設定では、/etc/dosemu.confの中で、ハードディスクイメー ジは単に "hdimage" と指定されています。もしこれを /var/lib/dosemu/hdimageというふうに変更しても、一般ユーザは dosemu がどのディレクトリで実行されているかどうか気にする必要はありま せん。また、hdimage は dosemu を次のパッチレベルにアップグレードしたと きに hdimage ファイルを移動する必要もありません。

マルチユーザ環境向けにこのような設定をする場合には、 /var/lib/dosemuの hdimage を dosemu の管理者以外に対してはリー ドオンリーにしておいたほうがいいでしょう。

新しい emufs.sys を使えば、パブリックなディレクトリとプライベートなディ レクトリ(サブディレクトリがそれぞれのユーザのホームディレクトリにある ようなもの)をうまく管理することもできます。

[ユーザは個人設定ファイル  /.dosrc(/etc/dosemu.confを同じフォーマットです)を作 り、それぞれ別の dos を動かすこともできます。

5.2 非インタラクティブに DOS コマンドを使うには?

I have been meaning to write an article on this for quite some time but have not gotten around to it. Here are some hints from others:

この章には長い時間を割いたのですが、なかなかうまくいきませんでした。 他の人からもらったヒントを以下に書きます。

Dan Newcombe 氏(newcombe@aa.csc.peachnet.edu)のレポート (94/1/27):

これは、エミュレータ自身を変更せずにコマンドライン(またはメニュー等)か ら DOS コマンドを走らせるためのアイデアです(試してませんが)。[DOS パーティションがすでに Linux からマウントされていることを仮定していま す。]

Wp60.exe というプログラムを "wp60 d:\doc\paper.txt" というパラメータで起動する場合を考えてみましょう。"dosrun wp60 d:\doc\paper.txt"などと実行することにします。 "dosrun" は 以下の作業をおこなう linux のシェルスクリプトです。 a)DOS パーティションからとってきた DOS の AUTOEXEC.BAT を編集 /変更/再生成する。b)単に dosemu を走らせる(たとえば "dos -C >/dev/null" など)。ステップa)では、通常 AUTOEXEC.BAT に 必要とされる設定(mouse.comなど)を行った後、その最後の行で"wp60 d:\doc\paper.txt"などとします。

dosemu 側では、あらかじめ CONFIG.SYS(hdimage の中のもの)を変 更します。具体的には 1)DOS パーティションを D: としてアクセ スできるようにし、 2)"COMSPEC=D:\"と設定して(手元に DOS のマニュアルがないので間違っているかもしれません)、 3)"shell=c:\command.com /p"を設定します。

これは、DOS エミュレータを起動するたびにそのセッション用の AUTOEXEC.BAT を再生成するという方法です。AUTOEXEC.BAT ファイルの最後の 行を起動したいプログラム名に書き換えることで、特定のプログラムを起動す るわけです。hdimage を変更することによって、エミュレータと DOS に対し て、本物の DOS パーティションの D: からブートするように指示するわけです。

[訳注:DOS 5.0 以下であればこの方法を使えます。DOS 6,7 については、 読み込むべき CONFIG.SYS,AUTOEXEC.BAT を DOS 側で変更する方法があるよう です。("COMSPEC=D:\"によって D:\CONFIG.SYS,D:\AUTOEXEC.BAT を使うように している? "shell=d:\command.com" の方がいいと思います)]

dosemu のブートアップに hdimage を使わず、直接 DOSファイルシステムを使っ ている場合にも、この方法はうまくいくはずです。この場合には上の hdimage に関する部分は必要ありません。

---------------------

Daniel T. Schwager 氏(danny@dragon.s.bawue.de)の報告 (94/7/2):

異なる dosemu.conf (と、異なる hd-boot-images, AUTOEXEC.BATファイル)を 使って dosemu を起動するには以下のようにします。

$ dos -F my_quicken_q_exe_dosemu.conf

---------------------

Dietmar Braun 氏(braun@math20.mathematik.uni-bielefeld.de) の報告(94/7/4):

dosemu のリダイレクト機能を使うと全く問題なしに動作します。環境変数を 使って、(DOS の)ドライブ文字を linux のパスにリダイレクトすることがで きるのです。

私は 次のシェルスクリプトを"DOS"という名前で使っています。

 mkdir /tmp/dos.$$
 DOSTMP=/tmp/dos.$$; export DOSTMP
そして次にくるのが、 "echo $* > $DOSTMP/startup.bat" なのですが、これをうまく動作させるの にはちょっとした工夫が必要です(実は、小さな C プログラムなどでは、'/' を '\' に置き換えたり、行末を DOS 形式の CR/LF に書き換 えたり、ファイルの最後に ˆZ を付け加えたりするものがあるから です)。そしてスタートアップファイルを生成して、このディレクトリの中に 必要なリンクを張り、そして dosemu をスタートします。hdimage の中の "AUTOEXEC.BAT" の中では、ドライブ C: をこのテンポラリディレク トリ($HOME$PWDへのリンクがある)にリ ダイレクトしておきます。

たとえば、8.3 形式に縮めたファイル名を見たいと思ったら、"DOS dir" とすればカレントディレクトリのファイルを見ることができます。 こうして、完全なマルチユーザー(私の場合、DOS パーティションは使ってい ません。また、Linux ファイルシステムへリダイレクトすることで、ユーザパー ミッションも保存されます)、マルチタスクの DOS(それぞれの dosemu セッショ ンは完全に独立しています)を手に入れることができます。私はこの方法で DOS のプリンタドライバをうまく使うことができました。printcap ファイル の df に DOS プログラムを指定することができるのです。これによって、DOS の実行ファイルを lpr のフィルタとして使うことができます。


前のページ 次のページ 目次