dosemu の全ての機能(例えばポートへのアクセス)を使うためには、root に suid する必要があります。ほとんどの DOS プログラムではこれは必要あ りませんので、X 上で dosemu を実行しているときには dosemu を root で実 行する必要は普通はありません。 dosemu は必要な時だけ "root" に setuid した状態で動作し、それが終わる とすぐに権限を手放します。しかし DMPI を使う時には、DOS クライアントプ ログラムはユーザ空間全体にアクセスできるので、dosemu のコードそのもの を変更することもできます。これを無効にするには /etc/dosemu.conf の 'secure' オプションを使ってください。README.txt ファイルのセキュリティ の章では、セキュリティで考えるべき重要事項が他にもいくつか説明されてい ます。
この現象は、DPMI を禁止している時に DPMI を使うプログラムを実行した時 に起こります。/etc/dosemu.conf ファイルの
$_dpmi = (off)という行を
$_dpmi = (nnnn)に変えてみてください。 ここで nnnn は DOS プログラムに割り当てるメモリの量(キロバイト単位)で す(例えば Doom は約 4000 キロバイトを必要とします)。これを設定した場合、 dos を root で実行してはなりません(「セキュリティ関連」の章をご覧くだ さい)。いずれにせよ、dosemu はできるかぎり root では実行しない方が良い でしょう。
その他によくある原因は、実行したプログラムが VCPI(詳しくは EMUfailure.txt を見てください)、またはプロテクトモードへの切替えを行う (DPMI 以外の)方法を使っている場合です。このような場合、プログラムは dosemu 上では動作しません。
これらのいずれでもない場合、1.14 節を参照してください。実行に失敗す るけれど EMUfailure.txt にリストされていないプログラムということになり ます。
dosemu は hdimage と command.com を含むものとして割り当てるドライブ で DOS のバージョンが同じであるものと信じます。これが同じでない場合に は、dosemu は遅かれ速かれクラッシュしてしまいます。 デュアルブートオプションを使っていて、"Starting Win95"の文字が出ている ときに F4, F5, F8 キーを押すと、Windows95 のドライブ側のバージョンが変 わるかもしれません。command.com には特に注意してください。config.emu のシェル変数が正しい静的バージョンの command.com を指すようにします。 例えば、"shell=c:\win95\command.com c:\ /P /E:1024"のよ うになります(97/02/28)。
他のコンソールに切替えて dosdebug を実行し、"kill" と入力してください (少し時間はかかることもありますが、結果的には動作します)。
Daniel Barlow さん(jo95004@sable.ox.ac.uk)の報告(95/4/8):
もし、ログインできる端末やネットワーク接続が無いなら、リセットボタンを
押さなければならないかもしれません。何とかシェルを起動できるなら、
"kbd_mode -a
" を実行してキーボードをrawモードから切り替えるか、
コンソールで "stty sane
" を実行して、入力した文字が表示されるよう
にしてください。
dosemu をシェルスクリプトから起動し、dosemu の後に自動的に
"kbd_mode -a
" を実行させるのも有効な方法です。dosemu がクラッシュ
してもスクリプトは走り続け、"kbd_mode -a
" を実行されるというわけ
です。
Rob Janssen さん(rob@pe1chl.ampr.org)の報告(94/7/11):
dosemu と一緒に配布されている ems.sys を config.sys の中で組込むことを 忘れないでください。
(94/8/11)
klogd
を手に入れて、インストールしてください。
klogd
は以下の URL で入手できます。
sunsite.unc.edu:/pub/Linux/system/Daemons/sysklogd1.2.tgz
Aldy Hernandez さん(aldy@sauron.cc.andrews.edu)の報告 (94/7/8):
ビデオか BIOS (あるいはその両方)のキャッシングを無効にしてください。
JyiJiin Luo さん(jjluo@casbah.acns.nwu.edu)の報告(94/4/19):
私も以前に同じ問題に出会いました。AMI BIOS によるビデオメモリ領域のシャ ドウ化は全て無効にしないといけないようです。私のマシンではこれでうまく 行っています。
dosemu.conf
ファイル内の HogThreshold
変数の値を変更する
とうまくいくことがあります。
Daniel Barlow さん(jo95004@sable.ox.ac.uk) の報告(95/4/8):
HogThreshold の値は、起動時に表示される BogoMips 値の大体半分に設定す るのがいいでしょう。
Vinod G Kulkarni さん(vinod@cse.iitb.ernet.in)の報告 (94/4/7):
CD-ROM が Linux 上でマウントされていて、なおかつ dosemu から(割り当 てられたドライブとして) アクセスされた場合には、何らかの問題が起こるか もしれません。まず、カーネル内の CD-ROM ドライバ(ISO9660)がファイルの 種類(テキストかバイナリか等)を識別しようとします。もし、これができなけ れば、ヒューリスティックを使ってファイルの種類を推測しようとします。ファ イルのほとんどの部分はテキストファイルでもバイナリとして扱われるべきで ある場合、この推測が失敗することがあります。(これが果してバグなのか、 それとも機能と呼ぶべきなのかは微妙なところです。)
この結果、もし、このようなファイルを CD-ROM からコピーしようとした場合
(必ずしもdosemu 内だけでなく、Linux 内でも)、オリジナルよりファイルサイ
ズが大きくなります(^M
や ^J
の前にスペースが入ります)。この
ため、dosemu 内のプログラムがエラーを出したりハングしたりします。これ
が dosemu の問題と誤解される事もあるでしょう。
Rob Janssen さん(pe1chl@rabo.nl) の報告(94/8/10):
これを解決するには、この変換を止めてしまえばいいのです。 CD-ROM をマウントする時に、"-o conv=binary" オプションを付け るか、/etc/fstab に次の行を追加します。
/dev/cdrom /cdrom iso9660 conv=binary,roカーネルにパッチを当てる必要はありません。
Daniel Barlow さん(jo95004@sable.ox.ac.uk)の報告(95/4/8):
dosemu 0.60 では、デバッグ出力はコマンドラインで指定したファイルに書き 込まれます。/tmp/debug に全てのデバッグ情報を書き出すには、コ マンド "dos -D+a -o /tmp/debug" を使います。標準エラー出力を リダイレクトする必要は、もう無いはずです。
Nick Holloway さん(alfie@dcs.warwick.ac.uk) の報告(94/2/22):
stty の設定をいじってから dos を起動すると、入力文字が 2 回エコーされ るようになってしまいました。今こそ、その理由を明らかにしましょう!
こうなってしまうのは、コンソールに 'istrip' が設定されている時だけです。 私が思うに、 'istrip' がキーボードの生のスキャンコードを変形させてしま うために、キーを離したというイベントがキーを押したというイベントと同じ になってしまうのでしょう。
ですから、コンソールで scancodes を使っている場合には、入力処理を行わ ないようにします。(tty 回線の場合にこれをやってはいけません。)
dosemu で完全にはサポートされていないグラフィックスカードを使って いて、コンソールでグラフィックスを使えるようにしている場合には、dosemu がクラッシュすると画面が滅茶苦茶なままになってしまうことがあります。こ のような場合のために、Spudgun 氏 <spudgun@earthlight.co.nz> が次 の解決法を投稿してくれました。まずはコンソール上でレジスタの保存を行い ます。 ~> cat /usr/bin/savetextmode ~> restoretextmode -w /etc/textregs ~> restorefont -w /etc/fontdata それから、クラッシュしたときに次のスクリプトを実行します。 restoretextmode -r /etc/textregs restorefont -r /etc/fontdata restorepalette
これで直らなければ、どうしようもありません。 私は X サーバがビデオカードのレジスタをおかしくしてしまったときにこの スクリプトを実行したら自体が悪化したこともありました。これは X サーバ を変えたことか仮想端末で savetextmode を実行したこと(あるいはその両方) のせいだと思います。(97/04/08)
FoxPro 2.6 はネットワークドライブ上では動作しません。Alexey Naidyonov さん <growler@growler.tsu.tula.ru> がこの問題について 説明しています。おそらく、FoxPro のファイルが lredir した先のディスク にあるのだと思います。違いますか? 問題は FoxPro はこのようなディスクの 上では動作しないことです。しかし、/etc/dosemu.conf で disk { partition ... } を設定することでうまく動きました。