快轉到主要內容

Termux Proot安裝Box64與Box86,Android手機執行Windows exe

分類   智慧型手機 Termux教學
標籤   Box86 Box64 Wine ExaGear
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

🇺🇸 English version

本文是手動設定Box64+Wine環境的教學,如果你想要一鍵安裝,請參閱 Android轉譯玩Windows exe遊戲的方法一覽

如果想在Android手機跑Windows exe程式,在Termux中用Box86/Box64轉譯x86架構的Wine,再用來跑Windows程式會是個好方法。

我們知道Linux平台有Wine能跑Windows遊戲,且幾乎沒有效能損失。但是Wine只能轉譯x86/x64架構的Windows程式,在以ARM架構為主的Android裝置無法使用。

所以我們需要一個轉譯器,那就是Box86和Box64。Box86用於轉譯32位元的x86指令集為ARM;Box64則是將64位元的x64指令集轉為ARM64,二者可以共存。

相較於閉源的Exagear,Box86是開源免費的技術,並且 Github每週都有更新,作者正在積極完善各類功能。

1. 安裝Termux Proot發行版
#

首先,安裝 Termux

再安裝 Proot Debian

再安裝 Termux X11存取桌面環境。

2. 編譯Box86和Box64
#

  1. 以一般帳戶登入Proot Debian
proot-distro login debian --user user shared-tmp
  1. 啟用armhf套件庫支援
dpkg --add-architecture armhf
  1. 新增 ryanfortner的套件庫,安裝Box86
sudo apt install gpg

sudo wget https://ryanfortner.github.io/box86-debs/box86.list -O /etc/apt/sources.list.d/box86.list

wget -qO- https://ryanfortner.github.io/box86-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box86-debs-archive-keyring.gpg

sudo apt update

sudo apt install box86-android
  1. 新增 ryanfortner的套件庫,安裝Box64
sudo wget https://ryanfortner.github.io/box64-debs/box64.list -O /etc/apt/sources.list.d/box64.list

wget -qO- https://ryanfortner.github.io/box64-debs/KEY.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/box64-debs-archive-keyring.gpg

sudo apt update

sudo apt install box64-android

3. 安裝Wine和Wine64
#

Wine用於執行32位元(x86)的exe;Wine64則是執行64位元exe。

ARM環境下,i386架構的Wine用套件管理員是裝不起來的。此處是直接下載Wine的執行檔,並用符號連結的模式安裝。

  1. 安裝Wine的依賴套件
sudo apt install nano cabextract libfreetype6 libfreetype6:armhf libfontconfig libfontconfig:armhf libxext6 libxext6:armhf libxinerama-dev libxinerama-dev:armhf libxxf86vm1 libxxf86vm1:armhf libxrender1 libxrender1:armhf libxcomposite1 libxcomposite1:armhf libxrandr2 libxrandr2:armhf libxi6 libxi6:armhf libxcursor1 libxcursor1:armhf libvulkan-dev libvulkan-dev:armhf zenity
  1. Kron4ek’s Wine-Builds下載Wine和Wine64。目前最新版是Wine 9.7。
cd ~/

wget https://github.com/Kron4ek/Wine-Builds/releases/download/9.7/wine-9.7-amd64.tar.xz

wget https://github.com/Kron4ek/Wine-Builds/releases/download/9.7/wine-9.7-x86.tar.xz
  1. 解壓縮檔案,刪除多餘檔案
tar xvf wine-9.7-amd64.tar.xz

tar xvf wine-9.7-x86.tar.xz

rm wine-9.7-amd64.tar.xz wine-9.7-x86.tar.xz

mv wine-9.7-amd64 wine64

mv wine-9.7-x86 wine
  1. 用以下指令建立建立符號連結,將/usr/local/bin/wine指向$HOME/wine/bin/wine
echo '#!/bin/bash
export WINEPREFIX=~/.wine32
box86 '"$HOME/wine/bin/wine "'"$@"' > /usr/local/bin/wine

chmod +x /usr/local/bin/wine

echo '#!/bin/bash
export WINEPREFIX=~/.wine64
box64 '"$HOME/wine64/bin/wine64 "'"$@"' > /usr/local/bin/wine64

chmod +x /usr/local/bin/wine64
  1. 用以下指令將Box86和Box64的PATH加入到~/.bashrc
echo 'export DISPLAY=:0
export BOX86_PATH=~/wine/bin/
export BOX86_LD_LIBRARY_PATH=~/wine/lib/wine/i386-unix/:/lib/i386-linux-gnu/:/lib/aarch64-linux-gnu/:/lib/arm-linux-gnueabihf/:/usr/lib/aarch64-linux-gnu/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/i386-linux-gnu/
export BOX64_PATH=~/wine64/bin/
export BOX64_LD_LIBRARY_PATH=~/wine64/lib/i386-unix/:~/wine64/lib/wine/x86_64-unix/:/lib/i386-linux-gnu/:/lib/x86_64-linux-gnu:/lib/aarch64-linux-gnu/:/lib/arm-linux-gnueabihf/:/usr/lib/aarch64-linux-gnu/:/usr/lib/arm-linux-gnueabihf/:/usr/lib/i386-linux-gnu/:/usr/lib/x86_64-linux-gnu' >> ~/.bashrc

