用Box86在Linux手機玩Steam遊戲

🇺🇸 English version

Box86/Box64是x86 → ARM指令的轉譯器。因為Box86的出現使得樹莓派這類ARM單板電腦也能玩遊戲了,至於Linux手機也可以執行Box86。

影片操作示例

在Github上有一篇寫給PinePhone/PinePhone Pro的教學:Raezroth/Linux-ARM-Gaming-Chroot,該教學適用於Arch Linux ARM / Mobian。

雖然我有買PinePhone,但是若要玩遊戲,還是拿性能較強的小米Poco F1出來吧,這支也可以刷Mobian

下面的教學是參考Raezroth後針對Mobian寫的,按照教學手動設定環境,安裝Box86,開啟Steam,轉譯x86版的Proton玩Windows only的遊戲。注意我的桌面環境為Wayland協定的Gnome。

1. 設定chroot環境

首先要建立Debian的chroot環境。為什麼不直接在Mobian裝就好了?因為要讓Box86和Box64同時存在,有必要建立隔離的32位元環境。

  1. 安裝以下套件
1
2
sudo apt update
sudo apt install debootstrap debian-archive-keyring x11-xserver-utils dbus-x11
  1. 建立gaming目錄。將擁有者變更為root才能初始化systemd。
1
2
mkdir gaming
sudo chown root:root gaming
  1. 用debootstrap下載Debian系統檔案,架構為ARM32
1
sudo debootstrap --arch armhf --components=main,universe sid gaming http://ftp.tw.debian.org/debian/
  1. 新增startg.sh指令稿,填入以下內容:
1
2
3
4
5
6
7
8
9
cd gaming
sudo mount -t proc /proc proc/
sudo mount -t sysfs /sys sys/
sudo mount --bind /dev dev/
sudo mount -t devpts devpts dev/pts
sudo mount --bind /run run/
sudo mount --bind /run/user/1000 run/user/1000
sudo mount -t tmpfs tmpfs tmp/
sudo chroot . /bin/bash
  1. 賦予指令稿執行權限然後執行,登入chroot。
1
2
chmod + startg.sh
./startg.sh
  1. 更新與安裝VIM
1
2
apt update
apt install vim
  1. 用VIM編輯/root/.bashrc,加入以下環境變數:
1
2
3
4
5
6
7
8
export LC_ALL="C"
export LANGUAGE="C"
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/games:/usr/local/bin:/usr/local/sbin
export STEAMOS=1
export STEAM_RUNTIME=1

# 原文提及要執行Steam,此指令每次開機都要執行一次,因此我寫在這裡
chmod 1777 /dev/shm
  1. 安裝編譯用的工具
1
2
3
4
5
dpkg --add-architecture arm64

apt update

apt install sudo vim make cmake git wget gnupg libx11-dev libgl-dev libvulkan-dev libtcmalloc-minimal4 libnm0 zenity chromium alsamixergui libsdl2-dev unzip libgles-dev firefox-esr:arm64 libx11-dev:arm64 libvulkan-dev:arm64 libsdl2-dev:arm64 libgl-dev:arm64 libc6-dev:arm64 libgles-dev:arm64 libsdl2-dev
  1. 新增一般使用者,加入users群組,變更密碼
1
2
3
4
adduser --home /home/ivon ivon
usermod -g users ivon
passwd ivon
passwd root
  1. 執行visudo,找到root段加入以下內容,讓使用者擁有sudo權限:
1
2
root  ALL=(ALL:ALL) ALL
ivon  ALL=(ALL:ALL) ALL
  1. 切換至剛剛建立的使用者
1
2
su ivon
cd
  1. 在家目錄新增.profile,加入以下環境變數:
1
2
3
4
5
6
7
8
export SDL_VIDEODRIVER=wayland
export WAYLAND_DISPLAY=wayland-1
export GDK_BACKEND=wayland
export XDG_SESSION_TYPE=wayland
export XDG_RUNTIME_DIR=/run/user/1000
export DISPLAY=:1
export XSOCKET=/tmp/.X11-unix/X1
export _JAVA_AWT_WM_NONREPARENTING=1

