Running x86_64 Flatpak apps on aarch64 platform using qemu-static.
有些Flatpak軟體打包的時候只有x86_64版本,沒有顧及aarch64 (ARM64) 平台的需求,像是著名的Firefox。
這個時候可以利用Flatpak自身的模擬功能來執行,如果你的系統有安裝qemu-user套件,Flatpak就會利用Linux核心的binfmt功能,模擬執行異質架構的程式。這樣就可以在aarch64架構的系統跑x86_64架構的程式,反之亦然。
1. 安裝qemu-user套件#
以ARM架構的系統來說,這些套件似乎在Debian/Ubuntu系的系統才有收錄的樣子,Arch Linux ARM沒有這些套件。
以Raspberry Pi OS Bookworm為例子,安裝以下套件
sudo apt install qemu-user-static qemu-system-x86_64 qemu-system-aarch64
確認systemd-binfmt服務狀態
sudo systemctl status systemd-binfmt
2. 模擬執行x86_64程式#
請注意,qemu-user效能比Box64/Box86轉譯差勁許多,不要期望有GPU加速。
可惜的是,Firefox這類大型程式在qmeu模擬會有許多函式庫找不到,所以我使用簡單的KDE時鐘來做示範。
從套件管理器 安裝Flatpak
因為現在是跑在aarch64架構上,所以要指定下載x86_64版本的程式
flatpak install --arch=x86_64 org.kde.kclock
- 執行的時候指定架構,並加上verbose看錯誤訊息
flatpak run --arch=x86_64 org.kde.kclock
- 稍微等了一陣子才跑出來。