可將x86指令轉換成ARM的Box86 - Linux

Daph Bay avatar
By Daph Bay
at 2022-01-05T15:23

Table of Contents

Box86/Box64這套開源軟體可將x86的Linux程式轉譯成ARM的指令,以Userspace執行,並使
用Dynamic recompilation提升轉換效率,使得ARM平台也能夠執行x86程式。
https://i.imgur.com/dObYjE8.png


實際例子: ARM64的Proot Ubuntu,透過box64執行只有amd64版的Minecraft基岩版伺服器軟
體。
https://i.imgur.com/UGCv7Be.png

那還有什麼Linux程式一定要用x86版的? Wine就是一個例子。

(註: 為方便討論,下文「x86」指電腦CPU架構,「x86_64」包含amd64、x64)


## Box86/Box64的應用

Wine雖能執行Windows exe程式,但也是僅限x86架構的裝置能執行。若在ARM架構的裝置,
如樹莓派或手機要跑ARM版Wine也是可以,但是只能執行「ARM版的Windows exe」,因為Win
e不包含跨架構模擬。

因此安裝Box86/Box64充當轉譯器,翻譯x86版Wine的指令,這樣就可以在ARM平台透過Wine
執行Windows的程式。


## 實際執行模式探討

Box86/Box64從[Github](https://github.com/ptitSeb/box86) clone下來編譯後就能使用


box + wine的指令如下:
```
box86 wine <exe>
```
或者
```
box64 wine64 <exe>
```

Wine主要是執行32位元的Windows exe,針對64位元exe另有Wine64。儘管Wine64相容Wine32
,但是bug很多不該混用。

Box86/Box64亦是如此,執行時後面要接對應位元的Linux程式才能正確執行。

也就是說,假設有一個64位元的notepad.exe,指令就應該是:
```
box64 wine64 notepad.exe
```

圖: Android Proot Ubuntu透過Box64 + Wine64執行Notepad++
https://i.imgur.com/EacC29t.png


## Box86/Box64的限制

因為嚴格對應位元,64位元的系統若要編譯Box86,需要使用chroot或者啟用MultiArch,不
然的話Box86就只能在32位元系統運作。

同樣,Wine本身開不起來的exe,透過Box86或Box64也是一樣開不起來。


## 結語

儘管模擬會損失效能,但這是補足ARM平台軟體的一個解決方案。通常Linux軟體不會只釋出
一種架構,但若真碰到了,Box86/Box64或許能幫得上忙,更重要的是Box86是開源的技術。

順帶一提,類似的x86轉ARM程式還有Wine官方的Hangover、Eltech的Exagear、蘋果的Roset
ta 2、微軟的x86模擬器等等;當然也有反過來的例如Intel Houdini。

--
https://i.imgur.com/qBnCgUO.jpg
https://i.imgur.com/klpjZcQ.jpg
https://i.imgur.com/yLTmoHs.jpg
https://i.imgur.com/WepO17T.jpg

--
Tags: Linux

All Comments

Mason avatar
By Mason
at 2022-01-06T05:59
推推
Skylar Davis avatar
By Skylar Davis
at 2022-01-06T20:36
cool!
Noah avatar
By Noah
at 2022-01-07T11:13
跟 multiarch + qemu-system-x86 比有什麼優勢嗎
Andrew avatar
By Andrew
at 2022-01-08T01:49
確實cool, 不過倒是比較想用 BoxARM
如果有的話
Elvira avatar
By Elvira
at 2022-01-08T16:26
查了一下 box86 有做到 library 層的轉接,會比只有模擬
Charlie avatar
By Charlie
at 2022-01-09T07:02
到 syscalls 的 qemu 更快

《艾倫的自動機工坊》Linux版demo

Freda avatar
By Freda
at 2021-12-30T02:03
簡單介紹一下,這是國產寫程式解謎遊戲,簡單說就是把FSM做成遊戲是也,預計明年一月 上架Steam。目前有demo版可以玩,比較特別的是,該工作室最近釋出了Linux build了,本 來用Proton玩Windows雖然可以玩,但是遊戲內的動畫都是沒有畫面(使用MF的煩人問題) ,很惱人。Linux bui ...

現在電腦都純UEFI開機了嗎?

Sierra Rose avatar
By Sierra Rose
at 2021-12-29T22:16
最近想寫簡單的教學文,介紹 Linux 安裝的過程,想 說是不是應該先解釋 BIOS 跟 UEFI 的差異。結果有人 跟我說,啊現在電腦都是 UEFI,不用講 BIOS 了。真 的是這樣嗎? 家裡兩台桌機兩台筆電,四台都是四到六年前買的,都 可以選擇要 BIOS 還是 UEFI,不知道最近一年的電腦 是怎樣 ...

檔案系統與mount觀念不懂

Zenobia avatar
By Zenobia
at 2021-12-27T08:58
小弟對硬體不是很熟 目前看書看到mount指令 mount是將檔案系統與目錄連結起來 但我很好奇的是 硬碟是否在開機之後就自動mount起來了呢? 會有此疑問主要是因為 目錄裡面本來就有 /dev了 然後書本每次講到掛載都類似用 /dev/sda 到一個自建目錄 例如 /d ...

有人知道到Raspberry Pi怎麼使用"Chrome

Vanessa avatar
By Vanessa
at 2021-12-25T08:25
有人知道到Raspberry Pi怎麼使用and#34;Chrome遠端桌面and#34;嗎? 我要用Raspberry Pi 透過Chromem遠端桌面連線到我家桌機, 可是Raspberry Pi裡面的chromium遠端桌面好像不給我登入,所以無 法連上, 有人試過嗎? 在不行直能用VNC了,VNC沒 ...

mint19安裝問題(提供5000P)

Kumar avatar
By Kumar
at 2021-12-24T03:38
OS:Mint19.1/Ubuntu18.04 設備:DELL Inspiron 15 3000 Mint19.1 https://i.imgur.com/J6Q3NvE.jpg Ubuntu18.04 https://i.imgur.com/DFnRwlo.jpg 安裝時都會出現Bluetooth: ...