ブログの画像が消えました

は~(°~°)?????キレそーーwwwwwwwwwwww

※このブログでは、ブログ作成に有名なWxxxPxxxxを利用しています。が、検索避けにWPという略称を利用しています。適宜読み替えてください。

ことの発端は、SynologyNAS鯖(DSM)のメジャーバージョンアップデート

SynologyのOS、DSMが6系から7系にメジャーバージョンのアップデートがありました。
6系は使えなくなるよってことでアップデートしました。
ブログデータの一部が消えました。
あなたさあ…

Synologyは擬似的なコンテナというか、puppetというか、なんというか、直接いじられた設定は基本的に保存されないしない、雛形とそれに対するマネージドな変更点の管理だけを行っている
SynologyのWebUIのような間接的なUIを通しての設定変更は維持されるが、
sshして、vim hoge.confして、ってやったものは基本消える

最たる例はnginx.conf
WebStationにてnginx.conf周りをすべて管理されており、結構ややこしい作りになっている
いや、紐解けば、Let’s Encrypt用の鍵であったり、SynologyのWebUI自体をnginxで受け取ってたり、その上でWebStationようにlistenしてる文があって、homeディレクトリのwwwフォルダをWebStationで見れるようになってたり云々カンヌン
やってることは単純

前に少し話したが、(Let’s Encrypt でSSLワイルドカード証明書を導入する)
ホスト名で分けて、あるWebアクセスは全部Synology鯖で受け取ろう。じゃあallow,denyなどのチューニングが必要だな、
proxy_passやらで親子関係を簡単にしよう、
WebStationの設定画面からではそこまでnginxの設定がいじれないようだぞっと、
じゃあnginx.confをsshで入って編集追記してやろうっと、

こうやってせっかく編集したconfファイル、容赦なく消える
サーバの再起動のタイミングでも、SynologyNASのWebUIからちょっと設定をいじっただけでも……
調べただけでも、結構な不満?やら、特有のテクの紹介が出ている。使いやすいんだが曲者だ。悪くない。

しかし、今はクソ面倒なやつだなあ

WebStation自体の設定が読み込まれ、nginx.conf自体がもとに戻ってしまう
いや、WebStationが保持してる設定自体を書き換えてやればいいじゃんwという考え方もあるが、せっかくSynology様がマネージドでやってくれてるんだぜ?それは嫌だ

閑話休題

ということで(?)NAS鯖をアップデートかけました
DSMのメジャーバージョンに合わせて、パッケージ類もいくつかが更新されました。
WPパッケージが再インストールという挙動となりました。
WPの設定が一部リセットとなりました。

ここまではいい
WPの設定が本当に一部だけ引き継がれ、WPの初期セットアップは終わっていることになっているが、SQLのパスワード類が設定されていない、これによりSQLにつながらないというエラーを吐いていた。
これについては後ろで語ろう

アプデにより画像が消えた原因

Synologyはパッケージをひな形だけ管理し、個々の設定はあまり重要視していない

つまり、「WP上で設定した値」や、「WPに直接アップロードした画像」は、
WPが独自で管理している1ファイルとして存在するため、パッケージマネージャ側は認識しないのだ

そのため、DSM自体のアプデによりWPのパッケージが再インストール。
パッケージマネージャが認識しているファイルのみ移行され、見事、直アップロードした画像が消えてしまったとさ

いや、「WP上で設定した値(SQLのパスワードとか)」もそうだけど、そういうのも管理してくれるっていうのがパッケージマネージャじゃないのかよ
公式提供のパッケージなのに

なんのために他の鯖にWPを、それこそコンテナとか使わずに、
NAS上にWPを立てて利用しているのかがわからなくなっちゃった

対策として外部ディレクトリを作成

泣いても戻らないので、対策
2(3)通りの方法があるかなと

  • WPのディレクトリを変えてしまい、WPのパッケージ雛形への依存度を下げる
    具体的に言うと、シンボリックリンクを貼って、画像ファイルを外に出す
  • 画像保存先を変えて、WP管理をやめる
    • CDNみたいな管理方法にする(データ配信する鯖がNASとは別という意味)
    • NASの外部公開機能を利用する

WPに他のストレージのシンボリックリンクを貼って、そこへ直アップロードできるようにする

