ラズパイ4にwineをインストールするも破損した box86
Windowsアプリを動かすために。結果、正しくインストールできなくなった。オワタ……。
背景
一般的なパソコンのCPUアーキテクチャはx86
である。それで作られたアプリをラズパイのCPUアーキテクチャARMで動作させたい。そのためにはラズパイOSをビルドするときにオプション指定するなどめちゃくちゃ厳しい。かつて断念したことがある。
ノートPCでやったときは、起動したものの、まともに使えなかった。
今回はbox86を使って簡単に導入する。
インストール
box86
まずは以下を実行する。
git clone https://github.com/Botspot/pi-apps ./pi-apps/install
つぎにマウスで操作する。
- デスクトップをみる
Pi Apps
アイコンがあるはず- ダブルクリックして実行する
- ダイアログにて
端末で実行する
Tools
→Box86
Install
- 端末が出てきてインストールが開始する
- 完了すると30秒後に閉じる
え、タイトルバーでかすぎ? なんか知らんけどある日突然こうなった。治らない。たすけて。
インストール・ログ
Installing Box86 with install-32 script adding box86 repo... --2021-08-09 11:34:04-- https://itai-nelken.github.io/weekly-box86-debs/debian/box86.list itai-nelken.github.io (itai-nelken.github.io) をDNSに問いあわせています... 185.199.110.153, 185.199.111.153, 185.199.108.153, ... itai-nelken.github.io (itai-nelken.github.io)|185.199.110.153|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 62 [text/plain] `/etc/apt/sources.list.d/box86.list' に保存中 0K 100% 900K=0s 2021-08-09 11:34:05 (900 KB/s) - `/etc/apt/sources.list.d/box86.list' へ保存完了 [62/62] adding key... Warning: apt-key output should not be parsed (stdout is not a terminal) OK running 'sudo apt update'... WARNING: apt does not have a stable CLI interface. Use with caution in scripts. ヒット:1 http://ftp.jaist.ac.jp/raspbian buster InRelease ヒット:2 https://download.mono-project.com/repo/debian stable-raspbianbuster InRelease 取得:3 https://itai-nelken.github.io/weekly-box86-debs/debian InRelease [2,252 B] ヒット:4 http://archive.raspberrypi.org/debian buster InRelease 取得:5 https://itai-nelken.github.io/weekly-box86-debs/debian Packages [5,216 B] 7,468 B を 11秒 で取得しました (667 B/s) パッケージリストを読み込んでいます... 依存関係ツリーを作成しています... 状態情報を読み取っています... アップグレードできるパッケージが 2 個あります。表示するには 'apt list --upgradable' を実行してください。 installing box86... WARNING: apt does not have a stable CLI interface. Use with caution in scripts. パッケージリストを読み込んでいます... 依存関係ツリーを作成しています... 状態情報を読み取っています... 以下のパッケージが自動でインストールされましたが、もう必要とされていません: gyp libjs-inherits libjs-is-typedarray libnode-dev libnode64 libssl-dev libuv1-dev lxplug-volume nodejs-doc python-colorzero これを削除するには 'sudo apt autoremove' を利用してください。 以下のパッケージが新たにインストールされます: box86 アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 2 個。 1,464 kB のアーカイブを取得する必要があります。 この操作後に追加で 7,455 kB のディスク容量が消費されます。 取得:1 https://itai-nelken.github.io/weekly-box86-debs/debian box86 0.2.3+20210808.342ee455-1 [1,464 kB] 1,464 kB を 2秒 で取得しました (974 kB/s) 以前に未選択のパッケージ box86 を選択しています。 (データベースを読み込んでいます ... 現在 205337 個のファイルとディレクトリがインストールされています。) .../box86_0.2.3+20210808.342ee455-1_armhf.deb を展開する準備をしています ... box86 (0.2.3+20210808.342ee455-1) を展開しています... box86 (0.2.3+20210808.342ee455-1) を設定しています ... restarting systemd-binfmt... Installed Box86 successfully.
wine, winetricks
wget https://dl.winehq.org/wine-builds/debian/dists/buster/main/binary-i386/wine-devel-i386_5.21~buster_i386.deb wget https://dl.winehq.org/wine-builds/debian/dists/buster/main/binary-i386/wine-devel_5.21~buster_i386.deb dpkg-deb -xv wine-devel-i386_5.21~buster_i386.deb wine-installer dpkg-deb -xv wine-devel_5.21~buster_i386.deb wine-installer sudo mv wine-installer/opt/wine-devel ~/wine sudo ln -s ~/wine/bin/wine /usr/local/bin/wine sudo ln -s ~/wine/bin/winecfg /usr/local/bin/winecfg sudo ln -s ~/wine/bin/wineserver /usr/local/bin/wineserver
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks sudo chmod +x winetricks sudo cp winetricks /usr/local/bin sudo apt-get install cabextract -y
初期化
box86 wine wineboot
途中で以下2つのアプリをインストールさせられた。
- Mono
- Gecko
ログ
$ box86 wine wineboot Box86 with Dynarec v0.2.3 342ee455 built on Aug 8 2021 09:30:54 Box86 with Dynarec v0.2.3 342ee455 built on Aug 8 2021 09:30:54 wine: created the configuration directory '/home/pi/.wine' Box86 with Dynarec v0.2.3 342ee455 built on Aug 8 2021 09:30:54 0048:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002 0048:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002 0048:err:ole:apartment_get_local_server_stream Failed: 0x80004002 0050:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002 0050:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002 0050:err:ole:apartment_get_local_server_stream Failed: 0x80004002 0050:err:ole:start_rpcss Failed to open RpcSs service 0068:fixme:urlmon:InternetBindInfo_GetBindString not supported string type 20 0068:fixme:file:NtLockFile I/O completion on lock not implemented yet 0068:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 0068:err:mscoree:LoadLibraryShim error reading registry key for installroot 0068:err:mscoree:LoadLibraryShim error reading registry key for installroot 0068:err:mscoree:LoadLibraryShim error reading registry key for installroot 0068:err:mscoree:LoadLibraryShim error reading registry key for installroot 007c:fixme:file:NtLockFile I/O completion on lock not implemented yet 007c:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 007c:err:mscoree:LoadLibraryShim error reading registry key for installroot 007c:err:mscoree:LoadLibraryShim error reading registry key for installroot 007c:err:mscoree:LoadLibraryShim error reading registry key for installroot 007c:err:mscoree:LoadLibraryShim error reading registry key for installroot 007c:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 5) 007c:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 5) 0068:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 1) 0068:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 1) 0090:fixme:urlmon:InternetBindInfo_GetBindString not supported string type 20 0090:fixme:file:NtLockFile I/O completion on lock not implemented yet 0090:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 0024:err:environ:run_wineboot boot event wait timed out Box86 with Dynarec v0.2.3 342ee455 built on Aug 8 2021 09:30:54
$ 0090:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 1) 0090:fixme:msi:internal_ui_handler internal UI not implemented for message 0x0b000000 (UI level = 1) 0040:err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Make sure that ntlm_auth >= 3.0.25 is in your path. Usually, you can find it in the winbind package of your distribution. 00a8:fixme:iphlpapi:NotifyIpInterfaceChange (family 0, callback 0x340f537, context 0x7018f38, init_notify 0, handle 0x7a7fcc4): stub 0040:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 0040:err:module:open_builtin_file failed to load .so lib "/home/pi/wine/lib/wine/winegstreamer.dll.so" wine: configuration in L"/home/pi/.wine" has been updated.
なんか上記で完了せず停止しているのだが。と思ったらEnterキーを押したらちゃんと$
が出て終わった。
途中で$
が出ておかしくなったりもしている。成功しているっぽいので、まあいいか。
インストール確認
パスを確認する。
$ which box86 /usr/local/bin/box86 $ which wine /usr/local/bin/wine $ which wineserver /usr/local/bin/wineserver
上記wine
, wineserver
は、~/wine/bin/
配下にある同名ファイルのシンボリックリンクである。
$ ls -l /usr/local/bin | grep wine lrwxrwxrwx 1 root root 22 8月 9 11:21 wine -> /home/pi/wine/bin/wine lrwxrwxrwx 1 root root 25 8月 9 11:21 winecfg -> /home/pi/wine/bin/winecfg lrwxrwxrwx 1 root root 28 8月 9 11:21 wineserver -> /home/pi/wine/bin/wineserver -rwxr-xr-x 1 root root 885005 8月 9 11:27 winetricks
設定
以下のスクリプトを実行する。
cd ~/wine/bin/ mv wine __wine mv wineserver __wineserver echo '#!/bin/sh' > wine echo 'box86 ~/wine/bin/wine "$@"' >> wine echo '#!/bin/sh' > wineserver echo 'box86 ~/wine/bin/wineserver "$@"' >> wineserver chmod +x wine chmod +x wineserver
やったことは単純。wineとwineserverをBox86経由で呼び出すよう変更しただけ。
~/wine/bin/wine
#!/bin/sh box86 ~/wine/bin/wine "$@"
~/wine/bin/wineserver
#!/bin/sh box86 ~/wine/bin/wineserver "$@"
起動
winetricksはBOX86_NOBANNER=1
を付与しないと起動しない。
BOX86_NOBANNER=1 winetricks dotnet20sp2
日本語表示
BOX86_NOBANNER=1 winetricks fakejapanese_ipamona
出力ログ
------------------------------------------------------ warning: Your version of wine is no longer supported upstream. You should upgrade to 5.x ------------------------------------------------------ Executing mkdir -p /home/pi ------------------------------------------------------ WINEPREFIX INFO: Drive C: 合計 24 drwxr-xr-x 6 pi pi 4096 8月 9 11:37 . drwxr-xr-x 4 pi pi 4096 8月 9 11:41 .. drwxr-xr-x 6 pi pi 4096 8月 9 11:36 Program Files drwxr-xr-x 3 pi pi 4096 8月 9 11:37 ProgramData drwxr-xr-x 4 pi pi 4096 8月 9 11:37 users drwxr-xr-x 17 pi pi 4096 8月 9 11:41 windows Registry info: /home/pi/.wine/system.reg:#arch=win32 /home/pi/.wine/user.reg:#arch=win32 /home/pi/.wine/userdef.reg:#arch=win32 ------------------------------------------------------ ------------------------------------------------------ warning: wine cmd.exe /c echo '%AppData%' returned empty string, error message "" ------------------------------------------------------
バージョンが古いってよ。そういえばバージョンなんて気にしなかった。参考URLまんまコピーしたよ。やり直そう。
$ unrar xy '/tmp/work/AKM322 MIDI Editor V0.1 20151023A.rar'
$ wine "/tmp/work/AKM322 MIDI Editor V0.1 20151023A/AKM322 MIDI Editor V0.1 20151023A/AKM322_MIDI_Editor.exe" Box86 with Dynarec v0.2.3 342ee455 built on Aug 8 2021 09:30:54 Error: reading elf header of /home/pi/wine/bin/wine, try to launch natively instead Segmentation fault
最新版にしたかったが壊れた
※これ実行したら壊れます!
※これ実行したら壊れます!
※これ実行したら壊れます!
以下URLから最新版を探す。
以下スクリプトでバージョン値を含んだファイル名を変更する。
DEB_WINE1=wine-devel-i386_6.14~buster-1_i386.deb DEB_WINE2=wine-devel_6.14~buster-1_i386.deb wget https://dl.winehq.org/wine-builds/debian/dists/buster/main/binary-i386/$DEB_WINE1 wget https://dl.winehq.org/wine-builds/debian/dists/buster/main/binary-i386/$DEB_WINE2 dpkg-deb -xv $DEB_WINE1 wine-installer dpkg-deb -xv $DEB_WINE2 wine-installer sudo mv wine-installer/opt/wine-devel ~/wine sudo ln -s ~/wine/bin/wine /usr/local/bin/wine sudo ln -s ~/wine/bin/winecfg /usr/local/bin/winecfg sudo ln -s ~/wine/bin/wineserver /usr/local/bin/wineserver
実行すると以下エラー。犯人はdpkg-deb -xv $DEB_WINE1 wine-installer
。
... dpkg-deb (サブプロセス): アーカイブメンバーを 'wine-devel-i386_6.14~buster-1_i386.deb' から伸張パイプにコピーできません: ファイルまたはストリームの予期しない終わりです dpkg-deb (サブプロセス): アーカイブメンバーを伸張しています: lzma エラー: 予期しない入力の終わりです tar: アーカイブ中に予期せぬ EOF があります tar: アーカイブ中に予期せぬ EOF があります tar: Error is not recoverable: exiting now dpkg-deb: エラー: tar subprocess returned error exit status 2
なんか正常にインストールできなかった。
元のバージョンに戻そうとして再びやったけど、今度はそれされインストールが正常にできなくなってしまった。
もう元に戻せません。たすけて。
所感
ぜんぜん簡単じゃなかった。だまされた。
どんどんバグってゆく。もうやだ。たすけて。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux