数年前にロシア企業ElTechsが発表したExagearは、X86命令をARM命令へ変換できる。Wineと組み合わせれば、root不要でスマートフォン上にPC用プログラムを実行できる。(WineはLinux PCでWindows exeを実行できるようにするソフトウェア)
その後Exagearの技術はHuaweiに買収されたが(関連討論)、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. インストール手順#
- スマートフォン:Sony Xperia 5 II、Android 11
- 必要なAPP:Termux、Real VNC Viewer
- Termuxを開き、tarとgitをインストールする。
pkg update
pkg install tar git- Exagear-For-Termuxリポジトリをクローンし、submoduleを追加する。
git clone https://github.com/ZhymabekRoman/Exagear-For-Termux ~/ExaTermux
cd ~/ExaTermux
git submodule init
git submodule update- 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 ../- スクリプトを使ってシステムへログインする。
chmod +x start-exagear.sh
./start-exagear.sh login --old --shared-tmp- これで32ビットのDebian環境が準備できた。まず更新する:
apt update
apt upgradeAPTのインストール時に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- XFCE4デスクトップ環境とVNCサーバーをインストールする。
apt install sudo vim fonts-noto-cjk xfce* tigervnc*- 一般ユーザーivonを追加し、パスワードを変更する。
addgroup wheel users
useradd -m -g users -G wheel -s /bin/bash ivon
passwd ivonvisudoを実行し、VIMでroot ALL=(ALL) ALLの次の行に以下を追加する:
ivon ALL=(ALL) ALL- 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- 続いてPulseAudioを設定する。
~/.bashrcに追加する:
export PULSE_SERVER=127.0.0.1- 左側からスワイプして2つ目の端末を開き、
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- 続いて
/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- Termuxを再起動してDebianへ再ログインする。vncserverを起動する。初回起動時は6桁のパスワード設定を求められる。
vncserverReal VNC Viewerを開き、接続を追加して
localhost:1を入力し接続する。XFCE右上のアプリケーションから
Run Programを押し、winetricks --guiを検索する。実行するとWineが更新され、その後monoをインストールする。およそ5分かかる。
最後に、各種32ビットWindowsプログラムを試せる。ファイルをTermuxの内部ディレクトリへ移動する方法を知りたい場合は、この記事を参照:Access Termux files
3. まとめ#
Box86/Box64 + Wineと比べると、Exagearは32ビットプログラムしか実行できない。しかし少なくとも、Termux自体が64ビットの状態でも32ビット版Debianを直接インストールでき、Termux全体を32ビット版に入れ替える必要はない。
Exagearの唯一の欠点は、クローズドソースかつ有料だったため、ネット上に流れているバージョンはこのDebian版を含め、どうやらすべて海賊版のようだという点だ。さらにProotの速度はかなり遅い。