最初はこれが一番手っ取り早い上に、WPの直アップロードを気にせず使える
そう思ったので、やった
結論としてはACLの手間の問題でできなかった

※検索避けにWPという略語にしてます

WPのフォルダへ
$ cd /var/service/web_packages/WP/
$ pushd wp-content/uploads
$ ls
2021   wp-statistics
→ここにアップロードされた画像やらが詰め込まれている
→例:2021/08/{日付}-{画像サイズ}.jpg とかとか
$ mkdir web
$ ls
2021   web   wp-statistics
$ pushd /
HDD1にある共有フォルダ「Share」にシンボリックリンクを貼る
$ cd /volume1/Share
$ ln -s /var/service/web_packages/WP/wp-content/uploads/web web
$ ls -l
lrwxr-xr-x 1 root root 9 Aug 26 12:00 web -> /var/service/web_packages/WP/wp-content/uploads/web

ここまでは至っていつもどおりのシンボリックリンク作成手順
この後がSynology特有のもので、ACLをいじらないと通常の共有フォルダ上からアクセスできなかった
1時間いじってだめだったので諦めた
ちなみに、SynologyのACLはsynoacltoolというコマンドを利用する

$ type synoacltool
synoacltool is hashed (/usr/syno/bin/synoacltool)
$ synoacltool -get web
(synoacltool.c, 489)It's Linux mode
'→Linuxの権限になっているので、付与していく必要があるっぽい
$ synoacltool -set-owner web ruth
他の共有できているファイルをsynoacltool -getで取得して、必要そうなものをどんどん追加していく
$ synoacltool -add web group:administrators:allow:rwxpdDaARWc--:fd--

という感じで、ACLを設定

が、Windowsなど、他のマシンからこのシンボリックリンクは利用できませんでした。
ディレクトリがあるということは見えるんだが、それ以上ができませんでした

1時間調べてだめだったって書いた気がするけど、もっと多い時間を使ったような気がする
Synology特有のACLの問題だったので、もっとこだわればできたかもしれないけど、考えうるフラグ立てや、お手上げ
他の方法に切り替えていく
こうなるともうDocker管理でええやんって思う思った

画像保存先を変えて、WP管理をやめる

結局こうなった

CDN形式(NASとは別の場所にデータがあるという意味で言ってます)はやりたくない
ただ、一応、GCPのPCAを持ってる関係上、これが最もコスパが良い方法だ。それだけは言える
自宅鯖マンを除いて

WPをRasPiやらWin鯖やらでやらせない理由が、SQLを動かすコストと、その管理がひどく大変だからだ
初めて初代RasPiを手に入れ、これを使ってWeb鯖を構築していた時、MySQLのプロセスが重く、SQL以外まともにRasPiが使えないなんてことがあった。
それから、WPもそうだが、MediaWikiを標的にした、Botによる過剰アクセスがやってきた。
それがRasPiのSDカードを直撃
大学生が使うような安価なSDカードは一週間のうちに焼け焦げて、使い物にならなくなった

そんな経験もあり、「CPU負荷を切り離すことができて、HDDへ書き込めるもの」そんな要件ができた。SynologyNASが最適だったのだ。
再び僕の家にQueryの権威が振るわれることとなったのだ

閑話休題

結局、NAS上のWebStation管理のフォルダにblog用画像保存フォルダを作成し、LBみたいになってる親機のnginxへproxy_passを放り込む。

ただそれだけ…

ちなみに、
PhotoStationというSynologyのマネージド画像ビュアーがあったはずなんだが、DSM7になってなくなったようだ。
FileStationで手に入る共有URLはgofile.me経由になってしまい、直接画像を受け取りが行えない(共有URLへ飛んで直接そこから見ないと見れないので、imageタグで表示ができない)

崩れるだろうけど、AAで言うとこんな感じになってしまった
[Nginx@RasPi] — location /blog/ proxy_pass —> [WebStation(Nginx)@NAS] package:WP(Apache)へのalias:blog
        └– location /blog_images/ proxy_pass —> [WebStation(Nginx)@NAS] /web/images
ポップ数が多い…

さあ、これで外から見える位置に画像を置けるようになった
(URL作成や埋め込みが非情に面倒くさいのだが)
なくなった画像を探しながら、もう一度取得しながら埋めて回りましょう


WPのSQL類の設定(SynologyNASにおけるwp-config.phpの場所)

