1. 安装关键工具

核心依赖是 qemu-user-static(静态编译的 QEMU 模拟器,避免动态依赖冲突)和 binfmt-support(简化 binfmt_misc 规则管理,可选但推荐)。
(1)Debian/Ubuntu 系列(如 Ubuntu 22.04、Debian 12)

1
2
3
sudo apt update
# 安装 QEMU 静态模拟器(覆盖 32 位 ARMv7 和 64 位 AArch64)
sudo apt install -y qemu-user-static binfmt-support

2. 启用 binfmt_misc 模块

Linux 6.6 通常默认加载 binfmt_misc,若未加载(ls /proc/sys/fs/binfmt_misc 为空),手动挂载:

1
2
3
4
5
6
# 临时启用(重启失效)
sudo mount -t binfmt_misc none /proc/sys/fs/binfmt_misc

# 永久启用(开机自动挂载,推荐)
echo 'binfmt_misc' | sudo tee -a /etc/modules-load.d/binfmt.conf
sudo systemctl restart systemd-modules-load.service

3. 注册 ARM 架构的 binfmt 规则

binfmt_misc 需要通过规则识别 ARM 可执行文件,推荐用 update-binfmts 工具(来自 binfmt-support)简化配置,避免手动操作 /proc。

(1)注册 64 位 AArch64 规则

1
2
3
4
5
6
7
# 注册 aarch64 格式,关联 qemu-aarch64-static
sudo update-binfmts --install aarch64 /usr/bin/qemu-aarch64-static \
--magic '\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00' \
--mask '\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'

# 启用规则
sudo update-binfmts --enable aarch64

(2)注册 32 位 ARMv7 规则(若需运行 32 位 ARM 程序)

1
2
3
4
5
6
7
# 注册 arm 格式,关联 qemu-arm-static
sudo update-binfmts --install arm /usr/bin/qemu-arm-static \
--magic '\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00' \
--mask '\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'

# 启用规则
sudo update-binfmts --enable arm

规则说明:
–magic:ELF 文件的魔数(用于识别 ARM 架构的可执行文件)。
–mask:魔数的掩码,用于匹配时忽略无关位。
若用 binfmt-support,规则会自动持久化(重启后仍生效);若手动操作 /proc,需重新注册。

4. 验证配置

(1)检查 binfmt 规则是否生效

1
2
3
4
5
6
7
8
9
10
# 列出所有已注册的 binfmt 规则
update-binfmts --display

# 若输出包含以下内容,说明成功:
# aarch64 (enabled):
# magic = \x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00
# mask = \xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff
# interpreter = /usr/bin/qemu-aarch64-static
# arm (enabled):
# ...(类似输出)