メインコンテンツへスキップ

Proot-ExagearでAndroidスマートフォン上にWindows exeプログラムを動かす

·
カテゴリー スマートフォン Termuxチュートリアル
タグ ExaGear Wine QEMU User Mode
目次

数年前にロシア企業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. インストール手順
#

  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. 左側からスワイプして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
  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へ再ログインする。vncserverを起動する。初回起動時は6桁のパスワード設定を求められる。
vncserver
  1. Real VNC Viewerを開き、接続を追加してlocalhost:1を入力し接続する。

  2. XFCE右上のアプリケーションからRun Programを押し、winetricks --guiを検索する。実行するとWineが更新され、その後monoをインストールする。およそ5分かかる。

  3. 最後に、各種32ビットWindowsプログラムを試せる。ファイルをTermuxの内部ディレクトリへ移動する方法を知りたい場合は、この記事を参照:Access Termux files

3. まとめ
#

Box86/Box64 + Wineと比べると、Exagearは32ビットプログラムしか実行できない。しかし少なくとも、Termux自体が64ビットの状態でも32ビット版Debianを直接インストールでき、Termux全体を32ビット版に入れ替える必要はない。

Exagearの唯一の欠点は、クローズドソースかつ有料だったため、ネット上に流れているバージョンはこのDebian版を含め、どうやらすべて海賊版のようだという点だ。さらにProotの速度はかなり遅い。

4. 参考資料
#

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。