最初、これで結構時間を取られた
結論としては、SynologyのWebStationを使うようなパッケージは以下の位置にすべて放り込まれている

※検索避けにWPという略語にしてます

$ ls /var/services/web_packages/
@eaDir   phpMyAdmin WP

なので、Synology Packageで入れたもののwp-config.phpはここ

$ find /var/services/web_packages/ -name wp-config.php -type f 
/var/services/web_packages/WP/wp-config.php

自分がやったような、DSMのアップデートを行って、
 error establishing a database connection
というエラー文が表示されてしまった場合、WPのwp-config.phpがおかしくなっているであろう
そのため、php→MySQL(or MariaDB)の認証に失敗しているだけなのだ
落ち着いて、mysqlコマンドからqueryを叩くと、ちゃんとDBに保管されていた記事などのデータは残っていることが確認できる(怖くなってphpMyAdminでも確認した)

sshして、wp-config.phpを見よう

Ubuntu上でアスカを動かす(成功)

前回記事(Ubuntu上でアスカを動かす(できなかった時のログ))の続き?
続きというほどではないが、やったこととしては続き
もしUbuntuでアスカを動かしたいという人がいるのであれば、この記事を中心にトライしてほしい
それをLinux(Ubuntu18.04)上でWineを使って動かしてみる。

環境

ということで、改めて環境

ハード:core i7 6800K / 32GB / GTX1080
メインPC(ホストOS):Windows 10 pro
VMware:WM ware Workstation 15 Player / 15.5.7 build-17171714
Linux環境(ゲストOS):Ubuntu 18.04.05 LTS

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

聞いた話からVM環境再設定

前回の記事でも書いてあるが、結局あれから色々やったがだめだった
ということで、予定地さんへ聞いた
DLL等は入れず、wine-developmentのversion 5.0で動くとのこと
あと、VMwareの3Dアクセラレートを無効化も必要らしい
予定地さんのUbuntuは20 らしいが、PPAをやっていたときは、出たか出てないか、ギリギリの時期だったはず(超曖昧記憶)なので、後回し

VMwareの3Dアクセラレータ

VMwareの3Dアクセラレータが描画周りを邪魔して、落ちるらしい
ゲストOSを止めて、設定→ディスプレイから3Dアクセラレータを無効化(下記画像)
これでおk
VirtualboxやらHyperV、WSLなんかはわからないが、このあたり気をつける必要はあるだろう

Wine環境

wineを5.0にする

まず現wine環境

$ wine --version
wine-3.0 (Ubuntu 3.0-1ubuntu1)

やはりというか、バージョンが低い
wine 5.0以上へ更新しようと思うが、apt installで入れただけなので、公式のパッケージは3.0なのだろう
buildして入れるか、なにかしないと行けなさそうだ

Ubuntu 18.04に最新のWINE(5.0.0)をインストールする – 330k info https://www.330k.info/essay/install-wine5-to-ubuntu-18.04/
ここを参考にwine 5.0を入れる
Ubuntu18.04まで同じ環境の人がいるとは

最後まで読んでからであれば気づくが、WineHQに記載のコマンドを実施する前にもう一つレポジトリ追加をする必要がある。
レポジトリURLは環境によって多少変わるだろう。
https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/
ここから環境のRelease.keyを探して、apt-keyに突っ込む

$ wget https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/Release.key
$ sudo apt-key add Release.key
$ sudo apt-add-repository 'deb https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/ ./'
$ rm Release.key
$ sudo apt update

何か入れる必要はない(というか依存関係のパッケージを入れるために必要みたいなそんな感じ)
あとはwinehqからwine 5.0を入れる

$ sudo dpkg --add-architecture i386 
$ wget -nc https://dl.winehq.org/wine-builds/winehq.key
$ sudo apt-key add winehq.key
$ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'
$ rm winehq.key
$ sudo apt update
$ sudo apt install --install-recommends winehq-stable

これだけでwineの5.0以上が入る
2021/05/07の時点ではwine 6.0が入った

$ wine --version
wine-6.0

wine-developmentを入れる必要があるかどうかはわからないが、
winehq-stableを入れてる状態でwine-developmentを入れるとwinehq-stableが削除され、wine-3.6が入った、そしてアスカは起動しなかった(アスカ起動後検証)
ちなみにwinehq-developmentはない
wineでDLLコンポーネント類は入れる必要なかった