2. 安裝Box86/Box64

Box86現在有事先編譯的deb檔可以安裝了,當然要自行編譯也是可以的。

  1. 加入軟體庫並安裝Box86:
1
2
3
sudo wget https://itai-nelken.github.io/weekly-box86-debs/debian/box86.list -O /etc/apt/sources.list.d/box86.list
wget -qO- https://itai-nelken.github.io/weekly-box86-debs/debian/KEY.gpg | sudo apt-key add -
sudo apt update && sudo apt install box86 -y
  1. 加入軟體庫並安裝Box64:
1
2
3
sudo wget https://ryanfortner.github.io/box64-debs/box64.list -O /etc/apt/sources.list.d/box64.list
wget -O- https://ryanfortner.github.io/box64-debs/KEY.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/box64-debs-archive-keyring.gpg
sudo apt update && sudo apt install box64 -y
  1. 回到宿主機系統(Mobian),將chroot內部的binfmt複製到宿主機:
1
sudo cp -r ~/gaming/etc/binfmt.d/box* /etc/binfmt.d/
  1. 重新啟動宿主機的binfmt服務。回到chroot內部的終端機。
1
sudo systemctl restart systemd-binfmt

3. 安裝Steam和Steam Proton

  1. 安裝Steam的依賴套件
1
2
3
4
cd ~/Downloads
wget http://ftp.debian.org/debian/pool/main/libi/libindicator/libindicator7_0.5.0-4_armhf.deb
wget http://ftp.debian.org/debian/pool/main/liba/libappindicator/libappindicator1_0.4.92-7_armhf.deb
sudo apt install ./lib*
  1. 安裝Steam的deb檔
1
2
3
wget https://repo.steampowered.com/steam/archive/stable/steam_latest.deb
sudo apt install ./steam_latest.deb
cd
  1. 執行Steam
1
steam +open steam://open/minigameslist
  1. 登入Steam後,點選左上角Steam設定→Steam Play下載安裝Proton。當啟動Windows遊戲時,Steam會自動下載Proton執行。

  2. 雖然Steam可以開啟Big Picture Mode,但這個PinePhone比較有用,因為Poco F1的USB和藍芽不正常。

4. 安裝Wine

Raezroth採用的是wine-tkg,內含Wine與Wine64。

  1. 安裝Wine:
1
2
3
4
5
6
cd ~/Downloads
wget https://github.com/Frogging-Family/wine-tkg-git/releases/download/5.22.r2.g0ae73155/wine-tkg-staging-fsync-git-5.22.r2.g0ae73155-309-x86_64.pkg.tar.zst
mkdir TKG-5.22/ && cd TKG-5.22/
tar -xvf ../wine-tkg-staging-fsync-git-5.22.r2.g0ae73155-309-x86_64.pkg.tar.zst
cd ~/
mv ~/Downloads/TKG-5.22/ ~/wine-tkg
  1. 將Wine的路徑加入環境變數。原文是加到.profile,但我要source後才會讀取,因此直接加到.bashrc
1
echo 'PATH=$PATH:/home/$USER/wine-tkg/usr/bin' >> ~/.bashrc

5. 測試執行Steam遊戲

  1. 執行x86架構Windows遊戲:This is a game,正常執行。因為Poco F1不能使用USB,所以使用Gnome Desktop Wayland的RDP遠端桌面功能,從電腦遠端輸入滑鼠鍵盤。

  2. 再來是x86架構的Linux遊戲nacrissu,正常執行。

  3. 剛剛安裝的Wine也能開普通的exe,例如Notepad++。

6. 結語

Box86/Box64雖可以在Android安裝,但Android核心缺乏binfmt模組,使得Steam開不起來,並且Android很難達成硬體加速。這是我選擇拿純Linux手機來跑的原因。

經過測試,Box86/Box64玩3D遊戲問題還是很多,Wine官網寫可以開啟"IL 2 1946",但Box86卻開不起來,或許跟Wine的版本也有關係。


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

written by human, not by AI

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

留言板

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

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

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