快轉到主要內容

用Proot-Exagear在Android手機上跑Windows exe程式

智慧型手機 Termux教學 ExaGear Wine QEMU User Mode
🗓️ 民國111年 壬寅年
✍ 切換正體/簡體字
目錄

🇺🇸 English version

幾年前俄羅斯公司ElTechs發表的Exagear,能夠將X86翻譯成ARM的指令,配合Wine就能在手機執行電腦程式,不需要root。(Wine是讓Linux電腦能夠執行Windows exe的軟體)

雖然後來Exagear的技術被華為買走( 相關討論),不過Github有俄羅斯人釋出Termux Proot版的Exagear。

主要原理是在Termux安裝i686 32位元的Proot Debian環境,利用qemu-user-static模擬32位元x86環境,再用Wine執行32位元的Windows exe。

順帶一提,在Exagear之外,還有一個開源的競爭對手: Box86/Box64

1. 測試Proot Exagear能執行的程式
#

遊戲Fate/stay night

音樂播放器foobar2000

文字編輯器Notepad++

圖片檢視器HoneyView

Google Chrome可攜版

2.安裝教學
#

  1. 開啟Termux安裝tar和git
pkg update
pkg install tar git
  1. 複製Exagear-For-Termux儲存庫,並加入submodule
git clone https://github.com/ZhymabekRoman/Exagear-For-Termux ~/ExaTermux
cd ~/ExaTermux
git submodule init
git submodule update
  1. 下載Termux Proot提供的Debian 10檔案系統 (Proot-Exagear開發者有出Debian 11版的rootfs,不過問題很多)
wget https://github.com/termux/proot-distro/releases/download/v1.1-debian-rootfs/debian-buster-i386-2020.12.05.tar.gz
#解壓縮
mkdir exagear-fs/ && tar -C exagear-fs/ --warning=no-unknown-keyword --delay-directory-restore --preserve-permissions --strip=0 -xvf debian-buster-i386-2020.12.05.tar.gz --exclude='dev'||: && cd exagear-fs/ && mv debian-buster-i386-2020.12.05/* ./ && rm -rfv debian-buster-i386-2020.12.05/ && cd ../
  1. 使用指令稿登入系統
chmod +x start-exagear.sh
./start-exagear.sh login --old --shared-tmp
  1. 這樣32位元的Debian環境就設定好了,首先進行更新:
apt update
apt upgrade

如果APT安裝出現E: Sub-process /usr/bin/dpkg returned an error code (1),執行:

cd /var/lib/dpkg/
mv info info.bk
mkdir info
apt update
apt -f install
cd info
mv ./* ../info.bk
cd ..
rm -rf info
mv info.bk info
cd
  1. 安裝XFCE4桌面環境和VNC伺服器
apt install sudo vim fonts-noto-cjk xfce* tigervnc*
  1. 新增一般使用者ivon,修改密碼
addgroup wheel users
useradd -m -g users -G wheel -s /bin/bash ivon
passwd ivon
  1. 執行visudo,用VIM在"root ALL=(ALL) ALL"的下一行加入以下內容:
ivon ALL=(ALL) ALL
  1. 安裝Wine和Winetricks
wget -nc https://dl.winehq.org/wine-builds/winehq.key
apt-key add winehq.key
echo "deb https://dl.winehq.org/wine-builds/debian/ buster main" >>  /etc/apt/sources.list
apt update
apt install winehq-staging winetricks zenity -y
  1. 接著設定PulseAudio,在~/.bashrc加入:
export PULSE_SERVER=127.0.0.1
  1. 左邊滑出來,開第二個終端機,編輯start-exagear.sh,在最上方加入:
pulseaudio --start --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
  1. 接著編輯/data/data/com.termux/files/usr/etc/pulse/default.pa
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1
  1. 重新啟動Termux再登入Debian。啟動vcncserver,第一次啟動會要求設定六位數密碼。
vncserver
  1. 開啟Real VNC Viewer,新增連線,輸入localhost:1連線

  2. 從XFCE右上角應用程式按Run Program,搜尋winetricks --gui,執行後Wine會進行更新,再安裝mono,大約5分鐘。

  3. 最後就可以來試試各種32位元Widnows程式了!如果想知道如何把檔案移動到Termux的內部目錄,請看這篇: 手機檔案管理器如何存取Termux的內部目錄

3. 總結
#

Box86/Box64 + Wine比起來,雖然Exagear只能執行32位元的程式,但至少Termux本身是64位元的情況下可以直接裝32位元的Debian,不需要整個重裝32位元版的Termux。

Exagear唯一的缺點是閉源收費,導致網路上流傳的版本似乎都是盜版,包括這個Debian的版本。並且Proot的速度慢的要命。

4. 參考資料
#

相關文章

Android手機免root跑Docker,安裝Linux QEMU虛擬機
智慧型手機 Termux教學 QEMU Docker Alpine Linux Android
Android手機拍攝AVIF/HEIF相片,利用Termux-camera
智慧型手機 Termux教學 AOMedia Video 1
用Python寫一個Termux圖形程式
智慧型手機 Termux教學

留言板

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

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。