アスカ起動

あとはアスカがあるフォルダでアスカを起動するだけ
前回記事に書いてあるが、Ubuntuに入っているアスカはWindowsにインストールしたあとのフォルダ(C:\Program Files (x86)\CHUNSOFT\AsukaPC)をオフライン化パッチNoCDパッチを当てたバックアップもの

前回記事からwyxe
アスカはCDをISO化して、バックアップしていた。
メインPCにはAsukaPlusが導入されており、VM上のWin10は開発者オプションを付けてAsukaToolsを動かす試みを行って断念したままも状態だった。なので2016年の評価版Win10のVM上でそのISOをマウントして、インストール
そのインストールしたexe郡をそのままNASに入れてバックアップしたものを用意したしていた
→あとに出てくるが、オフライン化パッチを当てる必要があったので、当てたexe郡を更にpatchedとしてバックアップ。それをUbuntuに持ってきて利用した
セーブデータ管理に使われるレジストリ関係はノータッチ

~/CHUNSOFT/AsukaPC$ ls
 00000000.016
 00000000.256
 AsfPc.OLD
 AsfPc.exe
 Asuka.chm
 CheckAppExec.exe
 DrvMgt.dll
 EPatch.exe
 ERROR.LOG
 Loader.exe
 SECDRV.SYS
'[NoCD Patch] 風来のシレン外伝 女剣士アスカ見参! Ver.1.7.0.0..EXE'
 data
 dev_caps.csv
 save
 使用許諾契約書.txt
~/CHUNSOFT/AsukaPC$ wine AsfPc.exe 

前回試行錯誤(.Net周りを入れたり色々した)したせいか、monoやらgeckoやらwineの設定でいくつかが入った。全部OKでおk
今度は起動した!!
ムービーはasf周りが入っていないので、ムービーの再生に失敗しましたはでる
wmvではないんだね、似たようなものだとは思うが

アスカ、起動ムービー失敗画面

ムービー失敗中のwine出力は以下の通り

01c8:err:gstreamer:unknown_type Could not find a filter for caps: "video/x-ms-asf"
01c8:err:gstreamer:watch_bus decodebin0: GStreamer はプラグインを見つけることができません
01c8:err:gstreamer:watch_bus gstdecodebin2.c(4679): gst_decode_bin_expose (): /GstBin:bin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: Advanced Streaming Format (ASF) (video/x-ms-asf)

0024:err:gstreamer:gstdecoder_init_gst Failed to play stream.

OPムービーなんていいんだよ!OKOK

Ubuntuでアスカ起動画面
https://twitter.com/meto4d/status/1390877748944539651

ちゃんと動いた!!!
やったね!
32bit版の問題もあるが、パッケージ入れるときにi386は指定して、ちゃんとそれが入っているので、環境変数周りを設定する必要もないようだ

$ apt list --installed | grep wine
(抜粋)
wine-stable/bionic,now 6.0.0~bionic-1 amd64 [インストール済み]
wine-stable-amd64/bionic,now 6.0.0~bionic-1 amd64 [インストール済み、自動]
wine-stable-i386/bionic,now 6.0.0~bionic-1 i386 [インストール済み、自動]

まとめ

32bitを含めたwine version5.0以上のstableを入れるだけでアスカが動いた
VMwareの場合は3Dアクセラレータ無効化の必要もある
じゃあ次はwineのコンテナやMacで試してみたいな
コンテナでやる場合はGUIをどうするかという問題が先に解決すべき部分だな

ありがとう予定地さん!

Ubuntu上でアスカを動かす(できなかった時のログ)

風来のシレン外伝「女剣士アスカ見参!」for Windowsは2002年12月20日に発売されたWindows用ゲームである。
それをLinux(Ubuntu18.04)上でWineを使って動かしてみる。
結論としてはできなかった。が、何をしてできなかったかを残す。
日記だしね

背景

昔、自分はTwitchPlaysPokemon*1にはまり込んでいた
USE HELIX!!ヽ༼ຈل͜ຈ༽ノ RIOT ヽ༼ຈل͜ຈ༽ノ

今でもたまに見るし、コマンド送信して遊ぶ
そんな思い入れもあり、某配信でそういう話をしてたら、やってくれた。
ペカ界隈で賑わせていたPeercastPlaysAsuka(通称PPA)*2
あれがめちゃくちゃおもしろかったslz

