快轉到主要內容

用Docker容器在Android手機跑32位元Ubuntu容器,執行Windows exe

分類   智慧型手機 Root與刷機
標籤   Wine Docker Box86 Box64
🗓️ 民國111年 壬寅年
✍ 切換正體/簡體字
目錄

也許未來能執行Steam,但現在還沒到那個階段。

編譯能執行docker的手機內核後,執行32位元的Ubuntu容器,接著編譯Box86這個x86轉ARM的轉譯器,再來執行Wine。

其實用32位元Termux建立Proot環境就好了,那為何要用容器呢? 因為方便部屬,這樣我不用一直重裝Termux,我可以在64位元的手機跑32位元或64位元的Ubuntu容器,分別執行Box64和Box86。

1. 詳細步驟
#

  1. 執行容器,使用Ubuntu arm32的版本
sudo docker run -ti \
    --net="host" \
    --dns="8.8.8.8" \
    -e DISPLAY=$DISPLAY \
    -w /root \
    -v $TMPDIR/.X11-unix:/tmp/.X11-unix \
    -v $HOME/.Xauthority:/root/.Xauthority \
    --platform=linux/arm \
    arm32v7/ubuntu
  1. 安裝TigerVNC
echo 'APT::Sandbox::User "root";' > /etc/apt/apt.conf
apt update
apt install tigervnc-standalone-server tigervnc-common sudo vim
  1. 安裝xfce4
sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
sudo apt install xfce4-terminal
sudo update-alternatives --config x-terminal-emulator
#選擇xfce4的終端機
  1. 設定vncserver啟動腳本
touch $HOME/.vnc/xstartup
vim $HOME/.vnc/xstartup
#填入:
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
chmod +x $HOME/.vnc/xstartup
  1. 啟動vncserver (不設定密碼是因為會崩潰)
export DISPLAY=:1
vncserver  -localhost no -geometry 1280x720 -SecurityTypes none --I-KNOW-THIS-IS-INSECURE
  1. 編譯box86
apt install git wget cmake build-essential python3 gcc-arm-linux-gnueabihf
git clone https://github.com/ptitSeb/box86
cd box86
mkdir build
cd build
cmake .. -DARM_DYNAREC=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j$(nproc)
make install
  1. 安裝32位元的Wine
cd
mkdir wine && cd wine
wget https://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-x86/PlayOnLinux-wine-6.18-upstream-linux-x86.tar.gz
tar -xvf PlayOnLinux-wine-6.18-upstream-linux-x86.tar.gz
#環境變數
export BOX86_PATH=~/wine/bin/
export BOX86_LD_LIBRARY_PATH=~/wine/lib/
export BOX86_LOG=1
ln -s ~/wine/bin/wine /usr/local/bin/wine
#雖然不建議用root執行wine
mkdir .wine
box86 wine winecfg
#更新完後執行任意exe
  1. 測試完後,將這個容器儲存成本機映像檔,約2GB。
sudo docker ps
sudo docker commit -a='Ivon' -m='XFCE4 insatlled' [id]  arm32v7/ubuntu:v2
#日後以此為基礎執行:
sudo docker run -ti \
    --net="host" \
    --dns="8.8.8.8" \
    -e DISPLAY=$DISPLAY \
    -w /root \
    -v $TMPDIR/.X11-unix:/tmp/.X11-unix \
    -v $HOME/.Xauthority:/root/.Xauthority \
    --platform=linux/arm \
    arm32v7/ubuntu:v2
  1. 附註: 如果儲存空間不夠,刪除全部docker資料後重試。
sudo docker system df
sudo docker system prune -af

2. 參考資料
#

相關文章

[Root] Termux:以原生效能在Android手機上跑Docker (紅米Note 5)
分類   智慧型手機 Root與刷機
標籤   Termux Android Linux Kernel Docker Xiaomi
Android手機跑Docker:Termux安裝headless Alpine Linux QEMU虛擬機
分類   智慧型手機 Termux教學
標籤   QEMU Docker Alpine Linux Android
ASUS Zenfone 2 Selfie安裝postmarketOS
分類   智慧型手機 真Linux手機
標籤   PostmarketOS Zenfone

留言板

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

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

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