Raspberry PiでWineを用いてWindowsの一部リプレイスを考える

最近はWindows Subsystem for Linux(WSL)を使い、Windows上でLinux環境を動かすケースが増えています。今回ご紹介する「Wine」はその“逆”です。
Wineは、Linux上でWindowsアプリを動かします。

産業用途ではツールソフトを使うことが多いと思います。ある機器と接続して、センサーのしきい値を設定するツール、ロガーのデータ取得ソフト、機器のファームウェア書き換えソフトなど、基本はWindows OS上のアプリでしょう。

しかし近年、最新OSに対応していないソフトウェアがあるのにWindows10のサポートが切れたため、このまま使い続けるにはどうしたものかと困るケースが出てきました。

すべてとはいきませんが、一部はWineで実行させて代替できる場合もあります。

アップデートできないツールソフトの現状

産業用途で使うソフトウェアが現行のOSに対応しなくなった。これは工場や設備現場でよくある話です。
例えば、

  • 機器設定ツールソフトがWindows7前提だった。
  • Windows10でもギリギリのスペックで動作していた。
  • Windows11ではメーカーのサポート対象外になった。

当然ながら新しいOSにメーカーが勧める後継機種を導入すれば、問題は解決できます。しかし、リプレイスする余裕がないのが現実です。

最新のOSにアップグレードをすれば解決することも多い中、そもそもマシンスペックが足りずにアップグレードができない問題もあります。この場合は最新OSごとPC本体を買い替えないとなりません。

仮にそのまま古い機種、古いOSで使用すれば現場は滞りませんが、今度は古いサポート切れのOSを使うリスクが増大します。

PCが故障したら古いOSごとの復旧が難しくなります。
インターネットに繋げていれば、OSの更新ができないためセキュリティリスクは防げません。

一番簡単なのは、全部入れ替えることです。
しかし、これはあまり現実的ではありません。
なんとか段階を踏み、現場も止めずに移行したいニーズは高まっています。

そこで条件付きではありますが、一部はWineで実行させる手段があります。OSにLinux + WineでWindowsアプリを実行させます。

Wineとは何か?

Wine は、Linux上でWindowsアプリ(.exe)を動かすための「互換レイヤー」です。
これは誤解されがちなのですが仮想マシンではありません。

Wineの特徴:

  • 仮想マシンではない
  • Windowsライセンスが不要
  • 軽量で起動が速い

仮想マシンはOS環境そのものを再現しますが、Windowsを丸ごと動かすのではなく、Windowsアプリだけを”翻訳”してLinux上で動かす仕組みです。

そのため、PCより非力なスペックのRaspberry Piでも実用的に動作します。

ただ残念ながら、Windowsアプリがどれでも動作するわけではありません。

Wine導入が“狙いやすい”ツールソフトウェアの特徴

Wineでソフトウェアの動作が成功しやすいのは、ドライバ依存が薄いものです。RS-232やUSB-Serial経由で通信するタイプは比較的相性が良い部類です。同様に旧世代のPLC設定ソフトも試してみる価値はあります。

新しいOS依存が強い環境よりも、XP時代のOSにあまり依存しない軽量ツールの方が動きやすい傾向があります。
特に、単体のexeファイルで独自のドライバを利用せず、ファイル入出力中心であれば動作する確率は高まるでしょう。

OS依存が薄い単体の設定ユーティリティ例:

  • センサのパラメータ設定ツール
  • ロガーのCSV取得ソフト
  • ファーム書き込みツール(専用ドライバ不要型)

Wineで厳しいパターン

逆にWineで動作しないだろうと考えられるパターンを挙げてみます。

  • 専用USBドライバが必要
  • 物理的なライセンス鍵(USBハードウェアキー)が必要
  • OS内部に入り込んで機器制御を行う(カーネルフィルタライバ)
  • Windowsサービスとして常駐動作する

実際にWineで試すのは簡単です。
動作するようであれば、LinuxのPCを用意することで少なくてもOSによるセキュリティリスクは防げます。

