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
# アーカイブを解凍 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配布元