快轉到主要內容

Flatpak跨架構,在ARM架構的Linux系統模擬異質架構x86_64程式

· 民國113年甲辰年
·
切換繁體/簡體
分類 Linux系統 Linux使用技巧
標籤 Flatpak QEMU User Mode
目錄

Running x86_64 Flatpak apps on arm64 platform using qemu-static.

有些Flatpak軟體打包的時候只有x86_64版本,沒有顧及ARM64 (aarch64) 平台的需求,像是著名的Firefox,還有轉譯Windows exe的Wine。

這個時候可以利用Flatpak自身的模擬功能來執行,如果你的系統有安裝qemu-user套件,Flatpak就會利用Linux核心的binfmt功能,模擬執行異質架構的程式。這樣就可以在aarch64架構的系統跑x86_64架構的程式,反之亦然。

1. 安裝qemu-user套件
#

以ARM架構的系統來說,這些套件似乎在Debian與Ubuntu系的系統才有收錄的樣子,Arch Linux ARM沒有這些套件。

以Raspberry Pi OS Bookworm為例子,安裝以下套件,包含x86與ARM架構的QEMU模擬器。

sudo apt install qemu-user-static qemu-system-x86 qemu-system-aarch64

確認systemd-binfmt服務狀態

sudo systemctl enable --now systemd-binfmt

sudo systemctl status systemd-binfmt

2. 模擬執行x86_64程式
#

請注意,qemu-user效能比Box64/Box86轉譯差勁許多,不要期望有GPU加速。

可惜的是,Firefox這類大型程式在qmeu模擬時會有許多依賴的函式庫找不到,所以我使用簡單的KDE時鐘來做示範。

  1. 從套件管理器安裝Flatpak

  2. 因為現在是跑在aarch64架構上,所以要指定下載x86_64版本的程式

flatpak install --arch=x86_64 org.kde.kclock
  1. 執行的時候指定架構,並加上verbose看錯誤訊息
flatpak run --arch=x86_64 org.kde.kclock
  1. 稍微等了一陣子才跑出來。

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

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