アレはUbuntu(だったかな?)上のwineでアスカを動かしていたので、Linuxでアスカはできるんだ!と感動した
wineというのがあるとは知っていたし、某大学の地下室の実験室はポンコツPCのVineでwineで頑張るなんていう糞環境を使ったこともあった。(さすがに変わっているといいなあの環境は)
知識としては知っていたが、ちゃんと動作しているところを見るのは始めてだった
当時はそういう意味で感動した(2回目)
あの環境を目指したい

加えて、最近なんでコンテナコンテナってやってるかというと、
アスカは面白いんだが、感覚的にやはりWin10環境だと乱数の偏りが違うように感じたり、GTAなどのハック系ゲームがWin10環境だと遊びにくい
そこでコンテナにアスカを閉じ込めてプレイできたらいいんじゃないか?と思ったので、その足がかりとして、Ubuntu18.04(VMware上)にwineを入れて、wineでアスカを動かすということを試しにやってみる。

Voiceroidをコンテナに閉じ込めた話とか聞いたことあるし、そっちもやってみたいね

*1 TwitchPlaysPokemon: Twitchのコメントでポケモンが操作されるという企画もののポケモン配信。誰かがUPとコメントすれば上が入力され、Aとコメントすると、Aが入力される。それをみんなが一斉にコメントで操作するというものだ。最近(3年前?)ポケモンルビーをプレイしながらポケモンスタジアムが動いていたりもした。
*2 PPA: TwitchPlaysPokemonのオマージュで、レスでアスカを操作する企画もののアスカ配信。

環境

2021年5月という時期にUbuntu18.04 LSTを使う
まあ、Linux環境でーってなったら職場PC(CentOS7)とかRaspberryPi(archlinux)を使うので、メインPCのVMwareに入ってるUbuntuが古い
正直VMwareに入れただけになってしまっている

1億年ぶりに起動したら、アップデート関係で結構たいへんだった
大変と言っても、1コア割当の2GBメモリだったり、起動したらしたでアップデートが走って終了できなかったり、終了させないと割り当て変更できなかったり、低スペのまま見守るしかなかったというだけだが
ということで、Ubuntu環境は以下の通り

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.5 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.5 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

アスカはCDをISO化して、バックアップしていた。
メインPCにはAsukaPlusが導入されており、VM上のWin10は開発者オプションを付けてAsukaToolsを動かす試みを行って断念したままも状態だった。なので2016年の評価版Win10のVM上でそのISOをマウントして、インストール
そのインストールしたexe郡をそのままNASに入れてバックアップしたものを用意したしていた
→あとに出てくるが、オフライン化パッチを当てる必要があったので、当てたexe郡を更にpatchedとしてバックアップ。それをUbuntuに持ってきて利用した
セーブデータ管理に使われるレジストリ関係はノータッチ

パッケは、以前、実家に帰ってゴタゴタをしたさいに持って帰ってきたからあるよ!

Wineを入れる

まずはwine-stableを入れる
結論として、これだけでは動かなかった

$ sudo apt install wine-stable
$ wine AsfPc.exe 
0027:err:ntdll:RtlpWaitForCriticalSection section 0x7bd017c0 "loader.c: loader_section" wait timed out in thread 0027, blocked by 0028, retrying (60 sec)

たしかにppaの最初そんな話をしていた記憶がある

wine-developmentを入れて、こっちでやってみる
こっちなら動いた

$ sudo apt install wine-development
$ wine AsfPc.exe

Windowsのスタートメニューにある風来のシレンアスカ見参のショートカットからはLoader.exeを起動しているが、アスカ見参の実態はAsfPc.exeなので、こちらをwineで叩く

アスカ初回起動シーン

そりゃそうだわw
パッチ当てたりNoCDを入れたりする

オフライン化パッチを当てたバックアップファイルにNoCDを入れたものを再度wine実施

$ wine AsfPc.exe 
0009:err:d3d:resource_init Out of adapter memory
0009:err:ddraw:ddraw_create_swapchain Failed to create swapchain, hr 0x8876017c.
0009:err:ddraw:ddraw_set_cooperative_level Failed to create swapchain, hr 0x8876017c.
0009:err:d3d:resource_init Out of adapter memory
0009:err:d3d:resource_init Out of adapter memory
0009:err:ddraw:ddraw_create_swapchain Failed to create swapchain, hr 0x8876017c.
0009:err:ddraw:ddraw_set_cooperative_level Failed to create swapchain, hr 0x8876017c.