source ~/.bashrc
  1. 用以下指令安裝Winetricks
cd ~/

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

chmod +x winetricks

mv winetricks /usr/local/bin/

echo '#!/bin/bash
export BOX86_NOBANNER=1 WINE=wine WINEPREFIX=~/.wine32 WINESERVER=~/wine/bin/wineserver
wine '"/usr/local/bin/winetricks "'"$@"' > /usr/local/bin/winetricks32

chmod +x /usr/local/bin/winetricks32

echo '#!/bin/bash
export BOX64_NOBANNER=1 WINE=wine64 WINEPREFIX=~/.wine64 WINESERVER=~/wine64/bin/wineserver
wine64 '"/usr/local/bin/winetricks "'"$@"' > /usr/local/bin/winetricks64

chmod +x /usr/local/bin/winetricks64
  1. 用以下指令,在Linux桌面建立Wine檔案總管的捷徑,這樣就可以直接點選exe啟動:
cd ~/Desktop

echo '[Desktop Entry]
Name=Wine32 Explorer
Exec=bash -c "wine explorer"
Icon=wine
Type=Application' > ~/Desktop/Wine32_Explorer.desktop

chmod +x ~/Desktop/Wine32_Explorer.desktop

cp ~/Desktop/Wine32_Explorer.desktop /usr/share/applications/

cd ~/Desktop

echo '[Desktop Entry]
Name=Wine64 Explorer
Exec=bash -c "wine64 explorer"
Icon=wine
Type=Application' > ~/Desktop/Wine64_Explorer.desktop

chmod +x ~/Desktop/Wine64_Explorer.desktop

cp ~/Desktop/Wine64_Explorer.desktop /usr/share/applications/

4. 安裝DXVK
#

DXVK為將DirectX轉譯成Vulkan的工具,可以提昇部份Windows程式的效能。

  1. 安裝依賴套件
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:armhf libvulkan1 libvulkan1:armhf
  1. Github下載最新版DXVK,目前是2.3.1
wget https://github.com/doitsujin/dxvk/releases/download/v2.4.1/dxvk-2.4.1.tar.gz
  1. 解壓縮,將dxvk的檔案移動到Wine的目錄下
tar -xvf dxvk-2.4.1.tar.gz

cd dxvk-2.4.1

cp x32/* ~/.wine32/drive_c/windows/system32
cp x32/* ~/.wine64/drive_c/windows/system32
cp x64/* ~/.wine64/drive_c/windows/syswow64
  1. 開啟Wine設定,到函式庫頁面,設定DLL覆寫,將d3d11、d3d10core、dxgi、d3d9調整為「內建先於原生」。
export WINEPREFIX=~/.wine

cp x64/*.dll $WINEPREFIX/drive_c/windows/system32

cp x32/*.dll $WINEPREFIX/drive_c/windows/syswow64

5. Box86+Wine的使用方式
#

您可以開啟Proot的瀏覽器下載Windows exe,或者複製手機的檔案到Proot Linux裡面。

Linux開啟檔案管理員 → 檔案系統的/sdcard目錄便是手機內部儲存空間的目錄。

注意有些程式可能需要 GPU硬體加速才能正常開啟。

執行程式前可以到 WineDB看該程式是否需要裝其他套件才能跑,並透過winetricks指令安裝額外的exe。


  1. Wine的指令用法 見此

  2. 執行程式前要確認你的exe是32位元或64位元版。

  3. 例如下載了 Notepad++32位元版,在含有exe的目錄按右鍵開啟終端機:

box86 wine notepad++.exe
  1. 等待幾秒後Notepad++的視窗便會開啟。

  2. 以此類推,如果是64位元版程式:

box64 wine64 notepad++.exe
  1. 你可以在執行Wine64指令前先宣告WINEPREFIX,這樣會新建一個目錄,將不同位元的執行環境區隔開來:
export WINEPREFIX=~/.wine64
export WINEARCH=win64
box64 wine64 notepad++.exe

參考資料
#

相關文章

Android轉譯玩Windows exe遊戲的方法一覽
分類   智慧型手機 手機APP分享
標籤   Box86 Box64 Wine ExaGear Termux Steam Windows Android
Winlator模擬器教學 ~ Android手機裝Windows exe玩遊戲
分類   智慧型手機 手機APP分享
標籤   Box86 Box64 Wine ExaGear
用Proot-Exagear在Android手機上跑Windows exe程式
分類   智慧型手機 Termux教學
標籤   ExaGear Wine QEMU User Mode

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。