Raspberry Pi OSへWineをインストールする方法

Raspberry Pi OS(bookworm)がインストールされた産業用ラズパイである「PL-R5」にWineをインストールして、Windows系アプリを試してみました。

しかし、WineはARMのCPUアーキテクチャをサポートしていません。そのため、Raspberry Piで動かすには、もう1つエミュレートできる環境を作らないとなりません。それはBOX64/BOX86です。
このインストールは難しいため、Pi-Appsという別のアプリからインストールすることをお勧めします。

Pi-Appsのインストール:

wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bash

検索でWineを入力すれば出てきます。
このWineをインストールするだけです。BOX64も一緒に導入されます。

Pi 5でWineの注意点

以前はなかったダイアログが出ました。

Pi 5からカーネルのページサイズが標準で16KBになっています。古いソフトウェアとの互換性で、16KBのままだと不具合が確認されているので、ページサイズを4KBに変更するか訊かれます。
これはWineだけの問題ではありません。

今回は4KBにスイッチしています。再起動後に有効です。

元に戻したい場合は、/boot/firmware/config.txtに追加されたkernel=kernel8.imgを削除かコメントアウトすれば戻ります。

WineでWindowsアプリのインストール

メニューにWineの項目が7つほどあるのですが、やや分かりづらいため解説は省きます。Windowsアプリで特定の条件が必要な場合、別に設定をしていくことになります。

ここではコマンドでWineの設定を確認して、その後にやはりコマンドでWindowsアプリのインストールを行います。

ターミナルでwinecfgと実行。

設定画面で重要なのは、Windowsバージョンを「Windows 10」に設定することです。最初からWindows10になっているはずです。

ドライブタブに、初期のCドライブはhome/pi/.wine/drive_cとホームフォルダに隠しファイルになっています。この中にプログラムファイルとその設定ファイルなどがあります。drive_c以下はWindowsと同じようなフォルダ構成です。

もしもこのWindowsアプリがCOMポートを使う場合は、このドライブタブで/dev/ttyUSB0をWine側のCOM1に割り当てます。もしくはコマンドでシンボリックリンクを張ります。
 

EXEファイルの指定をしたインストールコマンド

早速、EXEファイルを実行してWindowsアプリのインストールをしてみます。

今回はテスト用にデータロガーのビューワ「Ts Digital Multi Meter Viewer」をダウンロードしてみました。
(公式URL:https://www.ts-software-jp.net)

インストールは以下のコマンドでセットアップファイルが実行されて、アプリのインストーラーがWindows上のように起動します。
その前に、/home/pi以下へWindowsアプリ用のディレクトリを作成し、そこにSETUP.EXEファイルを置くと分かりやすいです。

wine EXEファイルへのパス

このようにデータロガー等ならインストールと実行ができました。

リプレイス前の検討に

使用機器をすべて最新にリプレイスするのは費用面も運用面でも現実的ではありません。仮に代替としてLinuxベースが良くても、いきなり全面Linux移行はこれもまた困難です。

しかし、Wineで動くものから移行していくことは可能だと思います。
元のWindows機はそのままにしておけば、緊急時のロールバック用として待機させておけます。

Wineの活用はLinuxへの完全移行ではなく代替案の1つです。
もしもWineで問題なく動作して現場が滞らないなら、将来はLinuxネイティブのプログラムにリプレイスも検討できるでしょう。

産業用途でも、Raspberry Pi + WineはWindowsバージョンアップ問題を一部解消できる手段になります。
この機会に産業用Raspberry Piを試してみてはいかがでしょうか。


記事寄稿:ラズパイダ

非エンジニアでも楽しく扱えるRaspberry Pi 情報サイト raspida.com を運営。ラズベリーパイに長年触れた経験をもとに、ラズベリーパイを知る人にも、これから始めたいと興味を持つ人にも参考になる情報・トピックを数多く発信。PiLinkのサイトへは産業用ラズベリーパイについて技術ブログ記事を寄稿。