うーん

D3Dのメモリを変えてみる

$ wine regedit
→これでレジストリエディタを動かせる
これだからLinuxは

マルチバイトが豆腐になってる
というか、なんでわざわざ日本語で起動してくれるんだ
Ubuntuの言語設定読んでるのかな?
ここを参考にフォント入れる。これでOKだった
Wineの文字化けを直す方法 | ばったんの技術系ブログ

ここら辺を参考にメモリというかDirect3D設定を弄ってみる
Manually set VideoMemorySize | Knowledge Base | CodeWeavers
Wine/d3d:resource_init Out of adapter memory[SOLVED] – Linux Mint Forums
書いてあるように、Direct3Dキーを作ってプロパティを書く
HKEY_CURRENT_USER/Software/Wine → Direct3Dを作って、VideoMemorySizeを型REG_SZ(文字列値)で作って512にでも設定

レジストリ設定後

再度wine AsfPc.exe

アスカ起動成功?失敗?

おっ?!おおっ!?
ここまですんなり動くなあ

確かアスカのムービーはWMVで作られていて、Linuxにはそのデコーダがないので、再生に失敗するのを覚えている
そのまま再生に失敗しましたメッセージでゲームが続行したはずだが、完全にフリーズして動かない
後々WMVのデコーダを入れて再生するようにした記憶もあるが、、、
一回強制終了

何もせず2回目起動
変わったエラーを吐いてそのまま終了した

$ wine AsfPc.exe 
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16f950, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16f950, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x164190, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16c098, last error 0x591
0009:err:quartz:GetClassMediaFile Media class not found
0043:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x274d258
0037:err:eventlog:ReportEventW L"6"
0037:err:eventlog:ReportEventW L"7"

3回目起動

$ wine AsfPc.exe 
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16f950, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16f950, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x164190, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16c098, last error 0x591
0009:err:quartz:GetClassMediaFile Media class not found

はっ!!!起動するぞ!!

このあと、ムービーの再生に失敗しましたウィンドウがでて、タイトルに辿り着く前に2回目起動時と同じエラーを吐いて終了
すごく悲しくなった

そのあと、色々やってるとにっちもさっちも動かなくなったのでUbuntu再起動
ちょっと違うエラーが出た

$ wine AsfPc.exe 
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16f988, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16f988, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x1641c8, last error 0x591
0009:err:d3d:wined3d_swapchain_update_swap_interval_cs wglSwapIntervalEXT failed to set swap interval 1 for context 0x16c0d0, last error 0x591
0009:err:quartz:GetClassMediaFile Media class not found
0046:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x211140
003b:err:eventlog:ReportEventW L"6"
003b:err:eventlog:ReportEventW L"7"
0050:err:service:process_send_command service protocol error - failed to read pipe r = 0  count = 0!

どうもDirectX周りがだめらしい?
フォントを入れたときのようにwinetricksからDLLを入れる
$ winetricks
これで起動するGUIから、Install a Windows DLL or componentを選択
DirectX周りでエラーが出ているっぽい?ので、なんとなくd3dx9_43、ムービー再生にffdshowが使えるっぽい?ので、これもいれた。
ffdshowはwmv周りのオプションを全部のせで

しかし、これでも結局起動はしなかった
正確に言えば、起動はしたが、ゲーム内に進むことはなかった
基本的に2回目のエラー
0043:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x274d258
0037:err:eventlog:ReportEventW L"3"
0037:err:eventlog:ReportEventW L"6"
0037:err:eventlog:ReportEventW L"7"

というエラーで終了する。
0037:err:eventlog:ReportEventW L"3"
は出たり出なかったり

結局、起動実績のある人に聞くしかなかった残念
聞いて気づいたが、VMwareの3Dアクセラレータの設定や、Wineのバージョンなど、落ち着いて考えれば気づく話ばかりだった

まとめ

結局だめでした
その後、どう動かしたか聞いて、再チャレンジ
結果動かすことができたので、別記事でまとめます。

余談

なぞのファイルだと思ってたんだけど、これ起動時に出てくるBMP画像ファイルだったんだね
解像度は同じなのにサイズが違って2つある