【GAME】ARMA3 EXILE MODサーバの旅その58
追記:via Wineッ?
追記:extDB2に戻す
追記:衝撃の事実
もうやだextDB3(Linux)
。・゚・(ノД`)・゚・。
やっと、やっと、やっと動いたよぉ・・・。
“extDB3 Loaded”
土曜の昼下がり、このログ1行を見て歓喜する人間が居たんです。
3日間ぶっとーしで悩みました。
色々な世界各国言語の記事を読み漁り、ほぼ全ての解決方法を試しましたが結局のところ駄目やった。
(;´∀`)・・・
世界中のextDB3-Linuxトラブルを解決されればと、今この瞬間のスナップを記録しておきたい(日本語でしか書かないけど)
色々試した事も備忘録として。
動作環境
OSのバージョンはこれ(現時点で最新版Ubuntu18.04)
Linux sabamiso 4.15.0-23-generic #25-Ubuntu SMP Wed May 23 18:02:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
extDB3バージョンはこれ(公式)
extDB3-1031.7z(2017/8/27)
AMD A6-3650(OC:3.5Ghz)
ディレクトリ構造
面倒なのでスクショで。
MOD部分、シンプルなので、これしかありませんけども。
@ExileSerevr内
テストするため無駄なファイルが入ってますが、解凍した内容全部ここです。
公式では、@ExileServerにコピーとか書かれてますが、やんなくてOKやった
※Linuxで意味無いDLLファイルは削除してます
通常のサーバMODとして、@extDB3を呼び出します。
※スクリプトはここで公開してます
サーバMODを書く順番は関係無いようです。
ログで見る対策
@extDB3/extdb3.pbo内から出力されてるメッセージで、外部モジュールの呼び出しが成功するかどうかで判断してます。
モジュールが正常に読み込まれてるため、これ以降のエラーは、MySQL(データベース)の方に問題がある事になります(@extDB3/logにも出力されます)
ここに出てない場合は、ファイルの配置に関するエラーです。
Linuxで注意する事は、ファイル名のCase sensitive(大文字小文字)と、パーミッションです。
Smabaなどでファイル管理してると、実ファイルがどうなってるか分からなくなります(Sambaの設定次第)
パーミッションは、サーバ稼働のユーザーIDと一致させます。rootで動かさないように。
sudo chown -R steam:steam *
※ディレクトリも引っ括めてまとめて変更(steamユーザーとして)
CallExtension 'extDB3’ could not be found
これを解決するまでが地獄です。
これが出た場合、objdumpという開発ツールの類が無いという事です(内部エラーで、ダンプしようとしてる?)
ま、Exileとは関係無いものですが、このツールは以下でインストールできます。
sudo apt install binutils
extDB3モジュールに必要なファイルが不足してるか確認。
ldd @extDB3/extDB3.so
とすると、不足してるものがあるかどうか調べられます。私の環境では以下が表示されました。
linux-gate.so.1 (0xf7fcb000)
libtbbmalloc.so.2 => /usr/lib/i386-linux-gnu/libtbbmalloc.so.2 (0xf7a42000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7a3d000)
libz.so.1 => /usr/lib32/libz.so.1 (0xf7a1e000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf791c000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf78fd000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7721000)
/lib/ld-linux.so.2 (0xf7fcd000)
sudo apt install libtbb2:i386
sudo apt install lib32z1-dev
全てリンクされてる様に必要なモノを導入してください。
こういったextDB3トラブルで、海外の掲示板で、「ファイル名を小文字にしてみな!」的な書き込みを沢山見かけますが・・・
これは意味無しです。
案の定、extDB3.soを、小文字のextdb3.soにすると、動きません。
私はこれで動作しましたが、extDB3公式に書いてる事や、Exile公式フォーラムに書かれてる事とは全然違います。
単純に、Arma3の検索パス内にあれば良いんじゃないか?という結論に達しました。
(;´∀`)
モジュール系のエラーは、OSのアップデート時にリンクが外れたりするかも、なので、要注意です。
疲れたぁ・・目が痛い(;´Д`)
追記:衝撃の事実
Arma 3 Console version 1.82.144710 x86
ん?
:(;゙゚’ω゚’):・・・・・・
えっ、64ビットで動いてるんじゃないの?
あんれ?1.0.3ん時、動いてたやん。どないな事?
こっちは、確実に64ビットで動いてる・・。
(´;ω;`)
おいらは今まで何をやっていたのか・・。
この記事を投稿後、謎のエラー出まくりで、いかんせん対処がどこにもヒットしない。
Class destroyed with lock count 1
Class CfgBrains destroyed with lock count 1
Class Default destroyed with lock count 492
Class HitEffects destroyed with lock count 492
Class NVGMarkers destroyed with lock count 492
Class MissileCore destroyed with lock count 57
Class BombCore destroyed with lock count 16
Class LaserBombCore destroyed with lock count 10
Class RocketCore destroyed with lock count 12
Class ArtilleryRocketCore destroyed with lock count 1
Class BulletCore destroyed with lock count 140
Class ShotgunCore destroyed with lock count 2
Class ShellCore destroyed with lock count 74
Class SubmunitionCore destroyed with lock count 26
こんなのがたっぷりと。。
ソースコードを追うしかないか・・と思った矢先に、先程のログを見つけちゃいました。早く気付いてよかったというべきか・・。
(;´Д`)
つまりは、Linuxサーバでは、32ビット環境でのみの利用となるようです。
ボヘミアさんが、Linux64ビット版Arma3サーバを開発したら話は変わりますが・・。
開発Winサーバと、ミッションファイルの管理が変わっちまう。Winの方もextDB2に戻すしかないか。
追記:extDB2に戻す
肩を落としながら、extDB2に戻す作業をしました。
goemonサーバ管理者さん配信のTwitchを見ながらですw
(;´∀`)
※オーストラリアMAPのPvEのようです、Exileというよりも違うゲームに仕上がってますけども
備忘録:extDB2での配置
サーバルート
xm8.so、extDB2.so、extdb-conf.ini
/extDB以下 (起動すると勝手に作られるが)
/logs (起動すると勝手に作られるが)
/sql_custom_v2 (exile.iniだけ入ってる)
・・となります。
extDB2はサーバMODとして登録は不要です(登録したところで、検索パスが増えるだけだけどもね)
extDB2.soのライブラリ不足は無いようでした。
追記:via Wineッ?
Wineというモノが・・。
Linux環境上でWindowsバイナリだけを実行できるアレです(違法モノじゃないですよw)
OSエミュレータ(仮想環境)では無いので、実機とほぼ変わらず高速で動作します。
これが使えれば、Linux上で、Arma3のWindows64ビットサーバを動作させられるんじゃないか・・と。
(;^ω^)
ただ・・Wineの知識が皆無なので、それなりに壁が。
動かしたいモノはサーバなので、もしかしたら難なく動くかもしれません。
いずれにせよ調査が必要です。
ここのスレッド(海外)で、実際に話題になっていて、動作してるようなのです。
簡単にはいかなそう、ですけども・・。
Windowsライセンス無しで行くには、この手段しかありませんが。
(;´Д`)
分からない方にご説明
1.Arma3サーバをLinuxマシンで動かしたい
Windows買わなくてもOK、法律的にもクリア
2.だがしかし、現在Linuxは32ビット版しか無い
従って、extDB3も利用できない
3.Wineで無理やりWindows64ビット版を動かす
仮想OSでは無いし、それなりに速い
4.どうなる事やら(現在ここ)
サーバなのでモニターが無い。なので、仮想画面を作成して、その中にWindows版のSteamとArma3サーバをインストール。
動けばこっちのモン。Windows版の環境をそのままコピーすればええだけだ。
画面にアクセスしたくなったら、リモートからVNCで操作できる。
追記:牛歩状態でWine試飲
仮想画面作って、リモートからVNCでログインできる所まではきた。
こういう自由度の高さは、さすがLinuxだと関心してる。
画面は昔懐かしいBlackBox環境です。
Wineも入れた、Steamも入れた。
まずは、正常に偽Windows環境が動くかどうか、です。
(;´Д`)
ただ、下手な操作すると、落ちるんだよなぁ。一個づつ解決していかないと。
追記:Wine泥酔途中経過
素晴らしいツールです。
それっぽいエクスプローラーや、メモ帳など、普通に動くんですね。
Steamもちゃんと、動作してくれてるようです(あくまでもコマンドレベルですが、ユーザーログインやバージョンアップなど確認)
※左上のウィンドウは、トレイアイコンのつもりなのでしょうw
wine-gecko(ウェブ系)やwine-mono(.Net系)のパッケージを入れて無いので、グラフィカルなモノはまだ試せてません。
後は、Steamコマンドから、Arma3サーバ(Windows版)をインスコして、動作確認するだけです。
(;´Д`)はぁ・・
枝豆とモロコシがたべたい
ディスカッション
コメント一覧
どうもですー
サーバーPCを入れ替えする際にLinuxにしようと頭の片隅に入れていましたがまさか32bitにしか対応していなかったとは・・・・
最近はいろいろArma3やPC関係で勉強の日々なんで自分もブログをはじめようかなとも考えてしまっていますw
今は、自分のところではVehicleCustomは後回しにして、今は、有料で攻撃ヘリ、戦車などの兵装をリアームできるアドオン「AVS」の導入をしていますが、64bitではうまく動作できず詰んでいる状態ですw
どうもです。
サーバのために、Windows10ライセンス(17000円)を購入するのは気が引けるんで、正直どうするか悩んでます。
(;´Д`)今までの苦労は・・w
でも、1.0.3の時、同じ環境でextDB3動いてたんですよね・・。正直、混乱してます。
goemonさんとこのサーバも、ゴリゴリ入れ込んでるようでしたね。
アドオンレベルだと、スクリプトで動作するので。OSや64ビットとか関係ないはずです。AVS、何か特殊なやつなんでしょうか。
AVSも同じく、@ExileServerの中のアドオンフォルダに入れるのですが、それプラスSQLに入力するものがあるのと、ExtDBのSQL_Customフォルダの中にあるexile.iniの所にavs.iniも入れるのですがどうも、それが悪さしてるみたいで、extDB3のログに
確か・・・9-ADD_DATEBASEってエラーがでて、サーバー起動時のLockが解除されなかったんですよねw
なるほど。
ここん所調べまくったのでw、Dorosiiさんのコメが、さっと頭に入ってきて、身震いしたところですw。
9-ADD_DATEBASEって、extDBの内部コマンドで実際にDBへのコマンド送信用です(0-9まである)
直感ですが、設定やファイル配置の類じゃなくて、データベース側のユーザー権限とかのエラーとか?
Wineというのがあるんですねwなかなか面白そう・・・
AVSですがデータベース側の問題ということで少しピンときましたw自分のサーバーPCでは2つのExileサーバーを動かす予定なんでデータベースの名前を変えているということを思い出して、AVSの中身をいじったんですが今度は
extDB3: Config Error: exile_esseker: No such node (exile_esseker.IP)
ってエラーになっちゃったんですよねwいろいろ試行錯誤してみなくてはです・・・・w
新しい地獄としてしか見てないですw(Wine)
extDB3: Config Error: exile_esseker: No such node (exile_esseker.IP)
初めてみるエラーです。
extdb3.confのエラーって事でしょうか(そんな単純じゃないか)
AVS側のエラーでしょうか。
ストレートにメッセージを見ると、インデックスデータが破損してる?(むむ・・)
余力があれば・・ですが、extDB3の同梱されてるデバッグ版(optional/Debug Files/以下)で稼働させれば、extDBログに何かしらヒントが出るかもしれません。
自分もWineをちょっと調べてみましたが、今のサーバー機で新しく導入するのもありかなと思いましたw
さて、昨日おっしゃってくれたデバック版の存在を知り、起動してみたところやっぱ
Error Invalid Format: 9:ADD_DATABASE:exile
extDB3: Output to Server: [0,”Error Invalid Format”]
この文しか気になるところはないんですよねw
後は、なぜかRPTログにdetabaseに一回接続して成功して、サーバーの起動時の#kick 99の後にもう一回接続しようとしてエラー吐いているのが気になりましたけど・・・もう諦めるしかなさそうですかな・・・・
どうもぉ
Wineまでイジると、かなり周辺知識が溜まりますよ。
ただ・・地獄ですよ(細かい情報しか無い)
extDB3: Output to Server: [0,”Error Invalid Format”]
Invalid Formatってのが引っかかります(推測ですけど)
SQL構文のミス?か、データベース側の制限に引っ掛かってるとか(数字項目に、文字を入れようとしたとか)
extDBデバッグログに、SQL文も出力してくれればいいんだけど。
AVSのコードから、SQL文探して・・・
(;^ω^)まぁ・・そこまで追いかけるのは俺くらいかw
#kickの後辺りは、実際にミッションがロードされる辺りですので、AVSの初期部分になにかありそうとは思えるんですが。
諦める前に、AVSの件フォーラム書き込んでみたら、どうでしょう。
AVSのSQL文?というよりはDatabaseに接続するプログラムが記載されているファイルは見つけてるんですよね・・・ただなんでこれがここにもあって2回ログインする羽目になっているんだというのが分からずじまいでw
AVSのフォーラムには問い合わせて3日ぐらい放置状態ですw
うむむ、何やらもっと深刻な状況だったんですね。。
(;^ω^)
だとすると、AVSの初期化スクリプト周辺に、何らかの記述ミスがあって、複数回呼び出されてる感じでしょうか。
設定系sqf内で、コピペミスとかで、#includeを複数回書いてたりとか。
diag_log “なんちゃら”;
と書くと、ログ内に出力できるので、怪しいと思う場所に書きながら、動きを察する事もできます(まるでデバッガーですが)
公式ヘルプ
https://community.bistudio.com/wiki/diag_log
変数の中身を知りたい時は、
diag_log format [“%1, %2”, player, time];
で出力できます。
長いログに巻き込まれるので、
diag_log format [“*(゚∀゚)ノ* %1, %2”, player, time];
な感じで書けば見つけやすいです(注:日本語は使えない)
数日ぶりです・・・あれからいろいろ試行錯誤して放心状態になっていましたw
結果、駄目ですね・・・・w
今の状況ですと、AVSのアドオンなしでスムーズに起動、ありで一度、#kick 0コマンドが99まで流れ、そこでまた99まで流れてアンロックという謎行動を行っていますがサーバーに入るとアンチチートシステム「infiSTAR」が動作しなくなってしまいますw
細かく話しますと
extDB3のログにはいつもの文でその下に
[Thread 5856] extDB3: Locked
extDB3: Error Invalid Format: 9:ADD_DATABASE:exile
が表示されRPTログでは1回目の
“ExileServer – Connected to database!”
“AVS – Connected to database!”
があって#kick 0が99まで流れ#unlockが流れず
・”ExileServer – MySQL connection error!”
・”ExileServer – Make sure [Database] in the extdb3-conf.ini is set to [exile] unless you have a different database setup!!!!!”
・”ExileServer – Please have a look at @extDB3/logs/ to find out what went wrong.”
・”ExileServer – MySQL Error: Could not add database: [0,””Error Invalid Format””]”
・”ExileServer – Server will shutdown now :(”
と出て再び#kick 0が99まで流れて
・Error in expression 0 || {count _driverMaga>
・Error position: 0 || {count _driverMaga>
・Error Undefined variable in expression: _driverweapons
・mpmissions\__cur_mp.Esseker\AVS\AVS_fnc_getConfigLoadout.sqf, line 34
が流れて#unlockが流れるという仕組みですw
もともとextDB2用のアドオンを有志がextDB3ように改造したものですが何分古いですからね・・・ここまでくるとうーんってところですがねw
どうもお疲れ様です。。
(;´∀`)
私もWine地獄で彷徨い続けております。
もう、ギブアップ近いですw
#kickが2度流れるのは、正常時もそうなんですか?
rcon絡み臭いですね。
”ExileServer – MySQL connection error!”が出てるので、そもそもDBじゃ無かったですね・・。
気分転換にAVSの初期化部分覗いてみますね(exDB3向けは別に配布されてます?)
どういうアドオンか、分かってませんけどもw(車両関係の拡張?AdvancedVihecleうんたら?)
正常時は1回しか流れなくてAVSを入れた時だけですね
AVSはAdvanced Vehicle Systemというアドオンでデフォルトの補給システムを大幅に改善して設定した特定のオブジェクトの近辺で各兵装の補給にポップタブがかかるようになるシステムです。デフォルトだと補給車ではいおしまいなんでそれがどうしても自分の中で納得いかなくてw
AVSのexDB3は別で配信されてて、非公式で1.4.5、大本の人が1.4.4のままで止まっていますので
1.4.5が配信されているリンクを張っておきます
https://www.exilemod.com/topic/7268-avs-advanced-vehicle-system/?page=58