[心得] 容器化與Box86執行exe

看板MobileComm (行動通訊)作者 (內容農場殺手)時間4月前 (), 編輯推噓5(615)
留言12則, 8人參與, 4月前最新討論串1/1
心得: 也許手機未來能執行Steam商店,看是要用Box86硬跑x86 Linux版的Steam,還是隔一層Wine跑Win32版本的Steam,至少樹莓派台灣已有成功案例。 https://i.imgur.com/uLDF6ts.png
以內核支援docker的手機,用Termux執行32位元的Ubuntu容器,接著編譯Box86(x86指令轉ARM的轉譯器),再用Wine執行exe。 至於為什麼有Proot Linux,卻要使用容器? 除方便管理外,這樣能在64位元的手機跑32位元或64位元的Ubuntu容器,分別執行Box64和Box86,不需要裝不同位元的Termux,交叉編譯設定太麻煩惹。 那跟Exagear for Termux的比起來呢?Exagear是跨架構模擬i686的環境,以效能換取相容性。 比較一下執行過程: #Exagear for Termux: Termux (ARM64) → Debian Proot(i686) → Wine (i686) → exe檔(Win32) #容器: Termux (ARM64) → Ubuntu容器(ARM32) → Box86 (ARM32) → Wine (x86) → exe檔(Win32) Box86是設計給ARM平台直接轉譯x86指令使用,雖然經過層層轉譯,不過32位元開啟exe的成功率還是很高的。 ## 容器安裝過程: 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 2. 安裝TigerVNC echo 'APT::Sandbox::User "root";' > /etc/apt/apt.conf apt update apt install tigervnc-standalone-server tigervnc-common sudo vim 3. 安裝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的終端機 4. 設定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 5. 啟動vncserver (不設定密碼是因為會崩潰) export DISPLAY=:1 vncserver -localhost no -geometry 1280x720 -SecurityTypes none --I-KNOW-THIS-IS -INSECURE 6. 編譯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 7. 下載32位元的Wine cd mkdir wine && cd wine wget https://www.playonlinux.com/wine/binaries/phoenicis/upstream-linux-x86/Play OnLinux-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 box86 wine *.exe 8. 實際執行exe演示影片 https://youtu.be/SrLtbLJ9kU8
9.測試完後,將這個容器儲存成本機映像檔,至少約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 ##參考資料 https://gist.github.com/FreddieOliveira/efe850df7ff3951cb62d74bd770dce27 https://blog.csdn.net/evan_one/article/details/118059926 https://www.wongwonggoods.com/linux/docker/save-load-container/ https://yeasy.gitbook.io/docker_practice/image/commit -- https://i.imgur.com/qBnCgUO.jpg
https://i.imgur.com/klpjZcQ.jpg
https://i.imgur.com/yLTmoHs.jpg
https://i.imgur.com/WepO17T.jpg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.233.76 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1642422734.A.A9D.html

01/17 20:52, 4月前 , 1F
對簽名檔的容器比較有興趣
01/17 20:52, 1F

01/17 21:10, 4月前 , 2F
很久很久以前在mac上面用過wine
01/17 21:10, 2F

01/17 21:10, 4月前 , 3F
體驗很差
01/17 21:10, 3F

01/17 21:20, 4月前 , 4F
01/17 21:20, 4F

01/17 23:02, 4月前 , 5F
不是很懂這樣做除了好玩之外, 還能做什麼有趣的事情
01/17 23:02, 5F

01/18 01:31, 4月前 , 6F
目前是好玩,不過未來值得期待
01/18 01:31, 6F

01/18 01:51, 4月前 , 7F
效能還好ㄇ
01/18 01:51, 7F

01/18 18:34, 4月前 , 8F
wine的特性是把需要的元件全掛滿就能接近原生執行
01/18 18:34, 8F

01/18 18:36, 4月前 , 9F
問題在要掛滿效能相關元件門檻蠻高的 一要有二要詳設
01/18 18:36, 9F

01/18 18:38, 4月前 , 10F
但手機上需要經由ARM與X86之間轉譯 效能是不太能期待
01/18 18:38, 10F

01/18 18:39, 4月前 , 11F
結論是至少手機上應該是還無法期待跑PC遊戲
01/18 18:39, 11F

01/19 10:23, 4月前 , 12F
效能卡在D3D吧,在box86底下能跑DXVK嗎?
01/19 10:23, 12F
文章代碼(AID): #1XvM7EgT (MobileComm)
文章代碼(AID): #1XvM7EgT (MobileComm)