Wine
関連記事
Wine は Microsoft Windows のアプリケーションを UNIX ライクな OS で動かすための互換レイヤーです。プログラムの挙動が Windows と同じなので、エミュレータと違ってパフォーマンス低下がありません。より詳しい記述は プロジェクトの公式ページ や wiki を見てください。
目次
- 1 インストール
- 2 設定
- 3 Windows アプリケーションの動作
- 4 Tips and Tricks
- 4.1 Wine によるファイルの関連付けの解除
- 4.2 異なる解像度でのデュアルスクリーン
- 4.3 exe-thumbnailer
- 4.4 CSMT パッチ
- 4.5 言語の変更
- 4.6 Microsoft Office 2010 のインストール
- 4.7 オプティカルメディアイメージの正しいマウント
- 4.8 オプティカルメディアを焼く
- 4.9 OpenGL モード
- 4.10 Win16/Win32 バイナリのインタプリタとして Wine を使う
- 4.11 Wine コンソール
- 4.12 Winetricks
- 4.13 .NET framework 4.0 のインストール
- 4.14 PulseAudio を使った時に音が割れる
- 4.15 16ビットのプログラム
- 4.16 ゲーム内に FPS オーバーレイを表示
- 5 サードパーティ製インターフェース
- 6 外部リンク
インストール
Wine は定期的にアップデートされており、Archでは [community] リポジトリに i686 版が、[multilib] リポジトリに x86_64 版があります。
# pacman -S wine
Internet Explorer や .NET のサポートが必要なアプリケーションを使いたい場合、それぞれ wine_gecko と wine-mono をインストールしてください。Wine は必要なときに関連ファイルをダウンロードするので、これらのパッケージは厳密には必要ありません。しかし、先にファイルをダウンロードしておくことで、オフラインでも作業できるようになり Wine はそれぞれの WINEPREFIX が必要とするファイルをダウンロードしなくなります。
アーキテクチャの扱いの違い
i686 リポジトリにある Wine は 32-bit アプリケーションであり、64-bit の Windows アプリケーションを動かすことはできません。
x86_64 版の Wine は --enable-win64
オプションをつけてビルドされています。これは Wine の WoW64 を有効にします。
- ウィンドウズでは、このサブシステムによってユーザーは 32-bit のプログラムと 64-bit のプログラムを同じディレクトリで同時に使うことが可能です。
- Wine では、ユーザーはディレクトリを分ける必要があります。詳しくは Wine64 を見てください。
64-bit 環境で winetricks
やプログラムに問題がでたときは新しい 32-bit の WINEPREFIX
を作ってください。#WINEARCH の使用 を参照。x86_64 の Wine と WINEARCH=win32
を使うことで i686 の Wine と同じ挙動をします。
設定
Wine の設定に使われるツール:
- winecfg は Wine の GUI 設定ツールです。コンソールから動かすことができます:
$ winecfg
または$ WINEPREFIX=~/.some_prefix winecfg
。 - control.exe は Windows のコントロールパネルを Wine で模したものです。使うには
$ wine control
。 - regedit は Wine 版のレジストリエディタです。winecfg やコントロールパネルでは充分でない場合に使います。詳しくは WineHQ のレジストリキーに関する記事 を見て下さい。
WINEPREFIX
デフォルトでは、Wine の設定ファイルとインストールされた Windows のプログラムは ~/.wine
に置かれます。このフォルダは通常 "Wine prefix" や "Wine bottle" と呼ばれます。Windows プログラムを動かしたり、Wine を設定するための winecfg
を動かすと自動的にフォルダが作成されます。そして Wine で動いているプログラムはこのフォルダの下のツリーを C:\
(C ドライブ) とみなします。
必要ならば WINEPREFIX
環境変数を設定することで、違うフォルダを指定することができます。これは Windows プログラムにそれぞれ違う設定をしたいときに便利です。初めて新しい Wine の prefix を使ってプログラムを起動した時、Wine は自動で C ドライブとレジストリの入ったディレクトリを作成します。
たとえば、$ env WINEPREFIX=~/.win-a wine program-a.exe
と $ env WINEPREFIX=~/.win-b wine program-b.exe
のようにプログラムを動かせば、2つのプログラムは別の C ドライブとレジストリを使います。
プログラムを動かしたり GUI ツールを使わずに Wine へフォルダを設定したいときは
$ env WINEPREFIX=~/.customprefix wineboot -u
で可能です。
WINEARCH の使用
64 ビット環境を使っている場合、Wine はデフォルトで 64 ビットの環境を作ります。この挙動は WINEARCH
環境変数を使うことで変更できます。あなたの ~/.wine
ディレクトリの名前を変更して新しい wine 環境を作って下さい:
$ WINEARCH=win32 winecfg
。これで 32 ビットの wine 環境が作られます。WINEARCH
を設定しないときは 64 ビット環境が作られます。
WINEPREFIX
を使うことで win32 環境と win64 環境を分割することができます:
$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg $ WINEPREFIX=~/win64 winecfg
winetricks と WINEARCH
をひとつのコマンドで一緒に使うことで以下のように winetricks からインストールをさせることもできます (例: Steam):
env WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam
グラフィックドライバ
ゲームを動作させる時はほとんどの場合、パフォーマンスを出すためにグラフィックドライバが必要になります。基本的にプロプライエタリな NVIDIA や AMD Catalyst ドライバを使うべきですが、オープンソース radeon ドライバーも Wine の使用に耐えるほど成熟してきています。Intel ドライバは何も設定しなくとも問題なく動くはずです。
詳細は Gaming On Wine: The Good & Bad Graphics Drivers を参照してください。
ドライバが見つからなかったり作動していない時、Wine はターミナルに次のように表示します:
Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly
x86-64 環境では、32-bitの [multilib] パッケージが必要です。Xorg#ドライバーのインストール にある表の Multilib パッケージ に記載されているパッケージをインストールしてください。
サウンド
Wine を動かしたときに自動的にサウンド設定がなれますが、winecfg
で使うサウンドデバイスを選択することができます。いまのところ、Alsa ドライバが一番安定しています。
x86_64 環境で Wine の Alsa ドライバを使いたいときは、lib32-alsa-lib と lib32-alsa-plugins をインストールする必要があります。PulseAudio を使いたいときは、lib32-libpulse をインストールしてください。
OSS ドライバを Wine で使うためには、lib32-alsa-oss パッケージが必要です。カーネルに付属している OSS ドライバでは十分でありません。
それでも winecfg
がオーディオドライバを見つけられない時(Selected driver: (none))は、レジストリから設定してください。
より強力なサウンドシステムを使うゲームには lib32-openal のインストールが必要な場合もあります。
MIDI サポート
90年代のビデオゲームでは音楽に MIDI を使うのが人気でした。古いゲームを動かすときは、設定をしないと音楽が再生できないのは珍しくありません。 Wine には素晴らしい MIDI サポートがあります。ただし、最初に MIDI がシステムで動くように設定する必要があります。詳しくは wiki のページを見て下さい。あと一つ、Wine が適切な MIDI 出力を使うようにしなくてはなりません。設定方法は Wine Wiki を見て下さい。
他のライブラリ
- いくつかのアプリケーション (Office 2003/2007 など) は HTML や XML をパースするための MSXML ライブラリが必要です。lib32-libxml2 をインストールしてください。
- 音楽を再生するアプリケーションには lib32-mpg123 が必要かもしれません。
- 色管理エンジンを使用するアプリケーション (例: PDF ビューア, 画像ビューアなど) には lib32-lcms2 が必要です。
- 画像編集アプリケーションに必要なライブラリがあります。lib32-giflib と lib32-libpng をインストールしてください。
- アプリケーションによっては暗号化サポートのため lib32-gnutls が必要です。
フォント
Microsoft の Truetype フォントがインストールされてない場合、表示されるフォントが見づらいものになることがあります。MS フォントを参照してください。winetricks corefonts
をまず試してみて、それでもダメな場合、winetricks allfonts
を試してください。
その後、すべてのWineサーバーを終了して winecfg
を動かしてください。フォントが改善されているはずです。
フォントが不鮮明な場合、regedit を使って以下のようにレジストリを編集してください:
[HKEY_CURRENT_USER\Software\Wine\X11 Driver] "ClientSideWithRender"="N"
フォント設定#fontconfig をサポートしていないアプリケーションも参照。
デスクトップランチャーメニュー
Wine で Windows プログラムをインストールすると、メニューやデスクトップアイコンが作られます。例えば、setup.exe
のような名前のついたインストールプログラムは普通、ウィンドウズの"スタートメニュー"やデスクトップにアイコンを追加します。Wine でそういったプログラムを動作させると、freedesktop.org に対応した .desktop
ファイルが作られます。
メニューエントリを作成
デフォルトでは Wine をインストールしても Wine に付属しているソフトウェア (例: winecfg
, winebrowser
, etc) のデスクトップメニューやアイコンは作られません。ここではこれらのアプリケーションのためのエントリを追加する方法を説明します。
まず、ベースメニューを作るために Wine で Windows プログラムをインストールします。ベースメニューが作られたら、~/.local/share/applications/wine/
に以下のファイルを作成してください:
wine-browsedrive.desktop
[Desktop Entry] Name=Browse C: Drive Comment=Browse your virtual C: drive Exec=wine winebrowser c: Terminal=false Type=Application Icon=folder-wine Categories=Wine;
wine-uninstaller.desktop
[Desktop Entry] Name=Uninstall Wine Software Comment=Uninstall Windows applications for Wine Exec=wine uninstaller Terminal=false Type=Application Icon=wine-uninstaller Categories=Wine;
wine-winecfg.desktop
[Desktop Entry] Name=Configure Wine Comment=Change application-specific and general Wine options Exec=winecfg Terminal=false Icon=wine-winecfg Type=Application Categories=Wine;
そして ~/.config/menus/applications-merged/
に次のファイルを作成してください:
wine.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN" "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd"> <Menu> <Name>Applications</Name> <Menu> <Name>wine-wine</Name> <Directory>wine-wine.directory</Directory> <Include> <Category>Wine</Category> </Include> </Menu> </Menu>
以上の設定でアイコンが表示されない場合は、有効になっているアイコンセットにランチャーのためのアイコンが存在しないのが原因です。使いたいアイコンの位置を指定してアイコンの設定を置き換えてください。プロパティメニューのアイコンをクリックしても同じことができます。これらのショートカットをサポートしているアイコンセットは GNOME-colors です。
メニューエントリを削除する
Wine によって作成されるエントリは ~/.local/share/applications/wine/Programs/
にあります。プログラムの ".desktop" エントリを削除すればメニューからアプリケーションが削除されます。
Wine による不要な拡張を削除するのに加えて、以下のコマンドを実行 (Wine のウェブサイトより):
$ rm ~/.local/share/mime/packages/x-wine* $ rm ~/.local/share/applications/wine-extension* $ rm ~/.local/share/icons/hicolor/*/*/application-x-wine-extension* $ rm ~/.local/share/mime/application/x-wine-extension*
KDE 4 メニューフィックス
KDE 4 では Wine メニューアイテムが Wine ではなく "Lost & Found"
に現れるかもしれません。これは kde-applications.menu
が MergeDir
オプションを見つけられないために起こります。
/etc/xdg/menus/kde-applications.menu
を編集します。
ファイルの最後の <DefaultMergeDirs/>
の後に <MergeDir>applications-merged</MergeDir>
を加えて下さい、以下のようになるはずです:
<Menu> <Include> <And> <Category>KDE</Category> <Category>Core</Category> </And> </Include> <DefaultMergeDirs/> <MergeDir>applications-merged</MergeDir> <MergeFile>applications-kmenuedit.menu</MergeFile> </Menu>
もしくは KDE のフォルダにシンボリックリンクを作成:
$ ln -s ~/.config/menus/applications-merged ~/.config/menus/kde-applications-merged
こちらのやり方は KDE のアップデートにあわせて変更する必要がないという利点がありますが、ユーザーごとに設定をしなくてはなりません。
Windows アプリケーションの動作
Windows アプリケーションを動かす:
wine path_to_exe
MSI インストーラを使う場合 (msiexec ユーティリティを使用):
$ msiexec /i path_to_msi
Tips and Tricks
Wine によるファイルの関連付けの解除
デフォルトで、大量のフォーマットで Wine はデフォルトアプリケーションとして設定されます。Windows にしかないフォーマットもあり (例: vbs
や chm
)、その場合 Wine で開けるようになるのは便利かもしれません。しかしながら、他のフォーマット (例: gif
, jpeg
, txt
, js
) が Wine の素っ気ない Internet Explorer やメモ帳で開かれるのは迷惑と感じることもあるでしょう。
Wine のファイルの関連付けは ~/.local/share/applications/
にある {{ic|wine-extension-{extension}.desktop}} というファイルによって設定されます。関連付けを解除したい拡張子の名前が入っているファイルを削除してください。もしくは、Wine の関連付けを全て削除したい場合:
$ rm -f ~/.local/share/applications/wine-extension*.desktop $ rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
古いキャッシュを削除:
$ rm -f ~/.local/share/applications/mimeinfo.cache $ rm -f ~/.local/share/mime/packages/x-wine* $ rm -f ~/.local/share/mime/application/x-wine-extension*
キャッシュをアップデート:
$ update-desktop-database ~/.local/share/applications $ update-mime-database ~/.local/share/mime/
もしくは wine に関連するキャッシュだけを削除することもできます:
$ find ~/.local/share | grep wine | xargs rm
その後、上述のようにキャッシュをアップデートしてください。
削除しても、アプリケーションによってファイルの関連付けが設定されたら、Wine はファイルの関連付けを作成し続けます。
作成しないように設定するには、$WINEPREFIX/system.reg
ファイルを開いて、winemenubuilder を検索して -a を削除してください。以下のようになります:
[Software\\Microsoft\\Windows\\CurrentVersion\\RunServices] "winemenubuilder"="C:\\windows\\system32\\winemenubuilder.exe -r"
ファイルの関連付けを作成して欲しくない全ての WINEPREFIX で上記の設定が必要になります。
以下の環境変数を設定することで全ての WINEPREFIX で winemenubuilder を無効化することが可能です:
WINEDLLOVERRIDES="winemenubuilder.exe=d"
異なる解像度でのデュアルスクリーン
デュアルヘッドの設定でディスプレイの解像度が異なったときに問題が起きる場合はおそらく lib32-libxrandr をインストールしていません。
exe-thumbnailer
Wine と一緒に (もしくはその前に) インストールするための小さな UI のコードです。実行可能ファイルのサムネイルを提供します。利用可能ならば埋め込まれたアイコンを表示するため、ユーザーは Wine が何を開くのかわかりやすくなります。詳細は wine wiki を見て下さい。gnome-exe-thumbnailerAUR は AUR から利用可能です。
CSMT パッチ
最近 wine の開発者 は Wine に stream/worker スレッド最適化の実験を行っています。この実験中のパッチがあてられた Wine バージョンを使うことでパフォーマンスを向上させることができるかもしれません。多数のゲームが Windows と同じ速度で、またはそれ以上で動くようになる可能性もあります。この Wine パッチは CSMT パッチとして知られており、Nvidia と AMD のグラフィックカードで利用できます。
playonlinux をインストールすると楽です。ゲームをインストールして PlayOnLinux の Tools/Manage Wine Versions メニューから Wine バージョン 1.7.4-CSMT を有効にしてください。現在はパッチがあたった Wine バージョン 1.7.4-CSMT を使うことが推奨されています。
ゲームの設定を開いて以下の設定を Miscellaneous/Command to exec before running the program にコピーしてください:
export WINEDEBUG=-all export LD_PRELOAD="libpthread.so.0 libGL.so.1" export __GL_THREADED_OPTIMIZATIONS=0 export __GL_SYNC_TO_VBLANK=1 export __GL_YIELD="NOTHING" export CSMT=enabled
Tools/General から StrictDrawOrdering は無効にしてください。
Github から自分でコンパイルしたり、AUR のパッケージ wine-d3dstream-gitAUR を使うこともできます。
詳細
CSMT の開発者 Stefan Dösinger による Phoronix Forum の議論
CSMT とベンチマークの FOSDEM2014 CSMT プレゼンテーション
ここに CSMT を有効にして動作させているゲーム動画があります
言語の変更
いくつかのプログラムには言語の選択がなく、システムのロケールを使用する言語として扱います。Wine は (ロケールを含む) 現在の環境をアプリケーションにわたすので、設定をしなくとも問題なく動くはずです。プログラムを (システムで生成した) 特定のロケールで動くように強制したい場合は、次の設定を使って Wine を呼び出して下さい:
LC_ALL=xx_XX.encoding wine /my/program
例:
LC_ALL=ja_JP.UTF-8 wine /my/program
Microsoft Office 2010 のインストール
Microsoft Office 2010 は問題なく動きます (Microsoft Office Home と Student 2010、Wine 1.5.27 と 1.7.5 で確認)。インターネットのアクティベーションも問題ありません。
最初に wine-mono, wine_gecko, samba, lib32-libxslt, lib32-libxml2 をインストールしてください。
それからインストーラーの起動に進んで下さい:
$ export WINEPREFIX="<path to a writable folder on your home directory>" $ export WINEARCH="win32" $ wine /path/to/office_cd/setup.exe
上記の export は .bashrc
に追加することもできます。
インストールが終わったら、Word か Excel を開いてインターネットでアクティベートしてください。完了したら、アプリケーションを閉じて下さい。それから winecfg
を実行して、(ライブラリの) riched20 を (native,builtin) に設定してください。これで Powerpoint が動くようになります。
詳しくは WineHQ を参照してください。
オプティカルメディアイメージの正しいマウント
いくつかのアプリケーションはオプティカルメディアがドライブにあるかの確認をします。ほとんどはデータの確認だけなので、winecfg
で CD-ROM ドライブのパスを正しく設定すれば問題ありません。
しかし、アプリケーションによってはメディアの名前やシリアルナンバーを確認するので、イメージを特別なプロパティを使ってマウントする必要があります。
fuse ベースの仮想ドライブ (例えば Acetoneiso) など、仮想ドライブツールはこれらのメタデータを扱えないことがあります。CDEmu は適切にこれを処理します。
オプティカルメディアを焼く
CD や DVD を焼くためには、sg
カーネルモジュールをロードする必要があります。
OpenGL モード
多くのゲームには OpenGL モードがあり多くの場合デフォルトの DirectX モードより良いパフォーマンスが出ます。OpenGL レンダリングを有効にする方法はそれぞれのアプリケーションによる一方、多くのゲームは -opengl
パラメータを認識します。
$ wine /path/to/3d_game.exe -opengl
詳しい情報は、それぞれのアプリケーションのドキュメントや Wine の AppDB を見てください。
Win16/Win32 バイナリのインタプリタとして Wine を使う
wine を全ての Win16/32 バイナリのインタプリタとして使うようにすることもできます:
echo ':DOSWin:M::MZ::/usr/bin/wine:' > /proc/sys/fs/binfmt_misc/register
設定を永続的にするには、以下の内容で /etc/binfmt.d/wine.conf
ファイルを作って下さい:
# Start WINE on Windows executables :DOSWin:M::MZ::/usr/bin/wine:
systemd は proc-sys-fs-binfmt_misc.mount
を使って自動で /proc/sys/fs/binfmt_misc
ファイルシステムをマウントし、systemd-binfmt.service
を実行して設定をロードします。
Windows プログラムを実行するには:
chmod +x exefile.exe ./exefile.exe
これで exefile.exe が動作するはずです。
Wine コンソール
プログラムをコマンドラインから起動することができます。次のコマンドをターミナルで実行してください:
$ wineconsole cmd
プログラムがあるフォルダまで移動して、プログラムを実行してください。
Winetricks
Winetricks は Windows プログラムを動かすために必要なランタイムなどをインストールするためのスクリプトです。DirectX 9.x やMSXML (Microsoft Office 2007 や Internet Explorer で必要)、Visual ランタイムライブラリなどをインストールできます。
使うには pacman から winetricks をインストールしたり、AUR の winetricks-gitAUR パッケージをインストールしてください。次のコマンドで動きます。
$ winetricks
.NET framework 4.0 のインストール
64ビット環境の場合、まず新規に32ビットの wine prefix を作成してください:
$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg
それから winetricks を使って以下のパッケージをインストールしてください:
$ WINEARCH=win32 WINEPREFIX=~/win32 winetricks -q msxml3 dotnet40 corefonts
PulseAudio を使った時に音が割れる
PulseAudio を使用しているときに Wine アプリケーションで音が割れる場合、/etc/pulse/daemon.conf
ファイルを編集して ; default-fragment-size-msec = 25
という行をアンコメントして以下のように値を 5
に設定してください:
default-fragment-size-msec = 5
詳しくは ここ を参照。
16ビットのプログラム
古い Windows 9x のプログラムを実行すると、以下のエラーが表示されることがあります:
modify_ldt: Invalid argument err:winediag:build_module Failed to create module for "krnl386.exe", 16-bit LDT support may be missing. err:module:attach_process_dlls "krnl386.exe16" failed to initialize, aborting
この場合は、次のコマンドを実行することで修正できます:
echo 1 > /proc/sys/abi/ldt16
ソース: Fedora メーリングリスト
ゲーム内に FPS オーバーレイを表示
Wine には全てのグラフィカルアプリケーションで使える FPS モニター機能があります。環境変数 WINEDEBUG=fps
を設定してください。FPS は標準出力にアウトプットされます。xosd パッケージの osd_cat
を使うことでウィンドウ上に FPS を表示することが可能です。ヘルパースクリプト winefps.sh を見て下さい。
サードパーティ製インターフェース
Wine フォーラムではサポートされていません、それぞれのホームページを見てください。
CrossOver
CrossOver については CrossOver を見て下さい。
PlayOnLinux/PlayOnMac
PlayOnLinux は Windows と DOS プログラムのグラフィカルマネージャです。プログラムを動かすための設定をアシストするスクリプトや、それぞれの実効ファイルにあった Wine のバージョンを(リグレッションのため)選択する機能があります。どの Wine のバージョンがプログラムに合っているか知るには、Wine Application Database を見てください。playonlinux は community リポジトリにあります。
PyWinery
PyWinery はグラフィカルでシンプルな wine-prefix マネージャで、アプリの起動と異なった prefix の設定の管理ができ、同じ prefix で winetricks を開くボタンや、prefix ディレクトリ・ winecfg
・アプリケーションアンインストーラ・ wineDOS を開くボタンを備えています。AUR の pywineryAUR パッケージからインストールできます。DirectX を使うゲームやオフィススイートなどアプリケーション毎に違う設定を使ったり環境を選びたいときに便利です。
.exe
を開くときはデフォルトで winetricks を使うことが推奨されています。wine 設定を選ぶことができるようになるからです。
Q4wine
Q4Wine はグラフィカルな wine-prefix マネージャで prefix 設定の管理をすることができます。特に Qt テーマを wine 設定に適用することで見た目を統合することができます。community リポジトリに q4wine パッケージがあります。
Wine-staging
Wine-Staging (旧名 wine-compholio) は通常のバージョンの wine では使うことができない、バグフィックスや機能が含まれた特殊なバージョンの wine です。Wine Staging の構想では、新しい機能をエンドユーザーにいち早く提供して、開発者には上流にパッチを送る前に議論したり改善することができるようにします。Wine-staging は wine-staging パッケージでインストールすることができ、wine-staging の Arch Linux リポジトリ から直接インストールすることも可能です。
外部リンク
- Wine 公式ウェブサイト
- Wine Application Database
- Advanced configuring your gfx card and OpenGL settings on wine; Speed up wine
- FileInfo - Find Win32 PE/COFF headers in EXE/DLL/OCX files under linux/unix environment.