ubuntu22.04のDockerにwineを導入し、Windowsアプリをrdp経由で動作させる手順(Kinetic BaseStation導入)その1 (scottyhardy/docker-wine)

FlightRadar24が普及するまでは、ADS-Bの信号を可視化するためにはKinetics社の「SBSシリーズ」を利用して、ADS-B信号を受信することが一般的でした。

SBSの機器自体は他のサービスが普及して必要なくなったのですが、付属のソフト「BaseStation」がまるで管制官のレーダースクリーンみたいで、何とも捨て難い魅力があります。

「BaseStation」はWindowsXP時代のソフトであり、最近のWindowsではインストールすらもできないと思いますが、ubuntuのDockerを利用し「wine」のイメージを利用することで。RDP経由で動作させることができましたので、自分メモとして残します。

今回はDockerを利用しましたが、ホストOSにwineを直接インストールしてもOKです。

BaseStation動作イメージ(http://woodair.net/sbs/article/Barebones2_data.htmより引用)

動作イメージ:

ubuntu22.04 LTS → Docker → wine → BaseStation → RDP(RemoteDeskTop) → macOS(WIndowsPCでも可)

以下構築手順です。

手順1: Docker上にwine+remotedesktopイメージを展開

# ubuntuにログインし、作業フォルダの作成を行い、作業フォルダへ移動
cd
mkdir wine
cd wine

# 起動ファイルの取得
wget https://raw.githubusercontent.com/scottyhardy/docker-wine/master/docker-wine
chmod +x docker-wine

# rdpをサービスとして起動。ホストの/tmpをwineの/tmpにアサイン(user:root volume:/tmp:/tmp)
./docker-wine --as-root --volume="/tmp:/tmp" --rdp=start

# rdp接続のuser/password
Username: wineuser
Password: wineuser

# rdp経由でDocker上のデスクトップにアクセスできたら、BaseStationを導入します。

# 参考)rdpを停止
./docker-wine --as-root --rdp=stop

手順2:BaseStationの導入

# 以下のページからソフトをダウンロード(2023年4月現在、ソフトの配布は終了しています)
# ホストの/tmpにBaseStationV168CD.zipがある前提です
cd /tmp
<img src="https://s0.wordpress.com/mshots/v1/http%3A%2F%2Fwww.kinetic.co.uk%2Fbasestationdownloads1.php?w=100&h=100" alt="" class="blog-card-thumb-image" height="100" width="100" data-eio="l" />Basestation and Firmware<img src="//www.google.com/s2/favicons?domain=www.kinetic.co.uk" class="blog-card-favicon-img" alt="" width="16" height="16" data-eio="l" />www.kinetic.co.uk<img src="//b.hatena.ne.jp/entry/image/http://www.kinetic.co.uk/basestationdownloads1.php" alt="" data-eio="l" />

# アーカイブを解凍
unzip BaseStationV168CD.zip

# プログラムをwineのフォルダへコピー(インストールは不要です)
cp -R /BaseStationV168CD/program\ files/Kinetic/ /home/wineuser/.wine/drive_c/Program\ Files/

# ハマリポイント! 「ftd2xx.dll」をBaseStationのフォルダへコピーする
# 「ftd2xx.dll」は「CDM20814_Setup.exe」を実行するとインストールされるのですが、wineや最近のWindows環境では dllがうまくインストールされません
# 一度古いWindowsPCで実行して「c:\Windows\system32\」からコピーする必要があります
cp ./ftd2xx.dll /home/wineuser/.wine/drive_c/Program\ Files/Kinetic/Basestation/

# BaseStationの起動
cd /home/wineuser/.wine/drive_c/Program\ Files/Kinetic/Basestation/
wine BaseStation.exe

以上の作業でWindowsアプリケーションがubuntuのDocker(wine)で動作しました。

・Docker上で構築したので、作成したコンテナのイメージを適宜保存してください。

・「BaseStationV168CD.zip」と「ftd2xx.dll」の入手がポイントになります。

ネット上のアーカイブサイトに残っている可能性がありますので、頑張って探してみてください。

(このほか、port:10001でBaseStationと通信できるADS-Bの受信機が別途必要です)

動作イメージ:

参考)

動作したコンテナのイメージ化処理

# 書式
# docker commit -a authorname ContainerID image-name:version 

# 実行
docker commit -a author 7e073e0b9c15 basestation/full:1.1

# 確認
docker images
REPOSITORY          TAG    IMAGE ID       CREATED          SIZE
basestation/full    1.1    ede903568557   3 seconds ago    3.08GB

イメージから起動

docker create --name sample -it ede903568557

dockerのコンテナイメージをexport/importする

docker export : exportと同時にgzipすること、でファイルのサイズは1/3程度に圧縮される

docker export basestation/full | gzip -c > basestation.wine.1.1.tar.gz

docker import

cat basestation.wine.1.1.tar.gz | gzip -d | docker import - basestation:1.0

Dockerのimport/exportで参考にさせていただきました。有用な情報をありがとうございます。

Docker-wine配布元