PinePhone Linux上跑Windows exe

Box86/Box64是針對ARM架構的Linux系統設計的轉譯器,使之能執行x86架構的程式。接著再配合"Wine"這個相容層執行Windows的exe程式。

Box86 + Wine對應Windows 32位元程式,而Box64 + Wine64對應Windows 64位元程式。

當然最好就是直接裝Windows ARM…但PinePhone跑得動嗎?XD  Box86適合用於樹莓派這種單板電腦,跟Android的Proot相比,好歹是真的Linux環境,因此方便管理Box86和Box64,甚至不用另外給32位元chroot,執行效果也比較好。

現在,有了手機Linux發行版,加上PinePhone手機,我們也可以在PinePhone上實現此一目標。所以PinePhone根本就是帶有螢幕的開發板。

1. 先決條件

Box86目前要自行編譯,且不支援使用muslC的發行版,也就是說postmarketOS無法編譯Box86。

為了安裝套件方便,我的發行版是Mobian (基於Debian)。

2. 編譯Box86和Box64

因為PinePhone很慢,就算線程全開,編譯至少也要等個30分鐘。

1.安裝以下套件

1
2
3
sudo dpkg --add-architecture armhf
sudo apt update
sudo apt install git build-essential cmake wget gcc-arm-linux-gnueabihf zenity:armhf libasound*:armhf libstdc++6:armhf mesa*:armhf
  1. 編譯Box86
1
2
3
4
5
6
7
8
cd
git clone https://github.com/ptitSeb/box86
cd box86
mkdir build; cd build; cmake .. -DRPI4ARM64=1 -DARM_DYNAREC=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j$(nproc)
sudo make install
cd
rm -rf box86
  1. 編譯Box64
1
2
3
4
5
6
7
8
cd
git clone https://github.com/ptitSeb/box64.git
cd box64
mkdir build; cd build; cmake .. -DRPI4ARM64=1 -DARM_DYNAREC=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j$(nproc)
sudo make install
cd
rm -rf box64

3. 下載Wine和Wine64

以下預先編譯的Wine執行檔來自PlayOnLinux的網站,使用Phoenicis的版本。

  1. 下載32位元Wine
1
2
3
4
5
6
7
mkdir ~/wine
cd ~/wine
wget https://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-amd64/PlayOnLinux-wine-4.7-upstream-linux-amd64.tar.gz
tar -xvf *.tgz
mv wine/* ~/wine
rm -rf *.tgz wine
cd
  1. 下載64位元Wine
1
2
3
4
5
mkdir ~/wine64
cd ~/wine64
wget https://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-amd64/PlayOnLinux-wine-6.17-upstream-linux-amd64.tar.gz
tar -xvf *.tar.gz
cd

4. 將執行環境區隔開來

為方便執行,我各自寫一個腳本。內容都是先宣告此工作階段會用到的環境變數,最後面則是接上執行的內容。例如box86 wine explorer就是開啟Wine的檔案總管;要執行exe就是box86 wine <exe路徑>

1.Box86的腳本runwine.sh

1
2
3
4
export WINEPREFIX=~/.wine
export BOX86_PATH=~/wine/bin/
export BOX86_LD_LIBRARY_PATH=~/wine/lib/wine/i386-unix/:/lib/i386-linux-gnu:/lib/aarch64-linux-gnu/
box86 wine explorer
  1. Box64的腳本runwine64.sh
1
2
3
4
5
export WINEPREFIX=~/.wine64
export WINEARCH=win64
export BOX64_PATH=~/wine/bin/
export BOX64_LD_LIBRARY_PATH=~/wine/lib/wine/i386-unix/:/lib/i386-linux-gnu:/lib/aarch64-linux-gnu/
box64 wine64 explorer
  1. 賦予腳本執行權限
1
2
chmod +x runwine.sh
chmod +x runwine64.sh
  1. 如果有需要用到Winetricks,參考Box86官方作法,給Wine(僅限32位元)建立符號連結,讓Winetricks以為你真的有安裝Wine在系統上。

5. APP實際執行情況

桌面環境為Phosh的話,將PinePhone用Type-C擴充埠外接電腦螢幕和鍵盤滑鼠,Phosh會進入視窗模式,變得像是電腦Linux的操作。

實測Notepad++、Foobar2000之類的文書程式正常執行。

但遊戲部份,PinePhone的性能只能玩些很老的GAL Game,且連Key的AIR (2000)都會佔用幾乎全部的CPU,3D遊戲就更不用說了。

6. 參考資料


感謝您的閱讀。歡迎分享Ivon的部落格(ivonblog.com)的文章,引用或轉載請註明文章網址,並遵守創用CC-姓名標示-非商業性-禁止改作 4.0 國際授權條款。如需商業使用請來信告之。

written by human, not by AI

如果本網站文章對您有幫助,歡迎請我喝杯珍珠奶茶。

留言板

點選按鈕,選擇您覺得方便的留言系統。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要登入Github帳號才能留言。支援markdown語法,方便您張貼程式碼,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus投放的廣告。無論有無登入皆可留言。此處留言只有本站參與者看得到。若您選擇以訪客身份匿名留言,就不會收到後續回覆通知。