【GAME】ARMA3 EXILE MODサーバの旅その58

2018年6月16日プライベートarma3,error,exile,mod,mysql

sc20180616115215追記:Wine泥酔途中経過

追記: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)

ディレクトリ構造

面倒なのでスクショで。

sc20180616121731サーバホーム

MOD部分、シンプルなので、これしかありませんけども。
sc20180616121821@ExileSerevr内

おそろしくそのまま
sc20180616121934@extDB3内

テストするため無駄なファイルが入ってますが、解凍した内容全部ここです。

公式では、@ExileServerにコピーとか書かれてますが、やんなくてOKやった

※Linuxで意味無いDLLファイルは削除してます

sc20180616122100サーバ起動時のスクリプト

通常のサーバMODとして、@extDB3を呼び出します。

※スクリプトはここで公開してます

サーバMODを書く順番は関係無いようです。

ログで見る対策

sc20180616130835これが記載されれば成功です。

@extDB3/extdb3.pbo内から出力されてるメッセージで、外部モジュールの呼び出しが成功するかどうかで判断してます。

モジュールが正常に読み込まれてるため、これ以降のエラーは、MySQL(データベース)の方に問題がある事になります(@extDB3/logにも出力されます)

sc20180616124952MODと認識されてるなら、ここに記載されます。

ここに出てない場合は、ファイルの配置に関するエラーです。

Linuxで注意する事は、ファイル名のCase sensitive(大文字小文字)と、パーミッションです。

Smabaなどでファイル管理してると、実ファイルがどうなってるか分からなくなります(Sambaの設定次第)

パーミッションは、サーバ稼働のユーザーIDと一致させます。rootで動かさないように。

sudo chown -R steam:steam *

※ディレクトリも引っ括めてまとめて変更(steamユーザーとして)

sc20180616131655モジュールがロードされてない場合はこれ。

CallExtension 'extDB3’ could not be found

これを解決するまでが地獄です。

sc20180616131940sh: 1: objdump: not 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)

sc20180616132318不足してる場合、この様にnot foundと表示されます。

sudo apt install libtbb2:i386

sudo apt install lib32z1-dev

全てリンクされてる様に必要なモノを導入してください。

こういったextDB3トラブルで、海外の掲示板で、「ファイル名を小文字にしてみな!」的な書き込みを沢山見かけますが・・・

これは意味無しです。

案の定、extDB3.soを、小文字のextdb3.soにすると、動きません。

私はこれで動作しましたが、extDB3公式に書いてる事や、Exile公式フォーラムに書かれてる事とは全然違います。

単純に、Arma3の検索パス内にあれば良いんじゃないか?という結論に達しました。

(;´∀`)

モジュール系のエラーは、OSのアップデート時にリンクが外れたりするかも、なので、要注意です。

疲れたぁ・・目が痛い(;´Д`)

追記:衝撃の事実

sc20180617141528何気なくログを見ていた、その時です。

Arma 3 Console version 1.82.144710 x86

ん?

:(;゙゚’ω゚’):・・・・・・

えっ、64ビットで動いてるんじゃないの?

あんれ?1.0.3ん時、動いてたやん。どないな事?

sc20180617141746急いでWindowsサーバの方を確認してみる。

こっちは、確実に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に戻す

sc20180617145947日曜の昼下がり。

肩を落としながら、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ッ?

sc20180618093913Linuxには、最後の手段がありましたね。。

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試飲

sc20180619160527仮想画面作って、リモートからVNCでログインできる所まではきた。

こういう自由度の高さは、さすがLinuxだと関心してる。

画面は昔懐かしいBlackBox環境です。

Wineも入れた、Steamも入れた。

まずは、正常に偽Windows環境が動くかどうか、です。

(;´Д`)

ただ、下手な操作すると、落ちるんだよなぁ。一個づつ解決していかないと。

追記:Wine泥酔途中経過

sc20180619165531何となくWineというモノが理解できました。

素晴らしいツールです。

それっぽいエクスプローラーや、メモ帳など、普通に動くんですね。

Steamもちゃんと、動作してくれてるようです(あくまでもコマンドレベルですが、ユーザーログインやバージョンアップなど確認)

※左上のウィンドウは、トレイアイコンのつもりなのでしょうw

wine-gecko(ウェブ系)やwine-mono(.Net系)のパッケージを入れて無いので、グラフィカルなモノはまだ試せてません。

後は、Steamコマンドから、Arma3サーバ(Windows版)をインスコして、動作確認するだけです。

(;´Д`)はぁ・・

枝豆とモロコシがたべたい

2018年6月16日プライベートarma3,error,exile,mod,mysql

Posted by nabe