
Wine がなぜか動作しなくなりました。Wine を完全に削除して再インストールすることにしました。ただし、これを行う前に、過去に Wine に保存してインストールした多数のファイルやプログラムが失われないようにしておきたいと思います。
.wine フォルダ内の「drive_c」と「dosdevices」をバックアップし、.wine ディレクトリを完全に削除 (rm -rf ~/.wine) して、wine を再度インストールし、バックアップしたフォルダをディレクトリに戻すだけでよいですか? プログラムを通常どおり実行できますか?
また、私はすでにこれを書いているので、Wine で何がうまくいかなかったのかについて私が知っていることを付け加えておこうと思います。
私は Ubuntu 12.04 を使用しています。Wine は 1 週間ほど前までは正常に動作していましたが、不思議なことに動作しなくなりました。
winecfg.exe を実行すると、プロセスは実行されますが (top コマンドに従って)、画面には何も表示されません。CPU の 1 つが 100% 占有されるだけです。Winetricks を実行したり、wine で .exe プログラムを実行しようとすると、まったく同じことが起こります。プロセスが top に表示され、CPU を占有しますが、何も起こりません。
ターミナルから wine を実行すると、結果は次のようになります。
user@computer:~/Downloads/SpaceEngine 0.97/system$ wine SpaceEngine.exe
modify_ldt: Invalid argument
modify_ldt: Invalid argument
modify_ldt: Invalid argument
modify_ldt: Invalid argument
modify_ldt: Invalid argument
err:seh:raise_exception Exception frame is not in stack limits => unable to dispatch exception.
Wine をアップデートしてみましたが、何も変わりませんでした。インストールを消去して、もう一度やり直したほうがよいでしょう。では、データを失わないようにするにはどうすればよいでしょうか?
答え1
私は Ubuntu 12.04.4 LTS x86_64、3.11.0-24-generic カーネル、wine-1.7.18 を使用しています。この問題は、前の行echo 1 > /proc/sys/abi/ldt16
に 追加することで解決しました 。再起動後、win16 プログラムをインストールできます。/etc/rc.local
exit 0
答え2
修正しました。何が悪かったのかはわかりませんが、.wine ディレクトリ全体をバックアップとしてコピーして貼り付けました。その後、.wine ディレクトリ全体を削除し、wine を再インストールして、drive_c と dosdevices フォルダのみを元に戻しました。
今は問題なく動作します!
これらの回答のいずれかが私の問題に関係があるかどうか、または試してみたら役に立ったかどうかはわかりませんが、私が行ったことはうまくいきました。
バックアップして再インストールするだけです。
答え3
おそらく、最近更新された 64 ビット Linux カーネル上で 16 ビット Windows 実行ファイルを実行しようとしているのでしょう。
へのサポート16ビットセグメントは中断されましたセキュリティ上の問題のため、64 ビット Linux システムではサポートされません。
この問題は最近広く取り上げられており、WineHQフォーラムで議論されたそしてバグとして報告。
現時点では、確実な回避策はありません。 Wine またはカーネルのアップデートを待つ必要があります。
ただし、32 ビット Linux システムは影響を受けません。
答え4
実行するだけ
$ echo 1 > /proc/sys/abi/ldt16
その後、Wine 経由でアプリケーションを起動します。これにより、カーネルで 16 ビット サポートが一時的に有効になります。