続・玩式草子 ―戯れせんとや生まれけん―

第34回 Days of WINE and Struggles again[3]

この記事を読むのに必要な時間:およそ 4 分

WINE再挑戦への前書きのつもりで3Dグラフィックスについて語っているうちに,季節もすっかり変わってしまいました。遅筆の筆者にはお構いなくWINEの開発版は2週に1度くらいのペースでバージョンアップされるので,ちんたらと前書きを書いてる間に6回くらいバージョンが上がってしまいました(苦笑⁠⁠。年明けには新しい安定版(7.0)も公開されるはずなので,それまでに話題を一段落させるべく,今回からは少しペースを上げて,まずWINEのインストールとセットアップについて紹介します。

WINEのインストール

以前に挑戦した時に指摘したように,WINEを動かすには32ビット版を含め多数のライブラリが必要となるので,ゼロからビルドするのは現実的ではありません。

主要なディストリビューションでは,WINEパッケージをインストールしようとすると,パッケージ管理ツールが関連パッケージも自動的にインストールしてくれるものの,管理ツールがそこまで強力ではないPlamoでは,手動で必要なパッケージをダウンロードし,インストールしてやる必要があります。

筆者が作成したPlamo用のWINE関連パッケージは,パッケージ・レポジトリのcontrib/Wineからダウンロードできます。

ブラウザからだと1ファイルずつしか選択できないものの,wget等を使えばディレクトリごと再帰的にダウンロードできます。なお,Zstd圧縮を採用した新しいtzst形式のパッケージもあるので,ダウンロードしたパッケージをインストールするには新バージョンのパッケージ管理ツール(pkgtools8)が必要になることにご注意ください。

contirib/Wine/以下にはlib32GCCWineの3つのサブディレクトリがあり,それぞれ32ビット版のライブラリ,multilib対応GCC,Wine本体を収めています。今後,変更があるかも知れないものの,本稿執筆時点では32ビット版ライブラリが194,multilib対応GCC関連が6,WINE本体が64ビット版("wine")と32ビット版("wine_32"⁠⁠,"winetricks"というサポートソフトウェアの3つで,パッケージの総数は203になっています。ダウンロードしたこれらのパッケージをインストールすればWINEのインストールは完了です。

WINEのセットアップ

以前にも触れたように,WINEではLinuxのファイルシステム上にWindowsのディスク構成を模倣したディレクトリを作り,そこに必要なシステムファイルやフォント,Windows用アプリ等をインストールします。

インストール先は,デフォルトでは~/.wine/になるものの,WINEPREFIX環境変数で指定できるので,今回は複数のWINE環境の共存テストを兼ねて,~/Wine/Wine01/にインストールしてみます。

以前紹介した際はWINE環境の初期化にwinecfgコマンドを使っていました。しかし確認してみると,実際に初期化に使われるのはwinebootコマンドで,winecfgは,指定したディレクトリにWINE環境が存在しなかった場合,自動的にwinebootを実行してから,そのWINE環境を設定するために起動する,という動作になっていることがわかったので,今回は直接winebootコマンドを使って初期化することにします。

$ mkdir ~/Wine
$ export WINEPREFIX="~/Wine/Wine01"
$ wineboot
preloader: Warning: failed to reserve range 00010000-00110000
wine: created the configuration directory '/home/kojima/Wine/Wine01'
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
...

winebootを実行すると多数のWarningメッセージ等が出力されるものの,基本的にそれらは無視しても大丈夫です。

図1 winebootの実行

図1 winebootの実行

winebootの実行後,~/Wine/Wine01/にはWindowsのHDD構成を模した以下のようなディレクトリやファイルが用意されます。

$ ls  ~/Wine/Wine01
dosdevices/  drive_c/  system.reg  user.reg  userdef.reg

$ ls  ~/Wine/Wine01/drive_c/
Program Files/  Program Files (x86)/  ProgramData/  users/  windows/

$ ls  ~/Wine/Wine01/drive_c/windows/
Fonts/          globalization/  mono/         system/     temp/         win.ini
Installer/      help/           notepad.exe*  system.ini  twain.dll     winhelp.exe*
Microsoft.NET/  hh.exe*         regedit.exe*  system32/   twain_32/     winhlp32.exe*
command/        inf/            resources/    syswow64/   twain_32.dll  winsxs/
explorer.exe*   logs/           rundll.exe*   tasks/      twain_64/

このwinebootが作成した仮想的なWindows環境には,Windowsが必要とする各種フォントはインストールされていません。

$ ls -a ~/Wine/Wine01/drive_c/windows/Fonts/
./  ../

手元に本当のWindows環境があれば,そこから必要なフォントをコピーして使うこともできるものの,WINEではインターネット上に公開されている各種フリーなフォントでWindowsに必要なフォントを代替することも可能で,そのために用意されているのがwinetricksというツールです。

winetricksはフォントのインストール専用というわけではなく,各種DLLやWINEで動くアプリ等のインストールに加え,WINE環境の設定を変更する等の機能も備えています。

Plamo Linuxではwinetricksもパッケージとして用意しているので,先に紹介した手順でインストールすればすぐに使えるようになっています。winetricksは,引数を指定せずに起動するとGUI画面が開き,対話的に必要なパッケージをインストールすることができます。

図2 winetricksの実行例

図2 winetricksの実行例

もっとも,インストールしたいパッケージの名称があらかじめわかっている場合は,winetricksの引数にパッケージ名を指定して直接インストールする方が簡単です。手元であれこれ試した結果,Windowsの基本フォントを代替するcorefontsと,日本語も含むCJKフォントを代替するcjkfontsのパッケージをインストールしておけば,フォント回りはだいたい間に合うようです。

$ winetricks corefonts cjkfonts
Executing mkdir -p /home/kojima/Wine
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many
verbs only install 32-bit versions of packages. If you encounter problems,
please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
Using winetricks 20210206-next - sha256sum: 0769bbcdbd92c407f4eacaa85acc1339f607\
 dbeafe2febd1be0912034c7af3a1 with wine-6.20 and WINEARCH=win64
Executing w_do_call corefonts
Executing mkdir -p /home/kojima/Wine
....
Executing load_andale 
Executing cabextract -q -d /home/kojima/Wine/Wine01/dosdevices/c:/windows/temp
    /home/kojima/.cache/winetricks/corefonts/andale32.exe
------------------------------------------------------
warning: Running /usr/bin/wineserver -w. This will hang until all wine processes
in prefix=/home/kojima/Wine/Wine01 terminate
------------------------------------------------------
Executing wine regedit C:\windows\Temp\_register-font.reg
preloader: Warning: failed to reserve range 00010000-00110000
...

winetricksは指定されたフォントをインターネット上からダウンロードし,展開してインストール,レジストリの登録までを一括してやってくれます。上記"corefonts"と"cjkfonts"の指定で,以下のようなフォントがインストールされました。

$ ls ~/Wine/Wine01/drive_c/windows/Fonts/
andalemo.ttf  comic.ttf            couri.ttf     sourcehansans.ttc  trebucbd.ttf  verdanai.ttf
arial.ttf     comicbd.ttf          georgia.ttf   times.ttf          trebucbi.ttf  verdanaz.ttf
arialbd.ttf   corefonts.installed  georgiab.ttf  timesbd.ttf        trebucit.ttf  webdings.ttf
arialbi.ttf   cour.ttf             georgiai.ttf  timesbi.ttf        unifont.ttf
ariali.ttf    courbd.ttf           georgiaz.ttf  timesi.ttf         verdana.ttf
ariblk.ttf    courbi.ttf           impact.ttf    trebuc.ttf         verdanab.ttf

このディレクトリにあるsourcehanssans.ttcが,"cjkfonts"の指定でインストールされた中日韓の各言語用のフォントです。このフォントはAdobeとGoogleが共同開発しており,Windows方面ではAdobeが提供する「源ノ角フォント⁠⁠,Linux方面ではGoogleが提供する「Notoフォント」として広く使われています。

ちなみに"Noto"とは日本の地名とは関係なく,該当するフォントデータが無い場合に表示される白い□(俗に言う「豆腐⁠⁠)を無くす("NO more TOhu")ことを願って付けられた名前だそうです。

以上,winebootで環境を初期化しwinetricksで必要なフォント類をインストールすれば,WINEの基本的なセットアップは完了です。

WINEの実行例

必要なセットアップが終れば,後はWindows用のアプリ(*.exeファイル)を引数に,"wine"コマンドを実行するだけです。

wineコマンドを実行する際は環境変数$WINEPREFIXが"~/Wine/Wine01"になっているか注意してください。この環境変数が設定されていないと,"~/.wine/"がWINE用のディレクトリと見なされ,意図しない動作が起きることがあります。

たとえば,⁠初音ミク」の3Dモデルを踊らせることで有名になった3D CGソフトMMD(MikuMikuDance)の場合,ここからダウンロードしたMikuMikuDance_v932x64.zipを展開し,取り出された"MikuMikuDance.exe"をwine経由で起動するだけです。

$ wine MikuMikuDance_v932x64/MikuMikuDance.exe
preloader: Warning: failed to reserve range 00010000-00110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
preloader: Warning: failed to reserve range 0000000000010000-0000000000110000
...

図3 MikuMikuDanceの動作画面

図3 MikuMikuDanceの動作画面

また,World of Tanks(WoT)と呼ばれるオンライン対戦型の戦車戦ゲームも,インストーラやユーザー管理画面(ゲームセンター)では日本語が豆腐になるものの,ゲーム画面ではメッセージが日本語で問題なく表示され,動作も問題ないようです。

図4 WoTの動作画面

図4 WoTの動作画面

DirectX11の性能を試すUnigine Heavenというベンチマークソフトも大丈夫でした。

図5 Unigine Heavenの動作画面

図5 Unigine Heavenの動作画面

このように,2年ほど前に試した際はDirectX9世代の古いゲームくらいしか動かせなかったPlamo用のWINE環境も,今回の挑戦では,無事,新しめの大規模な3Dゲームも動かせるレベルになったようです。

もっとも,MMDは添付のサンプルデータを読み込んで動かしただけで,編集作業等は試してませんし,WoTでは最初のトレーニング・ステージに参加しただけで,実際の対戦モードが正しく動作するかはわかりません(苦笑⁠⁠。

もちろんここで紹介したのはうまく動いた例で,そもそも全く起動しなかったり,設定をあれこれ調整することで何とか動いたりするアプリも多数存在します。次回はそれらの事例を紹介しつつ,WINEを使うコツを考えてみたいと思います。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html